+
Legal
-
+
Terms
-
+
Privacy
-
+
Contact
@@ -169,13 +164,13 @@ export default function Footer() {
}}
>
-
+
Privacy Policy
•
-
+
Terms of Service
diff --git a/docs/data/material/getting-started/templates/landing-page/components/Hero.js b/docs/data/material/getting-started/templates/landing-page/components/Hero.js
index 6813d4c96f4376..a8e9b21b0c2ef9 100644
--- a/docs/data/material/getting-started/templates/landing-page/components/Hero.js
+++ b/docs/data/material/getting-started/templates/landing-page/components/Hero.js
@@ -1,13 +1,15 @@
import * as React from 'react';
-import { alpha } from '@mui/material';
import Box from '@mui/material/Box';
import Button from '@mui/material/Button';
import Container from '@mui/material/Container';
+import InputLabel from '@mui/material/InputLabel';
import Link from '@mui/material/Link';
import Stack from '@mui/material/Stack';
import TextField from '@mui/material/TextField';
import Typography from '@mui/material/Typography';
+import { visuallyHidden } from '@mui/utils';
+
export default function Hero() {
return (
@@ -31,23 +32,27 @@ export default function Hero() {
pb: { xs: 8, sm: 12 },
}}
>
-
+
- Our latest
+ Our latest
theme.palette.mode === 'light' ? 'primary.main' : 'primary.light',
}}
@@ -58,7 +63,7 @@ export default function Hero() {
Explore our cutting-edge dashboard, delivering high-quality solutions
tailored to your needs. Elevate your experience with top-tier features
@@ -66,13 +71,15 @@ export default function Hero() {
+
+ Email
+
-
+
By clicking "Start now" you agree to our
Terms & Conditions
@@ -107,16 +114,16 @@ export default function Hero() {
? 'url("/static/images/templates/templates-images/hero-light.png")'
: 'url("/static/images/templates/templates-images/hero-dark.png")',
backgroundSize: 'cover',
- borderRadius: '10px',
+ borderRadius: '12px',
outline: '1px solid',
outlineColor:
theme.palette.mode === 'light'
- ? alpha('#BFCCD9', 0.5)
- : alpha('#9CCCFC', 0.1),
+ ? 'hsla(220, 25%, 80%, 0.5)'
+ : 'hsla(210, 100%, 80%, 0.1)',
boxShadow:
theme.palette.mode === 'light'
- ? `0 0 12px 8px ${alpha('#9CCCFC', 0.2)}`
- : `0 0 24px 12px ${alpha('#033363', 0.2)}`,
+ ? '0 0 12px 8px hsla(220, 25%, 80%, 0.2)'
+ : '0 0 24px 12px hsla(210, 100%, 25%, 0.2)',
})}
/>
diff --git a/docs/data/material/getting-started/templates/landing-page/components/Hero.tsx b/docs/data/material/getting-started/templates/landing-page/components/Hero.tsx
index 6813d4c96f4376..a8e9b21b0c2ef9 100644
--- a/docs/data/material/getting-started/templates/landing-page/components/Hero.tsx
+++ b/docs/data/material/getting-started/templates/landing-page/components/Hero.tsx
@@ -1,13 +1,15 @@
import * as React from 'react';
-import { alpha } from '@mui/material';
import Box from '@mui/material/Box';
import Button from '@mui/material/Button';
import Container from '@mui/material/Container';
+import InputLabel from '@mui/material/InputLabel';
import Link from '@mui/material/Link';
import Stack from '@mui/material/Stack';
import TextField from '@mui/material/TextField';
import Typography from '@mui/material/Typography';
+import { visuallyHidden } from '@mui/utils';
+
export default function Hero() {
return (
@@ -31,23 +32,27 @@ export default function Hero() {
pb: { xs: 8, sm: 12 },
}}
>
-
+
- Our latest
+ Our latest
theme.palette.mode === 'light' ? 'primary.main' : 'primary.light',
}}
@@ -58,7 +63,7 @@ export default function Hero() {
Explore our cutting-edge dashboard, delivering high-quality solutions
tailored to your needs. Elevate your experience with top-tier features
@@ -66,13 +71,15 @@ export default function Hero() {
+
+ Email
+
-
+
By clicking "Start now" you agree to our
Terms & Conditions
@@ -107,16 +114,16 @@ export default function Hero() {
? 'url("/static/images/templates/templates-images/hero-light.png")'
: 'url("/static/images/templates/templates-images/hero-dark.png")',
backgroundSize: 'cover',
- borderRadius: '10px',
+ borderRadius: '12px',
outline: '1px solid',
outlineColor:
theme.palette.mode === 'light'
- ? alpha('#BFCCD9', 0.5)
- : alpha('#9CCCFC', 0.1),
+ ? 'hsla(220, 25%, 80%, 0.5)'
+ : 'hsla(210, 100%, 80%, 0.1)',
boxShadow:
theme.palette.mode === 'light'
- ? `0 0 12px 8px ${alpha('#9CCCFC', 0.2)}`
- : `0 0 24px 12px ${alpha('#033363', 0.2)}`,
+ ? '0 0 12px 8px hsla(220, 25%, 80%, 0.2)'
+ : '0 0 24px 12px hsla(210, 100%, 25%, 0.2)',
})}
/>
diff --git a/docs/data/material/getting-started/templates/landing-page/components/Highlights.js b/docs/data/material/getting-started/templates/landing-page/components/Highlights.js
index cc8ec2b628aa7e..8adc8f06911b6e 100644
--- a/docs/data/material/getting-started/templates/landing-page/components/Highlights.js
+++ b/docs/data/material/getting-started/templates/landing-page/components/Highlights.js
@@ -59,7 +59,7 @@ export default function Highlights() {
pt: { xs: 4, sm: 12 },
pb: { xs: 8, sm: 16 },
color: 'white',
- bgcolor: '#06090a',
+ bgcolor: 'hsl(220, 30%, 2%)',
}}
>
{item.icon}
diff --git a/docs/data/material/getting-started/templates/landing-page/components/Highlights.tsx b/docs/data/material/getting-started/templates/landing-page/components/Highlights.tsx
index cc8ec2b628aa7e..8adc8f06911b6e 100644
--- a/docs/data/material/getting-started/templates/landing-page/components/Highlights.tsx
+++ b/docs/data/material/getting-started/templates/landing-page/components/Highlights.tsx
@@ -59,7 +59,7 @@ export default function Highlights() {
pt: { xs: 4, sm: 12 },
pb: { xs: 8, sm: 16 },
color: 'white',
- bgcolor: '#06090a',
+ bgcolor: 'hsl(220, 30%, 2%)',
}}
>
{item.icon}
diff --git a/docs/data/material/getting-started/templates/landing-page/components/Pricing.js b/docs/data/material/getting-started/templates/landing-page/components/Pricing.js
index 8892d3aa411850..54a00b4a03dcd8 100644
--- a/docs/data/material/getting-started/templates/landing-page/components/Pricing.js
+++ b/docs/data/material/getting-started/templates/landing-page/components/Pricing.js
@@ -9,6 +9,7 @@ import Container from '@mui/material/Container';
import Divider from '@mui/material/Divider';
import Grid from '@mui/material/Grid';
import Typography from '@mui/material/Typography';
+
import AutoAwesomeIcon from '@mui/icons-material/AutoAwesome';
import CheckCircleRoundedIcon from '@mui/icons-material/CheckCircleRounded';
@@ -94,19 +95,21 @@ export default function Pricing() {
md={4}
>
({
p: 2,
display: 'flex',
flexDirection: 'column',
gap: 4,
- border: tier.title === 'Professional' ? '1px solid' : undefined,
- borderColor:
- tier.title === 'Professional' ? 'primary.main' : undefined,
- background:
- tier.title === 'Professional'
- ? 'linear-gradient(#033363, #021F3B)'
- : undefined,
- }}
+ ...(tier.title === 'Professional' && {
+ border: 'none',
+ boxShadow:
+ theme.palette.mode === 'light'
+ ? `0 8px 12px hsla(210, 98%, 42%, 0.2)`
+ : `0 8px 12px hsla(0, 0%, 0%, 0.8)`,
+ background:
+ 'radial-gradient(circle at 50% 0%, hsl(210, 98%, 35%), hsl(210, 100%, 16%))',
+ }),
+ })}
>
@@ -127,14 +131,13 @@ export default function Pricing() {
label={tier.subheader}
size="small"
sx={{
- background: (theme) =>
- theme.palette.mode === 'light' ? '' : 'none',
- backgroundColor: 'primary.contrastText',
+ borderColor: 'hsla(220, 60%, 99%, 0.3)',
+ backgroundColor: 'hsla(220, 60%, 99%, 0.1)',
'& .MuiChip-label': {
- color: 'primary.dark',
+ color: 'hsl(0, 0%, 100%)',
},
'& .MuiChip-icon': {
- color: 'primary.dark',
+ color: 'primary.light',
},
}}
/>
@@ -157,8 +160,8 @@ export default function Pricing() {
{tier.description.map((line) => (
@@ -181,11 +184,10 @@ export default function Pricing() {
}}
/>
{line}
diff --git a/docs/data/material/getting-started/templates/landing-page/components/Pricing.tsx b/docs/data/material/getting-started/templates/landing-page/components/Pricing.tsx
index bcb8ca47d33478..52ca695ee1ff1e 100644
--- a/docs/data/material/getting-started/templates/landing-page/components/Pricing.tsx
+++ b/docs/data/material/getting-started/templates/landing-page/components/Pricing.tsx
@@ -9,6 +9,7 @@ import Container from '@mui/material/Container';
import Divider from '@mui/material/Divider';
import Grid from '@mui/material/Grid';
import Typography from '@mui/material/Typography';
+
import AutoAwesomeIcon from '@mui/icons-material/AutoAwesome';
import CheckCircleRoundedIcon from '@mui/icons-material/CheckCircleRounded';
@@ -94,19 +95,21 @@ export default function Pricing() {
md={4}
>
({
p: 2,
display: 'flex',
flexDirection: 'column',
gap: 4,
- border: tier.title === 'Professional' ? '1px solid' : undefined,
- borderColor:
- tier.title === 'Professional' ? 'primary.main' : undefined,
- background:
- tier.title === 'Professional'
- ? 'linear-gradient(#033363, #021F3B)'
- : undefined,
- }}
+ ...(tier.title === 'Professional' && {
+ border: 'none',
+ boxShadow:
+ theme.palette.mode === 'light'
+ ? `0 8px 12px hsla(210, 98%, 42%, 0.2)`
+ : `0 8px 12px hsla(0, 0%, 0%, 0.8)`,
+ background:
+ 'radial-gradient(circle at 50% 0%, hsl(210, 98%, 35%), hsl(210, 100%, 16%))',
+ }),
+ })}
>
@@ -127,14 +131,13 @@ export default function Pricing() {
label={tier.subheader}
size="small"
sx={{
- background: (theme) =>
- theme.palette.mode === 'light' ? '' : 'none',
- backgroundColor: 'primary.contrastText',
+ borderColor: 'hsla(220, 60%, 99%, 0.3)',
+ backgroundColor: 'hsla(220, 60%, 99%, 0.1)',
'& .MuiChip-label': {
- color: 'primary.dark',
+ color: 'hsl(0, 0%, 100%)',
},
'& .MuiChip-icon': {
- color: 'primary.dark',
+ color: 'primary.light',
},
}}
/>
@@ -157,8 +160,8 @@ export default function Pricing() {
{tier.description.map((line) => (
@@ -181,11 +184,10 @@ export default function Pricing() {
}}
/>
{line}
diff --git a/docs/data/material/getting-started/templates/landing-page/components/SitemarkIcon.js b/docs/data/material/getting-started/templates/landing-page/components/SitemarkIcon.js
new file mode 100644
index 00000000000000..eaa718dc5360d2
--- /dev/null
+++ b/docs/data/material/getting-started/templates/landing-page/components/SitemarkIcon.js
@@ -0,0 +1,53 @@
+import * as React from 'react';
+import SvgIcon from '@mui/material/SvgIcon';
+
+export default function SitemarkIcon() {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/docs/data/material/getting-started/templates/landing-page/components/SitemarkIcon.tsx b/docs/data/material/getting-started/templates/landing-page/components/SitemarkIcon.tsx
new file mode 100644
index 00000000000000..eaa718dc5360d2
--- /dev/null
+++ b/docs/data/material/getting-started/templates/landing-page/components/SitemarkIcon.tsx
@@ -0,0 +1,53 @@
+import * as React from 'react';
+import SvgIcon from '@mui/material/SvgIcon';
+
+export default function SitemarkIcon() {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/docs/data/material/getting-started/templates/landing-page/components/ToggleColorMode.js b/docs/data/material/getting-started/templates/landing-page/components/ToggleColorMode.js
index 5732175df5bd92..bcb83d384743d2 100644
--- a/docs/data/material/getting-started/templates/landing-page/components/ToggleColorMode.js
+++ b/docs/data/material/getting-started/templates/landing-page/components/ToggleColorMode.js
@@ -1,29 +1,25 @@
import * as React from 'react';
import PropTypes from 'prop-types';
-import Box from '@mui/material/Box';
-import Button from '@mui/material/Button';
+import IconButton from '@mui/material/IconButton';
import WbSunnyRoundedIcon from '@mui/icons-material/WbSunnyRounded';
import ModeNightRoundedIcon from '@mui/icons-material/ModeNightRounded';
function ToggleColorMode({ mode, toggleColorMode }) {
return (
-
-
- {mode === 'dark' ? (
-
- ) : (
-
- )}
-
-
+
+ {mode === 'dark' ? (
+
+ ) : (
+
+ )}
+
);
}
diff --git a/docs/data/material/getting-started/templates/landing-page/components/ToggleColorMode.tsx b/docs/data/material/getting-started/templates/landing-page/components/ToggleColorMode.tsx
index 6fdd215fa2e8a3..9ccb9982009d24 100644
--- a/docs/data/material/getting-started/templates/landing-page/components/ToggleColorMode.tsx
+++ b/docs/data/material/getting-started/templates/landing-page/components/ToggleColorMode.tsx
@@ -1,7 +1,6 @@
import * as React from 'react';
import { PaletteMode } from '@mui/material';
-import Box from '@mui/material/Box';
-import Button from '@mui/material/Button';
+import IconButton from '@mui/material/IconButton';
import WbSunnyRoundedIcon from '@mui/icons-material/WbSunnyRounded';
import ModeNightRoundedIcon from '@mui/icons-material/ModeNightRounded';
@@ -11,24 +10,22 @@ interface ToggleColorModeProps {
toggleColorMode: () => void;
}
-function ToggleColorMode({ mode, toggleColorMode }: ToggleColorModeProps) {
+export default function ToggleColorMode({
+ mode,
+ toggleColorMode,
+}: ToggleColorModeProps) {
return (
-
-
- {mode === 'dark' ? (
-
- ) : (
-
- )}
-
-
+
+ {mode === 'dark' ? (
+
+ ) : (
+
+ )}
+
);
}
-
-export default ToggleColorMode;
diff --git a/docs/data/material/getting-started/templates/landing-page/getLPTheme.js b/docs/data/material/getting-started/templates/landing-page/getLPTheme.js
index f4f27dfbc6c137..8ae6d57199e6fc 100644
--- a/docs/data/material/getting-started/templates/landing-page/getLPTheme.js
+++ b/docs/data/material/getting-started/templates/landing-page/getLPTheme.js
@@ -1,56 +1,70 @@
-import { alpha } from '@mui/material/styles';
-import { red } from '@mui/material/colors';
+import { createTheme, alpha } from '@mui/material/styles';
-export const brand = {
- 50: '#F0F7FF',
- 100: '#CEE5FD',
- 200: '#9CCCFC',
- 300: '#55A6F6',
- 400: '#0A66C2',
- 500: '#0959AA',
- 600: '#064079',
- 700: '#033363',
- 800: '#02294F',
- 900: '#021F3B',
-};
+const customTheme = createTheme();
-export const secondary = {
- 50: '#F9F0FF',
- 100: '#E9CEFD',
- 200: '#D49CFC',
- 300: '#B355F6',
- 400: '#750AC2',
- 500: '#6709AA',
- 600: '#490679',
- 700: '#3B0363',
- 800: '#2F024F',
- 900: '#23023B',
+export const brand = {
+ 50: 'hsl(210, 100%, 97%)',
+ 100: 'hsl(210, 100%, 90%)',
+ 200: 'hsl(210, 100%, 80%)',
+ 300: 'hsl(210, 100%, 65%)',
+ 400: 'hsl(210, 98%, 48%)',
+ 500: 'hsl(210, 98%, 42%)',
+ 600: 'hsl(210, 98%, 55%)',
+ 700: 'hsl(210, 100%, 35%)',
+ 800: 'hsl(210, 100%, 16%)',
+ 900: 'hsl(210, 100%, 21%)',
};
export const gray = {
- 50: '#FBFCFE',
- 100: '#EAF0F5',
- 200: '#D6E2EB',
- 300: '#BFCCD9',
- 400: '#94A6B8',
- 500: '#5B6B7C',
- 600: '#4C5967',
- 700: '#364049',
- 800: '#131B20',
- 900: '#090E10',
+ 50: 'hsl(220, 60%, 99%)',
+ 100: 'hsl(220, 35%, 94%)',
+ 200: 'hsl(220, 35%, 88%)',
+ 300: 'hsl(220, 25%, 80%)',
+ 400: 'hsl(220, 20%, 65%)',
+ 500: 'hsl(220, 20%, 42%)',
+ 600: 'hsl(220, 25%, 35%)',
+ 700: 'hsl(220, 25%, 25%)',
+ 800: 'hsl(220, 25%, 10%)',
+ 900: 'hsl(220, 30%, 5%)',
};
export const green = {
- 50: '#F6FEF6',
- 100: '#E3FBE3',
- 200: '#C7F7C7',
- 300: '#A1E8A1',
- 400: '#51BC51',
- 500: '#1F7A1F',
- 600: '#136C13',
- 700: '#0A470A',
- 800: '#042F04',
- 900: '#021D02',
+ 50: 'hsl(120, 80%, 98%)',
+ 100: 'hsl(120, 75%, 94%)',
+ 200: 'hsl(120, 75%, 87%)',
+ 300: 'hsl(120, 61%, 77%)',
+ 400: 'hsl(120, 44%, 53%)',
+ 500: 'hsl(120, 59%, 30%)',
+ 600: 'hsl(120, 70%, 25%)',
+ 700: 'hsl(120, 75%, 16%)',
+ 800: 'hsl(120, 84%, 10%)',
+ 900: 'hsl(120, 87%, 6%)',
+};
+
+export const orange = {
+ 50: 'hsl(45, 100%, 97%)',
+ 100: 'hsl(45, 92%, 90%)',
+ 200: 'hsl(45, 94%, 80%)',
+ 300: 'hsl(45, 90%, 65%)',
+ 400: 'hsl(45, 90%, 40%)',
+ 500: 'hsl(45, 90%, 35%)',
+ 600: 'hsl(45, 91%, 25%)',
+ 700: 'hsl(45, 94%, 20%)',
+ 800: 'hsl(45, 95%, 16%)',
+ 900: 'hsl(45, 93%, 12%)',
+};
+
+export const red = {
+ 50: 'hsl(0, 100%, 97%)',
+ 100: 'hsl(0, 92%, 90%)',
+ 200: 'hsl(0, 94%, 80%)',
+ 300: 'hsl(0, 90%, 65%)',
+ 400: 'hsl(0, 90%, 40%)',
+ 500: 'hsl(0, 90%, 30%)',
+ 600: 'hsl(0, 91%, 25%)',
+ 700: 'hsl(0, 94%, 20%)',
+ 800: 'hsl(0, 95%, 16%)',
+ 900: 'hsl(0, 93%, 12%)',
};
const getDesignTokens = (mode) => ({
@@ -62,32 +76,43 @@ const getDesignTokens = (mode) => ({
dark: brand[800],
contrastText: brand[50],
...(mode === 'dark' && {
- contrastText: brand[100],
+ contrastText: brand[50],
light: brand[300],
main: brand[400],
dark: brand[800],
}),
},
- secondary: {
- light: secondary[300],
- main: secondary[500],
- dark: secondary[800],
+ info: {
+ light: brand[100],
+ main: brand[300],
+ dark: brand[600],
+ contrastText: gray[50],
...(mode === 'dark' && {
- light: secondary[400],
- main: secondary[500],
- dark: secondary[900],
+ contrastText: brand[300],
+ light: brand[500],
+ main: brand[700],
+ dark: brand[900],
}),
},
warning: {
- main: '#F7B538',
- dark: '#F79F00',
- ...(mode === 'dark' && { main: '#F7B538', dark: '#F79F00' }),
+ light: orange[300],
+ main: orange[400],
+ dark: orange[800],
+ ...(mode === 'dark' && {
+ light: orange[400],
+ main: orange[500],
+ dark: orange[700],
+ }),
},
error: {
- light: red[50],
- main: red[500],
- dark: red[700],
- ...(mode === 'dark' && { light: '#D32F2F', main: '#D32F2F', dark: '#B22A2A' }),
+ light: red[300],
+ main: red[400],
+ dark: red[800],
+ ...(mode === 'dark' && {
+ light: red[400],
+ main: red[500],
+ dark: red[700],
+ }),
},
success: {
light: green[300],
@@ -100,27 +125,18 @@ const getDesignTokens = (mode) => ({
}),
},
grey: {
- 50: gray[50],
- 100: gray[100],
- 200: gray[200],
- 300: gray[300],
- 400: gray[400],
- 500: gray[500],
- 600: gray[600],
- 700: gray[700],
- 800: gray[800],
- 900: gray[900],
+ ...gray,
},
divider: mode === 'dark' ? alpha(gray[600], 0.3) : alpha(gray[300], 0.5),
background: {
- default: '#fff',
- paper: gray[50],
- ...(mode === 'dark' && { default: gray[900], paper: gray[800] }),
+ default: 'hsl(0, 0%, 100%)',
+ paper: gray[100],
+ ...(mode === 'dark' && { default: 'hsl(220, 30%, 3%)', paper: gray[900] }),
},
text: {
primary: gray[800],
secondary: gray[600],
- ...(mode === 'dark' && { primary: '#fff', secondary: gray[400] }),
+ ...(mode === 'dark' && { primary: 'hsl(0, 0%, 100%)', secondary: gray[400] }),
},
action: {
selected: `${alpha(brand[200], 0.2)}`,
@@ -132,51 +148,54 @@ const getDesignTokens = (mode) => ({
typography: {
fontFamily: ['"Inter", "sans-serif"'].join(','),
h1: {
- fontSize: 60,
+ fontSize: customTheme.typography.pxToRem(60),
fontWeight: 600,
- lineHeight: 78 / 70,
- letterSpacing: -0.2,
+ lineHeight: 1.2,
+ letterSpacing: -0.5,
},
h2: {
- fontSize: 48,
+ fontSize: customTheme.typography.pxToRem(48),
fontWeight: 600,
lineHeight: 1.2,
},
h3: {
- fontSize: 42,
+ fontSize: customTheme.typography.pxToRem(42),
lineHeight: 1.2,
},
h4: {
- fontSize: 36,
+ fontSize: customTheme.typography.pxToRem(36),
fontWeight: 500,
lineHeight: 1.5,
},
h5: {
- fontSize: 20,
+ fontSize: customTheme.typography.pxToRem(20),
fontWeight: 600,
},
h6: {
- fontSize: 18,
+ fontSize: customTheme.typography.pxToRem(18),
},
subtitle1: {
- fontSize: 18,
+ fontSize: customTheme.typography.pxToRem(18),
},
subtitle2: {
- fontSize: 16,
+ fontSize: customTheme.typography.pxToRem(16),
},
body1: {
+ fontSize: customTheme.typography.pxToRem(15),
fontWeight: 400,
- fontSize: 15,
},
body2: {
+ fontSize: customTheme.typography.pxToRem(14),
fontWeight: 400,
- fontSize: 14,
},
caption: {
+ fontSize: customTheme.typography.pxToRem(12),
fontWeight: 400,
- fontSize: 12,
},
},
+ shape: {
+ borderRadius: 12,
+ },
});
export default function getLPTheme(mode) {
@@ -192,7 +211,7 @@ export default function getLPTheme(mode) {
root: ({ theme }) => ({
padding: 8,
overflow: 'clip',
- backgroundColor: '#fff',
+ backgroundColor: 'hsl(0, 0%, 100%)',
border: '1px solid',
borderColor: gray[100],
':before': {
@@ -219,6 +238,7 @@ export default function getLPTheme(mode) {
border: 'none',
borderRadius: 8,
'&:hover': { backgroundColor: gray[100] },
+ '&:focus-visible': { backgroundColor: 'transparent' },
...(theme.palette.mode === 'dark' && {
'&:hover': { backgroundColor: gray[800] },
}),
@@ -230,38 +250,6 @@ export default function getLPTheme(mode) {
root: { mb: 20, border: 'none' },
},
},
- MuiToggleButtonGroup: {
- styleOverrides: {
- root: ({ theme }) => ({
- borderRadius: '10px',
- boxShadow: `0 4px 16px ${alpha(gray[400], 0.2)}`,
- '& .Mui-selected': {
- color: brand[500],
- },
- ...(theme.palette.mode === 'dark' && {
- '& .Mui-selected': {
- color: '#fff',
- },
- boxShadow: `0 4px 16px ${alpha(brand[700], 0.5)}`,
- }),
- }),
- },
- },
- MuiToggleButton: {
- styleOverrides: {
- root: ({ theme }) => ({
- padding: '12px 16px',
- textTransform: 'none',
- borderRadius: '10px',
- fontWeight: 500,
- ...(theme.palette.mode === 'dark' && {
- color: gray[400],
- boxShadow: '0 4px 16px rgba(0, 0, 0, 0.5)',
- '&.Mui-selected': { color: brand[300] },
- }),
- }),
- },
- },
MuiButtonBase: {
defaultProps: {
disableTouchRipple: true,
@@ -270,9 +258,9 @@ export default function getLPTheme(mode) {
styleOverrides: {
root: {
boxSizing: 'border-box',
- transition: 'all 100ms ease-in',
+ transition: 'all 100ms ease',
'&:focus-visible': {
- outline: `3px solid ${alpha(brand[500], 0.5)}`,
+ outline: `3px solid ${alpha(brand[400], 0.5)}`,
outlineOffset: '2px',
},
},
@@ -281,65 +269,126 @@ export default function getLPTheme(mode) {
MuiButton: {
styleOverrides: {
root: ({ theme, ownerState }) => ({
- boxSizing: 'border-box',
boxShadow: 'none',
- borderRadius: '10px',
+ borderRadius: theme.shape.borderRadius,
textTransform: 'none',
- '&:active': {
- transform: 'scale(0.98)',
- },
...(ownerState.size === 'small' && {
- maxHeight: '32px',
+ height: '2rem', // 32px
+ padding: '0 0.5rem',
}),
...(ownerState.size === 'medium' && {
- height: '40px',
+ height: '2.5rem', // 40px
}),
...(ownerState.variant === 'contained' &&
ownerState.color === 'primary' && {
- color: brand[50],
- background: brand[500],
- backgroundImage: `linear-gradient(to bottom, ${brand[400]}, ${brand[600]})`,
- boxShadow: `inset 0 1px ${alpha(brand[300], 0.4)}`,
- outline: `1px solid ${brand[700]}`,
+ color: 'white',
+ backgroundColor: brand[300],
+ backgroundImage: `linear-gradient(to bottom, ${alpha(brand[400], 0.8)}, ${brand[500]})`,
+ boxShadow: `inset 0 2px 0 ${alpha(brand[200], 0.2)}, inset 0 -2px 0 ${alpha(brand[700], 0.4)}`,
+ border: `1px solid ${brand[500]}`,
'&:hover': {
- background: brand[400],
- backgroundImage: 'none',
- boxShadow: `0 0 0 1px ${alpha(brand[300], 0.5)}`,
+ backgroundColor: brand[700],
+ boxShadow: 'none',
+ },
+ '&:active': {
+ backgroundColor: brand[700],
+ boxShadow: `inset 0 2.5px 0 ${alpha(brand[700], 0.4)}`,
},
}),
...(ownerState.variant === 'outlined' && {
+ color: brand[700],
backgroundColor: alpha(brand[300], 0.1),
- borderColor: brand[300],
- color: brand[500],
+ borderColor: alpha(brand[200], 0.8),
+ boxShadow: `inset 0 2px ${alpha(brand[50], 0.5)}, inset 0 -2px ${alpha(brand[200], 0.2)}`,
'&:hover': {
- backgroundColor: alpha(brand[300], 0.3),
- borderColor: brand[200],
+ backgroundColor: alpha(brand[300], 0.2),
+ borderColor: alpha(brand[300], 0.5),
+ boxShadow: 'none',
},
- }),
- ...(ownerState.variant === 'text' && {
- color: brand[500],
- '&:hover': {
+ '&:active': {
backgroundColor: alpha(brand[300], 0.3),
- borderColor: brand[200],
+ boxShadow: `inset 0 2.5px 0 ${alpha(brand[400], 0.2)}`,
+ backgroundImage: 'none',
},
}),
+ ...(ownerState.variant === 'outlined' &&
+ ownerState.color === 'secondary' && {
+ backgroundColor: alpha(gray[300], 0.1),
+ borderColor: alpha(gray[300], 0.5),
+ color: gray[700],
+ '&:hover': {
+ backgroundColor: alpha(gray[300], 0.3),
+ borderColor: alpha(gray[300], 0.5),
+ boxShadow: 'none',
+ },
+ '&:active': {
+ backgroundColor: alpha(gray[300], 0.4),
+ boxShadow: `inset 0 2.5px 0 ${alpha(gray[400], 0.2)}`,
+ backgroundImage: 'none',
+ },
+ }),
+ ...(ownerState.variant === 'text' &&
+ ownerState.color === 'primary' && {
+ color: brand[700],
+ '&:hover': {
+ backgroundColor: alpha(brand[300], 0.3),
+ },
+ }),
+ ...(ownerState.variant === 'text' &&
+ ownerState.color === 'info' && {
+ color: gray[700],
+ '&:hover': {
+ backgroundColor: alpha(gray[300], 0.3),
+ },
+ }),
...(theme.palette.mode === 'dark' && {
...(ownerState.variant === 'outlined' && {
+ color: brand[200],
backgroundColor: alpha(brand[600], 0.1),
- borderColor: brand[700],
- color: brand[300],
+ borderColor: alpha(brand[600], 0.6),
+ boxShadow: `inset 0 2.5px ${alpha(brand[400], 0.1)}, inset 0 -2px ${alpha(gray[900], 0.5)}`,
'&:hover': {
- backgroundColor: alpha(brand[600], 0.3),
- borderColor: brand[700],
+ backgroundColor: alpha(brand[700], 0.2),
+ borderColor: alpha(brand[700], 0.5),
+ boxShadow: 'none',
},
- }),
- ...(ownerState.variant === 'text' && {
- color: brand[300],
- '&:hover': {
- backgroundColor: alpha(brand[600], 0.3),
- borderColor: brand[700],
+ '&:active': {
+ backgroundColor: alpha(brand[800], 0.2),
+ boxShadow: `inset 0 2.5px 0 ${alpha(brand[900], 0.4)}`,
+ backgroundImage: 'none',
},
}),
+ ...(ownerState.variant === 'text' &&
+ ownerState.color === 'info' && {
+ color: gray[200],
+ '&:hover': {
+ backgroundColor: alpha(gray[700], 0.3),
+ },
+ }),
+ ...(ownerState.variant === 'outlined' &&
+ ownerState.color === 'secondary' && {
+ color: gray[300],
+ backgroundColor: alpha(gray[600], 0.1),
+ borderColor: alpha(gray[700], 0.5),
+ boxShadow: `inset 0 2.5px ${alpha(gray[600], 0.1)}, inset 0 -2px ${alpha(gray[900], 0.5)}`,
+ '&:hover': {
+ backgroundColor: alpha(gray[700], 0.2),
+ borderColor: alpha(gray[700], 0.5),
+ boxShadow: 'none',
+ },
+ '&:active': {
+ backgroundColor: alpha(gray[800], 0.2),
+ boxShadow: `inset 0 2.5px 0 ${alpha(gray[900], 0.4)}`,
+ backgroundImage: 'none',
+ },
+ }),
+ ...(ownerState.variant === 'text' &&
+ ownerState.color === 'primary' && {
+ color: brand[200],
+ '&:hover': {
+ backgroundColor: alpha(brand[700], 0.3),
+ },
+ }),
}),
}),
},
@@ -347,30 +396,26 @@ export default function getLPTheme(mode) {
MuiCard: {
styleOverrides: {
root: ({ theme, ownerState }) => ({
+ transition: 'all 100ms ease',
backgroundColor: gray[50],
- borderRadius: 10,
- border: `1px solid ${alpha(gray[200], 0.8)}`,
+ borderRadius: theme.shape.borderRadius,
+ border: `1px solid ${alpha(gray[200], 0.5)}`,
boxShadow: 'none',
- transition: 'background-color, border, 80ms ease',
...(ownerState.variant === 'outlined' && {
- background: `linear-gradient(to bottom, #FFF, ${gray[50]})`,
- '&:hover': {
- borderColor: brand[300],
- boxShadow: `0 0 24px ${brand[100]}`,
- },
+ border: `1px solid ${gray[200]}`,
+ boxShadow: 'none',
+ background: `linear-gradient(to bottom, hsl(0, 0%, 100%), ${gray[50]})`,
}),
...(theme.palette.mode === 'dark' && {
backgroundColor: alpha(gray[800], 0.6),
border: `1px solid ${alpha(gray[700], 0.3)}`,
...(ownerState.variant === 'outlined' && {
+ border: `1px solid ${alpha(gray[700], 0.4)}`,
+ boxShadow: 'none',
background: `linear-gradient(to bottom, ${gray[900]}, ${alpha(
gray[800],
0.5,
)})`,
- '&:hover': {
- borderColor: brand[700],
- boxShadow: `0 0 24px ${brand[800]}`,
- },
}),
}),
}),
@@ -379,18 +424,17 @@ export default function getLPTheme(mode) {
MuiChip: {
styleOverrides: {
root: ({ theme }) => ({
- alignSelf: 'center',
py: 1.5,
px: 0.5,
- background: `linear-gradient(to bottom right, ${brand[50]}, ${brand[100]})`,
border: '1px solid',
- borderColor: `${alpha(brand[500], 0.3)}`,
- fontWeight: '600',
+ borderColor: brand[100],
+ fontWeight: 600,
+ backgroundColor: brand[50],
'&:hover': {
backgroundColor: brand[500],
},
'&:focus-visible': {
- borderColor: brand[800],
+ borderColor: brand[300],
backgroundColor: brand[200],
},
'& .MuiChip-label': {
@@ -400,14 +444,14 @@ export default function getLPTheme(mode) {
color: brand[500],
},
...(theme.palette.mode === 'dark' && {
- background: `linear-gradient(to bottom right, ${brand[700]}, ${brand[900]})`,
- borderColor: `${alpha(brand[500], 0.5)}`,
+ borderColor: `${alpha(brand[500], 0.2)}`,
+ backgroundColor: `${alpha(brand[900], 0.5)}`,
'&:hover': {
backgroundColor: brand[600],
},
'&:focus-visible': {
- borderColor: brand[200],
- backgroundColor: brand[600],
+ borderColor: brand[500],
+ backgroundColor: brand[800],
},
'& .MuiChip-label': {
color: brand[200],
@@ -429,13 +473,54 @@ export default function getLPTheme(mode) {
}),
},
},
+ MuiFormLabel: {
+ styleOverrides: {
+ root: ({ theme }) => ({
+ typography: theme.typography.caption,
+ marginBottom: 8,
+ }),
+ },
+ },
+ MuiIconButton: {
+ styleOverrides: {
+ root: ({ theme, ownerState }) => ({
+ ...(ownerState.size === 'small' && {
+ height: '2rem',
+ width: '2rem',
+ }),
+ ...(ownerState.size === 'medium' && {
+ height: '2.5rem',
+ width: '2.5rem',
+ }),
+ color: brand[500],
+ '&:hover': {
+ backgroundColor: alpha(brand[300], 0.3),
+ borderColor: brand[200],
+ },
+ ...(theme.palette.mode === 'dark' && {
+ color: brand[200],
+ '&:hover': {
+ backgroundColor: alpha(brand[600], 0.3),
+ borderColor: brand[700],
+ },
+ }),
+ }),
+ },
+ },
+ MuiInputBase: {
+ styleOverrides: {
+ root: {
+ border: 'none',
+ },
+ },
+ },
MuiLink: {
defaultProps: {
underline: 'none',
},
styleOverrides: {
root: ({ theme }) => ({
- color: brand[600],
+ color: brand[700],
fontWeight: 500,
position: 'relative',
textDecoration: 'none',
@@ -454,6 +539,11 @@ export default function getLPTheme(mode) {
width: '100%',
opacity: 1,
},
+ '&:focus-visible': {
+ outline: `3px solid ${alpha(brand[500], 0.5)}`,
+ outlineOffset: '4px',
+ borderRadius: '2px',
+ },
...(theme.palette.mode === 'dark' && {
color: brand[200],
}),
@@ -463,26 +553,109 @@ export default function getLPTheme(mode) {
MuiMenuItem: {
styleOverrides: {
root: ({ theme }) => ({
- borderRadius: '99px',
- color: gray[500],
+ paddingRight: 6,
+ paddingLeft: 6,
+ color: gray[700],
+ fontSize: '0.875rem',
fontWeight: 500,
+ borderRadius: theme.shape.borderRadius,
...(theme.palette.mode === 'dark' && {
- color: gray[300],
+ color: gray[200],
}),
}),
},
},
- MuiPaper: {
+ MuiOutlinedInput: {
styleOverrides: {
- root: ({ theme }) => ({
- backgroundImage: 'none',
- backgroundColor: gray[100],
+ notchedOutline: {
+ border: 'none',
+ },
+ input: {
+ paddingLeft: 10,
+ },
+ root: ({ theme, ownerState }) => ({
+ 'input:-webkit-autofill': {
+ WebkitBoxShadow: `0 0 0 1000px ${brand[100]} inset, 0 0 0 1px ${brand[200]}`,
+ maxHeight: '4px',
+ borderRadius: '8px',
+ },
+ '& .MuiInputBase-input': {
+ fontSize: '1rem',
+ '&::placeholder': {
+ opacity: 0.7,
+ color: gray[500],
+ },
+ },
+ boxSizing: 'border-box',
+ flexGrow: 1,
+ height: '40px',
+ borderRadius: theme.shape.borderRadius,
+ border: '1px solid',
+ borderColor: alpha(gray[300], 0.8),
+ boxShadow: '0 0 0 1.5px hsla(210, 0%, 0%, 0.02) inset',
+ transition: 'border-color 120ms ease-in',
+ backgroundColor: alpha(gray[100], 0.4),
+ '&:hover': {
+ borderColor: brand[300],
+ },
+ '&.Mui-focused': {
+ outline: `3px solid ${alpha(brand[500], 0.5)}`,
+ outlineOffset: '2px',
+ borderColor: brand[400],
+ },
+ ...(ownerState.color === 'error' && {
+ borderColor: red[200],
+ color: red[500],
+ '& + .MuiFormHelperText-root': {
+ color: red[500],
+ },
+ }),
...(theme.palette.mode === 'dark' && {
- backgroundColor: alpha(gray[900], 0.6),
+ 'input:-webkit-autofill': {
+ WebkitBoxShadow: `0 0 0 1000px ${brand[900]} inset, 0 0 0 1px ${brand[600]}`,
+ maxHeight: '6px',
+ borderRadius: '8px',
+ },
+ '& .MuiInputBase-input': {
+ fontSize: '1rem',
+ '&::placeholder': {
+ opacity: 1,
+ color: gray[500],
+ },
+ },
+ borderColor: alpha(gray[700], 0.5),
+ boxShadow: '0 0 0 1.5px hsl(210, 0%, 0%) inset',
+ backgroundColor: alpha(gray[900], 0.8),
+ transition: 'border-color 120ms ease-in',
+ '&:hover': {
+ borderColor: brand[300],
+ },
+ '&.Mui-focused': {
+ borderColor: brand[400],
+ outline: `3px solid ${alpha(brand[500], 0.5)}`,
+ outlineOffset: '2px',
+ },
+ ...(ownerState.color === 'error' && {
+ borderColor: red[700],
+ color: red[300],
+ '& + .MuiFormHelperText-root': {
+ color: red[300],
+ },
+ }),
}),
}),
},
},
+ MuiPaper: {
+ defaultProps: {
+ elevation: 0,
+ },
+ },
+ MuiStack: {
+ defaultProps: {
+ useFlexGap: true,
+ },
+ },
MuiSwitch: {
styleOverrides: {
root: ({ theme }) => ({
@@ -505,8 +678,8 @@ export default function getLPTheme(mode) {
borderRadius: 50,
},
'& .MuiSwitch-thumb': {
- boxShadow: '0 0 2px 2px rgba(0, 0, 0, 0.2)',
- backgroundColor: '#FFF',
+ boxShadow: '0 0 2px 2px hsla(220, 0%, 0%, 0.2)',
+ backgroundColor: 'hsl(0, 0%, 100%)',
width: 16,
height: 16,
margin: 2,
@@ -527,8 +700,8 @@ export default function getLPTheme(mode) {
},
},
'& .MuiSwitch-thumb': {
- boxShadow: '0 0 2px 2px rgba(0, 0, 0, 0.2)',
- backgroundColor: '#FFF',
+ boxShadow: '0 0 2px 2px hsla(220, 0%, 0%, 0.2)',
+ backgroundColor: 'hsl(0, 0%, 100%)',
width: 16,
height: 16,
margin: 2,
@@ -539,72 +712,40 @@ export default function getLPTheme(mode) {
height: 24,
width: 24,
padding: 0,
- color: '#fff',
+ color: 'hsl(0, 0%, 100%)',
'&.Mui-checked + .MuiSwitch-track': {
opacity: 1,
},
},
},
},
- MuiTextField: {
+ MuiToggleButtonGroup: {
styleOverrides: {
root: ({ theme }) => ({
- '& label .Mui-focused': {
- color: 'white',
- },
- '& .MuiInputBase-input': {
- boxSizing: 'border-box',
- '&::placeholder': {
- opacity: 0.7,
- },
- },
- '& .MuiOutlinedInput-root': {
- boxSizing: 'border-box',
- minWidth: 280,
- minHeight: 40,
- height: '100%',
- borderRadius: '10px',
- border: '1px solid',
- borderColor: gray[200],
- transition: 'border-color 120ms ease-in',
- '& fieldset': {
- border: 'none',
- boxShadow: '0px 2px 4px rgba(0, 0, 0, 0.1)',
- background: `${alpha('#FFF', 0.3)}`,
- },
- '&:hover': {
- borderColor: brand[300],
- },
- '&.Mui-focused': {
- borderColor: brand[400],
- outline: '4px solid',
- outlineColor: brand[200],
- },
+ borderRadius: theme.shape.borderRadius,
+ boxShadow: `0 1px 2px hsla(210, 0%, 0%, 0.05), 0 2px 12px ${alpha(brand[200], 0.5)}`,
+ '& .Mui-selected': {
+ color: brand[500],
},
...(theme.palette.mode === 'dark' && {
- '& .MuiOutlinedInput-root': {
- boxSizing: 'border-box',
- minWidth: 280,
- minHeight: 40,
- height: '100%',
- borderRadius: '10px',
- border: '1px solid',
- borderColor: gray[600],
- transition: 'border-color 120ms ease-in',
- '& fieldset': {
- border: 'none',
- boxShadow: ' 0px 2px 4px rgba(0, 0, 0, 0.4)',
- background: `${alpha(gray[800], 0.4)}`,
- },
- '&:hover': {
- borderColor: brand[300],
- },
- '&.Mui-focused': {
- borderColor: brand[400],
- outline: '4px solid',
- outlineColor: alpha(brand[500], 0.5),
- },
+ '& .Mui-selected': {
+ color: 'hsl(0, 0%, 100%)',
},
+ boxShadow: `0 0 0 1px hsla(210, 0%, 0%, 0.5), 0 2px 12px ${alpha(brand[700], 0.5)}`,
+ }),
+ }),
+ },
+ },
+ MuiToggleButton: {
+ styleOverrides: {
+ root: ({ theme }) => ({
+ padding: '12px 16px',
+ textTransform: 'none',
+ borderRadius: theme.shape.borderRadius,
+ fontWeight: 500,
+ ...(theme.palette.mode === 'dark' && {
+ color: gray[400],
+ '&.Mui-selected': { color: brand[300] },
}),
}),
},
diff --git a/docs/data/material/getting-started/templates/landing-page/getLPTheme.tsx b/docs/data/material/getting-started/templates/landing-page/getLPTheme.tsx
index 2186784d2735ae..c513c17f63b408 100644
--- a/docs/data/material/getting-started/templates/landing-page/getLPTheme.tsx
+++ b/docs/data/material/getting-started/templates/landing-page/getLPTheme.tsx
@@ -1,6 +1,5 @@
import type {} from '@mui/material/themeCssVarsAugmentation';
-import { ThemeOptions, alpha } from '@mui/material/styles';
-import { red } from '@mui/material/colors';
+import { createTheme, ThemeOptions, alpha } from '@mui/material/styles';
import { PaletteMode } from '@mui/material';
declare module '@mui/material/styles/createPalette' {
@@ -20,56 +19,71 @@ declare module '@mui/material/styles/createPalette' {
interface PaletteColor extends ColorRange {}
}
-export const brand = {
- 50: '#F0F7FF',
- 100: '#CEE5FD',
- 200: '#9CCCFC',
- 300: '#55A6F6',
- 400: '#0A66C2',
- 500: '#0959AA',
- 600: '#064079',
- 700: '#033363',
- 800: '#02294F',
- 900: '#021F3B',
-};
+const customTheme = createTheme();
-export const secondary = {
- 50: '#F9F0FF',
- 100: '#E9CEFD',
- 200: '#D49CFC',
- 300: '#B355F6',
- 400: '#750AC2',
- 500: '#6709AA',
- 600: '#490679',
- 700: '#3B0363',
- 800: '#2F024F',
- 900: '#23023B',
+export const brand = {
+ 50: 'hsl(210, 100%, 97%)',
+ 100: 'hsl(210, 100%, 90%)',
+ 200: 'hsl(210, 100%, 80%)',
+ 300: 'hsl(210, 100%, 65%)',
+ 400: 'hsl(210, 98%, 48%)',
+ 500: 'hsl(210, 98%, 42%)',
+ 600: 'hsl(210, 98%, 55%)',
+ 700: 'hsl(210, 100%, 35%)',
+ 800: 'hsl(210, 100%, 16%)',
+ 900: 'hsl(210, 100%, 21%)',
};
export const gray = {
- 50: '#FBFCFE',
- 100: '#EAF0F5',
- 200: '#D6E2EB',
- 300: '#BFCCD9',
- 400: '#94A6B8',
- 500: '#5B6B7C',
- 600: '#4C5967',
- 700: '#364049',
- 800: '#131B20',
- 900: '#090E10',
+ 50: 'hsl(220, 60%, 99%)',
+ 100: 'hsl(220, 35%, 94%)',
+ 200: 'hsl(220, 35%, 88%)',
+ 300: 'hsl(220, 25%, 80%)',
+ 400: 'hsl(220, 20%, 65%)',
+ 500: 'hsl(220, 20%, 42%)',
+ 600: 'hsl(220, 25%, 35%)',
+ 700: 'hsl(220, 25%, 25%)',
+ 800: 'hsl(220, 25%, 10%)',
+ 900: 'hsl(220, 30%, 5%)',
};
export const green = {
- 50: '#F6FEF6',
- 100: '#E3FBE3',
- 200: '#C7F7C7',
- 300: '#A1E8A1',
- 400: '#51BC51',
- 500: '#1F7A1F',
- 600: '#136C13',
- 700: '#0A470A',
- 800: '#042F04',
- 900: '#021D02',
+ 50: 'hsl(120, 80%, 98%)',
+ 100: 'hsl(120, 75%, 94%)',
+ 200: 'hsl(120, 75%, 87%)',
+ 300: 'hsl(120, 61%, 77%)',
+ 400: 'hsl(120, 44%, 53%)',
+ 500: 'hsl(120, 59%, 30%)',
+ 600: 'hsl(120, 70%, 25%)',
+ 700: 'hsl(120, 75%, 16%)',
+ 800: 'hsl(120, 84%, 10%)',
+ 900: 'hsl(120, 87%, 6%)',
+};
+
+export const orange = {
+ 50: 'hsl(45, 100%, 97%)',
+ 100: 'hsl(45, 92%, 90%)',
+ 200: 'hsl(45, 94%, 80%)',
+ 300: 'hsl(45, 90%, 65%)',
+ 400: 'hsl(45, 90%, 40%)',
+ 500: 'hsl(45, 90%, 35%)',
+ 600: 'hsl(45, 91%, 25%)',
+ 700: 'hsl(45, 94%, 20%)',
+ 800: 'hsl(45, 95%, 16%)',
+ 900: 'hsl(45, 93%, 12%)',
+};
+
+export const red = {
+ 50: 'hsl(0, 100%, 97%)',
+ 100: 'hsl(0, 92%, 90%)',
+ 200: 'hsl(0, 94%, 80%)',
+ 300: 'hsl(0, 90%, 65%)',
+ 400: 'hsl(0, 90%, 40%)',
+ 500: 'hsl(0, 90%, 30%)',
+ 600: 'hsl(0, 91%, 25%)',
+ 700: 'hsl(0, 94%, 20%)',
+ 800: 'hsl(0, 95%, 16%)',
+ 900: 'hsl(0, 93%, 12%)',
};
const getDesignTokens = (mode: PaletteMode) => ({
@@ -81,32 +95,43 @@ const getDesignTokens = (mode: PaletteMode) => ({
dark: brand[800],
contrastText: brand[50],
...(mode === 'dark' && {
- contrastText: brand[100],
+ contrastText: brand[50],
light: brand[300],
main: brand[400],
dark: brand[800],
}),
},
- secondary: {
- light: secondary[300],
- main: secondary[500],
- dark: secondary[800],
+ info: {
+ light: brand[100],
+ main: brand[300],
+ dark: brand[600],
+ contrastText: gray[50],
...(mode === 'dark' && {
- light: secondary[400],
- main: secondary[500],
- dark: secondary[900],
+ contrastText: brand[300],
+ light: brand[500],
+ main: brand[700],
+ dark: brand[900],
}),
},
warning: {
- main: '#F7B538',
- dark: '#F79F00',
- ...(mode === 'dark' && { main: '#F7B538', dark: '#F79F00' }),
+ light: orange[300],
+ main: orange[400],
+ dark: orange[800],
+ ...(mode === 'dark' && {
+ light: orange[400],
+ main: orange[500],
+ dark: orange[700],
+ }),
},
error: {
- light: red[50],
- main: red[500],
- dark: red[700],
- ...(mode === 'dark' && { light: '#D32F2F', main: '#D32F2F', dark: '#B22A2A' }),
+ light: red[300],
+ main: red[400],
+ dark: red[800],
+ ...(mode === 'dark' && {
+ light: red[400],
+ main: red[500],
+ dark: red[700],
+ }),
},
success: {
light: green[300],
@@ -119,27 +144,18 @@ const getDesignTokens = (mode: PaletteMode) => ({
}),
},
grey: {
- 50: gray[50],
- 100: gray[100],
- 200: gray[200],
- 300: gray[300],
- 400: gray[400],
- 500: gray[500],
- 600: gray[600],
- 700: gray[700],
- 800: gray[800],
- 900: gray[900],
+ ...gray,
},
divider: mode === 'dark' ? alpha(gray[600], 0.3) : alpha(gray[300], 0.5),
background: {
- default: '#fff',
- paper: gray[50],
- ...(mode === 'dark' && { default: gray[900], paper: gray[800] }),
+ default: 'hsl(0, 0%, 100%)',
+ paper: gray[100],
+ ...(mode === 'dark' && { default: 'hsl(220, 30%, 3%)', paper: gray[900] }),
},
text: {
primary: gray[800],
secondary: gray[600],
- ...(mode === 'dark' && { primary: '#fff', secondary: gray[400] }),
+ ...(mode === 'dark' && { primary: 'hsl(0, 0%, 100%)', secondary: gray[400] }),
},
action: {
selected: `${alpha(brand[200], 0.2)}`,
@@ -151,51 +167,54 @@ const getDesignTokens = (mode: PaletteMode) => ({
typography: {
fontFamily: ['"Inter", "sans-serif"'].join(','),
h1: {
- fontSize: 60,
+ fontSize: customTheme.typography.pxToRem(60),
fontWeight: 600,
- lineHeight: 78 / 70,
- letterSpacing: -0.2,
+ lineHeight: 1.2,
+ letterSpacing: -0.5,
},
h2: {
- fontSize: 48,
+ fontSize: customTheme.typography.pxToRem(48),
fontWeight: 600,
lineHeight: 1.2,
},
h3: {
- fontSize: 42,
+ fontSize: customTheme.typography.pxToRem(42),
lineHeight: 1.2,
},
h4: {
- fontSize: 36,
+ fontSize: customTheme.typography.pxToRem(36),
fontWeight: 500,
lineHeight: 1.5,
},
h5: {
- fontSize: 20,
+ fontSize: customTheme.typography.pxToRem(20),
fontWeight: 600,
},
h6: {
- fontSize: 18,
+ fontSize: customTheme.typography.pxToRem(18),
},
subtitle1: {
- fontSize: 18,
+ fontSize: customTheme.typography.pxToRem(18),
},
subtitle2: {
- fontSize: 16,
+ fontSize: customTheme.typography.pxToRem(16),
},
body1: {
+ fontSize: customTheme.typography.pxToRem(15),
fontWeight: 400,
- fontSize: 15,
},
body2: {
+ fontSize: customTheme.typography.pxToRem(14),
fontWeight: 400,
- fontSize: 14,
},
caption: {
+ fontSize: customTheme.typography.pxToRem(12),
fontWeight: 400,
- fontSize: 12,
},
},
+ shape: {
+ borderRadius: 12,
+ },
});
export default function getLPTheme(mode: PaletteMode): ThemeOptions {
@@ -211,7 +230,7 @@ export default function getLPTheme(mode: PaletteMode): ThemeOptions {
root: ({ theme }) => ({
padding: 8,
overflow: 'clip',
- backgroundColor: '#fff',
+ backgroundColor: 'hsl(0, 0%, 100%)',
border: '1px solid',
borderColor: gray[100],
':before': {
@@ -238,6 +257,7 @@ export default function getLPTheme(mode: PaletteMode): ThemeOptions {
border: 'none',
borderRadius: 8,
'&:hover': { backgroundColor: gray[100] },
+ '&:focus-visible': { backgroundColor: 'transparent' },
...(theme.palette.mode === 'dark' && {
'&:hover': { backgroundColor: gray[800] },
}),
@@ -249,38 +269,6 @@ export default function getLPTheme(mode: PaletteMode): ThemeOptions {
root: { mb: 20, border: 'none' },
},
},
- MuiToggleButtonGroup: {
- styleOverrides: {
- root: ({ theme }) => ({
- borderRadius: '10px',
- boxShadow: `0 4px 16px ${alpha(gray[400], 0.2)}`,
- '& .Mui-selected': {
- color: brand[500],
- },
- ...(theme.palette.mode === 'dark' && {
- '& .Mui-selected': {
- color: '#fff',
- },
- boxShadow: `0 4px 16px ${alpha(brand[700], 0.5)}`,
- }),
- }),
- },
- },
- MuiToggleButton: {
- styleOverrides: {
- root: ({ theme }) => ({
- padding: '12px 16px',
- textTransform: 'none',
- borderRadius: '10px',
- fontWeight: 500,
- ...(theme.palette.mode === 'dark' && {
- color: gray[400],
- boxShadow: '0 4px 16px rgba(0, 0, 0, 0.5)',
- '&.Mui-selected': { color: brand[300] },
- }),
- }),
- },
- },
MuiButtonBase: {
defaultProps: {
disableTouchRipple: true,
@@ -289,9 +277,9 @@ export default function getLPTheme(mode: PaletteMode): ThemeOptions {
styleOverrides: {
root: {
boxSizing: 'border-box',
- transition: 'all 100ms ease-in',
+ transition: 'all 100ms ease',
'&:focus-visible': {
- outline: `3px solid ${alpha(brand[500], 0.5)}`,
+ outline: `3px solid ${alpha(brand[400], 0.5)}`,
outlineOffset: '2px',
},
},
@@ -300,65 +288,126 @@ export default function getLPTheme(mode: PaletteMode): ThemeOptions {
MuiButton: {
styleOverrides: {
root: ({ theme, ownerState }) => ({
- boxSizing: 'border-box',
boxShadow: 'none',
- borderRadius: '10px',
+ borderRadius: theme.shape.borderRadius,
textTransform: 'none',
- '&:active': {
- transform: 'scale(0.98)',
- },
...(ownerState.size === 'small' && {
- maxHeight: '32px',
+ height: '2rem', // 32px
+ padding: '0 0.5rem',
}),
...(ownerState.size === 'medium' && {
- height: '40px',
+ height: '2.5rem', // 40px
}),
...(ownerState.variant === 'contained' &&
ownerState.color === 'primary' && {
- color: brand[50],
- background: brand[500],
- backgroundImage: `linear-gradient(to bottom, ${brand[400]}, ${brand[600]})`,
- boxShadow: `inset 0 1px ${alpha(brand[300], 0.4)}`,
- outline: `1px solid ${brand[700]}`,
+ color: 'white',
+ backgroundColor: brand[300],
+ backgroundImage: `linear-gradient(to bottom, ${alpha(brand[400], 0.8)}, ${brand[500]})`,
+ boxShadow: `inset 0 2px 0 ${alpha(brand[200], 0.2)}, inset 0 -2px 0 ${alpha(brand[700], 0.4)}`,
+ border: `1px solid ${brand[500]}`,
'&:hover': {
- background: brand[400],
- backgroundImage: 'none',
- boxShadow: `0 0 0 1px ${alpha(brand[300], 0.5)}`,
+ backgroundColor: brand[700],
+ boxShadow: 'none',
+ },
+ '&:active': {
+ backgroundColor: brand[700],
+ boxShadow: `inset 0 2.5px 0 ${alpha(brand[700], 0.4)}`,
},
}),
...(ownerState.variant === 'outlined' && {
+ color: brand[700],
backgroundColor: alpha(brand[300], 0.1),
- borderColor: brand[300],
- color: brand[500],
+ borderColor: alpha(brand[200], 0.8),
+ boxShadow: `inset 0 2px ${alpha(brand[50], 0.5)}, inset 0 -2px ${alpha(brand[200], 0.2)}`,
'&:hover': {
- backgroundColor: alpha(brand[300], 0.3),
- borderColor: brand[200],
+ backgroundColor: alpha(brand[300], 0.2),
+ borderColor: alpha(brand[300], 0.5),
+ boxShadow: 'none',
},
- }),
- ...(ownerState.variant === 'text' && {
- color: brand[500],
- '&:hover': {
+ '&:active': {
backgroundColor: alpha(brand[300], 0.3),
- borderColor: brand[200],
+ boxShadow: `inset 0 2.5px 0 ${alpha(brand[400], 0.2)}`,
+ backgroundImage: 'none',
},
}),
+ ...(ownerState.variant === 'outlined' &&
+ ownerState.color === 'secondary' && {
+ backgroundColor: alpha(gray[300], 0.1),
+ borderColor: alpha(gray[300], 0.5),
+ color: gray[700],
+ '&:hover': {
+ backgroundColor: alpha(gray[300], 0.3),
+ borderColor: alpha(gray[300], 0.5),
+ boxShadow: 'none',
+ },
+ '&:active': {
+ backgroundColor: alpha(gray[300], 0.4),
+ boxShadow: `inset 0 2.5px 0 ${alpha(gray[400], 0.2)}`,
+ backgroundImage: 'none',
+ },
+ }),
+ ...(ownerState.variant === 'text' &&
+ ownerState.color === 'primary' && {
+ color: brand[700],
+ '&:hover': {
+ backgroundColor: alpha(brand[300], 0.3),
+ },
+ }),
+ ...(ownerState.variant === 'text' &&
+ ownerState.color === 'info' && {
+ color: gray[700],
+ '&:hover': {
+ backgroundColor: alpha(gray[300], 0.3),
+ },
+ }),
...(theme.palette.mode === 'dark' && {
...(ownerState.variant === 'outlined' && {
+ color: brand[200],
backgroundColor: alpha(brand[600], 0.1),
- borderColor: brand[700],
- color: brand[300],
+ borderColor: alpha(brand[600], 0.6),
+ boxShadow: `inset 0 2.5px ${alpha(brand[400], 0.1)}, inset 0 -2px ${alpha(gray[900], 0.5)}`,
'&:hover': {
- backgroundColor: alpha(brand[600], 0.3),
- borderColor: brand[700],
+ backgroundColor: alpha(brand[700], 0.2),
+ borderColor: alpha(brand[700], 0.5),
+ boxShadow: 'none',
},
- }),
- ...(ownerState.variant === 'text' && {
- color: brand[300],
- '&:hover': {
- backgroundColor: alpha(brand[600], 0.3),
- borderColor: brand[700],
+ '&:active': {
+ backgroundColor: alpha(brand[800], 0.2),
+ boxShadow: `inset 0 2.5px 0 ${alpha(brand[900], 0.4)}`,
+ backgroundImage: 'none',
},
}),
+ ...(ownerState.variant === 'text' &&
+ ownerState.color === 'info' && {
+ color: gray[200],
+ '&:hover': {
+ backgroundColor: alpha(gray[700], 0.3),
+ },
+ }),
+ ...(ownerState.variant === 'outlined' &&
+ ownerState.color === 'secondary' && {
+ color: gray[300],
+ backgroundColor: alpha(gray[600], 0.1),
+ borderColor: alpha(gray[700], 0.5),
+ boxShadow: `inset 0 2.5px ${alpha(gray[600], 0.1)}, inset 0 -2px ${alpha(gray[900], 0.5)}`,
+ '&:hover': {
+ backgroundColor: alpha(gray[700], 0.2),
+ borderColor: alpha(gray[700], 0.5),
+ boxShadow: 'none',
+ },
+ '&:active': {
+ backgroundColor: alpha(gray[800], 0.2),
+ boxShadow: `inset 0 2.5px 0 ${alpha(gray[900], 0.4)}`,
+ backgroundImage: 'none',
+ },
+ }),
+ ...(ownerState.variant === 'text' &&
+ ownerState.color === 'primary' && {
+ color: brand[200],
+ '&:hover': {
+ backgroundColor: alpha(brand[700], 0.3),
+ },
+ }),
}),
}),
},
@@ -366,30 +415,26 @@ export default function getLPTheme(mode: PaletteMode): ThemeOptions {
MuiCard: {
styleOverrides: {
root: ({ theme, ownerState }) => ({
+ transition: 'all 100ms ease',
backgroundColor: gray[50],
- borderRadius: 10,
- border: `1px solid ${alpha(gray[200], 0.8)}`,
+ borderRadius: theme.shape.borderRadius,
+ border: `1px solid ${alpha(gray[200], 0.5)}`,
boxShadow: 'none',
- transition: 'background-color, border, 80ms ease',
...(ownerState.variant === 'outlined' && {
- background: `linear-gradient(to bottom, #FFF, ${gray[50]})`,
- '&:hover': {
- borderColor: brand[300],
- boxShadow: `0 0 24px ${brand[100]}`,
- },
+ border: `1px solid ${gray[200]}`,
+ boxShadow: 'none',
+ background: `linear-gradient(to bottom, hsl(0, 0%, 100%), ${gray[50]})`,
}),
...(theme.palette.mode === 'dark' && {
backgroundColor: alpha(gray[800], 0.6),
border: `1px solid ${alpha(gray[700], 0.3)}`,
...(ownerState.variant === 'outlined' && {
+ border: `1px solid ${alpha(gray[700], 0.4)}`,
+ boxShadow: 'none',
background: `linear-gradient(to bottom, ${gray[900]}, ${alpha(
gray[800],
0.5,
)})`,
- '&:hover': {
- borderColor: brand[700],
- boxShadow: `0 0 24px ${brand[800]}`,
- },
}),
}),
}),
@@ -398,18 +443,17 @@ export default function getLPTheme(mode: PaletteMode): ThemeOptions {
MuiChip: {
styleOverrides: {
root: ({ theme }) => ({
- alignSelf: 'center',
py: 1.5,
px: 0.5,
- background: `linear-gradient(to bottom right, ${brand[50]}, ${brand[100]})`,
border: '1px solid',
- borderColor: `${alpha(brand[500], 0.3)}`,
- fontWeight: '600',
+ borderColor: brand[100],
+ fontWeight: 600,
+ backgroundColor: brand[50],
'&:hover': {
backgroundColor: brand[500],
},
'&:focus-visible': {
- borderColor: brand[800],
+ borderColor: brand[300],
backgroundColor: brand[200],
},
'& .MuiChip-label': {
@@ -419,14 +463,14 @@ export default function getLPTheme(mode: PaletteMode): ThemeOptions {
color: brand[500],
},
...(theme.palette.mode === 'dark' && {
- background: `linear-gradient(to bottom right, ${brand[700]}, ${brand[900]})`,
- borderColor: `${alpha(brand[500], 0.5)}`,
+ borderColor: `${alpha(brand[500], 0.2)}`,
+ backgroundColor: `${alpha(brand[900], 0.5)}`,
'&:hover': {
backgroundColor: brand[600],
},
'&:focus-visible': {
- borderColor: brand[200],
- backgroundColor: brand[600],
+ borderColor: brand[500],
+ backgroundColor: brand[800],
},
'& .MuiChip-label': {
color: brand[200],
@@ -448,13 +492,54 @@ export default function getLPTheme(mode: PaletteMode): ThemeOptions {
}),
},
},
+ MuiFormLabel: {
+ styleOverrides: {
+ root: ({ theme }) => ({
+ typography: theme.typography.caption,
+ marginBottom: 8,
+ }),
+ },
+ },
+ MuiIconButton: {
+ styleOverrides: {
+ root: ({ theme, ownerState }) => ({
+ ...(ownerState.size === 'small' && {
+ height: '2rem',
+ width: '2rem',
+ }),
+ ...(ownerState.size === 'medium' && {
+ height: '2.5rem',
+ width: '2.5rem',
+ }),
+ color: brand[500],
+ '&:hover': {
+ backgroundColor: alpha(brand[300], 0.3),
+ borderColor: brand[200],
+ },
+ ...(theme.palette.mode === 'dark' && {
+ color: brand[200],
+ '&:hover': {
+ backgroundColor: alpha(brand[600], 0.3),
+ borderColor: brand[700],
+ },
+ }),
+ }),
+ },
+ },
+ MuiInputBase: {
+ styleOverrides: {
+ root: {
+ border: 'none',
+ },
+ },
+ },
MuiLink: {
defaultProps: {
underline: 'none',
},
styleOverrides: {
root: ({ theme }) => ({
- color: brand[600],
+ color: brand[700],
fontWeight: 500,
position: 'relative',
textDecoration: 'none',
@@ -473,6 +558,11 @@ export default function getLPTheme(mode: PaletteMode): ThemeOptions {
width: '100%',
opacity: 1,
},
+ '&:focus-visible': {
+ outline: `3px solid ${alpha(brand[500], 0.5)}`,
+ outlineOffset: '4px',
+ borderRadius: '2px',
+ },
...(theme.palette.mode === 'dark' && {
color: brand[200],
}),
@@ -482,26 +572,109 @@ export default function getLPTheme(mode: PaletteMode): ThemeOptions {
MuiMenuItem: {
styleOverrides: {
root: ({ theme }) => ({
- borderRadius: '99px',
- color: gray[500],
+ paddingRight: 6,
+ paddingLeft: 6,
+ color: gray[700],
+ fontSize: '0.875rem',
fontWeight: 500,
+ borderRadius: theme.shape.borderRadius,
...(theme.palette.mode === 'dark' && {
- color: gray[300],
+ color: gray[200],
}),
}),
},
},
- MuiPaper: {
+ MuiOutlinedInput: {
styleOverrides: {
- root: ({ theme }) => ({
- backgroundImage: 'none',
- backgroundColor: gray[100],
+ notchedOutline: {
+ border: 'none',
+ },
+ input: {
+ paddingLeft: 10,
+ },
+ root: ({ theme, ownerState }) => ({
+ 'input:-webkit-autofill': {
+ WebkitBoxShadow: `0 0 0 1000px ${brand[100]} inset, 0 0 0 1px ${brand[200]}`,
+ maxHeight: '4px',
+ borderRadius: '8px',
+ },
+ '& .MuiInputBase-input': {
+ fontSize: '1rem',
+ '&::placeholder': {
+ opacity: 0.7,
+ color: gray[500],
+ },
+ },
+ boxSizing: 'border-box',
+ flexGrow: 1,
+ height: '40px',
+ borderRadius: theme.shape.borderRadius,
+ border: '1px solid',
+ borderColor: alpha(gray[300], 0.8),
+ boxShadow: '0 0 0 1.5px hsla(210, 0%, 0%, 0.02) inset',
+ transition: 'border-color 120ms ease-in',
+ backgroundColor: alpha(gray[100], 0.4),
+ '&:hover': {
+ borderColor: brand[300],
+ },
+ '&.Mui-focused': {
+ outline: `3px solid ${alpha(brand[500], 0.5)}`,
+ outlineOffset: '2px',
+ borderColor: brand[400],
+ },
+ ...(ownerState.color === 'error' && {
+ borderColor: red[200],
+ color: red[500],
+ '& + .MuiFormHelperText-root': {
+ color: red[500],
+ },
+ }),
...(theme.palette.mode === 'dark' && {
- backgroundColor: alpha(gray[900], 0.6),
+ 'input:-webkit-autofill': {
+ WebkitBoxShadow: `0 0 0 1000px ${brand[900]} inset, 0 0 0 1px ${brand[600]}`,
+ maxHeight: '6px',
+ borderRadius: '8px',
+ },
+ '& .MuiInputBase-input': {
+ fontSize: '1rem',
+ '&::placeholder': {
+ opacity: 1,
+ color: gray[500],
+ },
+ },
+ borderColor: alpha(gray[700], 0.5),
+ boxShadow: '0 0 0 1.5px hsl(210, 0%, 0%) inset',
+ backgroundColor: alpha(gray[900], 0.8),
+ transition: 'border-color 120ms ease-in',
+ '&:hover': {
+ borderColor: brand[300],
+ },
+ '&.Mui-focused': {
+ borderColor: brand[400],
+ outline: `3px solid ${alpha(brand[500], 0.5)}`,
+ outlineOffset: '2px',
+ },
+ ...(ownerState.color === 'error' && {
+ borderColor: red[700],
+ color: red[300],
+ '& + .MuiFormHelperText-root': {
+ color: red[300],
+ },
+ }),
}),
}),
},
},
+ MuiPaper: {
+ defaultProps: {
+ elevation: 0,
+ },
+ },
+ MuiStack: {
+ defaultProps: {
+ useFlexGap: true,
+ },
+ },
MuiSwitch: {
styleOverrides: {
root: ({ theme }) => ({
@@ -524,8 +697,8 @@ export default function getLPTheme(mode: PaletteMode): ThemeOptions {
borderRadius: 50,
},
'& .MuiSwitch-thumb': {
- boxShadow: '0 0 2px 2px rgba(0, 0, 0, 0.2)',
- backgroundColor: '#FFF',
+ boxShadow: '0 0 2px 2px hsla(220, 0%, 0%, 0.2)',
+ backgroundColor: 'hsl(0, 0%, 100%)',
width: 16,
height: 16,
margin: 2,
@@ -546,8 +719,8 @@ export default function getLPTheme(mode: PaletteMode): ThemeOptions {
},
},
'& .MuiSwitch-thumb': {
- boxShadow: '0 0 2px 2px rgba(0, 0, 0, 0.2)',
- backgroundColor: '#FFF',
+ boxShadow: '0 0 2px 2px hsla(220, 0%, 0%, 0.2)',
+ backgroundColor: 'hsl(0, 0%, 100%)',
width: 16,
height: 16,
margin: 2,
@@ -558,72 +731,40 @@ export default function getLPTheme(mode: PaletteMode): ThemeOptions {
height: 24,
width: 24,
padding: 0,
- color: '#fff',
+ color: 'hsl(0, 0%, 100%)',
'&.Mui-checked + .MuiSwitch-track': {
opacity: 1,
},
},
},
},
- MuiTextField: {
+ MuiToggleButtonGroup: {
styleOverrides: {
root: ({ theme }) => ({
- '& label .Mui-focused': {
- color: 'white',
- },
- '& .MuiInputBase-input': {
- boxSizing: 'border-box',
- '&::placeholder': {
- opacity: 0.7,
- },
- },
- '& .MuiOutlinedInput-root': {
- boxSizing: 'border-box',
- minWidth: 280,
- minHeight: 40,
- height: '100%',
- borderRadius: '10px',
- border: '1px solid',
- borderColor: gray[200],
- transition: 'border-color 120ms ease-in',
- '& fieldset': {
- border: 'none',
- boxShadow: '0px 2px 4px rgba(0, 0, 0, 0.1)',
- background: `${alpha('#FFF', 0.3)}`,
- },
- '&:hover': {
- borderColor: brand[300],
- },
- '&.Mui-focused': {
- borderColor: brand[400],
- outline: '4px solid',
- outlineColor: brand[200],
- },
+ borderRadius: theme.shape.borderRadius,
+ boxShadow: `0 1px 2px hsla(210, 0%, 0%, 0.05), 0 2px 12px ${alpha(brand[200], 0.5)}`,
+ '& .Mui-selected': {
+ color: brand[500],
},
...(theme.palette.mode === 'dark' && {
- '& .MuiOutlinedInput-root': {
- boxSizing: 'border-box',
- minWidth: 280,
- minHeight: 40,
- height: '100%',
- borderRadius: '10px',
- border: '1px solid',
- borderColor: gray[600],
- transition: 'border-color 120ms ease-in',
- '& fieldset': {
- border: 'none',
- boxShadow: ' 0px 2px 4px rgba(0, 0, 0, 0.4)',
- background: `${alpha(gray[800], 0.4)}`,
- },
- '&:hover': {
- borderColor: brand[300],
- },
- '&.Mui-focused': {
- borderColor: brand[400],
- outline: '4px solid',
- outlineColor: alpha(brand[500], 0.5),
- },
+ '& .Mui-selected': {
+ color: 'hsl(0, 0%, 100%)',
},
+ boxShadow: `0 0 0 1px hsla(210, 0%, 0%, 0.5), 0 2px 12px ${alpha(brand[700], 0.5)}`,
+ }),
+ }),
+ },
+ },
+ MuiToggleButton: {
+ styleOverrides: {
+ root: ({ theme }) => ({
+ padding: '12px 16px',
+ textTransform: 'none',
+ borderRadius: theme.shape.borderRadius,
+ fontWeight: 500,
+ ...(theme.palette.mode === 'dark' && {
+ color: gray[400],
+ '&.Mui-selected': { color: brand[300] },
}),
}),
},
diff --git a/docs/data/material/getting-started/templates/sign-in-side/Content.js b/docs/data/material/getting-started/templates/sign-in-side/Content.js
index f656245d4816c1..5035c73d0bf86d 100644
--- a/docs/data/material/getting-started/templates/sign-in-side/Content.js
+++ b/docs/data/material/getting-started/templates/sign-in-side/Content.js
@@ -1,4 +1,5 @@
import * as React from 'react';
+import Box from '@mui/material/Box';
import Stack from '@mui/material/Stack';
import Typography from '@mui/material/Typography';
@@ -46,13 +47,9 @@ export default function Content() {
maxWidth: 450,
}}
>
-
+
+
+
{items.map((item) => (
{item.icon}
diff --git a/docs/data/material/getting-started/templates/sign-in-side/Content.tsx b/docs/data/material/getting-started/templates/sign-in-side/Content.tsx
index f656245d4816c1..5035c73d0bf86d 100644
--- a/docs/data/material/getting-started/templates/sign-in-side/Content.tsx
+++ b/docs/data/material/getting-started/templates/sign-in-side/Content.tsx
@@ -1,4 +1,5 @@
import * as React from 'react';
+import Box from '@mui/material/Box';
import Stack from '@mui/material/Stack';
import Typography from '@mui/material/Typography';
@@ -46,13 +47,9 @@ export default function Content() {
maxWidth: 450,
}}
>
-
+
+
+
{items.map((item) => (
{item.icon}
diff --git a/docs/data/material/getting-started/templates/sign-in-side/CustomIcons.js b/docs/data/material/getting-started/templates/sign-in-side/CustomIcons.js
index e4a8d735bb75e6..3cf63c3501ba0c 100644
--- a/docs/data/material/getting-started/templates/sign-in-side/CustomIcons.js
+++ b/docs/data/material/getting-started/templates/sign-in-side/CustomIcons.js
@@ -1,87 +1,57 @@
import * as React from 'react';
-import PropTypes from 'prop-types';
-
import SvgIcon from '@mui/material/SvgIcon';
-function SitemarkIcon({ sx }) {
+export function SitemarkIcon() {
return (
-
+
-
-
-
-
);
}
-SitemarkIcon.propTypes = {
- sx: PropTypes.oneOfType([
- PropTypes.arrayOf(
- PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool]),
- ),
- PropTypes.func,
- PropTypes.object,
- ]),
-};
-
-export { SitemarkIcon };
-
export function FacebookIcon() {
return (
diff --git a/docs/data/material/getting-started/templates/sign-in-side/CustomIcons.tsx b/docs/data/material/getting-started/templates/sign-in-side/CustomIcons.tsx
index f66661a29dcb57..3cf63c3501ba0c 100644
--- a/docs/data/material/getting-started/templates/sign-in-side/CustomIcons.tsx
+++ b/docs/data/material/getting-started/templates/sign-in-side/CustomIcons.tsx
@@ -1,72 +1,51 @@
import * as React from 'react';
-import { SxProps, Theme } from '@mui/system';
import SvgIcon from '@mui/material/SvgIcon';
-interface IconProps {
- sx?: SxProps;
-}
-
-export function SitemarkIcon({ sx }: IconProps) {
+export function SitemarkIcon() {
return (
-
+
-
-
-
-
diff --git a/docs/data/material/getting-started/templates/sign-in-side/SignInCard.js b/docs/data/material/getting-started/templates/sign-in-side/SignInCard.js
index 2fe26179da482b..9c6c23678ee7b9 100644
--- a/docs/data/material/getting-started/templates/sign-in-side/SignInCard.js
+++ b/docs/data/material/getting-started/templates/sign-in-side/SignInCard.js
@@ -76,17 +76,13 @@ export default function SignInCard() {
gap: 2,
boxShadow:
theme.palette.mode === 'light'
- ? 'rgba(0, 0, 0, 0.05) 0px 5px 15px 0px, rgba(25, 28, 33, 0.05) 0px 15px 35px -5px, rgba(0, 0, 0, 0.05) 0px 0px 0px 1px'
- : 'rgba(0, 0, 0, 0.5) 0px 5px 15px 0px, rgba(25, 28, 33, 0.08) 0px 15px 35px -5px, rgba(0, 0, 0, 0.05) 0px 0px 0px 1px',
+ ? 'hsla(220, 30%, 5%, 0.05) 0px 5px 15px 0px, hsla(220, 25%, 10%, 0.05) 0px 15px 35px -5px, hsla(220, 30%, 5%, 0.05) 0px 0px 0px 1px'
+ : 'hsla(220, 30%, 5%, 0.5) 0px 5px 15px 0px, hsla(220, 25%, 10%, 0.08) 0px 15px 35px -5px, hsla(220, 30%, 5%, 0.05) 0px 0px 0px 1px',
})}
>
-
+
+
+
-
+
+
+
({
backgroundImage:
theme.palette.mode === 'light'
- ? 'radial-gradient(ellipse at 70% 51%, #f0f7ff, #fff)'
- : 'radial-gradient(at 70% 51%, rgba(2,41,79,0.5), rgb(1, 6, 11))',
+ ? 'radial-gradient(ellipse at 70% 51%, hsl(210, 100%, 97%), hsl(0, 0%, 100%))'
+ : 'radial-gradient(at 70% 51%, hsla(210, 100%, 16%, 0.5), hsl(220, 30%, 5%))',
backgroundSize: 'cover',
height: { xs: 'auto', md: '100dvh' },
pb: { xs: 12, sm: 0 },
diff --git a/docs/data/material/getting-started/templates/sign-in-side/SignInSide.tsx b/docs/data/material/getting-started/templates/sign-in-side/SignInSide.tsx
index f27e977ad3c71f..faff7403c757bb 100644
--- a/docs/data/material/getting-started/templates/sign-in-side/SignInSide.tsx
+++ b/docs/data/material/getting-started/templates/sign-in-side/SignInSide.tsx
@@ -41,7 +41,7 @@ function ToggleCustomTheme({
exclusive
value={showCustomTheme}
onChange={toggleCustomTheme}
- aria-label="Platform"
+ aria-label="Toggle design language"
sx={{
backgroundColor: 'background.default',
'& .Mui-selected': {
@@ -82,8 +82,8 @@ export default function SignInSide() {
sx={(theme) => ({
backgroundImage:
theme.palette.mode === 'light'
- ? 'radial-gradient(ellipse at 70% 51%, #f0f7ff, #fff)'
- : 'radial-gradient(at 70% 51%, rgba(2,41,79,0.5), rgb(1, 6, 11))',
+ ? 'radial-gradient(ellipse at 70% 51%, hsl(210, 100%, 97%), hsl(0, 0%, 100%))'
+ : 'radial-gradient(at 70% 51%, hsla(210, 100%, 16%, 0.5), hsl(220, 30%, 5%))',
backgroundSize: 'cover',
height: { xs: 'auto', md: '100dvh' },
pb: { xs: 12, sm: 0 },
diff --git a/docs/data/material/getting-started/templates/sign-in-side/SitemarkIcon.js b/docs/data/material/getting-started/templates/sign-in-side/SitemarkIcon.js
deleted file mode 100644
index d390782f3be28e..00000000000000
--- a/docs/data/material/getting-started/templates/sign-in-side/SitemarkIcon.js
+++ /dev/null
@@ -1,85 +0,0 @@
-import * as React from 'react';
-import PropTypes from 'prop-types';
-
-import SvgIcon from '@mui/material/SvgIcon';
-
-/* this logo is from LogoToUse.com */
-
-function SitemarkIcon({ sx }) {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
-
-SitemarkIcon.propTypes = {
- sx: PropTypes.oneOfType([
- PropTypes.arrayOf(
- PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool]),
- ),
- PropTypes.func,
- PropTypes.object,
- ]),
-};
-
-export default SitemarkIcon;
diff --git a/docs/data/material/getting-started/templates/sign-in-side/SitemarkIcon.tsx b/docs/data/material/getting-started/templates/sign-in-side/SitemarkIcon.tsx
deleted file mode 100644
index aee5bffc07e174..00000000000000
--- a/docs/data/material/getting-started/templates/sign-in-side/SitemarkIcon.tsx
+++ /dev/null
@@ -1,76 +0,0 @@
-import * as React from 'react';
-import { SxProps, Theme } from '@mui/system';
-import SvgIcon from '@mui/material/SvgIcon';
-
-interface SitemarkIconProps {
- sx?: SxProps;
-}
-
-/* this logo is from LogoToUse.com */
-
-export default function SitemarkIcon({ sx }: SitemarkIconProps) {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
diff --git a/docs/data/material/getting-started/templates/sign-in-side/ToggleColorMode.tsx b/docs/data/material/getting-started/templates/sign-in-side/ToggleColorMode.tsx
index 3783eb9d80714d..1fd99c941fe0ab 100644
--- a/docs/data/material/getting-started/templates/sign-in-side/ToggleColorMode.tsx
+++ b/docs/data/material/getting-started/templates/sign-in-side/ToggleColorMode.tsx
@@ -11,7 +11,10 @@ interface ToggleColorModeProps {
toggleColorMode: () => void;
}
-function ToggleColorMode({ mode, toggleColorMode }: ToggleColorModeProps) {
+export default function ToggleColorMode({
+ mode,
+ toggleColorMode,
+}: ToggleColorModeProps) {
return (
);
}
-
-export default ToggleColorMode;
diff --git a/docs/data/material/getting-started/templates/sign-in-side/getSignInSideTheme.js b/docs/data/material/getting-started/templates/sign-in-side/getSignInSideTheme.js
index b464dd285ddd78..e39de16cbf5e55 100644
--- a/docs/data/material/getting-started/templates/sign-in-side/getSignInSideTheme.js
+++ b/docs/data/material/getting-started/templates/sign-in-side/getSignInSideTheme.js
@@ -1,73 +1,75 @@
import * as React from 'react';
-import { alpha } from '@mui/material/styles';
+import { createTheme, alpha } from '@mui/material/styles';
import CheckBoxOutlineBlankRoundedIcon from '@mui/icons-material/CheckBoxOutlineBlankRounded';
import CheckRoundedIcon from '@mui/icons-material/CheckRounded';
-export const brand = {
- 50: '#F0F7FF',
- 100: '#CEE5FD',
- 200: '#9CCCFC',
- 300: '#55A6F6',
- 400: '#0A66C2',
- 500: '#0959AA',
- 600: '#064079',
- 700: '#033363',
- 800: '#02294F',
- 900: '#021F3B',
-};
+const customTheme = createTheme();
-export const secondary = {
- 50: '#F9F0FF',
- 100: '#E9CEFD',
- 200: '#D49CFC',
- 300: '#B355F6',
- 400: '#750AC2',
- 500: '#6709AA',
- 600: '#490679',
- 700: '#3B0363',
- 800: '#2F024F',
- 900: '#23023B',
+export const brand = {
+ 50: 'hsl(210, 100%, 97%)',
+ 100: 'hsl(210, 100%, 90%)',
+ 200: 'hsl(210, 100%, 80%)',
+ 300: 'hsl(210, 100%, 65%)',
+ 400: 'hsl(210, 98%, 48%)',
+ 500: 'hsl(210, 98%, 42%)',
+ 600: 'hsl(210, 98%, 55%)',
+ 700: 'hsl(210, 100%, 35%)',
+ 800: 'hsl(210, 100%, 16%)',
+ 900: 'hsl(210, 100%, 21%)',
};
export const gray = {
- 50: '#FBFCFE',
- 100: '#EAF0F5',
- 200: '#D6E2EB',
- 300: '#BFCCD9',
- 400: '#94A6B8',
- 500: '#5B6B7C',
- 600: '#4C5967',
- 700: '#364049',
- 800: '#131B20',
- 900: '#090E10',
+ 50: 'hsl(220, 60%, 99%)',
+ 100: 'hsl(220, 35%, 94%)',
+ 200: 'hsl(220, 35%, 88%)',
+ 300: 'hsl(220, 25%, 80%)',
+ 400: 'hsl(220, 20%, 65%)',
+ 500: 'hsl(220, 20%, 42%)',
+ 600: 'hsl(220, 25%, 35%)',
+ 700: 'hsl(220, 25%, 25%)',
+ 800: 'hsl(220, 25%, 10%)',
+ 900: 'hsl(220, 30%, 5%)',
};
export const green = {
- 50: '#F6FEF6',
- 100: '#E3FBE3',
- 200: '#C7F7C7',
- 300: '#A1E8A1',
- 400: '#51BC51',
- 500: '#1F7A1F',
- 600: '#136C13',
- 700: '#0A470A',
- 800: '#042F04',
- 900: '#021D02',
+ 50: 'hsl(120, 80%, 98%)',
+ 100: 'hsl(120, 75%, 94%)',
+ 200: 'hsl(120, 75%, 87%)',
+ 300: 'hsl(120, 61%, 77%)',
+ 400: 'hsl(120, 44%, 53%)',
+ 500: 'hsl(120, 59%, 30%)',
+ 600: 'hsl(120, 70%, 25%)',
+ 700: 'hsl(120, 75%, 16%)',
+ 800: 'hsl(120, 84%, 10%)',
+ 900: 'hsl(120, 87%, 6%)',
+};
+
+export const orange = {
+ 50: 'hsl(45, 100%, 97%)',
+ 100: 'hsl(45, 92%, 90%)',
+ 200: 'hsl(45, 94%, 80%)',
+ 300: 'hsl(45, 90%, 65%)',
+ 400: 'hsl(45, 90%, 40%)',
+ 500: 'hsl(45, 90%, 35%)',
+ 600: 'hsl(45, 91%, 25%)',
+ 700: 'hsl(45, 94%, 20%)',
+ 800: 'hsl(45, 95%, 16%)',
+ 900: 'hsl(45, 93%, 12%)',
};
export const red = {
- 50: '#FFF0F0',
- 100: '#FDCECE',
- 200: '#FC9C9C',
- 300: '#F65555',
- 400: '#C20A0A',
- 500: '#910808',
- 600: '#790606',
- 700: '#630303',
- 800: '#4F0202',
- 900: '#3B0202',
+ 50: 'hsl(0, 100%, 97%)',
+ 100: 'hsl(0, 92%, 90%)',
+ 200: 'hsl(0, 94%, 80%)',
+ 300: 'hsl(0, 90%, 65%)',
+ 400: 'hsl(0, 90%, 40%)',
+ 500: 'hsl(0, 90%, 30%)',
+ 600: 'hsl(0, 91%, 25%)',
+ 700: 'hsl(0, 94%, 20%)',
+ 800: 'hsl(0, 95%, 16%)',
+ 900: 'hsl(0, 93%, 12%)',
};
const getDesignTokens = (mode) => ({
@@ -85,26 +87,25 @@ const getDesignTokens = (mode) => ({
dark: brand[800],
}),
},
- secondary: {
- light: secondary[300],
- main: secondary[500],
- dark: secondary[800],
+ warning: {
+ light: orange[300],
+ main: orange[400],
+ dark: orange[800],
...(mode === 'dark' && {
- light: secondary[400],
- main: secondary[500],
- dark: secondary[900],
+ light: orange[400],
+ main: orange[500],
+ dark: orange[700],
}),
},
- warning: {
- main: '#F7B538',
- dark: '#F79F00',
- ...(mode === 'dark' && { main: '#F7B538', dark: '#F79F00' }),
- },
error: {
- light: red[50],
- main: red[500],
- dark: red[700],
- ...(mode === 'dark' && { light: '#D32F2F', main: '#D32F2F', dark: '#B22A2A' }),
+ light: red[300],
+ main: red[400],
+ dark: red[800],
+ ...(mode === 'dark' && {
+ light: red[400],
+ main: red[500],
+ dark: red[700],
+ }),
},
success: {
light: green[300],
@@ -117,27 +118,18 @@ const getDesignTokens = (mode) => ({
}),
},
grey: {
- 50: gray[50],
- 100: gray[100],
- 200: gray[200],
- 300: gray[300],
- 400: gray[400],
- 500: gray[500],
- 600: gray[600],
- 700: gray[700],
- 800: gray[800],
- 900: gray[900],
+ ...gray,
},
divider: mode === 'dark' ? alpha(gray[600], 0.3) : alpha(gray[300], 0.5),
background: {
- default: '#fff',
- paper: gray[50],
- ...(mode === 'dark' && { default: gray[900], paper: gray[800] }),
+ default: 'hsl(0, 0%, 100%)',
+ paper: gray[100],
+ ...(mode === 'dark' && { default: 'hsl(220, 30%, 3%)', paper: gray[900] }),
},
text: {
primary: gray[800],
secondary: gray[600],
- ...(mode === 'dark' && { primary: '#fff', secondary: gray[400] }),
+ ...(mode === 'dark' && { primary: 'hsl(0, 0%, 100%)', secondary: gray[400] }),
},
action: {
selected: `${alpha(brand[200], 0.2)}`,
@@ -149,51 +141,54 @@ const getDesignTokens = (mode) => ({
typography: {
fontFamily: ['"Inter", "sans-serif"'].join(','),
h1: {
- fontSize: 60,
+ fontSize: customTheme.typography.pxToRem(60),
fontWeight: 600,
- lineHeight: 78 / 70,
- letterSpacing: -0.2,
+ lineHeight: 1.2,
+ letterSpacing: -0.5,
},
h2: {
- fontSize: 48,
+ fontSize: customTheme.typography.pxToRem(48),
fontWeight: 600,
lineHeight: 1.2,
},
h3: {
- fontSize: 42,
+ fontSize: customTheme.typography.pxToRem(42),
lineHeight: 1.2,
},
h4: {
- fontSize: 36,
+ fontSize: customTheme.typography.pxToRem(36),
fontWeight: 500,
lineHeight: 1.5,
},
h5: {
- fontSize: 20,
+ fontSize: customTheme.typography.pxToRem(20),
fontWeight: 600,
},
h6: {
- fontSize: 18,
+ fontSize: customTheme.typography.pxToRem(18),
},
subtitle1: {
- fontSize: 18,
+ fontSize: customTheme.typography.pxToRem(18),
},
subtitle2: {
- fontSize: 16,
+ fontSize: customTheme.typography.pxToRem(16),
},
body1: {
+ fontSize: customTheme.typography.pxToRem(15),
fontWeight: 400,
- fontSize: 15,
},
body2: {
+ fontSize: customTheme.typography.pxToRem(14),
fontWeight: 400,
- fontSize: 14,
},
caption: {
+ fontSize: customTheme.typography.pxToRem(12),
fontWeight: 400,
- fontSize: 12,
},
},
+ shape: {
+ borderRadius: 12,
+ },
});
export default function getSignInSideTheme(mode) {
@@ -208,9 +203,9 @@ export default function getSignInSideTheme(mode) {
styleOverrides: {
root: {
boxSizing: 'border-box',
- transition: 'all 100ms ease-in',
+ transition: 'all 100ms ease',
'&:focus-visible': {
- outline: `3px solid ${alpha(brand[500], 0.5)}`,
+ outline: `3px solid ${alpha(brand[400], 0.5)}`,
outlineOffset: '2px',
},
},
@@ -220,34 +215,45 @@ export default function getSignInSideTheme(mode) {
styleOverrides: {
root: ({ theme, ownerState }) => ({
boxShadow: 'none',
- borderRadius: '10px',
+ borderRadius: theme.shape.borderRadius,
textTransform: 'none',
...(ownerState.size === 'small' && {
- maxHeight: '32px',
+ height: '2rem', // 32px
+ padding: '0 0.5rem',
}),
...(ownerState.size === 'medium' && {
- height: '40px',
+ height: '2.5rem', // 40px
}),
...(ownerState.variant === 'contained' &&
ownerState.color === 'primary' && {
- color: brand[50],
- background: brand[500],
- backgroundImage: `linear-gradient(to bottom, ${brand[400]}, ${brand[600]})`,
- boxShadow: `inset 0 1px ${alpha(brand[300], 0.5)}`,
+ color: 'white',
+ backgroundColor: brand[300],
+ backgroundImage: `linear-gradient(to bottom, ${alpha(brand[400], 0.8)}, ${brand[500]})`,
+ boxShadow: `inset 0 2px 0 ${alpha(brand[200], 0.2)}, inset 0 -2px 0 ${alpha(brand[700], 0.4)}`,
border: `1px solid ${brand[500]}`,
'&:hover': {
- background: brand[400],
- backgroundImage: 'none',
- boxShadow: `0 0 0 1px ${alpha(brand[300], 0.5)}`,
+ backgroundColor: brand[700],
+ boxShadow: 'none',
+ },
+ '&:active': {
+ backgroundColor: brand[700],
+ boxShadow: `inset 0 2.5px 0 ${alpha(brand[700], 0.4)}`,
},
}),
...(ownerState.variant === 'outlined' && {
+ color: brand[700],
backgroundColor: alpha(brand[300], 0.1),
- borderColor: brand[300],
- color: brand[500],
+ borderColor: alpha(brand[200], 0.8),
+ boxShadow: `inset 0 2px ${alpha(brand[50], 0.5)}, inset 0 -2px ${alpha(brand[200], 0.2)}`,
'&:hover': {
+ backgroundColor: alpha(brand[300], 0.2),
+ borderColor: alpha(brand[300], 0.5),
+ boxShadow: 'none',
+ },
+ '&:active': {
backgroundColor: alpha(brand[300], 0.3),
- borderColor: brand[200],
+ boxShadow: `inset 0 2.5px 0 ${alpha(brand[400], 0.2)}`,
+ backgroundImage: 'none',
},
}),
...(ownerState.variant === 'outlined' &&
@@ -257,84 +263,174 @@ export default function getSignInSideTheme(mode) {
color: gray[700],
'&:hover': {
backgroundColor: alpha(gray[300], 0.3),
- borderColor: gray[200],
+ borderColor: alpha(gray[300], 0.5),
+ boxShadow: 'none',
+ },
+ '&:active': {
+ backgroundColor: alpha(gray[300], 0.4),
+ boxShadow: `inset 0 2.5px 0 ${alpha(gray[400], 0.2)}`,
+ backgroundImage: 'none',
+ },
+ }),
+ ...(ownerState.variant === 'text' &&
+ ownerState.color === 'primary' && {
+ color: brand[700],
+ '&:hover': {
+ backgroundColor: alpha(brand[300], 0.3),
+ },
+ }),
+ ...(ownerState.variant === 'text' &&
+ ownerState.color === 'info' && {
+ color: gray[700],
+ '&:hover': {
+ backgroundColor: alpha(gray[300], 0.3),
},
}),
- ...(ownerState.variant === 'text' && {
- color: brand[600],
- '&:hover': {
- backgroundColor: alpha(brand[300], 0.3),
- borderColor: brand[200],
- },
- }),
...(theme.palette.mode === 'dark' && {
- ...(ownerState.variant === 'contained' &&
- ownerState.color === 'primary' && {
- border: `1px solid ${brand[600]}`,
- backgroundImage: `linear-gradient(to bottom, ${brand[500]}, ${brand[600]})`,
- backgroundColor: brand[500],
- '&:hover': {
- background: brand[600],
- backgroundImage: 'none',
- boxShadow: `0 0 0 1px ${alpha(brand[700], 0.5)}`,
- },
- }),
...(ownerState.variant === 'outlined' && {
+ color: brand[200],
backgroundColor: alpha(brand[600], 0.1),
- borderColor: brand[700],
- color: brand[300],
+ borderColor: alpha(brand[600], 0.6),
+ boxShadow: `inset 0 2.5px ${alpha(brand[400], 0.1)}, inset 0 -2px ${alpha(gray[900], 0.5)}`,
'&:hover': {
- backgroundColor: alpha(brand[600], 0.3),
- borderColor: brand[700],
+ backgroundColor: alpha(brand[700], 0.2),
+ borderColor: alpha(brand[700], 0.5),
+ boxShadow: 'none',
+ },
+ '&:active': {
+ backgroundColor: alpha(brand[800], 0.2),
+ boxShadow: `inset 0 2.5px 0 ${alpha(brand[900], 0.4)}`,
+ backgroundImage: 'none',
},
}),
+ ...(ownerState.variant === 'text' &&
+ ownerState.color === 'info' && {
+ color: gray[200],
+ '&:hover': {
+ backgroundColor: alpha(gray[700], 0.3),
+ },
+ }),
...(ownerState.variant === 'outlined' &&
ownerState.color === 'secondary' && {
+ color: gray[300],
backgroundColor: alpha(gray[600], 0.1),
borderColor: alpha(gray[700], 0.5),
- color: gray[300],
+ boxShadow: `inset 0 2.5px ${alpha(gray[600], 0.1)}, inset 0 -2px ${alpha(gray[900], 0.5)}`,
+ '&:hover': {
+ backgroundColor: alpha(gray[700], 0.2),
+ borderColor: alpha(gray[700], 0.5),
+ boxShadow: 'none',
+ },
+ '&:active': {
+ backgroundColor: alpha(gray[800], 0.2),
+ boxShadow: `inset 0 2.5px 0 ${alpha(gray[900], 0.4)}`,
+ backgroundImage: 'none',
+ },
+ }),
+ ...(ownerState.variant === 'text' &&
+ ownerState.color === 'primary' && {
+ color: brand[200],
'&:hover': {
- backgroundColor: alpha(gray[600], 0.3),
- borderColor: gray[700],
+ backgroundColor: alpha(brand[700], 0.3),
},
}),
- ...(ownerState.variant === 'text' && {
- color: brand[200],
- '&:hover': {
- backgroundColor: alpha(brand[600], 0.3),
- borderColor: brand[700],
- },
- }),
}),
}),
},
},
- MuiIconButton: {
+ MuiCard: {
styleOverrides: {
root: ({ theme, ownerState }) => ({
- ...(ownerState.size === 'small' && {
- height: '32px',
- width: '32px',
+ transition: 'all 100ms ease',
+ backgroundColor: gray[50],
+ borderRadius: theme.shape.borderRadius,
+ border: `1px solid ${alpha(gray[200], 0.5)}`,
+ boxShadow: 'none',
+ ...(ownerState.variant === 'outlined' && {
+ border: `1px solid ${gray[200]}`,
+ boxShadow: 'none',
+ background: `linear-gradient(to bottom, hsl(0, 0%, 100%), ${gray[50]})`,
}),
- ...(ownerState.size === 'medium' && {
- height: '40px',
- width: '40px',
+ ...(theme.palette.mode === 'dark' && {
+ backgroundColor: alpha(gray[800], 0.6),
+ border: `1px solid ${alpha(gray[700], 0.3)}`,
+ ...(ownerState.variant === 'outlined' && {
+ border: `1px solid ${alpha(gray[700], 0.4)}`,
+ boxShadow: 'none',
+ background: `linear-gradient(to bottom, ${gray[900]}, ${alpha(
+ gray[800],
+ 0.5,
+ )})`,
+ }),
}),
- color: brand[600],
+ }),
+ },
+ },
+ MuiCheckbox: {
+ defaultProps: {
+ disableRipple: true,
+ icon: (
+
+ ),
+ checkedIcon: ,
+ },
+ styleOverrides: {
+ root: ({ theme }) => ({
+ margin: 10,
+ height: 16,
+ width: 16,
+ borderRadius: 5,
+ border: '1px solid ',
+ borderColor: alpha(gray[300], 0.8),
+ backgroundColor: alpha(gray[100], 0.4),
+ boxShadow: '0 0 0 1.5px hsla(210, 0%, 0%, 0.04) inset',
+ transition: 'border-color, background-color, 120ms ease-in',
'&:hover': {
- backgroundColor: alpha(brand[300], 0.3),
- borderColor: brand[200],
+ borderColor: brand[300],
+ },
+ '&.Mui-focusVisible': {
+ outline: `3px solid ${alpha(brand[500], 0.5)}`,
+ outlineOffset: '2px',
+ borderColor: brand[400],
+ },
+ '&.Mui-checked': {
+ color: 'white',
+ backgroundColor: brand[500],
+ borderColor: brand[500],
+ boxShadow: `none`,
+ '&:hover': {
+ backgroundColor: brand[600],
+ },
},
...(theme.palette.mode === 'dark' && {
- color: brand[200],
+ borderColor: alpha(gray[700], 0.5),
+ boxShadow: '0 0 0 1.5px hsl(210, 0%, 0%) inset',
+ backgroundColor: alpha(gray[900], 0.8),
'&:hover': {
- backgroundColor: alpha(brand[600], 0.3),
- borderColor: brand[700],
+ borderColor: brand[300],
+ },
+ '&.Mui-focusVisible': {
+ borderColor: brand[400],
+ outline: `3px solid ${alpha(brand[500], 0.5)}`,
+ outlineOffset: '2px',
},
}),
}),
},
},
+ MuiDialog: {
+ styleOverrides: {
+ root: ({ theme }) => ({
+ '& .MuiDialog-paper': {
+ borderRadius: '10px',
+ border: '1px solid',
+ borderColor: theme.palette.divider,
+ },
+ }),
+ },
+ },
MuiDivider: {
styleOverrides: {
root: ({ theme }) => ({
@@ -345,25 +441,80 @@ export default function getSignInSideTheme(mode) {
}),
},
},
- MuiPaper: {
+ MuiFormLabel: {
styleOverrides: {
root: ({ theme }) => ({
- backgroundImage: 'none',
- backgroundColor: gray[100],
+ typography: theme.typography.caption,
+ marginBottom: 8,
+ }),
+ },
+ },
+ MuiIconButton: {
+ styleOverrides: {
+ root: ({ theme, ownerState }) => ({
+ ...(ownerState.size === 'small' && {
+ height: '2rem',
+ width: '2rem',
+ }),
+ ...(ownerState.size === 'medium' && {
+ height: '2.5rem',
+ width: '2.5rem',
+ }),
+ color: brand[500],
+ '&:hover': {
+ backgroundColor: alpha(brand[300], 0.3),
+ borderColor: brand[200],
+ },
...(theme.palette.mode === 'dark' && {
- backgroundColor: gray[800],
+ color: brand[200],
+ '&:hover': {
+ backgroundColor: alpha(brand[600], 0.3),
+ borderColor: brand[700],
+ },
}),
}),
},
},
- MuiDialog: {
+ MuiInputBase: {
+ styleOverrides: {
+ root: {
+ border: 'none',
+ },
+ },
+ },
+ MuiLink: {
+ defaultProps: {
+ underline: 'none',
+ },
styleOverrides: {
root: ({ theme }) => ({
- '& .MuiDialog-paper': {
- borderRadius: '10px',
- border: '1px solid',
- borderColor: theme.palette.divider,
+ color: brand[700],
+ fontWeight: 500,
+ position: 'relative',
+ textDecoration: 'none',
+ '&::before': {
+ content: '""',
+ position: 'absolute',
+ width: 0,
+ height: '1px',
+ bottom: 0,
+ left: 0,
+ backgroundColor: brand[200],
+ opacity: 0.7,
+ transition: 'width 0.3s ease, opacity 0.3s ease',
+ },
+ '&:hover::before': {
+ width: '100%',
+ opacity: 1,
+ },
+ '&:focus-visible': {
+ outline: `3px solid ${alpha(brand[500], 0.5)}`,
+ outlineOffset: '4px',
+ borderRadius: '2px',
},
+ ...(theme.palette.mode === 'dark' && {
+ color: brand[200],
+ }),
}),
},
},
@@ -382,6 +533,7 @@ export default function getSignInSideTheme(mode) {
borderRadius: '8px',
},
'& .MuiInputBase-input': {
+ fontSize: '1rem',
'&::placeholder': {
opacity: 0.7,
color: gray[500],
@@ -390,10 +542,10 @@ export default function getSignInSideTheme(mode) {
boxSizing: 'border-box',
flexGrow: 1,
height: '40px',
- borderRadius: '10px',
+ borderRadius: theme.shape.borderRadius,
border: '1px solid',
borderColor: alpha(gray[300], 0.8),
- boxShadow: '0 0 0 1.5px rgba(0, 0, 0, 0.04) inset',
+ boxShadow: '0 0 0 1.5px hsla(210, 0%, 0%, 0.02) inset',
transition: 'border-color 120ms ease-in',
backgroundColor: alpha(gray[100], 0.4),
'&:hover': {
@@ -418,13 +570,14 @@ export default function getSignInSideTheme(mode) {
borderRadius: '8px',
},
'& .MuiInputBase-input': {
+ fontSize: '1rem',
'&::placeholder': {
opacity: 1,
color: gray[500],
},
},
borderColor: alpha(gray[700], 0.5),
- boxShadow: '0 0 0 1.5px rgb(0, 0, 0) inset',
+ boxShadow: '0 0 0 1.5px hsl(210, 0%, 0%) inset',
backgroundColor: alpha(gray[900], 0.8),
transition: 'border-color 120ms ease-in',
'&:hover': {
@@ -446,154 +599,29 @@ export default function getSignInSideTheme(mode) {
}),
},
},
- MuiFormLabel: {
- styleOverrides: {
- root: ({ theme }) => ({
- typography: theme.typography.caption,
- marginBottom: 8,
- }),
- },
- },
- MuiInputBase: {
- styleOverrides: {
- root: {
- border: 'none',
- },
- },
- },
- MuiCard: {
- styleOverrides: {
- root: ({ theme, ownerState }) => ({
- backgroundColor: gray[50],
- borderRadius: 10,
- outline: `1px solid ${alpha(gray[200], 0.8)}`,
- boxShadow: 'none',
- ...(ownerState.variant === 'outlined' && {
- border: 0,
- boxSizing: 'border-box',
- background: `linear-gradient(to bottom, #FFF, ${gray[50]})`,
- }),
- ...(theme.palette.mode === 'dark' && {
- backgroundColor: alpha(gray[800], 0.6),
- outline: `1px solid ${alpha(gray[700], 0.5)}`,
- ...(ownerState.variant === 'outlined' && {
- boxSizing: 'border-box',
- background: `linear-gradient(to bottom, ${gray[900]}, ${alpha(
- gray[800],
- 0.5,
- )})`,
- }),
- }),
- }),
+ MuiPaper: {
+ defaultProps: {
+ elevation: 0,
},
},
- MuiLink: {
+ MuiStack: {
defaultProps: {
- underline: 'none',
- },
- styleOverrides: {
- root: ({ theme }) => ({
- color: brand[600],
- fontWeight: 500,
- position: 'relative',
- textDecoration: 'none',
- '&::before': {
- content: '""',
- position: 'absolute',
- width: 0,
- height: '1px',
- bottom: 0,
- left: 0,
- backgroundColor: brand[200],
- opacity: 0.7,
- transition: 'width 0.3s ease, opacity 0.3s ease',
- },
- '&:hover::before': {
- width: '100%',
- opacity: 1,
- },
- '&:focus-visible': {
- outline: `3px solid ${alpha(brand[500], 0.5)}`,
- outlineOffset: '4px',
- borderRadius: '2px',
- },
- ...(theme.palette.mode === 'dark' && {
- color: brand[200],
- }),
- }),
+ useFlexGap: true,
},
},
MuiToggleButtonGroup: {
styleOverrides: {
root: ({ theme }) => ({
- borderRadius: '10px',
- boxShadow: `0 4px 16px ${alpha(gray[400], 0.2)}`,
+ borderRadius: theme.shape.borderRadius,
+ boxShadow: `0 1px 2px hsla(210, 0%, 0%, 0.05), 0 2px 12px ${alpha(brand[200], 0.5)}`,
'& .Mui-selected': {
color: brand[500],
},
...(theme.palette.mode === 'dark' && {
'& .Mui-selected': {
- color: '#fff',
- },
- boxShadow: `0 4px 16px ${alpha(brand[700], 0.5)}`,
- }),
- }),
- },
- },
- MuiCheckbox: {
- defaultProps: {
- disableRipple: true,
- icon: ,
- checkedIcon: ,
- },
- styleOverrides: {
- root: ({ theme }) => ({
- margin: 10,
- height: 16,
- width: 16,
- borderRadius: 5,
- border: '1px solid ',
- borderColor: alpha(gray[300], 0.8),
- boxShadow: '0 0 0 1.5px rgba(0, 0, 0, 0.04) inset',
- transition: 'border-color 120ms ease-in',
- backgroundColor: alpha(gray[100], 0.4),
- '&:hover': {
- borderColor: brand[300],
- },
- '&.Mui-focusVisible': {
- outline: `3px solid ${alpha(brand[500], 0.5)}`,
- outlineOffset: '2px',
- borderColor: brand[400],
- },
- '&.Mui-checked': {
- color: 'white',
- backgroundColor: brand[500],
- '&:hover': {
- borderColor: brand[300],
- backgroundColor: brand[600],
- },
- },
- ...(theme.palette.mode === 'dark' && {
- borderColor: alpha(gray[700], 0.5),
- boxShadow: '0 0 0 1.5px rgb(0, 0, 0) inset',
- backgroundColor: alpha(gray[900], 0.8),
- '&:hover': {
- borderColor: brand[300],
- },
- '&.Mui-checked': {
- color: 'white',
- backgroundColor: brand[600],
- boxShadow: '0 0 0 1px rgba(0, 0, 0, 0.2) inset',
- '&:hover': {
- borderColor: brand[300],
- backgroundColor: brand[800],
- },
- },
- '&.Mui-focusVisible': {
- borderColor: brand[400],
- outline: `3px solid ${alpha(brand[500], 0.5)}`,
- outlineOffset: '2px',
+ color: 'hsl(0, 0%, 100%)',
},
+ boxShadow: `0 0 0 1px hsla(210, 0%, 0%, 0.5), 0 2px 12px ${alpha(brand[700], 0.5)}`,
}),
}),
},
@@ -603,21 +631,15 @@ export default function getSignInSideTheme(mode) {
root: ({ theme }) => ({
padding: '12px 16px',
textTransform: 'none',
- borderRadius: '10px',
+ borderRadius: theme.shape.borderRadius,
fontWeight: 500,
...(theme.palette.mode === 'dark' && {
color: gray[400],
- boxShadow: '0 4px 16px rgba(0, 0, 0, 0.5)',
'&.Mui-selected': { color: brand[300] },
}),
}),
},
},
- MuiStack: {
- defaultProps: {
- useFlexGap: true,
- },
- },
},
};
}
diff --git a/docs/data/material/getting-started/templates/sign-in-side/getSignInSideTheme.tsx b/docs/data/material/getting-started/templates/sign-in-side/getSignInSideTheme.tsx
index 6b4da0a9489ccb..20e9329142a520 100644
--- a/docs/data/material/getting-started/templates/sign-in-side/getSignInSideTheme.tsx
+++ b/docs/data/material/getting-started/templates/sign-in-side/getSignInSideTheme.tsx
@@ -1,6 +1,6 @@
import * as React from 'react';
import type {} from '@mui/material/themeCssVarsAugmentation';
-import { ThemeOptions, alpha } from '@mui/material/styles';
+import { createTheme, ThemeOptions, alpha } from '@mui/material/styles';
import { PaletteMode } from '@mui/material';
import CheckBoxOutlineBlankRoundedIcon from '@mui/icons-material/CheckBoxOutlineBlankRounded';
@@ -23,69 +23,71 @@ declare module '@mui/material/styles/createPalette' {
interface PaletteColor extends ColorRange {}
}
-export const brand = {
- 50: '#F0F7FF',
- 100: '#CEE5FD',
- 200: '#9CCCFC',
- 300: '#55A6F6',
- 400: '#0A66C2',
- 500: '#0959AA',
- 600: '#064079',
- 700: '#033363',
- 800: '#02294F',
- 900: '#021F3B',
-};
+const customTheme = createTheme();
-export const secondary = {
- 50: '#F9F0FF',
- 100: '#E9CEFD',
- 200: '#D49CFC',
- 300: '#B355F6',
- 400: '#750AC2',
- 500: '#6709AA',
- 600: '#490679',
- 700: '#3B0363',
- 800: '#2F024F',
- 900: '#23023B',
+export const brand = {
+ 50: 'hsl(210, 100%, 97%)',
+ 100: 'hsl(210, 100%, 90%)',
+ 200: 'hsl(210, 100%, 80%)',
+ 300: 'hsl(210, 100%, 65%)',
+ 400: 'hsl(210, 98%, 48%)',
+ 500: 'hsl(210, 98%, 42%)',
+ 600: 'hsl(210, 98%, 55%)',
+ 700: 'hsl(210, 100%, 35%)',
+ 800: 'hsl(210, 100%, 16%)',
+ 900: 'hsl(210, 100%, 21%)',
};
export const gray = {
- 50: '#FBFCFE',
- 100: '#EAF0F5',
- 200: '#D6E2EB',
- 300: '#BFCCD9',
- 400: '#94A6B8',
- 500: '#5B6B7C',
- 600: '#4C5967',
- 700: '#364049',
- 800: '#131B20',
- 900: '#090E10',
+ 50: 'hsl(220, 60%, 99%)',
+ 100: 'hsl(220, 35%, 94%)',
+ 200: 'hsl(220, 35%, 88%)',
+ 300: 'hsl(220, 25%, 80%)',
+ 400: 'hsl(220, 20%, 65%)',
+ 500: 'hsl(220, 20%, 42%)',
+ 600: 'hsl(220, 25%, 35%)',
+ 700: 'hsl(220, 25%, 25%)',
+ 800: 'hsl(220, 25%, 10%)',
+ 900: 'hsl(220, 30%, 5%)',
};
export const green = {
- 50: '#F6FEF6',
- 100: '#E3FBE3',
- 200: '#C7F7C7',
- 300: '#A1E8A1',
- 400: '#51BC51',
- 500: '#1F7A1F',
- 600: '#136C13',
- 700: '#0A470A',
- 800: '#042F04',
- 900: '#021D02',
+ 50: 'hsl(120, 80%, 98%)',
+ 100: 'hsl(120, 75%, 94%)',
+ 200: 'hsl(120, 75%, 87%)',
+ 300: 'hsl(120, 61%, 77%)',
+ 400: 'hsl(120, 44%, 53%)',
+ 500: 'hsl(120, 59%, 30%)',
+ 600: 'hsl(120, 70%, 25%)',
+ 700: 'hsl(120, 75%, 16%)',
+ 800: 'hsl(120, 84%, 10%)',
+ 900: 'hsl(120, 87%, 6%)',
+};
+
+export const orange = {
+ 50: 'hsl(45, 100%, 97%)',
+ 100: 'hsl(45, 92%, 90%)',
+ 200: 'hsl(45, 94%, 80%)',
+ 300: 'hsl(45, 90%, 65%)',
+ 400: 'hsl(45, 90%, 40%)',
+ 500: 'hsl(45, 90%, 35%)',
+ 600: 'hsl(45, 91%, 25%)',
+ 700: 'hsl(45, 94%, 20%)',
+ 800: 'hsl(45, 95%, 16%)',
+ 900: 'hsl(45, 93%, 12%)',
};
export const red = {
- 50: '#FFF0F0',
- 100: '#FDCECE',
- 200: '#FC9C9C',
- 300: '#F65555',
- 400: '#C20A0A',
- 500: '#910808',
- 600: '#790606',
- 700: '#630303',
- 800: '#4F0202',
- 900: '#3B0202',
+ 50: 'hsl(0, 100%, 97%)',
+ 100: 'hsl(0, 92%, 90%)',
+ 200: 'hsl(0, 94%, 80%)',
+ 300: 'hsl(0, 90%, 65%)',
+ 400: 'hsl(0, 90%, 40%)',
+ 500: 'hsl(0, 90%, 30%)',
+ 600: 'hsl(0, 91%, 25%)',
+ 700: 'hsl(0, 94%, 20%)',
+ 800: 'hsl(0, 95%, 16%)',
+ 900: 'hsl(0, 93%, 12%)',
};
const getDesignTokens = (mode: PaletteMode) => ({
@@ -103,26 +105,25 @@ const getDesignTokens = (mode: PaletteMode) => ({
dark: brand[800],
}),
},
- secondary: {
- light: secondary[300],
- main: secondary[500],
- dark: secondary[800],
+ warning: {
+ light: orange[300],
+ main: orange[400],
+ dark: orange[800],
...(mode === 'dark' && {
- light: secondary[400],
- main: secondary[500],
- dark: secondary[900],
+ light: orange[400],
+ main: orange[500],
+ dark: orange[700],
}),
},
- warning: {
- main: '#F7B538',
- dark: '#F79F00',
- ...(mode === 'dark' && { main: '#F7B538', dark: '#F79F00' }),
- },
error: {
- light: red[50],
- main: red[500],
- dark: red[700],
- ...(mode === 'dark' && { light: '#D32F2F', main: '#D32F2F', dark: '#B22A2A' }),
+ light: red[300],
+ main: red[400],
+ dark: red[800],
+ ...(mode === 'dark' && {
+ light: red[400],
+ main: red[500],
+ dark: red[700],
+ }),
},
success: {
light: green[300],
@@ -135,27 +136,18 @@ const getDesignTokens = (mode: PaletteMode) => ({
}),
},
grey: {
- 50: gray[50],
- 100: gray[100],
- 200: gray[200],
- 300: gray[300],
- 400: gray[400],
- 500: gray[500],
- 600: gray[600],
- 700: gray[700],
- 800: gray[800],
- 900: gray[900],
+ ...gray,
},
divider: mode === 'dark' ? alpha(gray[600], 0.3) : alpha(gray[300], 0.5),
background: {
- default: '#fff',
- paper: gray[50],
- ...(mode === 'dark' && { default: gray[900], paper: gray[800] }),
+ default: 'hsl(0, 0%, 100%)',
+ paper: gray[100],
+ ...(mode === 'dark' && { default: 'hsl(220, 30%, 3%)', paper: gray[900] }),
},
text: {
primary: gray[800],
secondary: gray[600],
- ...(mode === 'dark' && { primary: '#fff', secondary: gray[400] }),
+ ...(mode === 'dark' && { primary: 'hsl(0, 0%, 100%)', secondary: gray[400] }),
},
action: {
selected: `${alpha(brand[200], 0.2)}`,
@@ -167,51 +159,54 @@ const getDesignTokens = (mode: PaletteMode) => ({
typography: {
fontFamily: ['"Inter", "sans-serif"'].join(','),
h1: {
- fontSize: 60,
+ fontSize: customTheme.typography.pxToRem(60),
fontWeight: 600,
- lineHeight: 78 / 70,
- letterSpacing: -0.2,
+ lineHeight: 1.2,
+ letterSpacing: -0.5,
},
h2: {
- fontSize: 48,
+ fontSize: customTheme.typography.pxToRem(48),
fontWeight: 600,
lineHeight: 1.2,
},
h3: {
- fontSize: 42,
+ fontSize: customTheme.typography.pxToRem(42),
lineHeight: 1.2,
},
h4: {
- fontSize: 36,
+ fontSize: customTheme.typography.pxToRem(36),
fontWeight: 500,
lineHeight: 1.5,
},
h5: {
- fontSize: 20,
+ fontSize: customTheme.typography.pxToRem(20),
fontWeight: 600,
},
h6: {
- fontSize: 18,
+ fontSize: customTheme.typography.pxToRem(18),
},
subtitle1: {
- fontSize: 18,
+ fontSize: customTheme.typography.pxToRem(18),
},
subtitle2: {
- fontSize: 16,
+ fontSize: customTheme.typography.pxToRem(16),
},
body1: {
+ fontSize: customTheme.typography.pxToRem(15),
fontWeight: 400,
- fontSize: 15,
},
body2: {
+ fontSize: customTheme.typography.pxToRem(14),
fontWeight: 400,
- fontSize: 14,
},
caption: {
+ fontSize: customTheme.typography.pxToRem(12),
fontWeight: 400,
- fontSize: 12,
},
},
+ shape: {
+ borderRadius: 12,
+ },
});
export default function getSignInSideTheme(mode: PaletteMode): ThemeOptions {
@@ -226,9 +221,9 @@ export default function getSignInSideTheme(mode: PaletteMode): ThemeOptions {
styleOverrides: {
root: {
boxSizing: 'border-box',
- transition: 'all 100ms ease-in',
+ transition: 'all 100ms ease',
'&:focus-visible': {
- outline: `3px solid ${alpha(brand[500], 0.5)}`,
+ outline: `3px solid ${alpha(brand[400], 0.5)}`,
outlineOffset: '2px',
},
},
@@ -238,34 +233,45 @@ export default function getSignInSideTheme(mode: PaletteMode): ThemeOptions {
styleOverrides: {
root: ({ theme, ownerState }) => ({
boxShadow: 'none',
- borderRadius: '10px',
+ borderRadius: theme.shape.borderRadius,
textTransform: 'none',
...(ownerState.size === 'small' && {
- maxHeight: '32px',
+ height: '2rem', // 32px
+ padding: '0 0.5rem',
}),
...(ownerState.size === 'medium' && {
- height: '40px',
+ height: '2.5rem', // 40px
}),
...(ownerState.variant === 'contained' &&
ownerState.color === 'primary' && {
- color: brand[50],
- background: brand[500],
- backgroundImage: `linear-gradient(to bottom, ${brand[400]}, ${brand[600]})`,
- boxShadow: `inset 0 1px ${alpha(brand[300], 0.5)}`,
+ color: 'white',
+ backgroundColor: brand[300],
+ backgroundImage: `linear-gradient(to bottom, ${alpha(brand[400], 0.8)}, ${brand[500]})`,
+ boxShadow: `inset 0 2px 0 ${alpha(brand[200], 0.2)}, inset 0 -2px 0 ${alpha(brand[700], 0.4)}`,
border: `1px solid ${brand[500]}`,
'&:hover': {
- background: brand[400],
- backgroundImage: 'none',
- boxShadow: `0 0 0 1px ${alpha(brand[300], 0.5)}`,
+ backgroundColor: brand[700],
+ boxShadow: 'none',
+ },
+ '&:active': {
+ backgroundColor: brand[700],
+ boxShadow: `inset 0 2.5px 0 ${alpha(brand[700], 0.4)}`,
},
}),
...(ownerState.variant === 'outlined' && {
+ color: brand[700],
backgroundColor: alpha(brand[300], 0.1),
- borderColor: brand[300],
- color: brand[500],
+ borderColor: alpha(brand[200], 0.8),
+ boxShadow: `inset 0 2px ${alpha(brand[50], 0.5)}, inset 0 -2px ${alpha(brand[200], 0.2)}`,
'&:hover': {
+ backgroundColor: alpha(brand[300], 0.2),
+ borderColor: alpha(brand[300], 0.5),
+ boxShadow: 'none',
+ },
+ '&:active': {
backgroundColor: alpha(brand[300], 0.3),
- borderColor: brand[200],
+ boxShadow: `inset 0 2.5px 0 ${alpha(brand[400], 0.2)}`,
+ backgroundImage: 'none',
},
}),
...(ownerState.variant === 'outlined' &&
@@ -275,84 +281,174 @@ export default function getSignInSideTheme(mode: PaletteMode): ThemeOptions {
color: gray[700],
'&:hover': {
backgroundColor: alpha(gray[300], 0.3),
- borderColor: gray[200],
+ borderColor: alpha(gray[300], 0.5),
+ boxShadow: 'none',
+ },
+ '&:active': {
+ backgroundColor: alpha(gray[300], 0.4),
+ boxShadow: `inset 0 2.5px 0 ${alpha(gray[400], 0.2)}`,
+ backgroundImage: 'none',
+ },
+ }),
+ ...(ownerState.variant === 'text' &&
+ ownerState.color === 'primary' && {
+ color: brand[700],
+ '&:hover': {
+ backgroundColor: alpha(brand[300], 0.3),
+ },
+ }),
+ ...(ownerState.variant === 'text' &&
+ ownerState.color === 'info' && {
+ color: gray[700],
+ '&:hover': {
+ backgroundColor: alpha(gray[300], 0.3),
},
}),
- ...(ownerState.variant === 'text' && {
- color: brand[600],
- '&:hover': {
- backgroundColor: alpha(brand[300], 0.3),
- borderColor: brand[200],
- },
- }),
...(theme.palette.mode === 'dark' && {
- ...(ownerState.variant === 'contained' &&
- ownerState.color === 'primary' && {
- border: `1px solid ${brand[600]}`,
- backgroundImage: `linear-gradient(to bottom, ${brand[500]}, ${brand[600]})`,
- backgroundColor: brand[500],
- '&:hover': {
- background: brand[600],
- backgroundImage: 'none',
- boxShadow: `0 0 0 1px ${alpha(brand[700], 0.5)}`,
- },
- }),
...(ownerState.variant === 'outlined' && {
+ color: brand[200],
backgroundColor: alpha(brand[600], 0.1),
- borderColor: brand[700],
- color: brand[300],
+ borderColor: alpha(brand[600], 0.6),
+ boxShadow: `inset 0 2.5px ${alpha(brand[400], 0.1)}, inset 0 -2px ${alpha(gray[900], 0.5)}`,
'&:hover': {
- backgroundColor: alpha(brand[600], 0.3),
- borderColor: brand[700],
+ backgroundColor: alpha(brand[700], 0.2),
+ borderColor: alpha(brand[700], 0.5),
+ boxShadow: 'none',
+ },
+ '&:active': {
+ backgroundColor: alpha(brand[800], 0.2),
+ boxShadow: `inset 0 2.5px 0 ${alpha(brand[900], 0.4)}`,
+ backgroundImage: 'none',
},
}),
+ ...(ownerState.variant === 'text' &&
+ ownerState.color === 'info' && {
+ color: gray[200],
+ '&:hover': {
+ backgroundColor: alpha(gray[700], 0.3),
+ },
+ }),
...(ownerState.variant === 'outlined' &&
ownerState.color === 'secondary' && {
+ color: gray[300],
backgroundColor: alpha(gray[600], 0.1),
borderColor: alpha(gray[700], 0.5),
- color: gray[300],
+ boxShadow: `inset 0 2.5px ${alpha(gray[600], 0.1)}, inset 0 -2px ${alpha(gray[900], 0.5)}`,
+ '&:hover': {
+ backgroundColor: alpha(gray[700], 0.2),
+ borderColor: alpha(gray[700], 0.5),
+ boxShadow: 'none',
+ },
+ '&:active': {
+ backgroundColor: alpha(gray[800], 0.2),
+ boxShadow: `inset 0 2.5px 0 ${alpha(gray[900], 0.4)}`,
+ backgroundImage: 'none',
+ },
+ }),
+ ...(ownerState.variant === 'text' &&
+ ownerState.color === 'primary' && {
+ color: brand[200],
'&:hover': {
- backgroundColor: alpha(gray[600], 0.3),
- borderColor: gray[700],
+ backgroundColor: alpha(brand[700], 0.3),
},
}),
- ...(ownerState.variant === 'text' && {
- color: brand[200],
- '&:hover': {
- backgroundColor: alpha(brand[600], 0.3),
- borderColor: brand[700],
- },
- }),
}),
}),
},
},
- MuiIconButton: {
+ MuiCard: {
styleOverrides: {
root: ({ theme, ownerState }) => ({
- ...(ownerState.size === 'small' && {
- height: '32px',
- width: '32px',
+ transition: 'all 100ms ease',
+ backgroundColor: gray[50],
+ borderRadius: theme.shape.borderRadius,
+ border: `1px solid ${alpha(gray[200], 0.5)}`,
+ boxShadow: 'none',
+ ...(ownerState.variant === 'outlined' && {
+ border: `1px solid ${gray[200]}`,
+ boxShadow: 'none',
+ background: `linear-gradient(to bottom, hsl(0, 0%, 100%), ${gray[50]})`,
}),
- ...(ownerState.size === 'medium' && {
- height: '40px',
- width: '40px',
+ ...(theme.palette.mode === 'dark' && {
+ backgroundColor: alpha(gray[800], 0.6),
+ border: `1px solid ${alpha(gray[700], 0.3)}`,
+ ...(ownerState.variant === 'outlined' && {
+ border: `1px solid ${alpha(gray[700], 0.4)}`,
+ boxShadow: 'none',
+ background: `linear-gradient(to bottom, ${gray[900]}, ${alpha(
+ gray[800],
+ 0.5,
+ )})`,
+ }),
}),
- color: brand[600],
+ }),
+ },
+ },
+ MuiCheckbox: {
+ defaultProps: {
+ disableRipple: true,
+ icon: (
+
+ ),
+ checkedIcon: ,
+ },
+ styleOverrides: {
+ root: ({ theme }) => ({
+ margin: 10,
+ height: 16,
+ width: 16,
+ borderRadius: 5,
+ border: '1px solid ',
+ borderColor: alpha(gray[300], 0.8),
+ backgroundColor: alpha(gray[100], 0.4),
+ boxShadow: '0 0 0 1.5px hsla(210, 0%, 0%, 0.04) inset',
+ transition: 'border-color, background-color, 120ms ease-in',
'&:hover': {
- backgroundColor: alpha(brand[300], 0.3),
- borderColor: brand[200],
+ borderColor: brand[300],
+ },
+ '&.Mui-focusVisible': {
+ outline: `3px solid ${alpha(brand[500], 0.5)}`,
+ outlineOffset: '2px',
+ borderColor: brand[400],
+ },
+ '&.Mui-checked': {
+ color: 'white',
+ backgroundColor: brand[500],
+ borderColor: brand[500],
+ boxShadow: `none`,
+ '&:hover': {
+ backgroundColor: brand[600],
+ },
},
...(theme.palette.mode === 'dark' && {
- color: brand[200],
+ borderColor: alpha(gray[700], 0.5),
+ boxShadow: '0 0 0 1.5px hsl(210, 0%, 0%) inset',
+ backgroundColor: alpha(gray[900], 0.8),
'&:hover': {
- backgroundColor: alpha(brand[600], 0.3),
- borderColor: brand[700],
+ borderColor: brand[300],
+ },
+ '&.Mui-focusVisible': {
+ borderColor: brand[400],
+ outline: `3px solid ${alpha(brand[500], 0.5)}`,
+ outlineOffset: '2px',
},
}),
}),
},
},
+ MuiDialog: {
+ styleOverrides: {
+ root: ({ theme }) => ({
+ '& .MuiDialog-paper': {
+ borderRadius: '10px',
+ border: '1px solid',
+ borderColor: theme.palette.divider,
+ },
+ }),
+ },
+ },
MuiDivider: {
styleOverrides: {
root: ({ theme }) => ({
@@ -363,25 +459,80 @@ export default function getSignInSideTheme(mode: PaletteMode): ThemeOptions {
}),
},
},
- MuiPaper: {
+ MuiFormLabel: {
styleOverrides: {
root: ({ theme }) => ({
- backgroundImage: 'none',
- backgroundColor: gray[100],
+ typography: theme.typography.caption,
+ marginBottom: 8,
+ }),
+ },
+ },
+ MuiIconButton: {
+ styleOverrides: {
+ root: ({ theme, ownerState }) => ({
+ ...(ownerState.size === 'small' && {
+ height: '2rem',
+ width: '2rem',
+ }),
+ ...(ownerState.size === 'medium' && {
+ height: '2.5rem',
+ width: '2.5rem',
+ }),
+ color: brand[500],
+ '&:hover': {
+ backgroundColor: alpha(brand[300], 0.3),
+ borderColor: brand[200],
+ },
...(theme.palette.mode === 'dark' && {
- backgroundColor: gray[800],
+ color: brand[200],
+ '&:hover': {
+ backgroundColor: alpha(brand[600], 0.3),
+ borderColor: brand[700],
+ },
}),
}),
},
},
- MuiDialog: {
+ MuiInputBase: {
+ styleOverrides: {
+ root: {
+ border: 'none',
+ },
+ },
+ },
+ MuiLink: {
+ defaultProps: {
+ underline: 'none',
+ },
styleOverrides: {
root: ({ theme }) => ({
- '& .MuiDialog-paper': {
- borderRadius: '10px',
- border: '1px solid',
- borderColor: theme.palette.divider,
+ color: brand[700],
+ fontWeight: 500,
+ position: 'relative',
+ textDecoration: 'none',
+ '&::before': {
+ content: '""',
+ position: 'absolute',
+ width: 0,
+ height: '1px',
+ bottom: 0,
+ left: 0,
+ backgroundColor: brand[200],
+ opacity: 0.7,
+ transition: 'width 0.3s ease, opacity 0.3s ease',
+ },
+ '&:hover::before': {
+ width: '100%',
+ opacity: 1,
+ },
+ '&:focus-visible': {
+ outline: `3px solid ${alpha(brand[500], 0.5)}`,
+ outlineOffset: '4px',
+ borderRadius: '2px',
},
+ ...(theme.palette.mode === 'dark' && {
+ color: brand[200],
+ }),
}),
},
},
@@ -393,7 +544,6 @@ export default function getSignInSideTheme(mode: PaletteMode): ThemeOptions {
input: {
paddingLeft: 10,
},
-
root: ({ theme, ownerState }) => ({
'input:-webkit-autofill': {
WebkitBoxShadow: `0 0 0 1000px ${brand[100]} inset, 0 0 0 1px ${brand[200]}`,
@@ -401,6 +551,7 @@ export default function getSignInSideTheme(mode: PaletteMode): ThemeOptions {
borderRadius: '8px',
},
'& .MuiInputBase-input': {
+ fontSize: '1rem',
'&::placeholder': {
opacity: 0.7,
color: gray[500],
@@ -409,10 +560,10 @@ export default function getSignInSideTheme(mode: PaletteMode): ThemeOptions {
boxSizing: 'border-box',
flexGrow: 1,
height: '40px',
- borderRadius: '10px',
+ borderRadius: theme.shape.borderRadius,
border: '1px solid',
borderColor: alpha(gray[300], 0.8),
- boxShadow: '0 0 0 1.5px rgba(0, 0, 0, 0.04) inset',
+ boxShadow: '0 0 0 1.5px hsla(210, 0%, 0%, 0.02) inset',
transition: 'border-color 120ms ease-in',
backgroundColor: alpha(gray[100], 0.4),
'&:hover': {
@@ -437,13 +588,14 @@ export default function getSignInSideTheme(mode: PaletteMode): ThemeOptions {
borderRadius: '8px',
},
'& .MuiInputBase-input': {
+ fontSize: '1rem',
'&::placeholder': {
opacity: 1,
color: gray[500],
},
},
borderColor: alpha(gray[700], 0.5),
- boxShadow: '0 0 0 1.5px rgb(0, 0, 0) inset',
+ boxShadow: '0 0 0 1.5px hsl(210, 0%, 0%) inset',
backgroundColor: alpha(gray[900], 0.8),
transition: 'border-color 120ms ease-in',
'&:hover': {
@@ -465,154 +617,29 @@ export default function getSignInSideTheme(mode: PaletteMode): ThemeOptions {
}),
},
},
- MuiFormLabel: {
- styleOverrides: {
- root: ({ theme }) => ({
- typography: theme.typography.caption,
- marginBottom: 8,
- }),
- },
- },
- MuiInputBase: {
- styleOverrides: {
- root: {
- border: 'none',
- },
- },
- },
- MuiCard: {
- styleOverrides: {
- root: ({ theme, ownerState }) => ({
- backgroundColor: gray[50],
- borderRadius: 10,
- outline: `1px solid ${alpha(gray[200], 0.8)}`,
- boxShadow: 'none',
- ...(ownerState.variant === 'outlined' && {
- border: 0,
- boxSizing: 'border-box',
- background: `linear-gradient(to bottom, #FFF, ${gray[50]})`,
- }),
- ...(theme.palette.mode === 'dark' && {
- backgroundColor: alpha(gray[800], 0.6),
- outline: `1px solid ${alpha(gray[700], 0.5)}`,
- ...(ownerState.variant === 'outlined' && {
- boxSizing: 'border-box',
- background: `linear-gradient(to bottom, ${gray[900]}, ${alpha(
- gray[800],
- 0.5,
- )})`,
- }),
- }),
- }),
+ MuiPaper: {
+ defaultProps: {
+ elevation: 0,
},
},
- MuiLink: {
+ MuiStack: {
defaultProps: {
- underline: 'none',
- },
- styleOverrides: {
- root: ({ theme }) => ({
- color: brand[600],
- fontWeight: 500,
- position: 'relative',
- textDecoration: 'none',
- '&::before': {
- content: '""',
- position: 'absolute',
- width: 0,
- height: '1px',
- bottom: 0,
- left: 0,
- backgroundColor: brand[200],
- opacity: 0.7,
- transition: 'width 0.3s ease, opacity 0.3s ease',
- },
- '&:hover::before': {
- width: '100%',
- opacity: 1,
- },
- '&:focus-visible': {
- outline: `3px solid ${alpha(brand[500], 0.5)}`,
- outlineOffset: '4px',
- borderRadius: '2px',
- },
- ...(theme.palette.mode === 'dark' && {
- color: brand[200],
- }),
- }),
+ useFlexGap: true,
},
},
MuiToggleButtonGroup: {
styleOverrides: {
root: ({ theme }) => ({
- borderRadius: '10px',
- boxShadow: `0 4px 16px ${alpha(gray[400], 0.2)}`,
+ borderRadius: theme.shape.borderRadius,
+ boxShadow: `0 1px 2px hsla(210, 0%, 0%, 0.05), 0 2px 12px ${alpha(brand[200], 0.5)}`,
'& .Mui-selected': {
color: brand[500],
},
...(theme.palette.mode === 'dark' && {
'& .Mui-selected': {
- color: '#fff',
- },
- boxShadow: `0 4px 16px ${alpha(brand[700], 0.5)}`,
- }),
- }),
- },
- },
- MuiCheckbox: {
- defaultProps: {
- disableRipple: true,
- icon: ,
- checkedIcon: ,
- },
- styleOverrides: {
- root: ({ theme }) => ({
- margin: 10,
- height: 16,
- width: 16,
- borderRadius: 5,
- border: '1px solid ',
- borderColor: alpha(gray[300], 0.8),
- boxShadow: '0 0 0 1.5px rgba(0, 0, 0, 0.04) inset',
- transition: 'border-color 120ms ease-in',
- backgroundColor: alpha(gray[100], 0.4),
- '&:hover': {
- borderColor: brand[300],
- },
- '&.Mui-focusVisible': {
- outline: `3px solid ${alpha(brand[500], 0.5)}`,
- outlineOffset: '2px',
- borderColor: brand[400],
- },
- '&.Mui-checked': {
- color: 'white',
- backgroundColor: brand[500],
- '&:hover': {
- borderColor: brand[300],
- backgroundColor: brand[600],
- },
- },
- ...(theme.palette.mode === 'dark' && {
- borderColor: alpha(gray[700], 0.5),
- boxShadow: '0 0 0 1.5px rgb(0, 0, 0) inset',
- backgroundColor: alpha(gray[900], 0.8),
- '&:hover': {
- borderColor: brand[300],
- },
- '&.Mui-checked': {
- color: 'white',
- backgroundColor: brand[600],
- boxShadow: '0 0 0 1px rgba(0, 0, 0, 0.2) inset',
- '&:hover': {
- borderColor: brand[300],
- backgroundColor: brand[800],
- },
- },
- '&.Mui-focusVisible': {
- borderColor: brand[400],
- outline: `3px solid ${alpha(brand[500], 0.5)}`,
- outlineOffset: '2px',
+ color: 'hsl(0, 0%, 100%)',
},
+ boxShadow: `0 0 0 1px hsla(210, 0%, 0%, 0.5), 0 2px 12px ${alpha(brand[700], 0.5)}`,
}),
}),
},
@@ -622,21 +649,15 @@ export default function getSignInSideTheme(mode: PaletteMode): ThemeOptions {
root: ({ theme }) => ({
padding: '12px 16px',
textTransform: 'none',
- borderRadius: '10px',
+ borderRadius: theme.shape.borderRadius,
fontWeight: 500,
...(theme.palette.mode === 'dark' && {
color: gray[400],
- boxShadow: '0 4px 16px rgba(0, 0, 0, 0.5)',
'&.Mui-selected': { color: brand[300] },
}),
}),
},
},
- MuiStack: {
- defaultProps: {
- useFlexGap: true,
- },
- },
},
};
}
diff --git a/docs/data/material/getting-started/templates/sign-in/CustomIcons.js b/docs/data/material/getting-started/templates/sign-in/CustomIcons.js
index e4a8d735bb75e6..1c24a778fb4427 100644
--- a/docs/data/material/getting-started/templates/sign-in/CustomIcons.js
+++ b/docs/data/material/getting-started/templates/sign-in/CustomIcons.js
@@ -1,87 +1,57 @@
import * as React from 'react';
-import PropTypes from 'prop-types';
-
import SvgIcon from '@mui/material/SvgIcon';
-function SitemarkIcon({ sx }) {
+export function SitemarkIcon() {
return (
-
+
-
-
-
-
);
}
-SitemarkIcon.propTypes = {
- sx: PropTypes.oneOfType([
- PropTypes.arrayOf(
- PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool]),
- ),
- PropTypes.func,
- PropTypes.object,
- ]),
-};
-
-export { SitemarkIcon };
-
export function FacebookIcon() {
return (
diff --git a/docs/data/material/getting-started/templates/sign-in/CustomIcons.tsx b/docs/data/material/getting-started/templates/sign-in/CustomIcons.tsx
index f66661a29dcb57..1c24a778fb4427 100644
--- a/docs/data/material/getting-started/templates/sign-in/CustomIcons.tsx
+++ b/docs/data/material/getting-started/templates/sign-in/CustomIcons.tsx
@@ -1,72 +1,51 @@
import * as React from 'react';
-import { SxProps, Theme } from '@mui/system';
import SvgIcon from '@mui/material/SvgIcon';
-interface IconProps {
- sx?: SxProps;
-}
-
-export function SitemarkIcon({ sx }: IconProps) {
+export function SitemarkIcon() {
return (
-
+
-
-
-
-
diff --git a/docs/data/material/getting-started/templates/sign-in/SignIn.js b/docs/data/material/getting-started/templates/sign-in/SignIn.js
index d87dc97aca99c9..8398bfef899d8f 100644
--- a/docs/data/material/getting-started/templates/sign-in/SignIn.js
+++ b/docs/data/material/getting-started/templates/sign-in/SignIn.js
@@ -15,7 +15,7 @@ import ToggleButton from '@mui/material/ToggleButton';
import ToggleButtonGroup from '@mui/material/ToggleButtonGroup';
import Typography from '@mui/material/Typography';
import Stack from '@mui/material/Stack';
-import { alpha } from '@mui/material';
+
import { ThemeProvider, createTheme } from '@mui/material/styles';
import ArrowBackRoundedIcon from '@mui/icons-material/ArrowBackRounded';
@@ -43,7 +43,7 @@ function ToggleCustomTheme({ showCustomTheme, toggleCustomTheme }) {
exclusive
value={showCustomTheme}
onChange={toggleCustomTheme}
- aria-label="Platform"
+ aria-label="Toggle design language"
sx={{
backgroundColor: 'background.default',
'& .Mui-selected': {
@@ -140,8 +140,8 @@ export default function SignIn() {
sx={(theme) => ({
backgroundImage:
theme.palette.mode === 'light'
- ? `linear-gradient(180deg, ${alpha('#CEE5FD', 0.2)}, #FFF)`
- : `linear-gradient(${alpha('#02294F', 0.2)}, ${alpha('#021F3B', 0.0)})`,
+ ? 'radial-gradient(ellipse at 50% 50%, hsl(210, 100%, 97%), hsl(0, 0%, 100%))'
+ : 'radial-gradient(at 50% 50%, hsla(210, 100%, 16%, 0.3), hsl(220, 30%, 5%))',
backgroundRepeat: 'no-repeat',
height: { xs: 'auto', sm: '100dvh' },
pb: { xs: 12, sm: 0 },
@@ -180,11 +180,11 @@ export default function SignIn() {
gap: 4,
boxShadow:
theme.palette.mode === 'light'
- ? 'rgba(0, 0, 0, 0.05) 0px 5px 15px 0px, rgba(25, 28, 33, 0.05) 0px 15px 35px -5px, rgba(0, 0, 0, 0.05) 0px 0px 0px 1px'
- : 'rgba(0, 0, 0, 0.5) 0px 5px 15px 0px, rgba(25, 28, 33, 0.08) 0px 15px 35px -5px, rgba(0, 0, 0, 0.05) 0px 0px 0px 1px',
+ ? 'hsla(220, 30%, 5%, 0.05) 0px 5px 15px 0px, hsla(220, 25%, 10%, 0.05) 0px 15px 35px -5px, hsla(220, 30%, 5%, 0.05) 0px 0px 0px 1px'
+ : 'hsla(220, 30%, 5%, 0.5) 0px 5px 15px 0px, hsla(220, 25%, 10%, 0.08) 0px 15px 35px -5px, hsla(220, 30%, 5%, 0.05) 0px 0px 0px 1px',
})}
>
-
+
({
backgroundImage:
theme.palette.mode === 'light'
- ? `linear-gradient(180deg, ${alpha('#CEE5FD', 0.2)}, #FFF)`
- : `linear-gradient(${alpha('#02294F', 0.2)}, ${alpha('#021F3B', 0.0)})`,
+ ? 'radial-gradient(ellipse at 50% 50%, hsl(210, 100%, 97%), hsl(0, 0%, 100%))'
+ : 'radial-gradient(at 50% 50%, hsla(210, 100%, 16%, 0.3), hsl(220, 30%, 5%))',
backgroundRepeat: 'no-repeat',
height: { xs: 'auto', sm: '100dvh' },
pb: { xs: 12, sm: 0 },
@@ -180,11 +180,11 @@ export default function SignIn() {
gap: 4,
boxShadow:
theme.palette.mode === 'light'
- ? 'rgba(0, 0, 0, 0.05) 0px 5px 15px 0px, rgba(25, 28, 33, 0.05) 0px 15px 35px -5px, rgba(0, 0, 0, 0.05) 0px 0px 0px 1px'
- : 'rgba(0, 0, 0, 0.5) 0px 5px 15px 0px, rgba(25, 28, 33, 0.08) 0px 15px 35px -5px, rgba(0, 0, 0, 0.05) 0px 0px 0px 1px',
+ ? 'hsla(220, 30%, 5%, 0.05) 0px 5px 15px 0px, hsla(220, 25%, 10%, 0.05) 0px 15px 35px -5px, hsla(220, 30%, 5%, 0.05) 0px 0px 0px 1px'
+ : 'hsla(220, 30%, 5%, 0.5) 0px 5px 15px 0px, hsla(220, 25%, 10%, 0.08) 0px 15px 35px -5px, hsla(220, 30%, 5%, 0.05) 0px 0px 0px 1px',
})}
>
-
+
void;
}
-function ToggleColorMode({ mode, toggleColorMode }: ToggleColorModeProps) {
+export default function ToggleColorMode({
+ mode,
+ toggleColorMode,
+}: ToggleColorModeProps) {
return (
);
}
-
-export default ToggleColorMode;
diff --git a/docs/data/material/getting-started/templates/sign-in/getSignInTheme.js b/docs/data/material/getting-started/templates/sign-in/getSignInTheme.js
index 1e788763faec22..224b3d9596dd45 100644
--- a/docs/data/material/getting-started/templates/sign-in/getSignInTheme.js
+++ b/docs/data/material/getting-started/templates/sign-in/getSignInTheme.js
@@ -1,73 +1,75 @@
import * as React from 'react';
-import { alpha } from '@mui/material/styles';
+import { createTheme, alpha } from '@mui/material/styles';
import CheckBoxOutlineBlankRoundedIcon from '@mui/icons-material/CheckBoxOutlineBlankRounded';
import CheckRoundedIcon from '@mui/icons-material/CheckRounded';
-export const brand = {
- 50: '#F0F7FF',
- 100: '#CEE5FD',
- 200: '#9CCCFC',
- 300: '#55A6F6',
- 400: '#0A66C2',
- 500: '#0959AA',
- 600: '#064079',
- 700: '#033363',
- 800: '#02294F',
- 900: '#021F3B',
-};
+const customTheme = createTheme();
-export const secondary = {
- 50: '#F9F0FF',
- 100: '#E9CEFD',
- 200: '#D49CFC',
- 300: '#B355F6',
- 400: '#750AC2',
- 500: '#6709AA',
- 600: '#490679',
- 700: '#3B0363',
- 800: '#2F024F',
- 900: '#23023B',
+export const brand = {
+ 50: 'hsl(210, 100%, 97%)',
+ 100: 'hsl(210, 100%, 90%)',
+ 200: 'hsl(210, 100%, 80%)',
+ 300: 'hsl(210, 100%, 65%)',
+ 400: 'hsl(210, 98%, 48%)',
+ 500: 'hsl(210, 98%, 42%)',
+ 600: 'hsl(210, 98%, 55%)',
+ 700: 'hsl(210, 100%, 35%)',
+ 800: 'hsl(210, 100%, 16%)',
+ 900: 'hsl(210, 100%, 21%)',
};
export const gray = {
- 50: '#FBFCFE',
- 100: '#EAF0F5',
- 200: '#D6E2EB',
- 300: '#BFCCD9',
- 400: '#94A6B8',
- 500: '#5B6B7C',
- 600: '#4C5967',
- 700: '#364049',
- 800: '#131B20',
- 900: '#090E10',
+ 50: 'hsl(220, 60%, 99%)',
+ 100: 'hsl(220, 35%, 94%)',
+ 200: 'hsl(220, 35%, 88%)',
+ 300: 'hsl(220, 25%, 80%)',
+ 400: 'hsl(220, 20%, 65%)',
+ 500: 'hsl(220, 20%, 42%)',
+ 600: 'hsl(220, 25%, 35%)',
+ 700: 'hsl(220, 25%, 25%)',
+ 800: 'hsl(220, 25%, 10%)',
+ 900: 'hsl(220, 30%, 5%)',
};
export const green = {
- 50: '#F6FEF6',
- 100: '#E3FBE3',
- 200: '#C7F7C7',
- 300: '#A1E8A1',
- 400: '#51BC51',
- 500: '#1F7A1F',
- 600: '#136C13',
- 700: '#0A470A',
- 800: '#042F04',
- 900: '#021D02',
+ 50: 'hsl(120, 80%, 98%)',
+ 100: 'hsl(120, 75%, 94%)',
+ 200: 'hsl(120, 75%, 87%)',
+ 300: 'hsl(120, 61%, 77%)',
+ 400: 'hsl(120, 44%, 53%)',
+ 500: 'hsl(120, 59%, 30%)',
+ 600: 'hsl(120, 70%, 25%)',
+ 700: 'hsl(120, 75%, 16%)',
+ 800: 'hsl(120, 84%, 10%)',
+ 900: 'hsl(120, 87%, 6%)',
+};
+
+export const orange = {
+ 50: 'hsl(45, 100%, 97%)',
+ 100: 'hsl(45, 92%, 90%)',
+ 200: 'hsl(45, 94%, 80%)',
+ 300: 'hsl(45, 90%, 65%)',
+ 400: 'hsl(45, 90%, 40%)',
+ 500: 'hsl(45, 90%, 35%)',
+ 600: 'hsl(45, 91%, 25%)',
+ 700: 'hsl(45, 94%, 20%)',
+ 800: 'hsl(45, 95%, 16%)',
+ 900: 'hsl(45, 93%, 12%)',
};
export const red = {
- 50: '#FFF0F0',
- 100: '#FDCECE',
- 200: '#FC9C9C',
- 300: '#F65555',
- 400: '#C20A0A',
- 500: '#910808',
- 600: '#790606',
- 700: '#630303',
- 800: '#4F0202',
- 900: '#3B0202',
+ 50: 'hsl(0, 100%, 97%)',
+ 100: 'hsl(0, 92%, 90%)',
+ 200: 'hsl(0, 94%, 80%)',
+ 300: 'hsl(0, 90%, 65%)',
+ 400: 'hsl(0, 90%, 40%)',
+ 500: 'hsl(0, 90%, 30%)',
+ 600: 'hsl(0, 91%, 25%)',
+ 700: 'hsl(0, 94%, 20%)',
+ 800: 'hsl(0, 95%, 16%)',
+ 900: 'hsl(0, 93%, 12%)',
};
const getDesignTokens = (mode) => ({
@@ -85,26 +87,25 @@ const getDesignTokens = (mode) => ({
dark: brand[800],
}),
},
- secondary: {
- light: secondary[300],
- main: secondary[500],
- dark: secondary[800],
+ warning: {
+ light: orange[300],
+ main: orange[400],
+ dark: orange[800],
...(mode === 'dark' && {
- light: secondary[400],
- main: secondary[500],
- dark: secondary[900],
+ light: orange[400],
+ main: orange[500],
+ dark: orange[700],
}),
},
- warning: {
- main: '#F7B538',
- dark: '#F79F00',
- ...(mode === 'dark' && { main: '#F7B538', dark: '#F79F00' }),
- },
error: {
- light: red[50],
- main: red[500],
- dark: red[700],
- ...(mode === 'dark' && { light: '#D32F2F', main: '#D32F2F', dark: '#B22A2A' }),
+ light: red[300],
+ main: red[400],
+ dark: red[800],
+ ...(mode === 'dark' && {
+ light: red[400],
+ main: red[500],
+ dark: red[700],
+ }),
},
success: {
light: green[300],
@@ -117,27 +118,18 @@ const getDesignTokens = (mode) => ({
}),
},
grey: {
- 50: gray[50],
- 100: gray[100],
- 200: gray[200],
- 300: gray[300],
- 400: gray[400],
- 500: gray[500],
- 600: gray[600],
- 700: gray[700],
- 800: gray[800],
- 900: gray[900],
+ ...gray,
},
divider: mode === 'dark' ? alpha(gray[600], 0.3) : alpha(gray[300], 0.5),
background: {
- default: '#fff',
- paper: gray[50],
- ...(mode === 'dark' && { default: gray[900], paper: gray[800] }),
+ default: 'hsl(0, 0%, 100%)',
+ paper: gray[100],
+ ...(mode === 'dark' && { default: 'hsl(220, 30%, 3%)', paper: gray[900] }),
},
text: {
primary: gray[800],
secondary: gray[600],
- ...(mode === 'dark' && { primary: '#fff', secondary: gray[400] }),
+ ...(mode === 'dark' && { primary: 'hsl(0, 0%, 100%)', secondary: gray[400] }),
},
action: {
selected: `${alpha(brand[200], 0.2)}`,
@@ -149,51 +141,54 @@ const getDesignTokens = (mode) => ({
typography: {
fontFamily: ['"Inter", "sans-serif"'].join(','),
h1: {
- fontSize: 60,
+ fontSize: customTheme.typography.pxToRem(60),
fontWeight: 600,
- lineHeight: 78 / 70,
- letterSpacing: -0.2,
+ lineHeight: 1.2,
+ letterSpacing: -0.5,
},
h2: {
- fontSize: 48,
+ fontSize: customTheme.typography.pxToRem(48),
fontWeight: 600,
lineHeight: 1.2,
},
h3: {
- fontSize: 42,
+ fontSize: customTheme.typography.pxToRem(42),
lineHeight: 1.2,
},
h4: {
- fontSize: 36,
+ fontSize: customTheme.typography.pxToRem(36),
fontWeight: 500,
lineHeight: 1.5,
},
h5: {
- fontSize: 20,
+ fontSize: customTheme.typography.pxToRem(20),
fontWeight: 600,
},
h6: {
- fontSize: 18,
+ fontSize: customTheme.typography.pxToRem(18),
},
subtitle1: {
- fontSize: 18,
+ fontSize: customTheme.typography.pxToRem(18),
},
subtitle2: {
- fontSize: 16,
+ fontSize: customTheme.typography.pxToRem(16),
},
body1: {
+ fontSize: customTheme.typography.pxToRem(15),
fontWeight: 400,
- fontSize: 15,
},
body2: {
+ fontSize: customTheme.typography.pxToRem(14),
fontWeight: 400,
- fontSize: 14,
},
caption: {
+ fontSize: customTheme.typography.pxToRem(12),
fontWeight: 400,
- fontSize: 12,
},
},
+ shape: {
+ borderRadius: 12,
+ },
});
export default function getSignInTheme(mode) {
@@ -208,9 +203,9 @@ export default function getSignInTheme(mode) {
styleOverrides: {
root: {
boxSizing: 'border-box',
- transition: 'all 100ms ease-in',
+ transition: 'all 100ms ease',
'&:focus-visible': {
- outline: `3px solid ${alpha(brand[500], 0.5)}`,
+ outline: `3px solid ${alpha(brand[400], 0.5)}`,
outlineOffset: '2px',
},
},
@@ -220,34 +215,45 @@ export default function getSignInTheme(mode) {
styleOverrides: {
root: ({ theme, ownerState }) => ({
boxShadow: 'none',
- borderRadius: '10px',
+ borderRadius: theme.shape.borderRadius,
textTransform: 'none',
...(ownerState.size === 'small' && {
- maxHeight: '32px',
+ height: '2rem', // 32px
+ padding: '0 0.5rem',
}),
...(ownerState.size === 'medium' && {
- height: '40px',
+ height: '2.5rem', // 40px
}),
...(ownerState.variant === 'contained' &&
ownerState.color === 'primary' && {
- color: brand[50],
- background: brand[500],
- backgroundImage: `linear-gradient(to bottom, ${brand[400]}, ${brand[600]})`,
- boxShadow: `inset 0 1px ${alpha(brand[300], 0.5)}`,
+ color: 'white',
+ backgroundColor: brand[300],
+ backgroundImage: `linear-gradient(to bottom, ${alpha(brand[400], 0.8)}, ${brand[500]})`,
+ boxShadow: `inset 0 2px 0 ${alpha(brand[200], 0.2)}, inset 0 -2px 0 ${alpha(brand[700], 0.4)}`,
border: `1px solid ${brand[500]}`,
'&:hover': {
- background: brand[400],
- backgroundImage: 'none',
- boxShadow: `0 0 0 1px ${alpha(brand[300], 0.5)}`,
+ backgroundColor: brand[700],
+ boxShadow: 'none',
+ },
+ '&:active': {
+ backgroundColor: brand[700],
+ boxShadow: `inset 0 2.5px 0 ${alpha(brand[700], 0.4)}`,
},
}),
...(ownerState.variant === 'outlined' && {
+ color: brand[700],
backgroundColor: alpha(brand[300], 0.1),
- borderColor: brand[300],
- color: brand[500],
+ borderColor: alpha(brand[200], 0.8),
+ boxShadow: `inset 0 2px ${alpha(brand[50], 0.5)}, inset 0 -2px ${alpha(brand[200], 0.2)}`,
'&:hover': {
+ backgroundColor: alpha(brand[300], 0.2),
+ borderColor: alpha(brand[300], 0.5),
+ boxShadow: 'none',
+ },
+ '&:active': {
backgroundColor: alpha(brand[300], 0.3),
- borderColor: brand[200],
+ boxShadow: `inset 0 2.5px 0 ${alpha(brand[400], 0.2)}`,
+ backgroundImage: 'none',
},
}),
...(ownerState.variant === 'outlined' &&
@@ -257,84 +263,173 @@ export default function getSignInTheme(mode) {
color: gray[700],
'&:hover': {
backgroundColor: alpha(gray[300], 0.3),
- borderColor: gray[200],
+ borderColor: alpha(gray[300], 0.5),
+ boxShadow: 'none',
+ },
+ '&:active': {
+ backgroundColor: alpha(gray[300], 0.4),
+ boxShadow: `inset 0 2.5px 0 ${alpha(gray[400], 0.2)}`,
+ backgroundImage: 'none',
+ },
+ }),
+ ...(ownerState.variant === 'text' &&
+ ownerState.color === 'primary' && {
+ color: brand[700],
+ '&:hover': {
+ backgroundColor: alpha(brand[300], 0.3),
+ },
+ }),
+ ...(ownerState.variant === 'text' &&
+ ownerState.color === 'info' && {
+ color: gray[700],
+ '&:hover': {
+ backgroundColor: alpha(gray[300], 0.3),
},
}),
- ...(ownerState.variant === 'text' && {
- color: brand[600],
- '&:hover': {
- backgroundColor: alpha(brand[300], 0.3),
- borderColor: brand[200],
- },
- }),
...(theme.palette.mode === 'dark' && {
- ...(ownerState.variant === 'contained' &&
- ownerState.color === 'primary' && {
- border: `1px solid ${brand[600]}`,
- backgroundImage: `linear-gradient(to bottom, ${brand[500]}, ${brand[600]})`,
- backgroundColor: brand[500],
- '&:hover': {
- background: brand[600],
- backgroundImage: 'none',
- boxShadow: `0 0 0 1px ${alpha(brand[700], 0.5)}`,
- },
- }),
...(ownerState.variant === 'outlined' && {
+ color: brand[200],
backgroundColor: alpha(brand[600], 0.1),
- borderColor: brand[700],
- color: brand[300],
+ borderColor: alpha(brand[600], 0.6),
+ boxShadow: `inset 0 2.5px ${alpha(brand[400], 0.1)}, inset 0 -2px ${alpha(gray[900], 0.5)}`,
'&:hover': {
- backgroundColor: alpha(brand[600], 0.3),
- borderColor: brand[700],
+ backgroundColor: alpha(brand[700], 0.2),
+ borderColor: alpha(brand[700], 0.5),
+ boxShadow: 'none',
+ },
+ '&:active': {
+ backgroundColor: alpha(brand[800], 0.2),
+ boxShadow: `inset 0 2.5px 0 ${alpha(brand[900], 0.4)}`,
+ backgroundImage: 'none',
},
}),
+ ...(ownerState.variant === 'text' &&
+ ownerState.color === 'info' && {
+ color: gray[200],
+ '&:hover': {
+ backgroundColor: alpha(gray[700], 0.3),
+ },
+ }),
...(ownerState.variant === 'outlined' &&
ownerState.color === 'secondary' && {
+ color: gray[300],
backgroundColor: alpha(gray[600], 0.1),
borderColor: alpha(gray[700], 0.5),
- color: gray[300],
+ boxShadow: `inset 0 2.5px ${alpha(gray[600], 0.1)}, inset 0 -2px ${alpha(gray[900], 0.5)}`,
+ '&:hover': {
+ backgroundColor: alpha(gray[700], 0.2),
+ borderColor: alpha(gray[700], 0.5),
+ boxShadow: 'none',
+ },
+ '&:active': {
+ backgroundColor: alpha(gray[800], 0.2),
+ boxShadow: `inset 0 2.5px 0 ${alpha(gray[900], 0.4)}`,
+ backgroundImage: 'none',
+ },
+ }),
+ ...(ownerState.variant === 'text' &&
+ ownerState.color === 'primary' && {
+ color: brand[200],
'&:hover': {
- backgroundColor: alpha(gray[600], 0.3),
- borderColor: gray[700],
+ backgroundColor: alpha(brand[700], 0.3),
},
}),
- ...(ownerState.variant === 'text' && {
- color: brand[200],
- '&:hover': {
- backgroundColor: alpha(brand[600], 0.3),
- borderColor: brand[700],
- },
- }),
}),
}),
},
},
- MuiIconButton: {
+ MuiCard: {
styleOverrides: {
root: ({ theme, ownerState }) => ({
- ...(ownerState.size === 'small' && {
- height: '32px',
- width: '32px',
+ backgroundColor: gray[50],
+ borderRadius: theme.shape.borderRadius,
+ border: `1px solid ${alpha(gray[200], 0.1)}`,
+ boxShadow: 'none',
+ ...(ownerState.variant === 'outlined' && {
+ border: `1px solid ${alpha(gray[200], 0.5)}`,
+ boxShadow: 'none',
+ background: `linear-gradient(to bottom, hsl(0, 0%, 100%), ${gray[50]})`,
}),
- ...(ownerState.size === 'medium' && {
- height: '40px',
- width: '40px',
+ ...(theme.palette.mode === 'dark' && {
+ backgroundColor: alpha(gray[800], 0.6),
+ border: `1px solid ${alpha(gray[700], 0.2)}`,
+ ...(ownerState.variant === 'outlined' && {
+ border: `1px solid ${alpha(gray[700], 0.4)}`,
+ boxShadow: 'none',
+ background: `linear-gradient(to bottom, ${gray[900]}, ${alpha(
+ gray[800],
+ 0.5,
+ )})`,
+ }),
}),
- color: brand[600],
+ }),
+ },
+ },
+ MuiCheckbox: {
+ defaultProps: {
+ disableRipple: true,
+ icon: (
+
+ ),
+ checkedIcon: ,
+ },
+ styleOverrides: {
+ root: ({ theme }) => ({
+ margin: 10,
+ height: 16,
+ width: 16,
+ borderRadius: 5,
+ border: '1px solid ',
+ borderColor: alpha(gray[300], 0.8),
+ boxShadow: '0 0 0 1.5px hsla(210, 0%, 0%, 0.04) inset',
+ backgroundColor: alpha(gray[100], 0.4),
+ transition: 'border-color, background-color, 120ms ease-in',
'&:hover': {
- backgroundColor: alpha(brand[300], 0.3),
- borderColor: brand[200],
+ borderColor: brand[300],
+ },
+ '&.Mui-focusVisible': {
+ outline: `3px solid ${alpha(brand[500], 0.5)}`,
+ outlineOffset: '2px',
+ borderColor: brand[400],
+ },
+ '&.Mui-checked': {
+ color: 'white',
+ backgroundColor: brand[500],
+ borderColor: brand[500],
+ boxShadow: `none`,
+ '&:hover': {
+ backgroundColor: brand[600],
+ },
},
...(theme.palette.mode === 'dark' && {
- color: brand[200],
+ borderColor: alpha(gray[700], 0.5),
+ boxShadow: '0 0 0 1.5px hsl(210, 0%, 0%) inset',
+ backgroundColor: alpha(gray[900], 0.8),
'&:hover': {
- backgroundColor: alpha(brand[600], 0.3),
- borderColor: brand[700],
+ borderColor: brand[300],
+ },
+ '&.Mui-focusVisible': {
+ borderColor: brand[400],
+ outline: `3px solid ${alpha(brand[500], 0.5)}`,
+ outlineOffset: '2px',
},
}),
}),
},
},
+ MuiDialog: {
+ styleOverrides: {
+ root: ({ theme }) => ({
+ '& .MuiDialog-paper': {
+ borderRadius: '10px',
+ border: '1px solid',
+ borderColor: theme.palette.divider,
+ },
+ }),
+ },
+ },
MuiDivider: {
styleOverrides: {
root: ({ theme }) => ({
@@ -345,50 +440,79 @@ export default function getSignInTheme(mode) {
}),
},
},
- MuiPaper: {
+ MuiFormLabel: {
styleOverrides: {
root: ({ theme }) => ({
- backgroundImage: 'none',
- backgroundColor: gray[100],
- ...(theme.palette.mode === 'dark' && {
- backgroundColor: gray[800],
- }),
+ typography: theme.typography.caption,
+ marginBottom: 8,
}),
},
},
- MuiDialog: {
+ MuiIconButton: {
styleOverrides: {
- root: ({ theme }) => ({
- '& .MuiDialog-paper': {
- borderRadius: '10px',
- border: '1px solid',
- borderColor: theme.palette.divider,
+ root: ({ theme, ownerState }) => ({
+ ...(ownerState.size === 'small' && {
+ height: '2rem',
+ width: '2rem',
+ }),
+ ...(ownerState.size === 'medium' && {
+ height: '2.5rem',
+ width: '2.5rem',
+ }),
+ color: brand[500],
+ '&:hover': {
+ backgroundColor: alpha(brand[300], 0.3),
+ borderColor: brand[200],
},
+ ...(theme.palette.mode === 'dark' && {
+ color: brand[200],
+ '&:hover': {
+ backgroundColor: alpha(brand[600], 0.3),
+ borderColor: brand[700],
+ },
+ }),
}),
},
},
- MuiCard: {
+ MuiInputBase: {
styleOverrides: {
- root: ({ theme, ownerState }) => ({
- backgroundColor: gray[50],
- borderRadius: 10,
- outline: `1px solid ${alpha(gray[200], 0.8)}`,
- boxShadow: 'none',
- ...(ownerState.variant === 'outlined' && {
- border: 0,
- boxSizing: 'border-box',
- background: `linear-gradient(to bottom, #FFF, ${gray[50]})`,
- }),
+ root: {
+ border: 'none',
+ },
+ },
+ },
+ MuiLink: {
+ defaultProps: {
+ underline: 'none',
+ },
+ styleOverrides: {
+ root: ({ theme }) => ({
+ color: brand[700],
+ fontWeight: 500,
+ position: 'relative',
+ textDecoration: 'none',
+ '&::before': {
+ content: '""',
+ position: 'absolute',
+ width: 0,
+ height: '1px',
+ bottom: 0,
+ left: 0,
+ backgroundColor: brand[200],
+ opacity: 0.7,
+ transition: 'width 0.3s ease, opacity 0.3s ease',
+ },
+ '&:hover::before': {
+ width: '100%',
+ opacity: 1,
+ },
+ '&:focus-visible': {
+ outline: `3px solid ${alpha(brand[500], 0.5)}`,
+ outlineOffset: '4px',
+ borderRadius: '2px',
+ },
...(theme.palette.mode === 'dark' && {
- backgroundColor: alpha(gray[800], 0.6),
- outline: `1px solid ${alpha(gray[700], 0.5)}`,
- ...(ownerState.variant === 'outlined' && {
- boxSizing: 'border-box',
- background: `linear-gradient(to bottom, ${gray[900]}, ${alpha(
- gray[800],
- 0.5,
- )})`,
- }),
+ color: brand[200],
}),
}),
},
@@ -408,6 +532,7 @@ export default function getSignInTheme(mode) {
borderRadius: '8px',
},
'& .MuiInputBase-input': {
+ fontSize: '1rem',
'&::placeholder': {
opacity: 0.7,
color: gray[500],
@@ -416,10 +541,10 @@ export default function getSignInTheme(mode) {
boxSizing: 'border-box',
flexGrow: 1,
height: '40px',
- borderRadius: '10px',
+ borderRadius: theme.shape.borderRadius,
border: '1px solid',
borderColor: alpha(gray[300], 0.8),
- boxShadow: '0 0 0 1.5px rgba(0, 0, 0, 0.04) inset',
+ boxShadow: '0 0 0 1.5px hsla(210, 0%, 0%, 0.02) inset',
transition: 'border-color 120ms ease-in',
backgroundColor: alpha(gray[100], 0.4),
'&:hover': {
@@ -444,13 +569,14 @@ export default function getSignInTheme(mode) {
borderRadius: '8px',
},
'& .MuiInputBase-input': {
+ fontSize: '1rem',
'&::placeholder': {
opacity: 1,
color: gray[500],
},
},
borderColor: alpha(gray[700], 0.5),
- boxShadow: '0 0 0 1.5px rgb(0, 0, 0) inset',
+ boxShadow: '0 0 0 1.5px hsl(210, 0%, 0%) inset',
backgroundColor: alpha(gray[900], 0.8),
transition: 'border-color 120ms ease-in',
'&:hover': {
@@ -472,128 +598,29 @@ export default function getSignInTheme(mode) {
}),
},
},
- MuiFormLabel: {
- styleOverrides: {
- root: ({ theme }) => ({
- typography: theme.typography.caption,
- marginBottom: 8,
- }),
- },
- },
- MuiInputBase: {
- styleOverrides: {
- root: {
- border: 'none',
- },
+ MuiPaper: {
+ defaultProps: {
+ elevation: 0,
},
},
- MuiLink: {
+ MuiStack: {
defaultProps: {
- underline: 'none',
- },
- styleOverrides: {
- root: ({ theme }) => ({
- color: brand[600],
- fontWeight: 500,
- position: 'relative',
- textDecoration: 'none',
- '&::before': {
- content: '""',
- position: 'absolute',
- width: 0,
- height: '1px',
- bottom: 0,
- left: 0,
- backgroundColor: brand[200],
- opacity: 0.7,
- transition: 'width 0.3s ease, opacity 0.3s ease',
- },
- '&:hover::before': {
- width: '100%',
- opacity: 1,
- },
- '&:focus-visible': {
- outline: `3px solid ${alpha(brand[500], 0.5)}`,
- outlineOffset: '4px',
- borderRadius: '2px',
- },
- ...(theme.palette.mode === 'dark' && {
- color: brand[200],
- }),
- }),
+ useFlexGap: true,
},
},
MuiToggleButtonGroup: {
styleOverrides: {
root: ({ theme }) => ({
- borderRadius: '10px',
- boxShadow: `0 4px 16px ${alpha(gray[400], 0.2)}`,
+ borderRadius: theme.shape.borderRadius,
+ boxShadow: `0 1px 2px hsla(210, 0%, 0%, 0.05), 0 2px 12px ${alpha(brand[200], 0.5)}`,
'& .Mui-selected': {
color: brand[500],
},
...(theme.palette.mode === 'dark' && {
'& .Mui-selected': {
- color: '#fff',
- },
- boxShadow: `0 4px 16px ${alpha(brand[700], 0.5)}`,
- }),
- }),
- },
- },
- MuiCheckbox: {
- defaultProps: {
- disableRipple: true,
- icon: ,
- checkedIcon: ,
- },
- styleOverrides: {
- root: ({ theme }) => ({
- margin: 10,
- height: 16,
- width: 16,
- borderRadius: 5,
- border: '1px solid ',
- borderColor: alpha(gray[300], 0.8),
- boxShadow: '0 0 0 1.5px rgba(0, 0, 0, 0.04) inset',
- transition: 'border-color 120ms ease-in',
- backgroundColor: alpha(gray[100], 0.4),
- '&:hover': {
- borderColor: brand[300],
- },
- '&.Mui-focusVisible': {
- outline: `3px solid ${alpha(brand[500], 0.5)}`,
- outlineOffset: '2px',
- borderColor: brand[400],
- },
- '&.Mui-checked': {
- color: 'white',
- backgroundColor: brand[500],
- '&:hover': {
- borderColor: brand[300],
- backgroundColor: brand[600],
- },
- },
- ...(theme.palette.mode === 'dark' && {
- borderColor: alpha(gray[700], 0.5),
- boxShadow: '0 0 0 1.5px rgb(0, 0, 0) inset',
- backgroundColor: alpha(gray[900], 0.8),
- '&:hover': {
- borderColor: brand[300],
- },
- '&.Mui-checked': {
- color: 'white',
- backgroundColor: brand[600],
- boxShadow: '0 0 0 1px rgba(0, 0, 0, 0.2) inset',
- '&:hover': {
- borderColor: brand[300],
- backgroundColor: brand[800],
- },
- },
- '&.Mui-focusVisible': {
- borderColor: brand[400],
- outline: `3px solid ${alpha(brand[500], 0.5)}`,
- outlineOffset: '2px',
+ color: 'hsl(0, 0%, 100%)',
},
+ boxShadow: `0 0 0 1px hsla(210, 0%, 0%, 0.5), 0 2px 12px ${alpha(brand[700], 0.5)}`,
}),
}),
},
@@ -603,21 +630,15 @@ export default function getSignInTheme(mode) {
root: ({ theme }) => ({
padding: '12px 16px',
textTransform: 'none',
- borderRadius: '10px',
+ borderRadius: theme.shape.borderRadius,
fontWeight: 500,
...(theme.palette.mode === 'dark' && {
color: gray[400],
- boxShadow: '0 4px 16px rgba(0, 0, 0, 0.5)',
'&.Mui-selected': { color: brand[300] },
}),
}),
},
},
- MuiStack: {
- defaultProps: {
- useFlexGap: true,
- },
- },
},
};
}
diff --git a/docs/data/material/getting-started/templates/sign-in/getSignInTheme.tsx b/docs/data/material/getting-started/templates/sign-in/getSignInTheme.tsx
index a5375811d8533a..4c655afff4d56c 100644
--- a/docs/data/material/getting-started/templates/sign-in/getSignInTheme.tsx
+++ b/docs/data/material/getting-started/templates/sign-in/getSignInTheme.tsx
@@ -1,6 +1,6 @@
import * as React from 'react';
import type {} from '@mui/material/themeCssVarsAugmentation';
-import { ThemeOptions, alpha } from '@mui/material/styles';
+import { createTheme, ThemeOptions, alpha } from '@mui/material/styles';
import { PaletteMode } from '@mui/material';
import CheckBoxOutlineBlankRoundedIcon from '@mui/icons-material/CheckBoxOutlineBlankRounded';
@@ -23,69 +23,71 @@ declare module '@mui/material/styles/createPalette' {
interface PaletteColor extends ColorRange {}
}
-export const brand = {
- 50: '#F0F7FF',
- 100: '#CEE5FD',
- 200: '#9CCCFC',
- 300: '#55A6F6',
- 400: '#0A66C2',
- 500: '#0959AA',
- 600: '#064079',
- 700: '#033363',
- 800: '#02294F',
- 900: '#021F3B',
-};
+const customTheme = createTheme();
-export const secondary = {
- 50: '#F9F0FF',
- 100: '#E9CEFD',
- 200: '#D49CFC',
- 300: '#B355F6',
- 400: '#750AC2',
- 500: '#6709AA',
- 600: '#490679',
- 700: '#3B0363',
- 800: '#2F024F',
- 900: '#23023B',
+export const brand = {
+ 50: 'hsl(210, 100%, 97%)',
+ 100: 'hsl(210, 100%, 90%)',
+ 200: 'hsl(210, 100%, 80%)',
+ 300: 'hsl(210, 100%, 65%)',
+ 400: 'hsl(210, 98%, 48%)',
+ 500: 'hsl(210, 98%, 42%)',
+ 600: 'hsl(210, 98%, 55%)',
+ 700: 'hsl(210, 100%, 35%)',
+ 800: 'hsl(210, 100%, 16%)',
+ 900: 'hsl(210, 100%, 21%)',
};
export const gray = {
- 50: '#FBFCFE',
- 100: '#EAF0F5',
- 200: '#D6E2EB',
- 300: '#BFCCD9',
- 400: '#94A6B8',
- 500: '#5B6B7C',
- 600: '#4C5967',
- 700: '#364049',
- 800: '#131B20',
- 900: '#090E10',
+ 50: 'hsl(220, 60%, 99%)',
+ 100: 'hsl(220, 35%, 94%)',
+ 200: 'hsl(220, 35%, 88%)',
+ 300: 'hsl(220, 25%, 80%)',
+ 400: 'hsl(220, 20%, 65%)',
+ 500: 'hsl(220, 20%, 42%)',
+ 600: 'hsl(220, 25%, 35%)',
+ 700: 'hsl(220, 25%, 25%)',
+ 800: 'hsl(220, 25%, 10%)',
+ 900: 'hsl(220, 30%, 5%)',
};
export const green = {
- 50: '#F6FEF6',
- 100: '#E3FBE3',
- 200: '#C7F7C7',
- 300: '#A1E8A1',
- 400: '#51BC51',
- 500: '#1F7A1F',
- 600: '#136C13',
- 700: '#0A470A',
- 800: '#042F04',
- 900: '#021D02',
+ 50: 'hsl(120, 80%, 98%)',
+ 100: 'hsl(120, 75%, 94%)',
+ 200: 'hsl(120, 75%, 87%)',
+ 300: 'hsl(120, 61%, 77%)',
+ 400: 'hsl(120, 44%, 53%)',
+ 500: 'hsl(120, 59%, 30%)',
+ 600: 'hsl(120, 70%, 25%)',
+ 700: 'hsl(120, 75%, 16%)',
+ 800: 'hsl(120, 84%, 10%)',
+ 900: 'hsl(120, 87%, 6%)',
+};
+
+export const orange = {
+ 50: 'hsl(45, 100%, 97%)',
+ 100: 'hsl(45, 92%, 90%)',
+ 200: 'hsl(45, 94%, 80%)',
+ 300: 'hsl(45, 90%, 65%)',
+ 400: 'hsl(45, 90%, 40%)',
+ 500: 'hsl(45, 90%, 35%)',
+ 600: 'hsl(45, 91%, 25%)',
+ 700: 'hsl(45, 94%, 20%)',
+ 800: 'hsl(45, 95%, 16%)',
+ 900: 'hsl(45, 93%, 12%)',
};
export const red = {
- 50: '#FFF0F0',
- 100: '#FDCECE',
- 200: '#FC9C9C',
- 300: '#F65555',
- 400: '#C20A0A',
- 500: '#910808',
- 600: '#790606',
- 700: '#630303',
- 800: '#4F0202',
- 900: '#3B0202',
+ 50: 'hsl(0, 100%, 97%)',
+ 100: 'hsl(0, 92%, 90%)',
+ 200: 'hsl(0, 94%, 80%)',
+ 300: 'hsl(0, 90%, 65%)',
+ 400: 'hsl(0, 90%, 40%)',
+ 500: 'hsl(0, 90%, 30%)',
+ 600: 'hsl(0, 91%, 25%)',
+ 700: 'hsl(0, 94%, 20%)',
+ 800: 'hsl(0, 95%, 16%)',
+ 900: 'hsl(0, 93%, 12%)',
};
const getDesignTokens = (mode: PaletteMode) => ({
@@ -103,26 +105,25 @@ const getDesignTokens = (mode: PaletteMode) => ({
dark: brand[800],
}),
},
- secondary: {
- light: secondary[300],
- main: secondary[500],
- dark: secondary[800],
+ warning: {
+ light: orange[300],
+ main: orange[400],
+ dark: orange[800],
...(mode === 'dark' && {
- light: secondary[400],
- main: secondary[500],
- dark: secondary[900],
+ light: orange[400],
+ main: orange[500],
+ dark: orange[700],
}),
},
- warning: {
- main: '#F7B538',
- dark: '#F79F00',
- ...(mode === 'dark' && { main: '#F7B538', dark: '#F79F00' }),
- },
error: {
- light: red[50],
- main: red[500],
- dark: red[700],
- ...(mode === 'dark' && { light: '#D32F2F', main: '#D32F2F', dark: '#B22A2A' }),
+ light: red[300],
+ main: red[400],
+ dark: red[800],
+ ...(mode === 'dark' && {
+ light: red[400],
+ main: red[500],
+ dark: red[700],
+ }),
},
success: {
light: green[300],
@@ -135,27 +136,18 @@ const getDesignTokens = (mode: PaletteMode) => ({
}),
},
grey: {
- 50: gray[50],
- 100: gray[100],
- 200: gray[200],
- 300: gray[300],
- 400: gray[400],
- 500: gray[500],
- 600: gray[600],
- 700: gray[700],
- 800: gray[800],
- 900: gray[900],
+ ...gray,
},
divider: mode === 'dark' ? alpha(gray[600], 0.3) : alpha(gray[300], 0.5),
background: {
- default: '#fff',
- paper: gray[50],
- ...(mode === 'dark' && { default: gray[900], paper: gray[800] }),
+ default: 'hsl(0, 0%, 100%)',
+ paper: gray[100],
+ ...(mode === 'dark' && { default: 'hsl(220, 30%, 3%)', paper: gray[900] }),
},
text: {
primary: gray[800],
secondary: gray[600],
- ...(mode === 'dark' && { primary: '#fff', secondary: gray[400] }),
+ ...(mode === 'dark' && { primary: 'hsl(0, 0%, 100%)', secondary: gray[400] }),
},
action: {
selected: `${alpha(brand[200], 0.2)}`,
@@ -167,51 +159,54 @@ const getDesignTokens = (mode: PaletteMode) => ({
typography: {
fontFamily: ['"Inter", "sans-serif"'].join(','),
h1: {
- fontSize: 60,
+ fontSize: customTheme.typography.pxToRem(60),
fontWeight: 600,
- lineHeight: 78 / 70,
- letterSpacing: -0.2,
+ lineHeight: 1.2,
+ letterSpacing: -0.5,
},
h2: {
- fontSize: 48,
+ fontSize: customTheme.typography.pxToRem(48),
fontWeight: 600,
lineHeight: 1.2,
},
h3: {
- fontSize: 42,
+ fontSize: customTheme.typography.pxToRem(42),
lineHeight: 1.2,
},
h4: {
- fontSize: 36,
+ fontSize: customTheme.typography.pxToRem(36),
fontWeight: 500,
lineHeight: 1.5,
},
h5: {
- fontSize: 20,
+ fontSize: customTheme.typography.pxToRem(20),
fontWeight: 600,
},
h6: {
- fontSize: 18,
+ fontSize: customTheme.typography.pxToRem(18),
},
subtitle1: {
- fontSize: 18,
+ fontSize: customTheme.typography.pxToRem(18),
},
subtitle2: {
- fontSize: 16,
+ fontSize: customTheme.typography.pxToRem(16),
},
body1: {
+ fontSize: customTheme.typography.pxToRem(15),
fontWeight: 400,
- fontSize: 15,
},
body2: {
+ fontSize: customTheme.typography.pxToRem(14),
fontWeight: 400,
- fontSize: 14,
},
caption: {
+ fontSize: customTheme.typography.pxToRem(12),
fontWeight: 400,
- fontSize: 12,
},
},
+ shape: {
+ borderRadius: 12,
+ },
});
export default function getSignInTheme(mode: PaletteMode): ThemeOptions {
@@ -226,9 +221,9 @@ export default function getSignInTheme(mode: PaletteMode): ThemeOptions {
styleOverrides: {
root: {
boxSizing: 'border-box',
- transition: 'all 100ms ease-in',
+ transition: 'all 100ms ease',
'&:focus-visible': {
- outline: `3px solid ${alpha(brand[500], 0.5)}`,
+ outline: `3px solid ${alpha(brand[400], 0.5)}`,
outlineOffset: '2px',
},
},
@@ -238,34 +233,45 @@ export default function getSignInTheme(mode: PaletteMode): ThemeOptions {
styleOverrides: {
root: ({ theme, ownerState }) => ({
boxShadow: 'none',
- borderRadius: '10px',
+ borderRadius: theme.shape.borderRadius,
textTransform: 'none',
...(ownerState.size === 'small' && {
- maxHeight: '32px',
+ height: '2rem', // 32px
+ padding: '0 0.5rem',
}),
...(ownerState.size === 'medium' && {
- height: '40px',
+ height: '2.5rem', // 40px
}),
...(ownerState.variant === 'contained' &&
ownerState.color === 'primary' && {
- color: brand[50],
- background: brand[500],
- backgroundImage: `linear-gradient(to bottom, ${brand[400]}, ${brand[600]})`,
- boxShadow: `inset 0 1px ${alpha(brand[300], 0.5)}`,
+ color: 'white',
+ backgroundColor: brand[300],
+ backgroundImage: `linear-gradient(to bottom, ${alpha(brand[400], 0.8)}, ${brand[500]})`,
+ boxShadow: `inset 0 2px 0 ${alpha(brand[200], 0.2)}, inset 0 -2px 0 ${alpha(brand[700], 0.4)}`,
border: `1px solid ${brand[500]}`,
'&:hover': {
- background: brand[400],
- backgroundImage: 'none',
- boxShadow: `0 0 0 1px ${alpha(brand[300], 0.5)}`,
+ backgroundColor: brand[700],
+ boxShadow: 'none',
+ },
+ '&:active': {
+ backgroundColor: brand[700],
+ boxShadow: `inset 0 2.5px 0 ${alpha(brand[700], 0.4)}`,
},
}),
...(ownerState.variant === 'outlined' && {
+ color: brand[700],
backgroundColor: alpha(brand[300], 0.1),
- borderColor: brand[300],
- color: brand[500],
+ borderColor: alpha(brand[200], 0.8),
+ boxShadow: `inset 0 2px ${alpha(brand[50], 0.5)}, inset 0 -2px ${alpha(brand[200], 0.2)}`,
'&:hover': {
+ backgroundColor: alpha(brand[300], 0.2),
+ borderColor: alpha(brand[300], 0.5),
+ boxShadow: 'none',
+ },
+ '&:active': {
backgroundColor: alpha(brand[300], 0.3),
- borderColor: brand[200],
+ boxShadow: `inset 0 2.5px 0 ${alpha(brand[400], 0.2)}`,
+ backgroundImage: 'none',
},
}),
...(ownerState.variant === 'outlined' &&
@@ -275,84 +281,173 @@ export default function getSignInTheme(mode: PaletteMode): ThemeOptions {
color: gray[700],
'&:hover': {
backgroundColor: alpha(gray[300], 0.3),
- borderColor: gray[200],
+ borderColor: alpha(gray[300], 0.5),
+ boxShadow: 'none',
+ },
+ '&:active': {
+ backgroundColor: alpha(gray[300], 0.4),
+ boxShadow: `inset 0 2.5px 0 ${alpha(gray[400], 0.2)}`,
+ backgroundImage: 'none',
+ },
+ }),
+ ...(ownerState.variant === 'text' &&
+ ownerState.color === 'primary' && {
+ color: brand[700],
+ '&:hover': {
+ backgroundColor: alpha(brand[300], 0.3),
+ },
+ }),
+ ...(ownerState.variant === 'text' &&
+ ownerState.color === 'info' && {
+ color: gray[700],
+ '&:hover': {
+ backgroundColor: alpha(gray[300], 0.3),
},
}),
- ...(ownerState.variant === 'text' && {
- color: brand[600],
- '&:hover': {
- backgroundColor: alpha(brand[300], 0.3),
- borderColor: brand[200],
- },
- }),
...(theme.palette.mode === 'dark' && {
- ...(ownerState.variant === 'contained' &&
- ownerState.color === 'primary' && {
- border: `1px solid ${brand[600]}`,
- backgroundImage: `linear-gradient(to bottom, ${brand[500]}, ${brand[600]})`,
- backgroundColor: brand[500],
- '&:hover': {
- background: brand[600],
- backgroundImage: 'none',
- boxShadow: `0 0 0 1px ${alpha(brand[700], 0.5)}`,
- },
- }),
...(ownerState.variant === 'outlined' && {
+ color: brand[200],
backgroundColor: alpha(brand[600], 0.1),
- borderColor: brand[700],
- color: brand[300],
+ borderColor: alpha(brand[600], 0.6),
+ boxShadow: `inset 0 2.5px ${alpha(brand[400], 0.1)}, inset 0 -2px ${alpha(gray[900], 0.5)}`,
'&:hover': {
- backgroundColor: alpha(brand[600], 0.3),
- borderColor: brand[700],
+ backgroundColor: alpha(brand[700], 0.2),
+ borderColor: alpha(brand[700], 0.5),
+ boxShadow: 'none',
+ },
+ '&:active': {
+ backgroundColor: alpha(brand[800], 0.2),
+ boxShadow: `inset 0 2.5px 0 ${alpha(brand[900], 0.4)}`,
+ backgroundImage: 'none',
},
}),
+ ...(ownerState.variant === 'text' &&
+ ownerState.color === 'info' && {
+ color: gray[200],
+ '&:hover': {
+ backgroundColor: alpha(gray[700], 0.3),
+ },
+ }),
...(ownerState.variant === 'outlined' &&
ownerState.color === 'secondary' && {
+ color: gray[300],
backgroundColor: alpha(gray[600], 0.1),
borderColor: alpha(gray[700], 0.5),
- color: gray[300],
+ boxShadow: `inset 0 2.5px ${alpha(gray[600], 0.1)}, inset 0 -2px ${alpha(gray[900], 0.5)}`,
+ '&:hover': {
+ backgroundColor: alpha(gray[700], 0.2),
+ borderColor: alpha(gray[700], 0.5),
+ boxShadow: 'none',
+ },
+ '&:active': {
+ backgroundColor: alpha(gray[800], 0.2),
+ boxShadow: `inset 0 2.5px 0 ${alpha(gray[900], 0.4)}`,
+ backgroundImage: 'none',
+ },
+ }),
+ ...(ownerState.variant === 'text' &&
+ ownerState.color === 'primary' && {
+ color: brand[200],
'&:hover': {
- backgroundColor: alpha(gray[600], 0.3),
- borderColor: gray[700],
+ backgroundColor: alpha(brand[700], 0.3),
},
}),
- ...(ownerState.variant === 'text' && {
- color: brand[200],
- '&:hover': {
- backgroundColor: alpha(brand[600], 0.3),
- borderColor: brand[700],
- },
- }),
}),
}),
},
},
- MuiIconButton: {
+ MuiCard: {
styleOverrides: {
root: ({ theme, ownerState }) => ({
- ...(ownerState.size === 'small' && {
- height: '32px',
- width: '32px',
+ backgroundColor: gray[50],
+ borderRadius: theme.shape.borderRadius,
+ border: `1px solid ${alpha(gray[200], 0.1)}`,
+ boxShadow: 'none',
+ ...(ownerState.variant === 'outlined' && {
+ border: `1px solid ${alpha(gray[200], 0.5)}`,
+ boxShadow: 'none',
+ background: `linear-gradient(to bottom, hsl(0, 0%, 100%), ${gray[50]})`,
}),
- ...(ownerState.size === 'medium' && {
- height: '40px',
- width: '40px',
+ ...(theme.palette.mode === 'dark' && {
+ backgroundColor: alpha(gray[800], 0.6),
+ border: `1px solid ${alpha(gray[700], 0.2)}`,
+ ...(ownerState.variant === 'outlined' && {
+ border: `1px solid ${alpha(gray[700], 0.4)}`,
+ boxShadow: 'none',
+ background: `linear-gradient(to bottom, ${gray[900]}, ${alpha(
+ gray[800],
+ 0.5,
+ )})`,
+ }),
}),
- color: brand[600],
+ }),
+ },
+ },
+ MuiCheckbox: {
+ defaultProps: {
+ disableRipple: true,
+ icon: (
+
+ ),
+ checkedIcon: ,
+ },
+ styleOverrides: {
+ root: ({ theme }) => ({
+ margin: 10,
+ height: 16,
+ width: 16,
+ borderRadius: 5,
+ border: '1px solid ',
+ borderColor: alpha(gray[300], 0.8),
+ boxShadow: '0 0 0 1.5px hsla(210, 0%, 0%, 0.04) inset',
+ backgroundColor: alpha(gray[100], 0.4),
+ transition: 'border-color, background-color, 120ms ease-in',
'&:hover': {
- backgroundColor: alpha(brand[300], 0.3),
- borderColor: brand[200],
+ borderColor: brand[300],
+ },
+ '&.Mui-focusVisible': {
+ outline: `3px solid ${alpha(brand[500], 0.5)}`,
+ outlineOffset: '2px',
+ borderColor: brand[400],
+ },
+ '&.Mui-checked': {
+ color: 'white',
+ backgroundColor: brand[500],
+ borderColor: brand[500],
+ boxShadow: `none`,
+ '&:hover': {
+ backgroundColor: brand[600],
+ },
},
...(theme.palette.mode === 'dark' && {
- color: brand[200],
+ borderColor: alpha(gray[700], 0.5),
+ boxShadow: '0 0 0 1.5px hsl(210, 0%, 0%) inset',
+ backgroundColor: alpha(gray[900], 0.8),
'&:hover': {
- backgroundColor: alpha(brand[600], 0.3),
- borderColor: brand[700],
+ borderColor: brand[300],
+ },
+ '&.Mui-focusVisible': {
+ borderColor: brand[400],
+ outline: `3px solid ${alpha(brand[500], 0.5)}`,
+ outlineOffset: '2px',
},
}),
}),
},
},
+ MuiDialog: {
+ styleOverrides: {
+ root: ({ theme }) => ({
+ '& .MuiDialog-paper': {
+ borderRadius: '10px',
+ border: '1px solid',
+ borderColor: theme.palette.divider,
+ },
+ }),
+ },
+ },
MuiDivider: {
styleOverrides: {
root: ({ theme }) => ({
@@ -363,50 +458,79 @@ export default function getSignInTheme(mode: PaletteMode): ThemeOptions {
}),
},
},
- MuiPaper: {
+ MuiFormLabel: {
styleOverrides: {
root: ({ theme }) => ({
- backgroundImage: 'none',
- backgroundColor: gray[100],
- ...(theme.palette.mode === 'dark' && {
- backgroundColor: gray[800],
- }),
+ typography: theme.typography.caption,
+ marginBottom: 8,
}),
},
},
- MuiDialog: {
+ MuiIconButton: {
styleOverrides: {
- root: ({ theme }) => ({
- '& .MuiDialog-paper': {
- borderRadius: '10px',
- border: '1px solid',
- borderColor: theme.palette.divider,
+ root: ({ theme, ownerState }) => ({
+ ...(ownerState.size === 'small' && {
+ height: '2rem',
+ width: '2rem',
+ }),
+ ...(ownerState.size === 'medium' && {
+ height: '2.5rem',
+ width: '2.5rem',
+ }),
+ color: brand[500],
+ '&:hover': {
+ backgroundColor: alpha(brand[300], 0.3),
+ borderColor: brand[200],
},
+ ...(theme.palette.mode === 'dark' && {
+ color: brand[200],
+ '&:hover': {
+ backgroundColor: alpha(brand[600], 0.3),
+ borderColor: brand[700],
+ },
+ }),
}),
},
},
- MuiCard: {
+ MuiInputBase: {
styleOverrides: {
- root: ({ theme, ownerState }) => ({
- backgroundColor: gray[50],
- borderRadius: 10,
- outline: `1px solid ${alpha(gray[200], 0.8)}`,
- boxShadow: 'none',
- ...(ownerState.variant === 'outlined' && {
- border: 0,
- boxSizing: 'border-box',
- background: `linear-gradient(to bottom, #FFF, ${gray[50]})`,
- }),
+ root: {
+ border: 'none',
+ },
+ },
+ },
+ MuiLink: {
+ defaultProps: {
+ underline: 'none',
+ },
+ styleOverrides: {
+ root: ({ theme }) => ({
+ color: brand[700],
+ fontWeight: 500,
+ position: 'relative',
+ textDecoration: 'none',
+ '&::before': {
+ content: '""',
+ position: 'absolute',
+ width: 0,
+ height: '1px',
+ bottom: 0,
+ left: 0,
+ backgroundColor: brand[200],
+ opacity: 0.7,
+ transition: 'width 0.3s ease, opacity 0.3s ease',
+ },
+ '&:hover::before': {
+ width: '100%',
+ opacity: 1,
+ },
+ '&:focus-visible': {
+ outline: `3px solid ${alpha(brand[500], 0.5)}`,
+ outlineOffset: '4px',
+ borderRadius: '2px',
+ },
...(theme.palette.mode === 'dark' && {
- backgroundColor: alpha(gray[800], 0.6),
- outline: `1px solid ${alpha(gray[700], 0.5)}`,
- ...(ownerState.variant === 'outlined' && {
- boxSizing: 'border-box',
- background: `linear-gradient(to bottom, ${gray[900]}, ${alpha(
- gray[800],
- 0.5,
- )})`,
- }),
+ color: brand[200],
}),
}),
},
@@ -419,7 +543,6 @@ export default function getSignInTheme(mode: PaletteMode): ThemeOptions {
input: {
paddingLeft: 10,
},
-
root: ({ theme, ownerState }) => ({
'input:-webkit-autofill': {
WebkitBoxShadow: `0 0 0 1000px ${brand[100]} inset, 0 0 0 1px ${brand[200]}`,
@@ -427,6 +550,7 @@ export default function getSignInTheme(mode: PaletteMode): ThemeOptions {
borderRadius: '8px',
},
'& .MuiInputBase-input': {
+ fontSize: '1rem',
'&::placeholder': {
opacity: 0.7,
color: gray[500],
@@ -435,10 +559,10 @@ export default function getSignInTheme(mode: PaletteMode): ThemeOptions {
boxSizing: 'border-box',
flexGrow: 1,
height: '40px',
- borderRadius: '10px',
+ borderRadius: theme.shape.borderRadius,
border: '1px solid',
borderColor: alpha(gray[300], 0.8),
- boxShadow: '0 0 0 1.5px rgba(0, 0, 0, 0.04) inset',
+ boxShadow: '0 0 0 1.5px hsla(210, 0%, 0%, 0.02) inset',
transition: 'border-color 120ms ease-in',
backgroundColor: alpha(gray[100], 0.4),
'&:hover': {
@@ -463,13 +587,14 @@ export default function getSignInTheme(mode: PaletteMode): ThemeOptions {
borderRadius: '8px',
},
'& .MuiInputBase-input': {
+ fontSize: '1rem',
'&::placeholder': {
opacity: 1,
color: gray[500],
},
},
borderColor: alpha(gray[700], 0.5),
- boxShadow: '0 0 0 1.5px rgb(0, 0, 0) inset',
+ boxShadow: '0 0 0 1.5px hsl(210, 0%, 0%) inset',
backgroundColor: alpha(gray[900], 0.8),
transition: 'border-color 120ms ease-in',
'&:hover': {
@@ -491,128 +616,29 @@ export default function getSignInTheme(mode: PaletteMode): ThemeOptions {
}),
},
},
- MuiFormLabel: {
- styleOverrides: {
- root: ({ theme }) => ({
- typography: theme.typography.caption,
- marginBottom: 8,
- }),
- },
- },
- MuiInputBase: {
- styleOverrides: {
- root: {
- border: 'none',
- },
+ MuiPaper: {
+ defaultProps: {
+ elevation: 0,
},
},
- MuiLink: {
+ MuiStack: {
defaultProps: {
- underline: 'none',
- },
- styleOverrides: {
- root: ({ theme }) => ({
- color: brand[600],
- fontWeight: 500,
- position: 'relative',
- textDecoration: 'none',
- '&::before': {
- content: '""',
- position: 'absolute',
- width: 0,
- height: '1px',
- bottom: 0,
- left: 0,
- backgroundColor: brand[200],
- opacity: 0.7,
- transition: 'width 0.3s ease, opacity 0.3s ease',
- },
- '&:hover::before': {
- width: '100%',
- opacity: 1,
- },
- '&:focus-visible': {
- outline: `3px solid ${alpha(brand[500], 0.5)}`,
- outlineOffset: '4px',
- borderRadius: '2px',
- },
- ...(theme.palette.mode === 'dark' && {
- color: brand[200],
- }),
- }),
+ useFlexGap: true,
},
},
MuiToggleButtonGroup: {
styleOverrides: {
root: ({ theme }) => ({
- borderRadius: '10px',
- boxShadow: `0 4px 16px ${alpha(gray[400], 0.2)}`,
+ borderRadius: theme.shape.borderRadius,
+ boxShadow: `0 1px 2px hsla(210, 0%, 0%, 0.05), 0 2px 12px ${alpha(brand[200], 0.5)}`,
'& .Mui-selected': {
color: brand[500],
},
...(theme.palette.mode === 'dark' && {
'& .Mui-selected': {
- color: '#fff',
- },
- boxShadow: `0 4px 16px ${alpha(brand[700], 0.5)}`,
- }),
- }),
- },
- },
- MuiCheckbox: {
- defaultProps: {
- disableRipple: true,
- icon: ,
- checkedIcon: ,
- },
- styleOverrides: {
- root: ({ theme }) => ({
- margin: 10,
- height: 16,
- width: 16,
- borderRadius: 5,
- border: '1px solid ',
- borderColor: alpha(gray[300], 0.8),
- boxShadow: '0 0 0 1.5px rgba(0, 0, 0, 0.04) inset',
- transition: 'border-color 120ms ease-in',
- backgroundColor: alpha(gray[100], 0.4),
- '&:hover': {
- borderColor: brand[300],
- },
- '&.Mui-focusVisible': {
- outline: `3px solid ${alpha(brand[500], 0.5)}`,
- outlineOffset: '2px',
- borderColor: brand[400],
- },
- '&.Mui-checked': {
- color: 'white',
- backgroundColor: brand[500],
- '&:hover': {
- borderColor: brand[300],
- backgroundColor: brand[600],
- },
- },
- ...(theme.palette.mode === 'dark' && {
- borderColor: alpha(gray[700], 0.5),
- boxShadow: '0 0 0 1.5px rgb(0, 0, 0) inset',
- backgroundColor: alpha(gray[900], 0.8),
- '&:hover': {
- borderColor: brand[300],
- },
- '&.Mui-checked': {
- color: 'white',
- backgroundColor: brand[600],
- boxShadow: '0 0 0 1px rgba(0, 0, 0, 0.2) inset',
- '&:hover': {
- borderColor: brand[300],
- backgroundColor: brand[800],
- },
- },
- '&.Mui-focusVisible': {
- borderColor: brand[400],
- outline: `3px solid ${alpha(brand[500], 0.5)}`,
- outlineOffset: '2px',
+ color: 'hsl(0, 0%, 100%)',
},
+ boxShadow: `0 0 0 1px hsla(210, 0%, 0%, 0.5), 0 2px 12px ${alpha(brand[700], 0.5)}`,
}),
}),
},
@@ -622,21 +648,15 @@ export default function getSignInTheme(mode: PaletteMode): ThemeOptions {
root: ({ theme }) => ({
padding: '12px 16px',
textTransform: 'none',
- borderRadius: '10px',
+ borderRadius: theme.shape.borderRadius,
fontWeight: 500,
...(theme.palette.mode === 'dark' && {
color: gray[400],
- boxShadow: '0 4px 16px rgba(0, 0, 0, 0.5)',
'&.Mui-selected': { color: brand[300] },
}),
}),
},
},
- MuiStack: {
- defaultProps: {
- useFlexGap: true,
- },
- },
},
};
}
diff --git a/docs/data/material/getting-started/templates/sign-up/CustomIcons.js b/docs/data/material/getting-started/templates/sign-up/CustomIcons.js
index e4a8d735bb75e6..1c24a778fb4427 100644
--- a/docs/data/material/getting-started/templates/sign-up/CustomIcons.js
+++ b/docs/data/material/getting-started/templates/sign-up/CustomIcons.js
@@ -1,87 +1,57 @@
import * as React from 'react';
-import PropTypes from 'prop-types';
-
import SvgIcon from '@mui/material/SvgIcon';
-function SitemarkIcon({ sx }) {
+export function SitemarkIcon() {
return (
-
+
-
-
-
-
);
}
-SitemarkIcon.propTypes = {
- sx: PropTypes.oneOfType([
- PropTypes.arrayOf(
- PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool]),
- ),
- PropTypes.func,
- PropTypes.object,
- ]),
-};
-
-export { SitemarkIcon };
-
export function FacebookIcon() {
return (
diff --git a/docs/data/material/getting-started/templates/sign-up/CustomIcons.tsx b/docs/data/material/getting-started/templates/sign-up/CustomIcons.tsx
index f66661a29dcb57..1c24a778fb4427 100644
--- a/docs/data/material/getting-started/templates/sign-up/CustomIcons.tsx
+++ b/docs/data/material/getting-started/templates/sign-up/CustomIcons.tsx
@@ -1,72 +1,51 @@
import * as React from 'react';
-import { SxProps, Theme } from '@mui/system';
import SvgIcon from '@mui/material/SvgIcon';
-interface IconProps {
- sx?: SxProps;
-}
-
-export function SitemarkIcon({ sx }: IconProps) {
+export function SitemarkIcon() {
return (
-
+
-
-
-
-
diff --git a/docs/data/material/getting-started/templates/sign-up/SignUp.js b/docs/data/material/getting-started/templates/sign-up/SignUp.js
index 5b8d9c0c02ce82..ecf2c3aa9fbf5c 100644
--- a/docs/data/material/getting-started/templates/sign-up/SignUp.js
+++ b/docs/data/material/getting-started/templates/sign-up/SignUp.js
@@ -15,7 +15,7 @@ import ToggleButton from '@mui/material/ToggleButton';
import ToggleButtonGroup from '@mui/material/ToggleButtonGroup';
import Typography from '@mui/material/Typography';
import Stack from '@mui/material/Stack';
-import { alpha } from '@mui/material';
+
import { createTheme, ThemeProvider } from '@mui/material/styles';
import AutoAwesomeRoundedIcon from '@mui/icons-material/AutoAwesomeRounded';
@@ -42,7 +42,7 @@ function ToggleCustomTheme({ showCustomTheme, toggleCustomTheme }) {
exclusive
value={showCustomTheme}
onChange={toggleCustomTheme}
- aria-placeholder="Platform"
+ aria-label="Toggle design language"
sx={{
backgroundColor: 'background.default',
'& .Mui-selected': {
@@ -78,14 +78,11 @@ export default function SignUp() {
const [passwordErrorMessage, setPasswordErrorMessage] = React.useState('');
const [nameError, setNameError] = React.useState(false);
const [nameErrorMessage, setNameErrorMessage] = React.useState('');
- const [lastNameError, setLastNameError] = React.useState(false);
- const [lastNameErrorMessage, setLastNameErrorMessage] = React.useState('');
const validateInputs = () => {
const email = document.getElementById('email');
const password = document.getElementById('password');
const name = document.getElementById('name');
- const lastName = document.getElementById('lastName');
let isValid = true;
@@ -116,15 +113,6 @@ export default function SignUp() {
setNameErrorMessage('');
}
- if (!lastName.value || lastName.value.length < 1) {
- setLastNameError(true);
- setLastNameErrorMessage('Name is required.');
- isValid = false;
- } else {
- setLastNameError(false);
- setLastNameErrorMessage('');
- }
-
return isValid;
};
@@ -151,18 +139,17 @@ export default function SignUp() {
({
+ backgroundRepeat: 'no-repeat',
backgroundImage:
theme.palette.mode === 'light'
- ? `linear-gradient(180deg, ${alpha('#CEE5FD', 0.2)}, #FFF)`
- : `linear-gradient(${alpha('#02294F', 0.2)}, ${alpha('#021F3B', 0.0)})`,
- backgroundRepeat: 'no-repeat',
- height: { xs: 'auto', sm: '100dvh' },
+ ? 'radial-gradient(ellipse at 50% 50%, hsl(210, 100%, 97%), hsl(0, 0%, 100%))'
+ : 'radial-gradient(at 50% 50%, hsla(210, 100%, 16%, 0.3), hsl(220, 30%, 5%))',
pb: { xs: 12, sm: 0 },
})}
- component="main"
>
-
+
- Name
+ Full name
-
- Last name
-
-
Email
{
const email = document.getElementById('email') as HTMLInputElement;
const password = document.getElementById('password') as HTMLInputElement;
const name = document.getElementById('name') as HTMLInputElement;
- const lastName = document.getElementById('lastName') as HTMLInputElement;
let isValid = true;
@@ -116,15 +113,6 @@ export default function SignUp() {
setNameErrorMessage('');
}
- if (!lastName.value || lastName.value.length < 1) {
- setLastNameError(true);
- setLastNameErrorMessage('Name is required.');
- isValid = false;
- } else {
- setLastNameError(false);
- setLastNameErrorMessage('');
- }
-
return isValid;
};
@@ -151,18 +139,17 @@ export default function SignUp() {
({
+ backgroundRepeat: 'no-repeat',
backgroundImage:
theme.palette.mode === 'light'
- ? `linear-gradient(180deg, ${alpha('#CEE5FD', 0.2)}, #FFF)`
- : `linear-gradient(${alpha('#02294F', 0.2)}, ${alpha('#021F3B', 0.0)})`,
- backgroundRepeat: 'no-repeat',
- height: { xs: 'auto', sm: '100dvh' },
+ ? 'radial-gradient(ellipse at 50% 50%, hsl(210, 100%, 97%), hsl(0, 0%, 100%))'
+ : 'radial-gradient(at 50% 50%, hsla(210, 100%, 16%, 0.3), hsl(220, 30%, 5%))',
pb: { xs: 12, sm: 0 },
})}
- component="main"
>
-
+
- Name
+ Full name
-
- Last name
-
-
Email
void;
}
-function ToggleColorMode({ mode, toggleColorMode }: ToggleColorModeProps) {
+export default function ToggleColorMode({
+ mode,
+ toggleColorMode,
+}: ToggleColorModeProps) {
return (
);
}
-
-export default ToggleColorMode;
diff --git a/docs/data/material/getting-started/templates/sign-up/getSignUpTheme.js b/docs/data/material/getting-started/templates/sign-up/getSignUpTheme.js
index 39d6b9d1db1d7e..e066b0a2d08458 100644
--- a/docs/data/material/getting-started/templates/sign-up/getSignUpTheme.js
+++ b/docs/data/material/getting-started/templates/sign-up/getSignUpTheme.js
@@ -1,73 +1,75 @@
import * as React from 'react';
-import { alpha } from '@mui/material/styles';
+import { createTheme, alpha } from '@mui/material/styles';
import CheckBoxOutlineBlankRoundedIcon from '@mui/icons-material/CheckBoxOutlineBlankRounded';
import CheckRoundedIcon from '@mui/icons-material/CheckRounded';
-export const brand = {
- 50: '#F0F7FF',
- 100: '#CEE5FD',
- 200: '#9CCCFC',
- 300: '#55A6F6',
- 400: '#0A66C2',
- 500: '#0959AA',
- 600: '#064079',
- 700: '#033363',
- 800: '#02294F',
- 900: '#021F3B',
-};
+const customTheme = createTheme();
-export const secondary = {
- 50: '#F9F0FF',
- 100: '#E9CEFD',
- 200: '#D49CFC',
- 300: '#B355F6',
- 400: '#750AC2',
- 500: '#6709AA',
- 600: '#490679',
- 700: '#3B0363',
- 800: '#2F024F',
- 900: '#23023B',
+export const brand = {
+ 50: 'hsl(210, 100%, 97%)',
+ 100: 'hsl(210, 100%, 90%)',
+ 200: 'hsl(210, 100%, 80%)',
+ 300: 'hsl(210, 100%, 65%)',
+ 400: 'hsl(210, 98%, 48%)',
+ 500: 'hsl(210, 98%, 42%)',
+ 600: 'hsl(210, 98%, 55%)',
+ 700: 'hsl(210, 100%, 35%)',
+ 800: 'hsl(210, 100%, 16%)',
+ 900: 'hsl(210, 100%, 21%)',
};
export const gray = {
- 50: '#FBFCFE',
- 100: '#EAF0F5',
- 200: '#D6E2EB',
- 300: '#BFCCD9',
- 400: '#94A6B8',
- 500: '#5B6B7C',
- 600: '#4C5967',
- 700: '#364049',
- 800: '#131B20',
- 900: '#090E10',
+ 50: 'hsl(220, 60%, 99%)',
+ 100: 'hsl(220, 35%, 94%)',
+ 200: 'hsl(220, 35%, 88%)',
+ 300: 'hsl(220, 25%, 80%)',
+ 400: 'hsl(220, 20%, 65%)',
+ 500: 'hsl(220, 20%, 42%)',
+ 600: 'hsl(220, 25%, 35%)',
+ 700: 'hsl(220, 25%, 25%)',
+ 800: 'hsl(220, 25%, 10%)',
+ 900: 'hsl(220, 30%, 5%)',
};
export const green = {
- 50: '#F6FEF6',
- 100: '#E3FBE3',
- 200: '#C7F7C7',
- 300: '#A1E8A1',
- 400: '#51BC51',
- 500: '#1F7A1F',
- 600: '#136C13',
- 700: '#0A470A',
- 800: '#042F04',
- 900: '#021D02',
+ 50: 'hsl(120, 80%, 98%)',
+ 100: 'hsl(120, 75%, 94%)',
+ 200: 'hsl(120, 75%, 87%)',
+ 300: 'hsl(120, 61%, 77%)',
+ 400: 'hsl(120, 44%, 53%)',
+ 500: 'hsl(120, 59%, 30%)',
+ 600: 'hsl(120, 70%, 25%)',
+ 700: 'hsl(120, 75%, 16%)',
+ 800: 'hsl(120, 84%, 10%)',
+ 900: 'hsl(120, 87%, 6%)',
+};
+
+export const orange = {
+ 50: 'hsl(45, 100%, 97%)',
+ 100: 'hsl(45, 92%, 90%)',
+ 200: 'hsl(45, 94%, 80%)',
+ 300: 'hsl(45, 90%, 65%)',
+ 400: 'hsl(45, 90%, 40%)',
+ 500: 'hsl(45, 90%, 35%)',
+ 600: 'hsl(45, 91%, 25%)',
+ 700: 'hsl(45, 94%, 20%)',
+ 800: 'hsl(45, 95%, 16%)',
+ 900: 'hsl(45, 93%, 12%)',
};
export const red = {
- 50: '#FFF0F0',
- 100: '#FDCECE',
- 200: '#FC9C9C',
- 300: '#F65555',
- 400: '#C20A0A',
- 500: '#910808',
- 600: '#790606',
- 700: '#630303',
- 800: '#4F0202',
- 900: '#3B0202',
+ 50: 'hsl(0, 100%, 97%)',
+ 100: 'hsl(0, 92%, 90%)',
+ 200: 'hsl(0, 94%, 80%)',
+ 300: 'hsl(0, 90%, 65%)',
+ 400: 'hsl(0, 90%, 40%)',
+ 500: 'hsl(0, 90%, 30%)',
+ 600: 'hsl(0, 91%, 25%)',
+ 700: 'hsl(0, 94%, 20%)',
+ 800: 'hsl(0, 95%, 16%)',
+ 900: 'hsl(0, 93%, 12%)',
};
const getDesignTokens = (mode) => ({
@@ -85,26 +87,25 @@ const getDesignTokens = (mode) => ({
dark: brand[800],
}),
},
- secondary: {
- light: secondary[300],
- main: secondary[500],
- dark: secondary[800],
+ warning: {
+ light: orange[300],
+ main: orange[400],
+ dark: orange[800],
...(mode === 'dark' && {
- light: secondary[400],
- main: secondary[500],
- dark: secondary[900],
+ light: orange[400],
+ main: orange[500],
+ dark: orange[700],
}),
},
- warning: {
- main: '#F7B538',
- dark: '#F79F00',
- ...(mode === 'dark' && { main: '#F7B538', dark: '#F79F00' }),
- },
error: {
- light: red[50],
- main: red[500],
- dark: red[700],
- ...(mode === 'dark' && { light: '#D32F2F', main: '#D32F2F', dark: '#B22A2A' }),
+ light: red[300],
+ main: red[400],
+ dark: red[800],
+ ...(mode === 'dark' && {
+ light: red[400],
+ main: red[500],
+ dark: red[700],
+ }),
},
success: {
light: green[300],
@@ -117,27 +118,18 @@ const getDesignTokens = (mode) => ({
}),
},
grey: {
- 50: gray[50],
- 100: gray[100],
- 200: gray[200],
- 300: gray[300],
- 400: gray[400],
- 500: gray[500],
- 600: gray[600],
- 700: gray[700],
- 800: gray[800],
- 900: gray[900],
+ ...gray,
},
divider: mode === 'dark' ? alpha(gray[600], 0.3) : alpha(gray[300], 0.5),
background: {
- default: '#fff',
- paper: gray[50],
- ...(mode === 'dark' && { default: gray[900], paper: gray[800] }),
+ default: 'hsl(0, 0%, 100%)',
+ paper: gray[100],
+ ...(mode === 'dark' && { default: 'hsl(220, 30%, 3%)', paper: gray[900] }),
},
text: {
primary: gray[800],
secondary: gray[600],
- ...(mode === 'dark' && { primary: '#fff', secondary: gray[400] }),
+ ...(mode === 'dark' && { primary: 'hsl(0, 0%, 100%)', secondary: gray[400] }),
},
action: {
selected: `${alpha(brand[200], 0.2)}`,
@@ -149,51 +141,54 @@ const getDesignTokens = (mode) => ({
typography: {
fontFamily: ['"Inter", "sans-serif"'].join(','),
h1: {
- fontSize: 60,
+ fontSize: customTheme.typography.pxToRem(60),
fontWeight: 600,
- lineHeight: 78 / 70,
- letterSpacing: -0.2,
+ lineHeight: 1.2,
+ letterSpacing: -0.5,
},
h2: {
- fontSize: 48,
+ fontSize: customTheme.typography.pxToRem(48),
fontWeight: 600,
lineHeight: 1.2,
},
h3: {
- fontSize: 42,
+ fontSize: customTheme.typography.pxToRem(42),
lineHeight: 1.2,
},
h4: {
- fontSize: 36,
+ fontSize: customTheme.typography.pxToRem(36),
fontWeight: 500,
lineHeight: 1.5,
},
h5: {
- fontSize: 20,
+ fontSize: customTheme.typography.pxToRem(20),
fontWeight: 600,
},
h6: {
- fontSize: 18,
+ fontSize: customTheme.typography.pxToRem(18),
},
subtitle1: {
- fontSize: 18,
+ fontSize: customTheme.typography.pxToRem(18),
},
subtitle2: {
- fontSize: 16,
+ fontSize: customTheme.typography.pxToRem(16),
},
body1: {
+ fontSize: customTheme.typography.pxToRem(15),
fontWeight: 400,
- fontSize: 15,
},
body2: {
+ fontSize: customTheme.typography.pxToRem(14),
fontWeight: 400,
- fontSize: 14,
},
caption: {
+ fontSize: customTheme.typography.pxToRem(12),
fontWeight: 400,
- fontSize: 12,
},
},
+ shape: {
+ borderRadius: 12,
+ },
});
export default function getSignUpTheme(mode) {
@@ -208,9 +203,9 @@ export default function getSignUpTheme(mode) {
styleOverrides: {
root: {
boxSizing: 'border-box',
- transition: 'all 100ms ease-in',
+ transition: 'all 100ms ease',
'&:focus-visible': {
- outline: `3px solid ${alpha(brand[500], 0.5)}`,
+ outline: `3px solid ${alpha(brand[400], 0.5)}`,
outlineOffset: '2px',
},
},
@@ -220,34 +215,45 @@ export default function getSignUpTheme(mode) {
styleOverrides: {
root: ({ theme, ownerState }) => ({
boxShadow: 'none',
- borderRadius: '10px',
+ borderRadius: theme.shape.borderRadius,
textTransform: 'none',
...(ownerState.size === 'small' && {
- maxHeight: '32px',
+ height: '2rem', // 32px
+ padding: '0 0.5rem',
}),
...(ownerState.size === 'medium' && {
- height: '40px',
+ height: '2.5rem', // 40px
}),
...(ownerState.variant === 'contained' &&
ownerState.color === 'primary' && {
- color: brand[50],
- background: brand[500],
- backgroundImage: `linear-gradient(to bottom, ${brand[400]}, ${brand[600]})`,
- boxShadow: `inset 0 1px ${alpha(brand[300], 0.5)}`,
+ color: 'white',
+ backgroundColor: brand[300],
+ backgroundImage: `linear-gradient(to bottom, ${alpha(brand[400], 0.8)}, ${brand[500]})`,
+ boxShadow: `inset 0 2px 0 ${alpha(brand[200], 0.2)}, inset 0 -2px 0 ${alpha(brand[700], 0.4)}`,
border: `1px solid ${brand[500]}`,
'&:hover': {
- background: brand[400],
- backgroundImage: 'none',
- boxShadow: `0 0 0 1px ${alpha(brand[300], 0.5)}`,
+ backgroundColor: brand[700],
+ boxShadow: 'none',
+ },
+ '&:active': {
+ backgroundColor: brand[700],
+ boxShadow: `inset 0 2.5px 0 ${alpha(brand[700], 0.4)}`,
},
}),
...(ownerState.variant === 'outlined' && {
+ color: brand[700],
backgroundColor: alpha(brand[300], 0.1),
- borderColor: brand[300],
- color: brand[500],
+ borderColor: alpha(brand[200], 0.8),
+ boxShadow: `inset 0 2px ${alpha(brand[50], 0.5)}, inset 0 -2px ${alpha(brand[200], 0.2)}`,
'&:hover': {
+ backgroundColor: alpha(brand[300], 0.2),
+ borderColor: alpha(brand[300], 0.5),
+ boxShadow: 'none',
+ },
+ '&:active': {
backgroundColor: alpha(brand[300], 0.3),
- borderColor: brand[200],
+ boxShadow: `inset 0 2.5px 0 ${alpha(brand[400], 0.2)}`,
+ backgroundImage: 'none',
},
}),
...(ownerState.variant === 'outlined' &&
@@ -257,84 +263,174 @@ export default function getSignUpTheme(mode) {
color: gray[700],
'&:hover': {
backgroundColor: alpha(gray[300], 0.3),
- borderColor: gray[200],
+ borderColor: alpha(gray[300], 0.5),
+ boxShadow: 'none',
+ },
+ '&:active': {
+ backgroundColor: alpha(gray[300], 0.4),
+ boxShadow: `inset 0 2.5px 0 ${alpha(gray[400], 0.2)}`,
+ backgroundImage: 'none',
+ },
+ }),
+ ...(ownerState.variant === 'text' &&
+ ownerState.color === 'primary' && {
+ color: brand[700],
+ '&:hover': {
+ backgroundColor: alpha(brand[300], 0.3),
+ },
+ }),
+ ...(ownerState.variant === 'text' &&
+ ownerState.color === 'info' && {
+ color: gray[700],
+ '&:hover': {
+ backgroundColor: alpha(gray[300], 0.3),
},
}),
- ...(ownerState.variant === 'text' && {
- color: brand[600],
- '&:hover': {
- backgroundColor: alpha(brand[300], 0.3),
- borderColor: brand[200],
- },
- }),
...(theme.palette.mode === 'dark' && {
- ...(ownerState.variant === 'contained' &&
- ownerState.color === 'primary' && {
- border: `1px solid ${brand[600]}`,
- backgroundImage: `linear-gradient(to bottom, ${brand[500]}, ${brand[600]})`,
- backgroundColor: brand[500],
- '&:hover': {
- background: brand[600],
- backgroundImage: 'none',
- boxShadow: `0 0 0 1px ${alpha(brand[700], 0.5)}`,
- },
- }),
...(ownerState.variant === 'outlined' && {
+ color: brand[200],
backgroundColor: alpha(brand[600], 0.1),
- borderColor: brand[700],
- color: brand[300],
+ borderColor: alpha(brand[600], 0.6),
+ boxShadow: `inset 0 2.5px ${alpha(brand[400], 0.1)}, inset 0 -2px ${alpha(gray[900], 0.5)}`,
'&:hover': {
- backgroundColor: alpha(brand[600], 0.3),
- borderColor: brand[700],
+ backgroundColor: alpha(brand[700], 0.2),
+ borderColor: alpha(brand[700], 0.5),
+ boxShadow: 'none',
+ },
+ '&:active': {
+ backgroundColor: alpha(brand[800], 0.2),
+ boxShadow: `inset 0 2.5px 0 ${alpha(brand[900], 0.4)}`,
+ backgroundImage: 'none',
},
}),
+ ...(ownerState.variant === 'text' &&
+ ownerState.color === 'info' && {
+ color: gray[200],
+ '&:hover': {
+ backgroundColor: alpha(gray[700], 0.3),
+ },
+ }),
...(ownerState.variant === 'outlined' &&
ownerState.color === 'secondary' && {
+ color: gray[300],
backgroundColor: alpha(gray[600], 0.1),
borderColor: alpha(gray[700], 0.5),
- color: gray[300],
+ boxShadow: `inset 0 2.5px ${alpha(gray[600], 0.1)}, inset 0 -2px ${alpha(gray[900], 0.5)}`,
+ '&:hover': {
+ backgroundColor: alpha(gray[700], 0.2),
+ borderColor: alpha(gray[700], 0.5),
+ boxShadow: 'none',
+ },
+ '&:active': {
+ backgroundColor: alpha(gray[800], 0.2),
+ boxShadow: `inset 0 2.5px 0 ${alpha(gray[900], 0.4)}`,
+ backgroundImage: 'none',
+ },
+ }),
+ ...(ownerState.variant === 'text' &&
+ ownerState.color === 'primary' && {
+ color: brand[200],
'&:hover': {
- backgroundColor: alpha(gray[600], 0.3),
- borderColor: gray[700],
+ backgroundColor: alpha(brand[700], 0.3),
},
}),
- ...(ownerState.variant === 'text' && {
- color: brand[200],
- '&:hover': {
- backgroundColor: alpha(brand[600], 0.3),
- borderColor: brand[700],
- },
- }),
}),
}),
},
},
- MuiIconButton: {
+ MuiCard: {
styleOverrides: {
root: ({ theme, ownerState }) => ({
- ...(ownerState.size === 'small' && {
- height: '32px',
- width: '32px',
+ transition: 'all 100ms ease',
+ backgroundColor: gray[50],
+ borderRadius: theme.shape.borderRadius,
+ border: `1px solid ${alpha(gray[200], 0.5)}`,
+ boxShadow: 'none',
+ ...(ownerState.variant === 'outlined' && {
+ border: `1px solid ${gray[200]}`,
+ boxShadow: 'none',
+ background: `linear-gradient(to bottom, hsl(0, 0%, 100%), ${gray[50]})`,
}),
- ...(ownerState.size === 'medium' && {
- height: '40px',
- width: '40px',
+ ...(theme.palette.mode === 'dark' && {
+ backgroundColor: alpha(gray[800], 0.6),
+ border: `1px solid ${alpha(gray[700], 0.3)}`,
+ ...(ownerState.variant === 'outlined' && {
+ border: `1px solid ${alpha(gray[700], 0.4)}`,
+ boxShadow: 'none',
+ background: `linear-gradient(to bottom, ${gray[900]}, ${alpha(
+ gray[800],
+ 0.5,
+ )})`,
+ }),
}),
- color: brand[600],
+ }),
+ },
+ },
+ MuiCheckbox: {
+ defaultProps: {
+ disableRipple: true,
+ icon: (
+
+ ),
+ checkedIcon: ,
+ },
+ styleOverrides: {
+ root: ({ theme }) => ({
+ margin: 10,
+ height: 16,
+ width: 16,
+ borderRadius: 5,
+ border: '1px solid ',
+ borderColor: alpha(gray[300], 0.8),
+ backgroundColor: alpha(gray[100], 0.4),
+ boxShadow: '0 0 0 1.5px hsla(210, 0%, 0%, 0.04) inset',
+ transition: 'border-color, background-color, 120ms ease-in',
'&:hover': {
- backgroundColor: alpha(brand[300], 0.3),
- borderColor: brand[200],
+ borderColor: gray[400],
+ },
+ '&.Mui-focusVisible': {
+ outline: `3px solid ${alpha(brand[500], 0.5)}`,
+ outlineOffset: '2px',
+ borderColor: brand[400],
+ },
+ '&.Mui-checked': {
+ color: 'white',
+ backgroundColor: brand[500],
+ borderColor: brand[500],
+ boxShadow: `none`,
+ '&:hover': {
+ backgroundColor: brand[600],
+ },
},
...(theme.palette.mode === 'dark' && {
- color: brand[200],
+ borderColor: alpha(gray[700], 0.5),
+ boxShadow: '0 0 0 1.5px hsl(210, 0%, 0%) inset',
+ backgroundColor: alpha(gray[900], 0.8),
'&:hover': {
- backgroundColor: alpha(brand[600], 0.3),
- borderColor: brand[700],
+ borderColor: brand[300],
+ },
+ '&.Mui-focusVisible': {
+ borderColor: brand[400],
+ outline: `3px solid ${alpha(brand[500], 0.5)}`,
+ outlineOffset: '2px',
},
}),
}),
},
},
+ MuiDialog: {
+ styleOverrides: {
+ root: ({ theme }) => ({
+ '& .MuiDialog-paper': {
+ borderRadius: '10px',
+ border: '1px solid',
+ borderColor: theme.palette.divider,
+ },
+ }),
+ },
+ },
MuiDivider: {
styleOverrides: {
root: ({ theme }) => ({
@@ -345,25 +441,80 @@ export default function getSignUpTheme(mode) {
}),
},
},
- MuiPaper: {
+ MuiFormLabel: {
styleOverrides: {
root: ({ theme }) => ({
- backgroundImage: 'none',
- backgroundColor: gray[100],
+ typography: theme.typography.caption,
+ marginBottom: 8,
+ }),
+ },
+ },
+ MuiIconButton: {
+ styleOverrides: {
+ root: ({ theme, ownerState }) => ({
+ ...(ownerState.size === 'small' && {
+ height: '2rem',
+ width: '2rem',
+ }),
+ ...(ownerState.size === 'medium' && {
+ height: '2.5rem',
+ width: '2.5rem',
+ }),
+ color: brand[500],
+ '&:hover': {
+ backgroundColor: alpha(brand[300], 0.3),
+ borderColor: brand[200],
+ },
...(theme.palette.mode === 'dark' && {
- backgroundColor: gray[800],
+ color: brand[200],
+ '&:hover': {
+ backgroundColor: alpha(brand[600], 0.3),
+ borderColor: brand[700],
+ },
}),
}),
},
},
- MuiDialog: {
+ MuiInputBase: {
+ styleOverrides: {
+ root: {
+ border: 'none',
+ },
+ },
+ },
+ MuiLink: {
+ defaultProps: {
+ underline: 'none',
+ },
styleOverrides: {
root: ({ theme }) => ({
- '& .MuiDialog-paper': {
- borderRadius: '10px',
- border: '1px solid',
- borderColor: theme.palette.divider,
+ color: brand[700],
+ fontWeight: 500,
+ position: 'relative',
+ textDecoration: 'none',
+ '&::before': {
+ content: '""',
+ position: 'absolute',
+ width: 0,
+ height: '1px',
+ bottom: 0,
+ left: 0,
+ backgroundColor: brand[200],
+ opacity: 0.7,
+ transition: 'width 0.3s ease, opacity 0.3s ease',
+ },
+ '&:hover::before': {
+ width: '100%',
+ opacity: 1,
+ },
+ '&:focus-visible': {
+ outline: `3px solid ${alpha(brand[500], 0.5)}`,
+ outlineOffset: '4px',
+ borderRadius: '2px',
},
+ ...(theme.palette.mode === 'dark' && {
+ color: brand[200],
+ }),
}),
},
},
@@ -382,6 +533,7 @@ export default function getSignUpTheme(mode) {
borderRadius: '8px',
},
'& .MuiInputBase-input': {
+ fontSize: '1rem',
'&::placeholder': {
opacity: 0.7,
color: gray[500],
@@ -390,10 +542,10 @@ export default function getSignUpTheme(mode) {
boxSizing: 'border-box',
flexGrow: 1,
height: '40px',
- borderRadius: '10px',
+ borderRadius: theme.shape.borderRadius,
border: '1px solid',
borderColor: alpha(gray[300], 0.8),
- boxShadow: '0 0 0 1.5px rgba(0, 0, 0, 0.04) inset',
+ boxShadow: '0 0 0 1.5px hsla(210, 0%, 0%, 0.02) inset',
transition: 'border-color 120ms ease-in',
backgroundColor: alpha(gray[100], 0.4),
'&:hover': {
@@ -418,13 +570,14 @@ export default function getSignUpTheme(mode) {
borderRadius: '8px',
},
'& .MuiInputBase-input': {
+ fontSize: '1rem',
'&::placeholder': {
opacity: 1,
color: gray[500],
},
},
borderColor: alpha(gray[700], 0.5),
- boxShadow: '0 0 0 1.5px rgb(0, 0, 0) inset',
+ boxShadow: '0 0 0 1.5px hsl(210, 0%, 0%) inset',
backgroundColor: alpha(gray[900], 0.8),
transition: 'border-color 120ms ease-in',
'&:hover': {
@@ -446,154 +599,29 @@ export default function getSignUpTheme(mode) {
}),
},
},
- MuiFormLabel: {
- styleOverrides: {
- root: ({ theme }) => ({
- typography: theme.typography.caption,
- marginBottom: 8,
- }),
- },
- },
- MuiInputBase: {
- styleOverrides: {
- root: {
- border: 'none',
- },
- },
- },
- MuiCard: {
- styleOverrides: {
- root: ({ theme, ownerState }) => ({
- backgroundColor: gray[50],
- borderRadius: 10,
- outline: `1px solid ${alpha(gray[200], 0.8)}`,
- boxShadow: 'none',
- ...(ownerState.variant === 'outlined' && {
- border: 0,
- boxSizing: 'border-box',
- background: `linear-gradient(to bottom, #FFF, ${gray[50]})`,
- }),
- ...(theme.palette.mode === 'dark' && {
- backgroundColor: alpha(gray[800], 0.6),
- outline: `1px solid ${alpha(gray[700], 0.5)}`,
- ...(ownerState.variant === 'outlined' && {
- boxSizing: 'border-box',
- background: `linear-gradient(to bottom, ${gray[900]}, ${alpha(
- gray[800],
- 0.5,
- )})`,
- }),
- }),
- }),
+ MuiPaper: {
+ defaultProps: {
+ elevation: 0,
},
},
- MuiLink: {
+ MuiStack: {
defaultProps: {
- underline: 'none',
- },
- styleOverrides: {
- root: ({ theme }) => ({
- color: brand[600],
- fontWeight: 500,
- position: 'relative',
- textDecoration: 'none',
- '&::before': {
- content: '""',
- position: 'absolute',
- width: 0,
- height: '1px',
- bottom: 0,
- left: 0,
- backgroundColor: brand[200],
- opacity: 0.7,
- transition: 'width 0.3s ease, opacity 0.3s ease',
- },
- '&:hover::before': {
- width: '100%',
- opacity: 1,
- },
- '&:focus-visible': {
- outline: `3px solid ${alpha(brand[500], 0.5)}`,
- outlineOffset: '4px',
- borderRadius: '2px',
- },
- ...(theme.palette.mode === 'dark' && {
- color: brand[200],
- }),
- }),
+ useFlexGap: true,
},
},
MuiToggleButtonGroup: {
styleOverrides: {
root: ({ theme }) => ({
- borderRadius: '10px',
- boxShadow: `0 4px 16px ${alpha(gray[400], 0.2)}`,
+ borderRadius: theme.shape.borderRadius,
+ boxShadow: `0 1px 2px hsla(210, 0%, 0%, 0.05), 0 2px 12px ${alpha(brand[200], 0.5)}`,
'& .Mui-selected': {
color: brand[500],
},
...(theme.palette.mode === 'dark' && {
'& .Mui-selected': {
- color: '#fff',
- },
- boxShadow: `0 4px 16px ${alpha(brand[700], 0.5)}`,
- }),
- }),
- },
- },
- MuiCheckbox: {
- defaultProps: {
- disableRipple: true,
- icon: ,
- checkedIcon: ,
- },
- styleOverrides: {
- root: ({ theme }) => ({
- margin: 10,
- height: 16,
- width: 16,
- borderRadius: 5,
- border: '1px solid ',
- borderColor: alpha(gray[300], 0.8),
- boxShadow: '0 0 0 1.5px rgba(0, 0, 0, 0.04) inset',
- transition: 'border-color 120ms ease-in',
- backgroundColor: alpha(gray[100], 0.4),
- '&:hover': {
- borderColor: brand[300],
- },
- '&.Mui-focusVisible': {
- outline: `3px solid ${alpha(brand[500], 0.5)}`,
- outlineOffset: '2px',
- borderColor: brand[400],
- },
- '&.Mui-checked': {
- color: 'white',
- backgroundColor: brand[500],
- '&:hover': {
- borderColor: brand[300],
- backgroundColor: brand[600],
- },
- },
- ...(theme.palette.mode === 'dark' && {
- borderColor: alpha(gray[700], 0.5),
- boxShadow: '0 0 0 1.5px rgb(0, 0, 0) inset',
- backgroundColor: alpha(gray[900], 0.8),
- '&:hover': {
- borderColor: brand[300],
- },
- '&.Mui-checked': {
- color: 'white',
- backgroundColor: brand[600],
- boxShadow: '0 0 0 1px rgba(0, 0, 0, 0.2) inset',
- '&:hover': {
- borderColor: brand[300],
- backgroundColor: brand[800],
- },
- },
- '&.Mui-focusVisible': {
- borderColor: brand[400],
- outline: `3px solid ${alpha(brand[500], 0.5)}`,
- outlineOffset: '2px',
+ color: 'hsl(0, 0%, 100%)',
},
+ boxShadow: `0 0 0 1px hsla(210, 0%, 0%, 0.5), 0 2px 12px ${alpha(brand[700], 0.5)}`,
}),
}),
},
@@ -603,21 +631,15 @@ export default function getSignUpTheme(mode) {
root: ({ theme }) => ({
padding: '12px 16px',
textTransform: 'none',
- borderRadius: '10px',
+ borderRadius: theme.shape.borderRadius,
fontWeight: 500,
...(theme.palette.mode === 'dark' && {
color: gray[400],
- boxShadow: '0 4px 16px rgba(0, 0, 0, 0.5)',
'&.Mui-selected': { color: brand[300] },
}),
}),
},
},
- MuiStack: {
- defaultProps: {
- useFlexGap: true,
- },
- },
},
};
}
diff --git a/docs/data/material/getting-started/templates/sign-up/getSignUpTheme.tsx b/docs/data/material/getting-started/templates/sign-up/getSignUpTheme.tsx
index 51f2fa45444de8..19490022c87ad3 100644
--- a/docs/data/material/getting-started/templates/sign-up/getSignUpTheme.tsx
+++ b/docs/data/material/getting-started/templates/sign-up/getSignUpTheme.tsx
@@ -1,6 +1,6 @@
import * as React from 'react';
import type {} from '@mui/material/themeCssVarsAugmentation';
-import { alpha, ThemeOptions } from '@mui/material/styles';
+import { createTheme, ThemeOptions, alpha } from '@mui/material/styles';
import { PaletteMode } from '@mui/material';
import CheckBoxOutlineBlankRoundedIcon from '@mui/icons-material/CheckBoxOutlineBlankRounded';
@@ -23,69 +23,71 @@ declare module '@mui/material/styles/createPalette' {
interface PaletteColor extends ColorRange {}
}
-export const brand = {
- 50: '#F0F7FF',
- 100: '#CEE5FD',
- 200: '#9CCCFC',
- 300: '#55A6F6',
- 400: '#0A66C2',
- 500: '#0959AA',
- 600: '#064079',
- 700: '#033363',
- 800: '#02294F',
- 900: '#021F3B',
-};
+const customTheme = createTheme();
-export const secondary = {
- 50: '#F9F0FF',
- 100: '#E9CEFD',
- 200: '#D49CFC',
- 300: '#B355F6',
- 400: '#750AC2',
- 500: '#6709AA',
- 600: '#490679',
- 700: '#3B0363',
- 800: '#2F024F',
- 900: '#23023B',
+export const brand = {
+ 50: 'hsl(210, 100%, 97%)',
+ 100: 'hsl(210, 100%, 90%)',
+ 200: 'hsl(210, 100%, 80%)',
+ 300: 'hsl(210, 100%, 65%)',
+ 400: 'hsl(210, 98%, 48%)',
+ 500: 'hsl(210, 98%, 42%)',
+ 600: 'hsl(210, 98%, 55%)',
+ 700: 'hsl(210, 100%, 35%)',
+ 800: 'hsl(210, 100%, 16%)',
+ 900: 'hsl(210, 100%, 21%)',
};
export const gray = {
- 50: '#FBFCFE',
- 100: '#EAF0F5',
- 200: '#D6E2EB',
- 300: '#BFCCD9',
- 400: '#94A6B8',
- 500: '#5B6B7C',
- 600: '#4C5967',
- 700: '#364049',
- 800: '#131B20',
- 900: '#090E10',
+ 50: 'hsl(220, 60%, 99%)',
+ 100: 'hsl(220, 35%, 94%)',
+ 200: 'hsl(220, 35%, 88%)',
+ 300: 'hsl(220, 25%, 80%)',
+ 400: 'hsl(220, 20%, 65%)',
+ 500: 'hsl(220, 20%, 42%)',
+ 600: 'hsl(220, 25%, 35%)',
+ 700: 'hsl(220, 25%, 25%)',
+ 800: 'hsl(220, 25%, 10%)',
+ 900: 'hsl(220, 30%, 5%)',
};
export const green = {
- 50: '#F6FEF6',
- 100: '#E3FBE3',
- 200: '#C7F7C7',
- 300: '#A1E8A1',
- 400: '#51BC51',
- 500: '#1F7A1F',
- 600: '#136C13',
- 700: '#0A470A',
- 800: '#042F04',
- 900: '#021D02',
+ 50: 'hsl(120, 80%, 98%)',
+ 100: 'hsl(120, 75%, 94%)',
+ 200: 'hsl(120, 75%, 87%)',
+ 300: 'hsl(120, 61%, 77%)',
+ 400: 'hsl(120, 44%, 53%)',
+ 500: 'hsl(120, 59%, 30%)',
+ 600: 'hsl(120, 70%, 25%)',
+ 700: 'hsl(120, 75%, 16%)',
+ 800: 'hsl(120, 84%, 10%)',
+ 900: 'hsl(120, 87%, 6%)',
+};
+
+export const orange = {
+ 50: 'hsl(45, 100%, 97%)',
+ 100: 'hsl(45, 92%, 90%)',
+ 200: 'hsl(45, 94%, 80%)',
+ 300: 'hsl(45, 90%, 65%)',
+ 400: 'hsl(45, 90%, 40%)',
+ 500: 'hsl(45, 90%, 35%)',
+ 600: 'hsl(45, 91%, 25%)',
+ 700: 'hsl(45, 94%, 20%)',
+ 800: 'hsl(45, 95%, 16%)',
+ 900: 'hsl(45, 93%, 12%)',
};
export const red = {
- 50: '#FFF0F0',
- 100: '#FDCECE',
- 200: '#FC9C9C',
- 300: '#F65555',
- 400: '#C20A0A',
- 500: '#910808',
- 600: '#790606',
- 700: '#630303',
- 800: '#4F0202',
- 900: '#3B0202',
+ 50: 'hsl(0, 100%, 97%)',
+ 100: 'hsl(0, 92%, 90%)',
+ 200: 'hsl(0, 94%, 80%)',
+ 300: 'hsl(0, 90%, 65%)',
+ 400: 'hsl(0, 90%, 40%)',
+ 500: 'hsl(0, 90%, 30%)',
+ 600: 'hsl(0, 91%, 25%)',
+ 700: 'hsl(0, 94%, 20%)',
+ 800: 'hsl(0, 95%, 16%)',
+ 900: 'hsl(0, 93%, 12%)',
};
const getDesignTokens = (mode: PaletteMode) => ({
@@ -103,26 +105,25 @@ const getDesignTokens = (mode: PaletteMode) => ({
dark: brand[800],
}),
},
- secondary: {
- light: secondary[300],
- main: secondary[500],
- dark: secondary[800],
+ warning: {
+ light: orange[300],
+ main: orange[400],
+ dark: orange[800],
...(mode === 'dark' && {
- light: secondary[400],
- main: secondary[500],
- dark: secondary[900],
+ light: orange[400],
+ main: orange[500],
+ dark: orange[700],
}),
},
- warning: {
- main: '#F7B538',
- dark: '#F79F00',
- ...(mode === 'dark' && { main: '#F7B538', dark: '#F79F00' }),
- },
error: {
- light: red[50],
- main: red[500],
- dark: red[700],
- ...(mode === 'dark' && { light: '#D32F2F', main: '#D32F2F', dark: '#B22A2A' }),
+ light: red[300],
+ main: red[400],
+ dark: red[800],
+ ...(mode === 'dark' && {
+ light: red[400],
+ main: red[500],
+ dark: red[700],
+ }),
},
success: {
light: green[300],
@@ -135,27 +136,18 @@ const getDesignTokens = (mode: PaletteMode) => ({
}),
},
grey: {
- 50: gray[50],
- 100: gray[100],
- 200: gray[200],
- 300: gray[300],
- 400: gray[400],
- 500: gray[500],
- 600: gray[600],
- 700: gray[700],
- 800: gray[800],
- 900: gray[900],
+ ...gray,
},
divider: mode === 'dark' ? alpha(gray[600], 0.3) : alpha(gray[300], 0.5),
background: {
- default: '#fff',
- paper: gray[50],
- ...(mode === 'dark' && { default: gray[900], paper: gray[800] }),
+ default: 'hsl(0, 0%, 100%)',
+ paper: gray[100],
+ ...(mode === 'dark' && { default: 'hsl(220, 30%, 3%)', paper: gray[900] }),
},
text: {
primary: gray[800],
secondary: gray[600],
- ...(mode === 'dark' && { primary: '#fff', secondary: gray[400] }),
+ ...(mode === 'dark' && { primary: 'hsl(0, 0%, 100%)', secondary: gray[400] }),
},
action: {
selected: `${alpha(brand[200], 0.2)}`,
@@ -167,51 +159,54 @@ const getDesignTokens = (mode: PaletteMode) => ({
typography: {
fontFamily: ['"Inter", "sans-serif"'].join(','),
h1: {
- fontSize: 60,
+ fontSize: customTheme.typography.pxToRem(60),
fontWeight: 600,
- lineHeight: 78 / 70,
- letterSpacing: -0.2,
+ lineHeight: 1.2,
+ letterSpacing: -0.5,
},
h2: {
- fontSize: 48,
+ fontSize: customTheme.typography.pxToRem(48),
fontWeight: 600,
lineHeight: 1.2,
},
h3: {
- fontSize: 42,
+ fontSize: customTheme.typography.pxToRem(42),
lineHeight: 1.2,
},
h4: {
- fontSize: 36,
+ fontSize: customTheme.typography.pxToRem(36),
fontWeight: 500,
lineHeight: 1.5,
},
h5: {
- fontSize: 20,
+ fontSize: customTheme.typography.pxToRem(20),
fontWeight: 600,
},
h6: {
- fontSize: 18,
+ fontSize: customTheme.typography.pxToRem(18),
},
subtitle1: {
- fontSize: 18,
+ fontSize: customTheme.typography.pxToRem(18),
},
subtitle2: {
- fontSize: 16,
+ fontSize: customTheme.typography.pxToRem(16),
},
body1: {
+ fontSize: customTheme.typography.pxToRem(15),
fontWeight: 400,
- fontSize: 15,
},
body2: {
+ fontSize: customTheme.typography.pxToRem(14),
fontWeight: 400,
- fontSize: 14,
},
caption: {
+ fontSize: customTheme.typography.pxToRem(12),
fontWeight: 400,
- fontSize: 12,
},
},
+ shape: {
+ borderRadius: 12,
+ },
});
export default function getSignUpTheme(mode: PaletteMode): ThemeOptions {
@@ -226,9 +221,9 @@ export default function getSignUpTheme(mode: PaletteMode): ThemeOptions {
styleOverrides: {
root: {
boxSizing: 'border-box',
- transition: 'all 100ms ease-in',
+ transition: 'all 100ms ease',
'&:focus-visible': {
- outline: `3px solid ${alpha(brand[500], 0.5)}`,
+ outline: `3px solid ${alpha(brand[400], 0.5)}`,
outlineOffset: '2px',
},
},
@@ -238,34 +233,45 @@ export default function getSignUpTheme(mode: PaletteMode): ThemeOptions {
styleOverrides: {
root: ({ theme, ownerState }) => ({
boxShadow: 'none',
- borderRadius: '10px',
+ borderRadius: theme.shape.borderRadius,
textTransform: 'none',
...(ownerState.size === 'small' && {
- maxHeight: '32px',
+ height: '2rem', // 32px
+ padding: '0 0.5rem',
}),
...(ownerState.size === 'medium' && {
- height: '40px',
+ height: '2.5rem', // 40px
}),
...(ownerState.variant === 'contained' &&
ownerState.color === 'primary' && {
- color: brand[50],
- background: brand[500],
- backgroundImage: `linear-gradient(to bottom, ${brand[400]}, ${brand[600]})`,
- boxShadow: `inset 0 1px ${alpha(brand[300], 0.5)}`,
+ color: 'white',
+ backgroundColor: brand[300],
+ backgroundImage: `linear-gradient(to bottom, ${alpha(brand[400], 0.8)}, ${brand[500]})`,
+ boxShadow: `inset 0 2px 0 ${alpha(brand[200], 0.2)}, inset 0 -2px 0 ${alpha(brand[700], 0.4)}`,
border: `1px solid ${brand[500]}`,
'&:hover': {
- background: brand[400],
- backgroundImage: 'none',
- boxShadow: `0 0 0 1px ${alpha(brand[300], 0.5)}`,
+ backgroundColor: brand[700],
+ boxShadow: 'none',
+ },
+ '&:active': {
+ backgroundColor: brand[700],
+ boxShadow: `inset 0 2.5px 0 ${alpha(brand[700], 0.4)}`,
},
}),
...(ownerState.variant === 'outlined' && {
+ color: brand[700],
backgroundColor: alpha(brand[300], 0.1),
- borderColor: brand[300],
- color: brand[500],
+ borderColor: alpha(brand[200], 0.8),
+ boxShadow: `inset 0 2px ${alpha(brand[50], 0.5)}, inset 0 -2px ${alpha(brand[200], 0.2)}`,
'&:hover': {
+ backgroundColor: alpha(brand[300], 0.2),
+ borderColor: alpha(brand[300], 0.5),
+ boxShadow: 'none',
+ },
+ '&:active': {
backgroundColor: alpha(brand[300], 0.3),
- borderColor: brand[200],
+ boxShadow: `inset 0 2.5px 0 ${alpha(brand[400], 0.2)}`,
+ backgroundImage: 'none',
},
}),
...(ownerState.variant === 'outlined' &&
@@ -275,84 +281,174 @@ export default function getSignUpTheme(mode: PaletteMode): ThemeOptions {
color: gray[700],
'&:hover': {
backgroundColor: alpha(gray[300], 0.3),
- borderColor: gray[200],
+ borderColor: alpha(gray[300], 0.5),
+ boxShadow: 'none',
+ },
+ '&:active': {
+ backgroundColor: alpha(gray[300], 0.4),
+ boxShadow: `inset 0 2.5px 0 ${alpha(gray[400], 0.2)}`,
+ backgroundImage: 'none',
+ },
+ }),
+ ...(ownerState.variant === 'text' &&
+ ownerState.color === 'primary' && {
+ color: brand[700],
+ '&:hover': {
+ backgroundColor: alpha(brand[300], 0.3),
+ },
+ }),
+ ...(ownerState.variant === 'text' &&
+ ownerState.color === 'info' && {
+ color: gray[700],
+ '&:hover': {
+ backgroundColor: alpha(gray[300], 0.3),
},
}),
- ...(ownerState.variant === 'text' && {
- color: brand[600],
- '&:hover': {
- backgroundColor: alpha(brand[300], 0.3),
- borderColor: brand[200],
- },
- }),
...(theme.palette.mode === 'dark' && {
- ...(ownerState.variant === 'contained' &&
- ownerState.color === 'primary' && {
- border: `1px solid ${brand[600]}`,
- backgroundImage: `linear-gradient(to bottom, ${brand[500]}, ${brand[600]})`,
- backgroundColor: brand[500],
- '&:hover': {
- background: brand[600],
- backgroundImage: 'none',
- boxShadow: `0 0 0 1px ${alpha(brand[700], 0.5)}`,
- },
- }),
...(ownerState.variant === 'outlined' && {
+ color: brand[200],
backgroundColor: alpha(brand[600], 0.1),
- borderColor: brand[700],
- color: brand[300],
+ borderColor: alpha(brand[600], 0.6),
+ boxShadow: `inset 0 2.5px ${alpha(brand[400], 0.1)}, inset 0 -2px ${alpha(gray[900], 0.5)}`,
'&:hover': {
- backgroundColor: alpha(brand[600], 0.3),
- borderColor: brand[700],
+ backgroundColor: alpha(brand[700], 0.2),
+ borderColor: alpha(brand[700], 0.5),
+ boxShadow: 'none',
+ },
+ '&:active': {
+ backgroundColor: alpha(brand[800], 0.2),
+ boxShadow: `inset 0 2.5px 0 ${alpha(brand[900], 0.4)}`,
+ backgroundImage: 'none',
},
}),
+ ...(ownerState.variant === 'text' &&
+ ownerState.color === 'info' && {
+ color: gray[200],
+ '&:hover': {
+ backgroundColor: alpha(gray[700], 0.3),
+ },
+ }),
...(ownerState.variant === 'outlined' &&
ownerState.color === 'secondary' && {
+ color: gray[300],
backgroundColor: alpha(gray[600], 0.1),
borderColor: alpha(gray[700], 0.5),
- color: gray[300],
+ boxShadow: `inset 0 2.5px ${alpha(gray[600], 0.1)}, inset 0 -2px ${alpha(gray[900], 0.5)}`,
+ '&:hover': {
+ backgroundColor: alpha(gray[700], 0.2),
+ borderColor: alpha(gray[700], 0.5),
+ boxShadow: 'none',
+ },
+ '&:active': {
+ backgroundColor: alpha(gray[800], 0.2),
+ boxShadow: `inset 0 2.5px 0 ${alpha(gray[900], 0.4)}`,
+ backgroundImage: 'none',
+ },
+ }),
+ ...(ownerState.variant === 'text' &&
+ ownerState.color === 'primary' && {
+ color: brand[200],
'&:hover': {
- backgroundColor: alpha(gray[600], 0.3),
- borderColor: gray[700],
+ backgroundColor: alpha(brand[700], 0.3),
},
}),
- ...(ownerState.variant === 'text' && {
- color: brand[200],
- '&:hover': {
- backgroundColor: alpha(brand[600], 0.3),
- borderColor: brand[700],
- },
- }),
}),
}),
},
},
- MuiIconButton: {
+ MuiCard: {
styleOverrides: {
root: ({ theme, ownerState }) => ({
- ...(ownerState.size === 'small' && {
- height: '32px',
- width: '32px',
+ transition: 'all 100ms ease',
+ backgroundColor: gray[50],
+ borderRadius: theme.shape.borderRadius,
+ border: `1px solid ${alpha(gray[200], 0.5)}`,
+ boxShadow: 'none',
+ ...(ownerState.variant === 'outlined' && {
+ border: `1px solid ${gray[200]}`,
+ boxShadow: 'none',
+ background: `linear-gradient(to bottom, hsl(0, 0%, 100%), ${gray[50]})`,
}),
- ...(ownerState.size === 'medium' && {
- height: '40px',
- width: '40px',
+ ...(theme.palette.mode === 'dark' && {
+ backgroundColor: alpha(gray[800], 0.6),
+ border: `1px solid ${alpha(gray[700], 0.3)}`,
+ ...(ownerState.variant === 'outlined' && {
+ border: `1px solid ${alpha(gray[700], 0.4)}`,
+ boxShadow: 'none',
+ background: `linear-gradient(to bottom, ${gray[900]}, ${alpha(
+ gray[800],
+ 0.5,
+ )})`,
+ }),
}),
- color: brand[600],
+ }),
+ },
+ },
+ MuiCheckbox: {
+ defaultProps: {
+ disableRipple: true,
+ icon: (
+
+ ),
+ checkedIcon: ,
+ },
+ styleOverrides: {
+ root: ({ theme }) => ({
+ margin: 10,
+ height: 16,
+ width: 16,
+ borderRadius: 5,
+ border: '1px solid ',
+ borderColor: alpha(gray[300], 0.8),
+ backgroundColor: alpha(gray[100], 0.4),
+ boxShadow: '0 0 0 1.5px hsla(210, 0%, 0%, 0.04) inset',
+ transition: 'border-color, background-color, 120ms ease-in',
'&:hover': {
- backgroundColor: alpha(brand[300], 0.3),
- borderColor: brand[200],
+ borderColor: gray[400],
+ },
+ '&.Mui-focusVisible': {
+ outline: `3px solid ${alpha(brand[500], 0.5)}`,
+ outlineOffset: '2px',
+ borderColor: brand[400],
+ },
+ '&.Mui-checked': {
+ color: 'white',
+ backgroundColor: brand[500],
+ borderColor: brand[500],
+ boxShadow: `none`,
+ '&:hover': {
+ backgroundColor: brand[600],
+ },
},
...(theme.palette.mode === 'dark' && {
- color: brand[200],
+ borderColor: alpha(gray[700], 0.5),
+ boxShadow: '0 0 0 1.5px hsl(210, 0%, 0%) inset',
+ backgroundColor: alpha(gray[900], 0.8),
'&:hover': {
- backgroundColor: alpha(brand[600], 0.3),
- borderColor: brand[700],
+ borderColor: brand[300],
+ },
+ '&.Mui-focusVisible': {
+ borderColor: brand[400],
+ outline: `3px solid ${alpha(brand[500], 0.5)}`,
+ outlineOffset: '2px',
},
}),
}),
},
},
+ MuiDialog: {
+ styleOverrides: {
+ root: ({ theme }) => ({
+ '& .MuiDialog-paper': {
+ borderRadius: '10px',
+ border: '1px solid',
+ borderColor: theme.palette.divider,
+ },
+ }),
+ },
+ },
MuiDivider: {
styleOverrides: {
root: ({ theme }) => ({
@@ -363,25 +459,80 @@ export default function getSignUpTheme(mode: PaletteMode): ThemeOptions {
}),
},
},
- MuiPaper: {
+ MuiFormLabel: {
styleOverrides: {
root: ({ theme }) => ({
- backgroundImage: 'none',
- backgroundColor: gray[100],
+ typography: theme.typography.caption,
+ marginBottom: 8,
+ }),
+ },
+ },
+ MuiIconButton: {
+ styleOverrides: {
+ root: ({ theme, ownerState }) => ({
+ ...(ownerState.size === 'small' && {
+ height: '2rem',
+ width: '2rem',
+ }),
+ ...(ownerState.size === 'medium' && {
+ height: '2.5rem',
+ width: '2.5rem',
+ }),
+ color: brand[500],
+ '&:hover': {
+ backgroundColor: alpha(brand[300], 0.3),
+ borderColor: brand[200],
+ },
...(theme.palette.mode === 'dark' && {
- backgroundColor: gray[800],
+ color: brand[200],
+ '&:hover': {
+ backgroundColor: alpha(brand[600], 0.3),
+ borderColor: brand[700],
+ },
}),
}),
},
},
- MuiDialog: {
+ MuiInputBase: {
+ styleOverrides: {
+ root: {
+ border: 'none',
+ },
+ },
+ },
+ MuiLink: {
+ defaultProps: {
+ underline: 'none',
+ },
styleOverrides: {
root: ({ theme }) => ({
- '& .MuiDialog-paper': {
- borderRadius: '10px',
- border: '1px solid',
- borderColor: theme.palette.divider,
+ color: brand[700],
+ fontWeight: 500,
+ position: 'relative',
+ textDecoration: 'none',
+ '&::before': {
+ content: '""',
+ position: 'absolute',
+ width: 0,
+ height: '1px',
+ bottom: 0,
+ left: 0,
+ backgroundColor: brand[200],
+ opacity: 0.7,
+ transition: 'width 0.3s ease, opacity 0.3s ease',
},
+ '&:hover::before': {
+ width: '100%',
+ opacity: 1,
+ },
+ '&:focus-visible': {
+ outline: `3px solid ${alpha(brand[500], 0.5)}`,
+ outlineOffset: '4px',
+ borderRadius: '2px',
+ },
+ ...(theme.palette.mode === 'dark' && {
+ color: brand[200],
+ }),
}),
},
},
@@ -393,7 +544,6 @@ export default function getSignUpTheme(mode: PaletteMode): ThemeOptions {
input: {
paddingLeft: 10,
},
-
root: ({ theme, ownerState }) => ({
'input:-webkit-autofill': {
WebkitBoxShadow: `0 0 0 1000px ${brand[100]} inset, 0 0 0 1px ${brand[200]}`,
@@ -401,6 +551,7 @@ export default function getSignUpTheme(mode: PaletteMode): ThemeOptions {
borderRadius: '8px',
},
'& .MuiInputBase-input': {
+ fontSize: '1rem',
'&::placeholder': {
opacity: 0.7,
color: gray[500],
@@ -409,10 +560,10 @@ export default function getSignUpTheme(mode: PaletteMode): ThemeOptions {
boxSizing: 'border-box',
flexGrow: 1,
height: '40px',
- borderRadius: '10px',
+ borderRadius: theme.shape.borderRadius,
border: '1px solid',
borderColor: alpha(gray[300], 0.8),
- boxShadow: '0 0 0 1.5px rgba(0, 0, 0, 0.04) inset',
+ boxShadow: '0 0 0 1.5px hsla(210, 0%, 0%, 0.02) inset',
transition: 'border-color 120ms ease-in',
backgroundColor: alpha(gray[100], 0.4),
'&:hover': {
@@ -437,13 +588,14 @@ export default function getSignUpTheme(mode: PaletteMode): ThemeOptions {
borderRadius: '8px',
},
'& .MuiInputBase-input': {
+ fontSize: '1rem',
'&::placeholder': {
opacity: 1,
color: gray[500],
},
},
borderColor: alpha(gray[700], 0.5),
- boxShadow: '0 0 0 1.5px rgb(0, 0, 0) inset',
+ boxShadow: '0 0 0 1.5px hsl(210, 0%, 0%) inset',
backgroundColor: alpha(gray[900], 0.8),
transition: 'border-color 120ms ease-in',
'&:hover': {
@@ -465,154 +617,29 @@ export default function getSignUpTheme(mode: PaletteMode): ThemeOptions {
}),
},
},
- MuiFormLabel: {
- styleOverrides: {
- root: ({ theme }) => ({
- typography: theme.typography.caption,
- marginBottom: 8,
- }),
- },
- },
- MuiInputBase: {
- styleOverrides: {
- root: {
- border: 'none',
- },
- },
- },
- MuiCard: {
- styleOverrides: {
- root: ({ theme, ownerState }) => ({
- backgroundColor: gray[50],
- borderRadius: 10,
- outline: `1px solid ${alpha(gray[200], 0.8)}`,
- boxShadow: 'none',
- ...(ownerState.variant === 'outlined' && {
- border: 0,
- boxSizing: 'border-box',
- background: `linear-gradient(to bottom, #FFF, ${gray[50]})`,
- }),
- ...(theme.palette.mode === 'dark' && {
- backgroundColor: alpha(gray[800], 0.6),
- outline: `1px solid ${alpha(gray[700], 0.5)}`,
- ...(ownerState.variant === 'outlined' && {
- boxSizing: 'border-box',
- background: `linear-gradient(to bottom, ${gray[900]}, ${alpha(
- gray[800],
- 0.5,
- )})`,
- }),
- }),
- }),
+ MuiPaper: {
+ defaultProps: {
+ elevation: 0,
},
},
- MuiLink: {
+ MuiStack: {
defaultProps: {
- underline: 'none',
- },
- styleOverrides: {
- root: ({ theme }) => ({
- color: brand[600],
- fontWeight: 500,
- position: 'relative',
- textDecoration: 'none',
- '&::before': {
- content: '""',
- position: 'absolute',
- width: 0,
- height: '1px',
- bottom: 0,
- left: 0,
- backgroundColor: brand[200],
- opacity: 0.7,
- transition: 'width 0.3s ease, opacity 0.3s ease',
- },
- '&:hover::before': {
- width: '100%',
- opacity: 1,
- },
- '&:focus-visible': {
- outline: `3px solid ${alpha(brand[500], 0.5)}`,
- outlineOffset: '4px',
- borderRadius: '2px',
- },
- ...(theme.palette.mode === 'dark' && {
- color: brand[200],
- }),
- }),
+ useFlexGap: true,
},
},
MuiToggleButtonGroup: {
styleOverrides: {
root: ({ theme }) => ({
- borderRadius: '10px',
- boxShadow: `0 4px 16px ${alpha(gray[400], 0.2)}`,
+ borderRadius: theme.shape.borderRadius,
+ boxShadow: `0 1px 2px hsla(210, 0%, 0%, 0.05), 0 2px 12px ${alpha(brand[200], 0.5)}`,
'& .Mui-selected': {
color: brand[500],
},
...(theme.palette.mode === 'dark' && {
'& .Mui-selected': {
- color: '#fff',
- },
- boxShadow: `0 4px 16px ${alpha(brand[700], 0.5)}`,
- }),
- }),
- },
- },
- MuiCheckbox: {
- defaultProps: {
- disableRipple: true,
- icon: ,
- checkedIcon: ,
- },
- styleOverrides: {
- root: ({ theme }) => ({
- margin: 10,
- height: 16,
- width: 16,
- borderRadius: 5,
- border: '1px solid ',
- borderColor: alpha(gray[300], 0.8),
- boxShadow: '0 0 0 1.5px rgba(0, 0, 0, 0.04) inset',
- transition: 'border-color 120ms ease-in',
- backgroundColor: alpha(gray[100], 0.4),
- '&:hover': {
- borderColor: brand[300],
- },
- '&.Mui-focusVisible': {
- outline: `3px solid ${alpha(brand[500], 0.5)}`,
- outlineOffset: '2px',
- borderColor: brand[400],
- },
- '&.Mui-checked': {
- color: 'white',
- backgroundColor: brand[500],
- '&:hover': {
- borderColor: brand[300],
- backgroundColor: brand[600],
- },
- },
- ...(theme.palette.mode === 'dark' && {
- borderColor: alpha(gray[700], 0.5),
- boxShadow: '0 0 0 1.5px rgb(0, 0, 0) inset',
- backgroundColor: alpha(gray[900], 0.8),
- '&:hover': {
- borderColor: brand[300],
- },
- '&.Mui-checked': {
- color: 'white',
- backgroundColor: brand[600],
- boxShadow: '0 0 0 1px rgba(0, 0, 0, 0.2) inset',
- '&:hover': {
- borderColor: brand[300],
- backgroundColor: brand[800],
- },
- },
- '&.Mui-focusVisible': {
- borderColor: brand[400],
- outline: `3px solid ${alpha(brand[500], 0.5)}`,
- outlineOffset: '2px',
+ color: 'hsl(0, 0%, 100%)',
},
+ boxShadow: `0 0 0 1px hsla(210, 0%, 0%, 0.5), 0 2px 12px ${alpha(brand[700], 0.5)}`,
}),
}),
},
@@ -622,21 +649,15 @@ export default function getSignUpTheme(mode: PaletteMode): ThemeOptions {
root: ({ theme }) => ({
padding: '12px 16px',
textTransform: 'none',
- borderRadius: '10px',
+ borderRadius: theme.shape.borderRadius,
fontWeight: 500,
...(theme.palette.mode === 'dark' && {
color: gray[400],
- boxShadow: '0 4px 16px rgba(0, 0, 0, 0.5)',
'&.Mui-selected': { color: brand[300] },
}),
}),
},
},
- MuiStack: {
- defaultProps: {
- useFlexGap: true,
- },
- },
},
};
}
diff --git a/docs/data/material/guides/minimizing-bundle-size/minimizing-bundle-size.md b/docs/data/material/guides/minimizing-bundle-size/minimizing-bundle-size.md
index cb2301cd5b3387..c38c47545c3c00 100644
--- a/docs/data/material/guides/minimizing-bundle-size/minimizing-bundle-size.md
+++ b/docs/data/material/guides/minimizing-bundle-size/minimizing-bundle-size.md
@@ -214,10 +214,7 @@ It will perform the following diffs:
The packages published on npm are **transpiled** with [Babel](https://github.com/babel/babel), optimized for performance with the [supported platforms](/material-ui/getting-started/supported-platforms/).
-Custom bundles are also available:
-
-- [Modern bundle](#modern-bundle)
-- [Legacy bundle](#legacy-bundle)
+A [modern bundle](#modern-bundle) is also available.
### How to use custom bundles?
@@ -264,9 +261,3 @@ A great way to use these bundles is to configure bundler aliases, for example wi
The modern bundle can be found under the [`/modern` folder](https://unpkg.com/@mui/material/modern/).
It targets the latest released versions of evergreen browsers (Chrome, Firefox, Safari, Edge).
This can be used to make separate bundles targeting different browsers.
-
-### Legacy bundle
-
-If you need to support IE 11 you cannot use the default or modern bundle without transpilation.
-However, you can use the legacy bundle found under the [`/legacy` folder](https://unpkg.com/@mui/material/legacy/).
-You don't need any additional polyfills.
diff --git a/docs/data/material/migration/migrating-from-deprecated-apis/migrating-from-deprecated-apis.md b/docs/data/material/migration/migrating-from-deprecated-apis/migrating-from-deprecated-apis.md
index 0d3b149465b83c..8a6d4342762ab6 100644
--- a/docs/data/material/migration/migrating-from-deprecated-apis/migrating-from-deprecated-apis.md
+++ b/docs/data/material/migration/migrating-from-deprecated-apis/migrating-from-deprecated-apis.md
@@ -954,6 +954,46 @@ The Slider's `componentsProps` was deprecated in favor of `slotProps`:
/>
```
+## ToggleButtonGroup
+
+Use the [codemod](https://github.com/mui/material-ui/tree/HEAD/packages/mui-codemod#toggle-button-group-classes) below to migrate the code as described in the following sections:
+
+```bash
+npx @mui/codemod@latest deprecations/toggle-button-group-classes
+```
+
+### Composed CSS classes
+
+The CSS classes composing the `orientation` prop value and `grouped` CSS class have been removed.
+
+Here's how to migrate:
+
+```diff
+-.MuiToggleButtonGroup-root .MuiToggleButtonGroup-groupedHorizontal
++.MuiToggleButtonGroup-root.MuiToggleButtonGroup-horizontal > .MuiToggleButtonGroup-grouped
+-.MuiToggleButtonGroup-root .MuiToggleButtonGroup-groupedVertical
++.MuiToggleButtonGroup-root.MuiToggleButtonGroup-vertical > .MuiToggleButtonGroup-grouped
+```
+
+```diff
+
+ import { toggleButtonGroupClasses } from '@mui/material/ToggleButtonGroup';
+
+ MuiButtonGroup: {
+ styleOverrides: {
+ root: {
+- [`& .${toggleButtonGroupClasses.groupedHorizontal}`]: {
++ [`&.${toggleButtonGroupClasses.horizontal} > .${toggleButtonGroupClasses.grouped}`]: {
+ color: 'red',
+ },
+- [`& .${toggleButtonGroupClasses.groupedVertical}`]: {
++ [`&.${toggleButtonGroupClasses.vertical} > .${toggleButtonGroupClasses.grouped}`]: {
+ color: 'red',
+ },
+ },
+ },
+```
+
## StepLabel
Use the [codemod](https://github.com/mui/material-ui/tree/HEAD/packages/mui-codemod#step-label-props) below to migrate the code as described in the following sections:
@@ -972,3 +1012,43 @@ The StepLabel's `componentsProps` was deprecated in favor of `slotProps`:
+ slotProps={{ label: labelProps }}
/>
```
+
+## StepConnector
+
+Use the [codemod](https://github.com/mui/material-ui/tree/HEAD/packages/mui-codemod#step-connector-classes) below to migrate the code as described in the following sections:
+
+```bash
+npx @mui/codemod@next deprecations/step-connector-classes
+```
+
+### Composed CSS classes
+
+The CSS classes that composed the `line` CSS class and `orientation` prop values were removed.
+
+Here's how to migrate:
+
+```diff
+- .MuiStepConnector-lineHorizontal
++.MuiStepConnector-horizontal > .MuiStepConnector-line
+- .MuiStepConnector-lineVertical
++.MuiStepConnector-vertical > .MuiStepConnector-line
+```
+
+```diff
+ import { stepConnectorClasses } from '@mui/material/StepConnector';
+
+ MuiStepConnector: {
+ styleOverrides: {
+ root: {
+- [`& .${stepConnectorClasses.lineHorizontal}`]: {
++ [`&.${stepConnectorClasses.horizontal} > .${stepConnectorClasses.line}`]: {
+ color: 'red',
+ },
+- [`& .${stepConnectorClasses.lineVertical}`]: {
++ [`&.${stepConnectorClasses.vertical} > .${stepConnectorClasses.line}`]: {
+ color: 'red',
+ },
+ },
+ },
+ },
+```
diff --git a/docs/data/material/migration/migration-v4/migration-v4.md b/docs/data/material/migration/migration-v4/migration-v4.md
index 6feaca110bff0c..b50114c2570c31 100644
--- a/docs/data/material/migration/migration-v4/migration-v4.md
+++ b/docs/data/material/migration/migration-v4/migration-v4.md
@@ -67,7 +67,7 @@ The default bundle supports the following minimum versions:
- and more (see [.browserslistrc (`stable` entry)](https://github.com/mui/material-ui/blob/v5.0.0/.browserslistrc#L11))
Material UI no longer supports IE 11.
-If you need to support IE 11, check out our [legacy bundle](/material-ui/guides/minimizing-bundle-size/#legacy-bundle).
+If you need to support IE 11, check out the [legacy bundle](https://v5.mui.com/material-ui/guides/minimizing-bundle-size/#legacy-bundle).
## Update React & TypeScript version
diff --git a/docs/package.json b/docs/package.json
index 64d69baf6c8f36..7d0914dcd8a336 100644
--- a/docs/package.json
+++ b/docs/package.json
@@ -22,14 +22,14 @@
"@babel/core": "^7.24.4",
"@babel/plugin-transform-object-assign": "^7.24.1",
"@babel/runtime": "^7.24.4",
- "@babel/runtime-corejs2": "^7.24.1",
+ "@babel/runtime-corejs2": "^7.24.4",
"@docsearch/react": "^3.6.0",
"@emotion/cache": "^11.11.0",
"@emotion/react": "^11.11.4",
"@emotion/server": "^11.11.0",
"@emotion/styled": "^11.11.5",
- "@fortawesome/fontawesome-svg-core": "^6.5.1",
- "@fortawesome/free-solid-svg-icons": "^6.5.1",
+ "@fortawesome/fontawesome-svg-core": "^6.5.2",
+ "@fortawesome/free-solid-svg-icons": "^6.5.2",
"@fortawesome/react-fontawesome": "^0.2.0",
"@mui/base": "workspace:*",
"@mui/docs": "workspace:^",
@@ -45,12 +45,12 @@
"@mui/types": "workspace:^",
"@mui/utils": "workspace:^",
"@mui/x-charts": "6.19.8",
- "@mui/x-data-grid": "7.0.0",
- "@mui/x-data-grid-generator": "7.0.0",
- "@mui/x-data-grid-premium": "7.0.0",
- "@mui/x-data-grid-pro": "7.0.0",
- "@mui/x-date-pickers": "6.19.8",
- "@mui/x-date-pickers-pro": "6.19.8",
+ "@mui/x-data-grid": "7.1.1",
+ "@mui/x-data-grid-generator": "7.1.1",
+ "@mui/x-data-grid-premium": "7.1.1",
+ "@mui/x-data-grid-pro": "7.1.1",
+ "@mui/x-date-pickers": "6.19.9",
+ "@mui/x-date-pickers-pro": "6.19.9",
"@mui/x-license-pro": "6.10.2",
"@mui/x-tree-view": "6.17.0",
"@popperjs/core": "^2.11.8",
@@ -80,7 +80,7 @@
"jss-rtl": "^0.3.0",
"lodash": "^4.17.21",
"lz-string": "^1.5.0",
- "markdown-to-jsx": "^7.4.5",
+ "markdown-to-jsx": "^7.4.6",
"material-ui-popup-state": "^5.1.0",
"next": "^13.5.1",
"notistack": "3.0.1",
@@ -103,7 +103,7 @@
"react-swipeable-views": "^0.14.0",
"react-swipeable-views-utils": "^0.14.0",
"react-transition-group": "^4.4.5",
- "react-virtuoso": "^4.7.2",
+ "react-virtuoso": "^4.7.8",
"react-window": "^1.8.10",
"rimraf": "^5.0.5",
"styled-components": "^6.1.8",
@@ -122,7 +122,7 @@
"@types/chai": "^4.3.14",
"@types/css-mediaquery": "^0.1.4",
"@types/json2mq": "^0.2.2",
- "@types/node": "^18.19.28",
+ "@types/node": "^18.19.31",
"@types/prop-types": "^15.7.12",
"@types/react": "^18.2.55",
"@types/react-dom": "^18.2.19",
@@ -135,7 +135,7 @@
"cross-fetch": "^4.0.0",
"gm": "^1.25.0",
"marked": "^5.1.2",
- "playwright": "^1.42.1",
+ "playwright": "^1.43.0",
"prettier": "^3.2.5",
"tailwindcss": "^3.4.3",
"yargs": "^17.7.2"
diff --git a/docs/pages/base-ui.tsx b/docs/pages/base-ui.tsx
index fd4b84b8965375..91f8644f6512c9 100644
--- a/docs/pages/base-ui.tsx
+++ b/docs/pages/base-ui.tsx
@@ -16,7 +16,7 @@ export default function BaseUI() {
return (
diff --git a/docs/pages/blog.tsx b/docs/pages/blog.tsx
index 544fcd02b06a42..fc98fa100f8f9a 100644
--- a/docs/pages/blog.tsx
+++ b/docs/pages/blog.tsx
@@ -1,7 +1,6 @@
import * as React from 'react';
import { InferGetStaticPropsType } from 'next';
import { useRouter } from 'next/router';
-import { alpha } from '@mui/material/styles';
import Avatar from '@mui/material/Avatar';
import AvatarGroup from '@mui/material/AvatarGroup';
import Box from '@mui/material/Box';
@@ -64,19 +63,12 @@ function PostPreview(props: BlogPost) {
/>
))}
-
+
)}
{props.date && (
-
+
{new Date(props.date).toDateString()}
)}
@@ -164,6 +156,7 @@ function PostPreview(props: BlogPost) {
href={`/blog/${props.slug}`}
id={`describe-${props.slug}`}
endIcon={ }
+ size="small"
sx={{ mt: { xs: 0.5, md: 0 }, p: { xs: 0, sm: '6px 8px' } }}
>
Read more
@@ -173,7 +166,7 @@ function PostPreview(props: BlogPost) {
);
}
-const PAGE_SIZE = 5;
+const PAGE_SIZE = 7;
export default function Blog(props: InferGetStaticPropsType) {
const router = useRouter();
@@ -236,6 +229,7 @@ export default function Blog(props: InferGetStaticPropsType
}
/>
+
+
+
- theme.applyDarkStyles({
- boxShadow: '0px 4px 12px rgba(0, 0, 0, 0.4)',
- }),
- ]}
+ sx={(theme) => ({
+ p: 2,
+ display: 'flex',
+ flexDirection: 'column',
+ backgroundImage: (theme.vars || theme).palette.gradients.radioSubtle,
+ boxShadow: '0 4px 12px rgba(170, 180, 190, 0.2)',
+ ...theme.applyDarkStyles({
+ background: (theme.vars || theme).palette.primaryDark[900],
+ backgroundImage: (theme.vars || theme).palette.gradients.radioSubtle,
+ boxShadow: '0 4px 12px rgba(0, 0, 0, 0.4)',
+ }),
+ })}
>
{post.image && (
))}
-
-
+
Posts{' '}
@@ -342,94 +330,105 @@ export default function Blog(props: InferGetStaticPropsType
({
+ sx={{
position: 'sticky',
- top: 100,
- alignSelf: 'start',
- mb: 2,
- mt: { xs: 3, sm: 2, md: 9 }, // margin-top makes the title appear when scroll into view
- p: 2,
- borderRadius: 1,
- border: '1px solid',
- borderColor: (theme.vars || theme).palette.divider,
- boxShadow: '0px 2px 6px rgba(170, 180, 190, 0.2)',
- ...theme.applyDarkStyles({
- background: alpha(theme.palette.primaryDark[700], 0.2),
- boxShadow: '0px 2px 6px rgba(0, 0, 0, 0.2)',
- }),
- })}
+ top: 90,
+ mt: { xs: 0, md: 9 },
+ mb: { xs: 2, md: 0 },
+ display: 'flex',
+ flexDirection: 'column',
+ gap: 2,
+ '& .MuiPaper-root': {
+ p: 2,
+ bgcolor: 'transparent',
+ borderColor: 'divider',
+ },
+ }}
>
-
- Filter by tag
-
-
- {Object.keys(tagInfo).map((tag) => {
- const selected = !!selectedTags[tag];
- return (
- {
- postListRef.current?.scrollIntoView();
- removeTag(tag);
- },
- }
- : {
- label: tag,
- onClick: () => {
- postListRef.current?.scrollIntoView();
- router.push(
- {
- query: {
- ...router.query,
- tags: tag,
+
+
+ Filter posts by tag
+
+
+ {Object.keys(tagInfo).map((tag) => {
+ const selected = !!selectedTags[tag];
+ return (
+ {
+ postListRef.current?.scrollIntoView();
+ removeTag(tag);
+ },
+ }
+ : {
+ label: tag,
+ onClick: () => {
+ postListRef.current?.scrollIntoView();
+ router.push(
+ {
+ query: {
+ ...router.query,
+ tags: tag,
+ },
},
- },
- undefined,
- { shallow: true },
- );
- },
- })}
- size="small"
- sx={{
- py: 1.2,
- }}
- />
- );
- })}
-
-
-
- Want to hear more from us?
-
-
- Get up to date with everything MUI-related through our social media:
-
- svg': { mr: 1 } }}>
-
-
- GitHub
-
-
- X
-
-
-
- Discord
-
-
-
- LinkedIn
-
-
-
- Youtube
-
-
+ undefined,
+ { shallow: true },
+ );
+ },
+ })}
+ size="small"
+ sx={{
+ py: 1.2,
+ }}
+ />
+ );
+ })}
+
+
+
+
+ Want to hear more from us?
+
+
+ Get up to date with everything MUI-related through our social media:
+
+ svg': { mr: 1 } }}>
+
+
+ GitHub
+
+
+ X
+
+
+
+ Discord
+
+
+
+ LinkedIn
+
+
+
+ Youtube
+
+
+
diff --git a/docs/pages/blog/2019-developer-survey-results.md b/docs/pages/blog/2019-developer-survey-results.md
index 392206d8f8c1d9..98e98cdb6c3bbe 100644
--- a/docs/pages/blog/2019-developer-survey-results.md
+++ b/docs/pages/blog/2019-developer-survey-results.md
@@ -4,7 +4,7 @@ description: Your feedback helps us to build better products. Here's what we lea
date: 2019-03-16T00:00:00.000Z
authors: ['oliviertassinari', 'mbrookes']
tags: ['Developer Survey']
-card: true
+manualCard: true
---
While we are currently working on the upcoming release of Material UI v4, we need to prioritize our
diff --git a/docs/pages/blog/2019.md b/docs/pages/blog/2019.md
index a528508030a330..200cf9280ef1ca 100644
--- a/docs/pages/blog/2019.md
+++ b/docs/pages/blog/2019.md
@@ -4,7 +4,7 @@ date: 2020-01-25T00:00:00.000Z
description: 2019 was a great year for Material UI. It puts us on an exciting path to solve even greater challenges in the coming years!
authors: ['oliviertassinari']
tags: ['Company']
-card: true
+manualCard: true
---
2019 was a great year for Material UI.
diff --git a/docs/pages/blog/2020-developer-survey-results.md b/docs/pages/blog/2020-developer-survey-results.md
index 9c89e737c62c3c..42f611ecce9484 100644
--- a/docs/pages/blog/2020-developer-survey-results.md
+++ b/docs/pages/blog/2020-developer-survey-results.md
@@ -4,7 +4,7 @@ description: Your feedback helps us to build better products. Here's what we lea
date: 2020-06-27T00:00:00.000Z
authors: ['mnajdova', 'oliviertassinari', 'mbrookes']
tags: ['Developer Survey']
-card: true
+manualCard: true
---
Continuing the tradition from last year, we launched a Developer Survey a few months ago, to which we received 1488 responses. This is twice as many as last year (734), so we thank you all for your participation!
diff --git a/docs/pages/blog/2020-introducing-sketch.md b/docs/pages/blog/2020-introducing-sketch.md
index 731b1ee9549a67..783370d31d57b6 100644
--- a/docs/pages/blog/2020-introducing-sketch.md
+++ b/docs/pages/blog/2020-introducing-sketch.md
@@ -4,7 +4,7 @@ description: Today, we're excited to announce the introduction of official Sketc
date: 2020-03-30T00:00:00.000Z
authors: ['oliviertassinari']
tags: ['Material UI', 'Product']
-card: true
+manualCard: true
---
Today, we're excited to introduce the Sketch symbols 💎 for Material UI.
diff --git a/docs/pages/blog/2020-q1-update.md b/docs/pages/blog/2020-q1-update.md
index ca6e353e94c685..74974a32703f13 100644
--- a/docs/pages/blog/2020-q1-update.md
+++ b/docs/pages/blog/2020-q1-update.md
@@ -4,7 +4,7 @@ description: An update on our mission for Q1 2020.
date: 2020-04-14T00:00:00.000Z
authors: ['oliviertassinari']
tags: ['Company']
-card: true
+manualCard: true
---
Welcome to the new format of our mission update. We are moving from monthly to quarterly updates.
diff --git a/docs/pages/blog/2020-q2-update.md b/docs/pages/blog/2020-q2-update.md
index 09fc6ee3dc1b4c..6d34a639194694 100644
--- a/docs/pages/blog/2020-q2-update.md
+++ b/docs/pages/blog/2020-q2-update.md
@@ -4,7 +4,7 @@ description: An update on our mission for Q2 2020.
date: 2020-07-17T00:00:00.000Z
authors: ['oliviertassinari']
tags: ['Company']
-card: true
+manualCard: true
---
This update covers our progress over the last three months, and what we aim to achieve in the coming months.
diff --git a/docs/pages/blog/2020-q3-update.md b/docs/pages/blog/2020-q3-update.md
index 54e67b4bcb6b8b..f819f177ff06dc 100644
--- a/docs/pages/blog/2020-q3-update.md
+++ b/docs/pages/blog/2020-q3-update.md
@@ -4,7 +4,7 @@ description: An update on our mission for Q3 2020.
date: 2020-10-14T00:00:00.000Z
authors: ['oliviertassinari']
tags: ['Company']
-card: true
+manualCard: true
---
This update covers our progress over the last three months, and what we aim to achieve in the coming months.
diff --git a/docs/pages/blog/2020.md b/docs/pages/blog/2020.md
index ec3f7aee46de80..811f44cac98d53 100644
--- a/docs/pages/blog/2020.md
+++ b/docs/pages/blog/2020.md
@@ -4,7 +4,7 @@ description: 2020 has been another great year, not only for MUI, but also for th
date: 2020-12-31T00:00:00.000Z
authors: ['oliviertassinari', 'mbrookes']
tags: ['Company']
-card: true
+manualCard: true
---
2020 has been another great year, not only for MUI, but also for the ecosystem.
diff --git a/docs/pages/blog/2021-developer-survey-results.md b/docs/pages/blog/2021-developer-survey-results.md
index e6b3eba54ff130..93bb07ccb79477 100644
--- a/docs/pages/blog/2021-developer-survey-results.md
+++ b/docs/pages/blog/2021-developer-survey-results.md
@@ -4,7 +4,7 @@ description: Your feedback helps us to build better products. Here's what we lea
date: 2022-03-15T00:00:00.000Z
authors: ['danilo-leal', 'samuelsycamore', 'oliviertassinari']
tags: ['Developer Survey']
-card: true
+manualCard: true
---
Keeping up with tradition, a few months ago we opened the 2021 MUI Developer Survey.
diff --git a/docs/pages/blog/2021-q1-update.md b/docs/pages/blog/2021-q1-update.md
index 2c7bf644eed777..6c430546ecb0a2 100644
--- a/docs/pages/blog/2021-q1-update.md
+++ b/docs/pages/blog/2021-q1-update.md
@@ -4,7 +4,7 @@ description: An update on our mission for Q1 2021.
date: 2021-04-12T00:00:00.000Z
authors: ['oliviertassinari']
tags: ['Company']
-card: true
+manualCard: true
---
This update covers our progress over the last three months, and what we aim to achieve in the months ahead.
diff --git a/docs/pages/blog/2021-q2-update.md b/docs/pages/blog/2021-q2-update.md
index a7650185843a22..952eb8e27cbafd 100644
--- a/docs/pages/blog/2021-q2-update.md
+++ b/docs/pages/blog/2021-q2-update.md
@@ -4,7 +4,7 @@ description: An update on our mission for Q2 2021.
date: 2021-07-12T00:00:00.000Z
authors: ['oliviertassinari', 'mbrookes']
tags: ['Company']
-card: true
+manualCard: true
---
This update covers our progress over the last three months.
@@ -217,7 +217,7 @@ We have the following objectives:
- ⚛️ Support [React 18](https://legacy.reactjs.org/blog/2021/06/08/the-plan-for-react-18.html). [Sebastian](https://github.com/eps1lon) is part of the React [Working Group](https://github.com/reactwg/react-18/discussions), focusing on making us ready ahead of time.
We want our most demanding users to feel empowered by Material UI, not slowed down by a third-party library.
- 🦴 Migrate more components to `@mui/base`. [Michał](https://github.com/michaldudak) has recently added support for the [Switch](https://mui.com/base-ui/react-switch/).
- You can follow our progress in the [umbrella issue](https://github.com/mui/material-ui/issues/27170).
+ You can follow our progress in the [umbrella issue](https://github.com/mui/base-ui/issues/10).
- 🌈 Do a proof of concept on supporting a second design system.
Some of our users (and potential users) dislike Material Design. We will try to make the second design system one that they love!
- 🗓 Execute on all of the items in the [public roadmap](https://github.com/orgs/mui/projects/23/views/12).
diff --git a/docs/pages/blog/2021-q3-update.md b/docs/pages/blog/2021-q3-update.md
index dbb57c07d4ea15..6bb1b6a477d07c 100644
--- a/docs/pages/blog/2021-q3-update.md
+++ b/docs/pages/blog/2021-q3-update.md
@@ -4,7 +4,7 @@ description: An update on our mission for Q3 2021.
date: 2021-10-26T00:00:00.000Z
authors: ['oliviertassinari']
tags: ['Company']
-card: true
+manualCard: true
---
This update covers our progress over the last three months.
@@ -195,7 +195,7 @@ We'll do our best, no guarantee!
We need to make the most of this feedback to solve regressions, improve the documentation for the new APIs, adjust the tradeoffs we took in the light of more information, and more.
[15%](https://npm-stat.com/charts.html?package=%40material-ui%2Fcore&package=%40mui%2Fmaterial&from=2020-10-25&to=2021-10-15) of the community has migrated, so far.
- 🦴 Migrate more components to `@mui/base`. [Michał](https://github.com/michaldudak) has recently added support for the [Button](https://mui.com/base-ui/react-button/).
- You can follow our progress in the [umbrella issue](https://github.com/mui/material-ui/issues/27170).
+ You can follow our progress in the [umbrella issue](https://github.com/mui/base-ui/issues/10).
- 🎨 We are [exploring](https://github.com/mui/material-ui/discussions/29024) the introduction of CSS variables.
Since v5, Material UI is no longer actively supporting IE 11. Dropping this browser requirement unlocks new capabilities of the web platform.
- 🌈 Resume work on the second design system.
diff --git a/docs/pages/blog/2021.md b/docs/pages/blog/2021.md
index 61d81f432e1b7b..48b56ce6e1d06b 100644
--- a/docs/pages/blog/2021.md
+++ b/docs/pages/blog/2021.md
@@ -4,7 +4,7 @@ description: 2021 has been another great year, not only for MUI but also for the
date: 2021-12-31T00:00:00.000Z
authors: ['oliviertassinari']
tags: ['Company']
-card: true
+manualCard: true
---
@@ -123,7 +123,7 @@ To continue improving the customization experience, we will double down on the v
These components and hooks contain the main functionalities and accessibility, without being opinionated about how styles are applied or what styles.
We still have work to do to have a full set of unstyled components.
-You can read more about them in [the docs](/base-ui/getting-started/) and keep track of our progress in [#27170](https://github.com/mui/material-ui/issues/27170).
+You can read more about them in [the docs](/base-ui/getting-started/) and keep track of our progress in [#27170](https://github.com/mui/base-ui/issues/10).
Our high-level plan is to use the unstyled components and hooks as the basis of the Material Design components and our second design system.
diff --git a/docs/pages/blog/2022-tenerife-retreat.md b/docs/pages/blog/2022-tenerife-retreat.md
index b111d056ac85e3..1402e4240838c4 100644
--- a/docs/pages/blog/2022-tenerife-retreat.md
+++ b/docs/pages/blog/2022-tenerife-retreat.md
@@ -4,7 +4,7 @@ description: Our internationally distributed startup gathered on a remote island
date: 2022-07-28T00:00:00.000Z
authors: ['samuelsycamore']
tags: ['Company']
-card: true
+manualCard: true
---
One of the toughest challenges to overcome as a fully remote team is fostering a supportive and inclusive company culture.
diff --git a/docs/pages/blog/2023-chamonix-retreat.md b/docs/pages/blog/2023-chamonix-retreat.md
index 19b8559a739580..d6bccc7e15406f 100644
--- a/docs/pages/blog/2023-chamonix-retreat.md
+++ b/docs/pages/blog/2023-chamonix-retreat.md
@@ -4,7 +4,7 @@ description: The MUI team spent five days in the French Alps team-building, prob
date: 2023-03-16T00:00:00.000Z
authors: ['mikailaread']
tags: ['Company']
-card: true
+manualCard: true
---
## Why the Chamonix gathering?
diff --git a/docs/pages/blog/2023-material-ui-v6-and-beyond.md b/docs/pages/blog/2023-material-ui-v6-and-beyond.md
index 24bebf7f41ee2f..aee8654af71152 100644
--- a/docs/pages/blog/2023-material-ui-v6-and-beyond.md
+++ b/docs/pages/blog/2023-material-ui-v6-and-beyond.md
@@ -3,7 +3,7 @@ title: The road to Material UI v6 and beyond
description: We're tightening up the Material UI release schedule and shipping two major versions in 2024. Here's what to expect.
date: 2023-12-23T00:00:00.000Z
authors: ['mnajdova']
-card: true
+manualCard: true
tags: ['Material UI', 'Product']
---
diff --git a/docs/pages/blog/2023-mui-values.md b/docs/pages/blog/2023-mui-values.md
index 79668d65b69148..27e3dd49b1d642 100644
--- a/docs/pages/blog/2023-mui-values.md
+++ b/docs/pages/blog/2023-mui-values.md
@@ -4,7 +4,7 @@ description: After significant growth, we united as a team to rediscover the val
date: 2023-09-26T00:00:00.000Z
authors: ['mikailaread']
tags: ['Company']
-card: true
+manualCard: true
---
## Why we chose to revise our core values
diff --git a/docs/pages/blog/2023-phuket-retreat.md b/docs/pages/blog/2023-phuket-retreat.md
index 2b9b1d338e2446..35bf504c9ba842 100644
--- a/docs/pages/blog/2023-phuket-retreat.md
+++ b/docs/pages/blog/2023-phuket-retreat.md
@@ -4,7 +4,7 @@ description: The latest team retreat left MUIers feeling more connected and invi
date: 2023-12-13T00:00:00.000Z
authors: ['mikailaread']
tags: ['Company']
-card: true
+manualCard: true
---
## What is MUI's Together Week?
diff --git a/docs/pages/blog/2023-toolpad-beta-announcement.md b/docs/pages/blog/2023-toolpad-beta-announcement.md
index 318dfe94bfe1e9..ae5e5305477224 100644
--- a/docs/pages/blog/2023-toolpad-beta-announcement.md
+++ b/docs/pages/blog/2023-toolpad-beta-announcement.md
@@ -3,7 +3,7 @@ title: Introducing Toolpad: MUI's low-code admin builder
description: Assemble admin panels and internal tools faster than ever before with Toolpad—now in beta.
date: 2023-07-24T00:00:00.000Z
authors: ['prakhargupta']
-card: true
+manualCard: true
tags: ['Product', 'Toolpad']
---
diff --git a/docs/pages/blog/aggregation-functions.md b/docs/pages/blog/aggregation-functions.md
index 68ddfb0d169974..58254350d5292a 100644
--- a/docs/pages/blog/aggregation-functions.md
+++ b/docs/pages/blog/aggregation-functions.md
@@ -4,7 +4,7 @@ description: Aggregation functions and summary rows are now available in the MUI
date: 2022-08-01T00:00:00.000Z
authors: ['josefreitas', 'flaviendelangle', 'cherniavskii']
tags: ['MUI X', 'Product']
-card: true
+manualCard: true
---
If you've ever worked with a data-heavy grid, then you understand how important it is for the end user to be able to set different perspectives on the data to gather the information they're looking for.
diff --git a/docs/pages/blog/april-2019-update.md b/docs/pages/blog/april-2019-update.md
index 4b6a76792a9db7..c4a81e258dba49 100644
--- a/docs/pages/blog/april-2019-update.md
+++ b/docs/pages/blog/april-2019-update.md
@@ -4,7 +4,7 @@ description: Here are the most significant improvements in April.
date: 2019-05-07T00:00:00.000Z
authors: ['oliviertassinari']
tags: ['Company']
-card: true
+manualCard: true
---
Here are the most significant improvements in April:
diff --git a/docs/pages/blog/august-2019-update.md b/docs/pages/blog/august-2019-update.md
index 5bde138036b660..77fa9cbb761278 100644
--- a/docs/pages/blog/august-2019-update.md
+++ b/docs/pages/blog/august-2019-update.md
@@ -4,7 +4,7 @@ description: Here are the most significant improvements in August.
date: 2019-09-07T00:00:00.000Z
authors: ['oliviertassinari']
tags: ['Company']
-card: true
+manualCard: true
---
Here are the most significant improvements in August:
diff --git a/docs/pages/blog/base-ui-2024-plans.md b/docs/pages/blog/base-ui-2024-plans.md
index 12d33c4406a1b6..8298409dbe85f2 100644
--- a/docs/pages/blog/base-ui-2024-plans.md
+++ b/docs/pages/blog/base-ui-2024-plans.md
@@ -4,7 +4,7 @@ description: The unstyled component library will get a stable release, lots of n
date: 2024-02-13T00:00:00.000Z
authors: ['danilo-leal', 'michaldudak', 'colmtuite', 'oliviertassinari']
tags: ['Base UI', 'Product']
-card: true
+manualCard: true
---
The [story of Base UI](/blog/introducing-base-ui/) began several years ago—long before headless React component libraries skyrocketed in popularity—when we started to imagine a world in which Material UI could exist without Material Design.
diff --git a/docs/pages/blog/benny-joo-joining.md b/docs/pages/blog/benny-joo-joining.md
index 4fac8d9b5f4338..bcecb2de2b043e 100644
--- a/docs/pages/blog/benny-joo-joining.md
+++ b/docs/pages/blog/benny-joo-joining.md
@@ -4,7 +4,7 @@ description: We are excited to share that Benny Joo has joined MUI. He has start
date: 2021-11-16T00:00:00.000Z
authors: ['mnajdova']
tags: ['Company']
-card: true
+manualCard: true
---
We are excited to share that [Benny Joo](https://github.com/hbjORbj) has joined MUI.
diff --git a/docs/pages/blog/bringing-consistency-to-material-ui-customization-apis.md b/docs/pages/blog/bringing-consistency-to-material-ui-customization-apis.md
index dc43c0bb98c9aa..c3f1b7330f0cee 100644
--- a/docs/pages/blog/bringing-consistency-to-material-ui-customization-apis.md
+++ b/docs/pages/blog/bringing-consistency-to-material-ui-customization-apis.md
@@ -4,7 +4,7 @@ description: We're standardizing two key areas of the Material UI customization
date: 2024-03-18T10:00:00.000Z
authors: ['diegoandai']
tags: ['Material UI', 'Product']
-card: true
+manualCard: true
---
The Material UI team is working on two initiatives to standardize the Material UI API: The first applies to overriding inner elements, and the second applies to component CSS classes.
diff --git a/docs/pages/blog/build-layouts-faster-with-grid-v2.md b/docs/pages/blog/build-layouts-faster-with-grid-v2.md
index b40ad11e25f25f..b2b6a5834b37ce 100644
--- a/docs/pages/blog/build-layouts-faster-with-grid-v2.md
+++ b/docs/pages/blog/build-layouts-faster-with-grid-v2.md
@@ -4,7 +4,7 @@ description: The new Grid v2 features simplified logic, support for offsetting a
date: 2022-08-20T00:00:00.000Z
authors: ['siriwatknp']
tags: ['Material UI', 'Guide']
-card: true
+manualCard: true
---
You can now use the new `Grid` component, shipped with [Material UI v5.9.0](https://github.com/mui/material-ui/releases/tag/v5.9.0), for updated features and a better developer experience when building layouts.
diff --git a/docs/pages/blog/callback-support-in-style-overrides.md b/docs/pages/blog/callback-support-in-style-overrides.md
index 77325f31e9dfbc..42019929c4721f 100644
--- a/docs/pages/blog/callback-support-in-style-overrides.md
+++ b/docs/pages/blog/callback-support-in-style-overrides.md
@@ -4,7 +4,7 @@ description: We're excited to introduce callback support for global theme overri
date: 2022-01-31T00:00:00.000Z
authors: ['siriwatknp']
tags: ['Material UI', 'Product']
-card: true
+manualCard: true
---
[ Material UI v5.3.0](https://github.com/mui/material-ui/releases/tag/v5.3.0) introduces the ability to write a callback in style overrides (global theming), giving you full control of component customization at the theme level.
diff --git a/docs/pages/blog/danail-hadjiatanasov-joining.md b/docs/pages/blog/danail-hadjiatanasov-joining.md
index 5f0904549b960e..b39eeb6a65ce42 100644
--- a/docs/pages/blog/danail-hadjiatanasov-joining.md
+++ b/docs/pages/blog/danail-hadjiatanasov-joining.md
@@ -4,7 +4,7 @@ description: We are excited to share that Danail Hadjiatanasov has joined MUI as
date: 2020-10-23T00:00:00.000Z
authors: ['oliviertassinari']
tags: ['Company']
-card: true
+manualCard: true
---
We are excited to share that [Danail Hadjiatanasov](https://twitter.com/danail_h) has joined MUI as part of the enterprise team. This was his first full-time week.
diff --git a/docs/pages/blog/danilo-leal-joining.md b/docs/pages/blog/danilo-leal-joining.md
index e18707c8f16947..55e6c3032a036c 100644
--- a/docs/pages/blog/danilo-leal-joining.md
+++ b/docs/pages/blog/danilo-leal-joining.md
@@ -4,7 +4,7 @@ description: We are excited to share that Danilo Leal has joined MUI.
date: 2021-07-15T00:00:00.000Z
authors: ['oliviertassinari']
tags: ['Company']
-card: true
+manualCard: true
---
We are excited to share that [Danilo Leal](https://daniloleal.co/) has joined MUI!
diff --git a/docs/pages/blog/date-pickers-stable-v5.md b/docs/pages/blog/date-pickers-stable-v5.md
index 306637c250c28c..61b15bc7f59f2f 100644
--- a/docs/pages/blog/date-pickers-stable-v5.md
+++ b/docs/pages/blog/date-pickers-stable-v5.md
@@ -4,7 +4,7 @@ description: Migrate to the latest version for improved DX, customizability, and
date: 2022-09-19T00:00:00.000Z
authors: ['alexfauquette', 'josefreitas']
tags: ['MUI X', 'Product']
-card: true
+manualCard: true
---
About four months ago, we moved the date and time pickers from `@mui/lab` and released the first alpha version of the date pickers package.
diff --git a/docs/pages/blog/december-2019-update.md b/docs/pages/blog/december-2019-update.md
index 28cb4694f2c35d..e747320df73cf6 100644
--- a/docs/pages/blog/december-2019-update.md
+++ b/docs/pages/blog/december-2019-update.md
@@ -4,7 +4,7 @@ description: Here are the most significant improvements in December.
date: 2020-01-07T00:00:00.000Z
authors: ['oliviertassinari']
tags: ['Company']
-card: true
+manualCard: true
---
Here are the most significant improvements in December:
diff --git a/docs/pages/blog/discord-announcement.md b/docs/pages/blog/discord-announcement.md
index 4a58bb279a84c7..fc0cd949e5a01f 100644
--- a/docs/pages/blog/discord-announcement.md
+++ b/docs/pages/blog/discord-announcement.md
@@ -4,7 +4,7 @@ description: Come join our community to engage in lively discussions, share your
date: 2023-08-02T00:00:00.000Z
authors: ['richbustos']
tags: ['Company']
-card: true
+manualCard: true
---
diff --git a/docs/pages/blog/docs-restructure-2022.md b/docs/pages/blog/docs-restructure-2022.md
index 6fe7e34853094e..1ea829b42c889f 100644
--- a/docs/pages/blog/docs-restructure-2022.md
+++ b/docs/pages/blog/docs-restructure-2022.md
@@ -4,7 +4,7 @@ description: Each of MUI's products now has its own dedicated documentation, mak
date: 2022-04-06T00:00:00.000Z
authors: ['danilo-leal']
tags: ['Product']
-card: true
+manualCard: true
---
As MUI continues to grow beyond our flagship product, Material UI (we [rebranded the company](/blog/material-ui-is-now-mui/) last year as a first step), it has become clear that the documentation for our products can no longer all live under one roof.
diff --git a/docs/pages/blog/first-look-at-joy.md b/docs/pages/blog/first-look-at-joy.md
index e8f541cfff3b40..56a77bd1dc57d3 100644
--- a/docs/pages/blog/first-look-at-joy.md
+++ b/docs/pages/blog/first-look-at-joy.md
@@ -4,7 +4,7 @@ description: A sneak peek at MUI's new starting point for your design system.
date: 2022-06-08T00:00:00.000Z
authors: ['danilo-leal', 'siriwatknp']
tags: ['Joy UI', 'Product']
-card: true
+manualCard: true
---
diff --git a/docs/pages/blog/introducing-base-ui.md b/docs/pages/blog/introducing-base-ui.md
index 54af0f0943df7a..4846ce5df26df8 100644
--- a/docs/pages/blog/introducing-base-ui.md
+++ b/docs/pages/blog/introducing-base-ui.md
@@ -4,7 +4,7 @@ description: The Base UI component library gives you complete control over the
date: 2022-09-07T00:00:00.000Z
authors: ['michaldudak', 'samuelsycamore']
tags: ['Base UI', 'Product']
-card: true
+manualCard: true
---
@@ -33,7 +33,7 @@ Also, many of the improvements to Material UI proposed by the community over th
While they were created for different use cases, these two libraries share many common features and design patterns, and are intended to be complementary to one another within the MUI ecosystem.
Base UI's API will be familiar to you if you've used Material UI before, making it easy to migrate a project—or just a part of it—from one library to the other if needed.
-We aim to create [unstyled versions of all Material UI components](https://github.com/mui/material-ui/issues/27170) (that make sense to do so).
+We aim to create [unstyled versions of all Material UI components](https://github.com/mui/base-ui/issues/10) (that make sense to do so).
## Components and hooks
@@ -86,7 +86,7 @@ function MySwitch(props: UseSwitchParameters) {
The initial version of the library contains 17 components.
Check out the [Base UI documentation](/base-ui/getting-started/) for details.
-You can track our progress in adding new components—and comment to influence our priorities—in [this dedicated GitHub issue](https://github.com/mui/material-ui/issues/27170).
+You can track our progress in adding new components—and comment to influence our priorities—in [this dedicated GitHub issue](https://github.com/mui/base-ui/issues/10).
The `@mui/base` package is released as an alpha.
This means the component APIs are subject to change—especially as we receive feedback from the community about room for improvement.
diff --git a/docs/pages/blog/introducing-the-row-grouping-feature.md b/docs/pages/blog/introducing-the-row-grouping-feature.md
index 817909ca6361e9..f4a7aae089a900 100644
--- a/docs/pages/blog/introducing-the-row-grouping-feature.md
+++ b/docs/pages/blog/introducing-the-row-grouping-feature.md
@@ -4,7 +4,7 @@ description: The new row grouping feature gives your users more customization op
date: 2022-01-20T00:00:00.000Z
authors: ['alexfauquette']
tags: ['MUI X', 'Product']
-card: true
+manualCard: true
---
After an incredible year fully focused on improving our Data Grid component, we are moving forward by launching the first feature of our new Premium plan: [row grouping](/x/react-data-grid/row-grouping/), released in [v5.3.0](https://github.com/mui/mui-x/releases/tag/v5.3.0).
diff --git a/docs/pages/blog/july-2019-update.md b/docs/pages/blog/july-2019-update.md
index 26f0470b57f311..9ee2ae7e852852 100644
--- a/docs/pages/blog/july-2019-update.md
+++ b/docs/pages/blog/july-2019-update.md
@@ -4,7 +4,7 @@ description: Here are the most significant improvements in July.
date: 2019-08-04T00:00:00.000Z
authors: ['oliviertassinari']
tags: ['Company']
-card: true
+manualCard: true
---
Here are the most significant improvements in July:
diff --git a/docs/pages/blog/june-2019-update.md b/docs/pages/blog/june-2019-update.md
index 92e81c2dbdaabe..5781f76514ce57 100644
--- a/docs/pages/blog/june-2019-update.md
+++ b/docs/pages/blog/june-2019-update.md
@@ -4,7 +4,7 @@ description: Here are the most significant improvements in June.
date: 2019-07-08T00:00:00.000Z
authors: ['oliviertassinari']
tags: ['Company']
-card: true
+manualCard: true
---
Here are the most significant improvements in June:
diff --git a/docs/pages/blog/lab-date-pickers-to-mui-x.md b/docs/pages/blog/lab-date-pickers-to-mui-x.md
index 9d7ddc8dfacb24..e8ab79741f5006 100644
--- a/docs/pages/blog/lab-date-pickers-to-mui-x.md
+++ b/docs/pages/blog/lab-date-pickers-to-mui-x.md
@@ -4,7 +4,7 @@ description: Migrate to the new package to start building with our powerful Date
date: 2022-04-03T00:00:00.000Z
authors: ['flaviendelangle']
tags: ['MUI X', 'Product']
-card: true
+manualCard: true
---
After more than 18 months in the lab, the Date and Time Picker components have found a new home as part of MUI X.
diff --git a/docs/pages/blog/lab-tree-view-to-mui-x.md b/docs/pages/blog/lab-tree-view-to-mui-x.md
index 7a35a33f599044..cb876949ef5087 100644
--- a/docs/pages/blog/lab-tree-view-to-mui-x.md
+++ b/docs/pages/blog/lab-tree-view-to-mui-x.md
@@ -4,7 +4,7 @@ description: Migrate to the new package to start building with our powerful Tree
date: 2023-08-21T00:00:00.000Z
authors: ['flaviendelangle']
tags: ['MUI X', 'Product']
-card: true
+manualCard: true
---
After more than 4 years in the lab, the [Tree View](https://mui.com/x/react-tree-view/) components have found a new home as part of MUI X.
diff --git a/docs/pages/blog/making-customizable-components.md b/docs/pages/blog/making-customizable-components.md
index 071e08af31bf0c..fb170deb030d07 100644
--- a/docs/pages/blog/making-customizable-components.md
+++ b/docs/pages/blog/making-customizable-components.md
@@ -4,7 +4,7 @@ description: Explore the tradeoffs between different customization techniques, a
date: 2022-08-22T00:00:00.000Z
authors: ['alexfauquette']
tags: ['MUI X', 'Material UI', 'Guide']
-card: true
+manualCard: true
---
Material UI's components are used by hundreds of thousands of developers worldwide, encompassing the full range of implementation from minor side projects to massive company websites.
diff --git a/docs/pages/blog/march-2019-update.md b/docs/pages/blog/march-2019-update.md
index 743c1d67f13d0f..1ea42cd92ed75e 100644
--- a/docs/pages/blog/march-2019-update.md
+++ b/docs/pages/blog/march-2019-update.md
@@ -4,7 +4,7 @@ description: Here are the most significant improvements in March.
date: 2019-04-05T00:00:00.000Z
authors: ['oliviertassinari']
tags: ['Company']
-card: true
+manualCard: true
---
Here are the most significant improvements in March:
diff --git a/docs/pages/blog/marija-najdova-joining.md b/docs/pages/blog/marija-najdova-joining.md
index 344a665e26b27e..003b0880ef8b59 100644
--- a/docs/pages/blog/marija-najdova-joining.md
+++ b/docs/pages/blog/marija-najdova-joining.md
@@ -4,7 +4,7 @@ description: We are excited to share that Marija Najdova has joined MUI. She has
date: 2020-09-15T00:00:00.000Z
authors: ['oliviertassinari']
tags: ['Company']
-card: true
+manualCard: true
---
We are excited to share that [Marija Najdova](https://twitter.com/marijanajdova) has joined MUI. She has started this week full-time, and is now part of the community team.
diff --git a/docs/pages/blog/material-ui-is-now-mui.md b/docs/pages/blog/material-ui-is-now-mui.md
index b956024eae46cd..926d85ea2a8fb2 100644
--- a/docs/pages/blog/material-ui-is-now-mui.md
+++ b/docs/pages/blog/material-ui-is-now-mui.md
@@ -4,7 +4,7 @@ description: Starting today, we are evolving our brand identity. We are clarifyi
date: 2021-09-16T00:00:00.000Z
authors: ['oliviertassinari', 'danilo-leal', 'mbrookes']
tags: ['Material UI']
-card: true
+manualCard: true
---
diff --git a/docs/pages/blog/material-ui-v1-is-out.md b/docs/pages/blog/material-ui-v1-is-out.md
index d88daf681f8ec3..29f0325a218ac9 100644
--- a/docs/pages/blog/material-ui-v1-is-out.md
+++ b/docs/pages/blog/material-ui-v1-is-out.md
@@ -4,7 +4,7 @@ description: It has taken us two years to do it, but Material UI v1 has finally
date: 2018-05-18T00:00:00.000Z
authors: ['oliviertassinari', 'mbrookes']
tags: ['Material UI', 'Product']
-card: true
+manualCard: true
---
> React components that implement Google's Material Design.
diff --git a/docs/pages/blog/material-ui-v4-is-out.md b/docs/pages/blog/material-ui-v4-is-out.md
index dfefd5a27ec56a..1dc63490f2f542 100644
--- a/docs/pages/blog/material-ui-v4-is-out.md
+++ b/docs/pages/blog/material-ui-v4-is-out.md
@@ -4,7 +4,7 @@ description: Material UI v4 has finally arrived. We are so excited about this r
date: 2019-05-23T00:00:00.000Z
authors: ['oliviertassinari', 'mbrookes', 'eps1lon']
tags: ['Material UI', 'Product']
-card: true
+manualCard: true
---
> React components for faster and simpler web development. Build your own design system, or start with Material Design.
diff --git a/docs/pages/blog/matheus-wichman-joining.md b/docs/pages/blog/matheus-wichman-joining.md
index 17ac52ad24e52b..8d9579d01873f0 100644
--- a/docs/pages/blog/matheus-wichman-joining.md
+++ b/docs/pages/blog/matheus-wichman-joining.md
@@ -4,7 +4,7 @@ description: We are excited to share that Matheus Wichman has joined MUI.
date: 2021-04-05T00:00:00.000Z
authors: ['oliviertassinari']
tags: ['Company']
-card: true
+manualCard: true
---
We are excited to share that [Matheus Wichman](https://github.com/m4theushw) has joined MUI.
diff --git a/docs/pages/blog/may-2019-update.md b/docs/pages/blog/may-2019-update.md
index f8cf8fa3e259a1..9707d0f28b783d 100644
--- a/docs/pages/blog/may-2019-update.md
+++ b/docs/pages/blog/may-2019-update.md
@@ -4,7 +4,7 @@ description: Here are the most significant improvements in May.
date: 2019-06-08T00:00:00.000Z
authors: ['oliviertassinari']
tags: ['Company']
-card: true
+manualCard: true
---
Here are the most significant improvements in May:
diff --git a/docs/pages/blog/michal-dudak-joining.md b/docs/pages/blog/michal-dudak-joining.md
index fe4c351bd27a09..4186fbcfc08548 100644
--- a/docs/pages/blog/michal-dudak-joining.md
+++ b/docs/pages/blog/michal-dudak-joining.md
@@ -4,7 +4,7 @@ description: We are excited to share that Michał Dudak has joined MUI.
date: 2021-06-14T00:00:00.000Z
authors: ['oliviertassinari']
tags: ['Company']
-card: true
+manualCard: true
---
We are excited to share that [Michał Dudak](https://twitter.com/michaldudak) has joined MUI!
diff --git a/docs/pages/blog/mui-core-v5-migration-update.md b/docs/pages/blog/mui-core-v5-migration-update.md
index 04a9be054133ad..f050089780ec73 100644
--- a/docs/pages/blog/mui-core-v5-migration-update.md
+++ b/docs/pages/blog/mui-core-v5-migration-update.md
@@ -3,7 +3,7 @@ title: Why you should migrate to Material UI v5 today
description: We have completely revamped our Migration guide to reduce friction when upgrading to v5. Get started now!
date: 2022-06-20T00:00:00.000Z
authors: ['samuelsycamore']
-card: true
+manualCard: true
tags: ['Material UI']
---
diff --git a/docs/pages/blog/mui-core-v5.md b/docs/pages/blog/mui-core-v5.md
index 3692acffd9c502..688cf79b04aadd 100644
--- a/docs/pages/blog/mui-core-v5.md
+++ b/docs/pages/blog/mui-core-v5.md
@@ -12,7 +12,7 @@ authors:
'danilo-leal',
'mbrookes',
]
-card: true
+manualCard: true
tags: ['Product', 'Material UI']
---
@@ -377,7 +377,7 @@ const CustomButton = React.forwardRef(function CustomButton(
CodeSandbox
We discuss the effort in [#6218](https://github.com/mui/material-ui/issues/6218).
-You can use [#27170](https://github.com/mui/material-ui/issues/27170) to follow our progress.
+You can use [#27170](https://github.com/mui/base-ui/issues/10) to follow our progress.
## Improved DX
@@ -725,7 +725,7 @@ To continue improving the customization experience, we are doubling down on the
These components and hooks contain the main functionalities and accessibility, without being opinionated about how styles are applied nor what styles.
We still have work to do to have a full set of unstyled components.
-You can read more about them in [the docs](/base-ui/getting-started/) and keep track of our progress in [#27170](https://github.com/mui/material-ui/issues/27170).
+You can read more about them in [the docs](/base-ui/getting-started/) and keep track of our progress in [#27170](https://github.com/mui/base-ui/issues/10).
Our high-level plan is to use the unstyled components and hooks as the basis of the Material components and second design system.
We are aiming to complete this work with the next major release (v6).
diff --git a/docs/pages/blog/mui-next-js-app-router.md b/docs/pages/blog/mui-next-js-app-router.md
index 344fc0faa7b52c..2c00e3dc372be3 100644
--- a/docs/pages/blog/mui-next-js-app-router.md
+++ b/docs/pages/blog/mui-next-js-app-router.md
@@ -3,7 +3,7 @@ title: MUI Core libraries support the Next.js App Router
description: Material UI, Base UI, and Joy UI are now compatible with the App Router as Client Components. Get started using the latest Next.js features with MUI!
date: 2023-07-18T00:00:00.000Z
authors: ['samuelsycamore']
-card: true
+manualCard: true
tags: ['Product']
---
diff --git a/docs/pages/blog/mui-product-comparison.md b/docs/pages/blog/mui-product-comparison.md
index 5268b3104d6e57..dfb8c4b542f939 100644
--- a/docs/pages/blog/mui-product-comparison.md
+++ b/docs/pages/blog/mui-product-comparison.md
@@ -3,7 +3,7 @@ title: An introduction to the MUI ecosystem
description: MUI is more than just Material UI. Consider Joy UI, Base UI, MUI X, and Toolpad for your next project.
date: 2022-11-01T00:00:00.000Z
authors: ['samuelsycamore']
-card: true
+manualCard: true
tags: ['Product']
---
diff --git a/docs/pages/blog/mui-x-end-v6-features.md b/docs/pages/blog/mui-x-end-v6-features.md
index 19dd6b95f107bc..e350c4af838be7 100644
--- a/docs/pages/blog/mui-x-end-v6-features.md
+++ b/docs/pages/blog/mui-x-end-v6-features.md
@@ -3,7 +3,7 @@ title: MUI X v6.18.0 and the latest features before the next major
description: New components, polished features, better performance and more.
date: 2023-11-13T00:00:00.000Z
authors: ['josefreitas']
-card: true
+manualCard: true
tags: ['MUI X', 'Product']
---
diff --git a/docs/pages/blog/mui-x-mid-v6-features.md b/docs/pages/blog/mui-x-mid-v6-features.md
index 64c7da76591a52..8348b66c7e2baa 100644
--- a/docs/pages/blog/mui-x-mid-v6-features.md
+++ b/docs/pages/blog/mui-x-mid-v6-features.md
@@ -3,7 +3,7 @@ title: MUI X v6.11.0. A roundup of all new features
description: Support for time zones, Charts in alpha, Data Grid filtering, and more.
date: 2023-08-14T00:00:00.000Z
authors: ['richbustos', 'josefreitas']
-card: true
+manualCard: true
tags: ['MUI X', 'Product']
---
diff --git a/docs/pages/blog/mui-x-v5.md b/docs/pages/blog/mui-x-v5.md
index 3e68847e5763e1..8ca2616041f276 100644
--- a/docs/pages/blog/mui-x-v5.md
+++ b/docs/pages/blog/mui-x-v5.md
@@ -4,7 +4,7 @@ description: We are excited to introduce MUI X v5.0.0!
date: 2021-11-22T00:00:00.000Z
authors:
['oliviertassinari', 'm4theushw', 'flaviendelangle', 'DanailH', 'alexfauquette']
-card: true
+manualCard: true
tags: ['MUI X', 'Product']
---
diff --git a/docs/pages/blog/mui-x-v6-alpha-zero.md b/docs/pages/blog/mui-x-v6-alpha-zero.md
index eefcf84e50348f..de7976f967cfe6 100644
--- a/docs/pages/blog/mui-x-v6-alpha-zero.md
+++ b/docs/pages/blog/mui-x-v6-alpha-zero.md
@@ -4,7 +4,7 @@ description: Let us know what you want to see in MUI X v6 as we begin the alpha
date: 2022-09-30T00:00:00.000Z
authors: ['josefreitas']
tags: ['MUI X', 'Product']
-card: true
+manualCard: true
---
We're kicking off the development of [MUI X v6](https://github.com/mui/mui-x/releases/tag/v6.0.0-alpha.0).
diff --git a/docs/pages/blog/mui-x-v6.md b/docs/pages/blog/mui-x-v6.md
index 4b666d5c82b42a..06e97177a0f0c7 100644
--- a/docs/pages/blog/mui-x-v6.md
+++ b/docs/pages/blog/mui-x-v6.md
@@ -3,7 +3,7 @@ title: Introducing MUI X v6
description: Introducing the new major version of the advanced components.
date: 2023-03-06T00:00:00.000Z
authors: ['josefreitas']
-card: true
+manualCard: true
tags: ['MUI X', 'Product']
---
diff --git a/docs/pages/blog/mui-x-v7-beta.md b/docs/pages/blog/mui-x-v7-beta.md
index 258a29b7fc57e7..f32df9cab0212e 100644
--- a/docs/pages/blog/mui-x-v7-beta.md
+++ b/docs/pages/blog/mui-x-v7-beta.md
@@ -4,7 +4,7 @@ description: Check out what's new and what's next for v7 stable.
date: 2024-01-29T00:00:00.000Z
authors: ['josefreitas']
tags: ['MUI X', 'Product']
-card: true
+manualCard: true
---
diff --git a/docs/pages/blog/mui-x-v7.md b/docs/pages/blog/mui-x-v7.md
index e95aadeedbe9bd..cce65bad6eefb9 100644
--- a/docs/pages/blog/mui-x-v7.md
+++ b/docs/pages/blog/mui-x-v7.md
@@ -4,7 +4,7 @@ description: Check out all the newest additions to the next major of the advance
date: 2024-03-22T08:00:00.000Z
authors: ['josefreitas']
tags: ['MUI X', 'Product']
-card: true
+manualCard: true
---
@@ -56,11 +56,11 @@ The Data Grid now offers a more responsive experience with smoother scrolling an
On its first announcement, some of these improvements were showcased, but during the beta phase, the scrolling performance was further polished for an even better user experience.
-
+
- A before and after showcase, first with horizontal and then with vertical scrolling.
+ A before and after showcase, first with horizontal and then with vertical scrolling.
:::warning
@@ -81,9 +81,9 @@ As part of an overarching project aimed at enhancing usability in managing colum
The goal is to further enhance this panel by incorporating additional column management functions, such as column reordering and pinning. Additionally, the internal component has been extracted to ease the introduction of the upcoming pivoting UI.
-
+
- The new column managemeent panel design
+ The new column management panel design
### Date Object support in filter model
@@ -98,9 +98,9 @@ Introducing a separate entry point for locales has significantly reduced the bun
As a reference, with the `@mui/x-data-grid` npm package, this change led to a reduction of approximately 19% – shrinking the bundle size from [114.2kB](https://bundlephobia.com/package/@mui/x-data-grid@6.19.2) to [92.9kB](https://bundlephobia.com/package/@mui/x-data-grid@7.0.0).
-
+
- A chart showcasing the Data Grid's bundle size change.
+ A chart showcasing the Data Grid's bundle size change.
### New stable features
@@ -233,9 +233,9 @@ The newest gauge charts are designed to offer a visually compelling way to displ
These charts are particularly useful for showing progress toward a goal or displaying a value within a predefined range.
With customizable options for pointers, sizes, and colors, they allow for a personalized visual representation that makes it easy for users to interpret data at a glance.
-
+
- Three different styles of Gauge charts.
+ Three different styles of Gauge charts.
Check out the [new charts](/x/react-charts/gauge/) documentation page for detailed information.
@@ -246,9 +246,9 @@ The charts now have click event handlers, so users can interact with chart eleme
This feature makes charts more interactive and transforms the way users can explore the data, improving the overall user experience with details and other information accessed on demand.
-
+
- A pie chart with an item click handler.
+ A pie chart with an item click handler.
You can find more information about specific event handlers for each type of chart by visiting their respective overview page:
@@ -261,9 +261,9 @@ You can find more information about specific event handlers for each type of cha
The Axis component now features a built-in Grid, offering users a structured layout for easier data analysis and visualization.
-
+
- A Chart axis with an horizontal grid.
+ A Chart axis with an horizontal grid.
For details on its usage and configuration, please refer to the [Grid section](/x/react-charts/axis/#grid) in the documentation.
@@ -272,9 +272,9 @@ For details on its usage and configuration, please refer to the [Grid section](/
The `ChartsReferenceLine` component enhances data visualization, providing users with a clear reference to better understand and analyze key data points.
-
+
- A line chart using a reference line.
+ A line chart using a reference line.
You can find more details on its [documentation](/x/react-charts/axis/#reference-line).
@@ -315,11 +315,11 @@ import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFnsV3';
The latest addition to the Date and Time Pickers suite is the ` `, a most anticipated component designed to enrich the user experience with the advanced date and time selection.
This intuitive picker simplifies the process of selecting date and time ranges, making it ideal for applications that require detailed scheduling or period selection.
-
+
- A video showcasing a date and time range selection.
+ A video showcasing a date and time range selection.
Learn how to use and customize the [new component](/x/react-date-pickers/date-time-range-picker/) now!
diff --git a/docs/pages/blog/november-2019-update.md b/docs/pages/blog/november-2019-update.md
index fc9f1bf498ab4d..afb3cbff843fc9 100644
--- a/docs/pages/blog/november-2019-update.md
+++ b/docs/pages/blog/november-2019-update.md
@@ -4,7 +4,7 @@ description: Here are the most significant improvements in November.
date: 2019-12-12T00:00:00.000Z
authors: ['oliviertassinari']
tags: ['Company']
-card: true
+manualCard: true
---
Here are the most significant improvements in November:
diff --git a/docs/pages/blog/october-2019-update.md b/docs/pages/blog/october-2019-update.md
index 7644683613f25d..d5b3c21f260dda 100644
--- a/docs/pages/blog/october-2019-update.md
+++ b/docs/pages/blog/october-2019-update.md
@@ -4,7 +4,7 @@ description: Here are the most significant improvements in October.
date: 2019-11-08T00:00:00.000Z
authors: ['oliviertassinari']
tags: ['Company']
-card: true
+manualCard: true
---
Here are the most significant improvements in October:
diff --git a/docs/pages/blog/premium-plan-release.md b/docs/pages/blog/premium-plan-release.md
index 4d5166c36c263f..d7ab992827f551 100644
--- a/docs/pages/blog/premium-plan-release.md
+++ b/docs/pages/blog/premium-plan-release.md
@@ -4,7 +4,7 @@ description: Introducing the MUI X Premium plan, and a new licensing model.
date: 2022-05-12T00:00:00.000Z
authors: ['josefreitas', 'alexfauquette']
tags: ['MUI X', 'Product']
-card: true
+manualCard: true
---
We're happy to announce that the Premium plan is [finally out](https://mui.com/pricing/)!
diff --git a/docs/pages/blog/remote-award-win-2024.md b/docs/pages/blog/remote-award-win-2024.md
index d41c7702449788..0162f0e8a93f06 100644
--- a/docs/pages/blog/remote-award-win-2024.md
+++ b/docs/pages/blog/remote-award-win-2024.md
@@ -4,10 +4,10 @@ description: We're delighted to be honored with this global recognition for our
date: 2024-03-20T12:00:00.000Z
authors: ['mikailaread']
tags: ['Company']
-card: true
+manualCard: true
---
-MUI has been named a **winner** in the first-ever [Remote Excellence Awards](https://remote.com/remote-excellence-awards/), in the Small & Mighty category! 🎉
+MUI has been named a **winner** in the first-ever [Remote Excellence Awards](https://remote.com/remote-excellence-awards), in the Small & Mighty category! 🎉
diff --git a/docs/pages/blog/september-2019-update.md b/docs/pages/blog/september-2019-update.md
index 851cda97d166b7..55c9c442b742f5 100644
--- a/docs/pages/blog/september-2019-update.md
+++ b/docs/pages/blog/september-2019-update.md
@@ -4,7 +4,7 @@ description: Here are the most significant improvements in September.
date: 2019-10-12T00:00:00.000Z
authors: ['oliviertassinari']
tags: ['Company']
-card: true
+manualCard: true
---
Here are the most significant improvements in September:
diff --git a/docs/pages/blog/siriwat-kunaporn-joining.md b/docs/pages/blog/siriwat-kunaporn-joining.md
index c858b89ccf4e33..2150a1835d1760 100644
--- a/docs/pages/blog/siriwat-kunaporn-joining.md
+++ b/docs/pages/blog/siriwat-kunaporn-joining.md
@@ -4,7 +4,7 @@ description: We are excited to share that Siriwat Kunaporn has joined MUI.
date: 2021-05-17T00:00:00.000Z
authors: ['oliviertassinari']
tags: ['Company']
-card: true
+manualCard: true
---
We are excited to share that [Siriwat Kunaporn](https://twitter.com/siriwatknp) (Jun) has joined MUI.
diff --git a/docs/pages/blog/spotlight-damien-tassone.md b/docs/pages/blog/spotlight-damien-tassone.md
index 6952fe623e1c35..8dc08dd0c823e6 100644
--- a/docs/pages/blog/spotlight-damien-tassone.md
+++ b/docs/pages/blog/spotlight-damien-tassone.md
@@ -4,7 +4,7 @@ description: Damien Tassone has joined MUI. He's the first full-time member to f
date: 2020-09-15T00:00:00.000Z
authors: ['oliviertassinari']
tags: ['Company']
-card: true
+manualCard: true
---
A few months ago, right in the middle of the COVID-19 outbreak, [Damien Tassone](https://twitter.com/madKakoO) joined MUI. He's the first full-time member to focus on enterprise components. Back then, we only made a quick mention of it. It's never too late to introduce him properly.
diff --git a/docs/pages/blog/toolpad-use-cases.md b/docs/pages/blog/toolpad-use-cases.md
index 30879950a648e4..30cc0ffd7ddd26 100644
--- a/docs/pages/blog/toolpad-use-cases.md
+++ b/docs/pages/blog/toolpad-use-cases.md
@@ -3,7 +3,7 @@ title: How does MUI use Toolpad?
description: Explore how we use Toolpad for production use cases at MUI.
date: 2024-03-04T00:00:00.000Z
authors: ['prakhargupta']
-card: true
+manualCard: true
tags: ['Product', 'Toolpad']
---
diff --git a/docs/pages/blog/v6-beta-pickers.md b/docs/pages/blog/v6-beta-pickers.md
index 8ceeca29aa63cf..22f03ed385fd00 100644
--- a/docs/pages/blog/v6-beta-pickers.md
+++ b/docs/pages/blog/v6-beta-pickers.md
@@ -4,7 +4,7 @@ description: Check out the new features coming in v6 beta.
date: 2023-01-22T00:00:00.000Z
authors: ['josefreitas']
tags: ['MUI X', 'Product']
-card: true
+manualCard: true
---
There's a lot of exciting news in [MUI X v6.0.0-beta.0](https://github.com/mui/mui-x/releases/v6.0.0-beta.0), but there's hardly anything comparable to the revamp we're delivering for the Date and Time Pickers.
diff --git a/docs/pages/experiments/blog/blog-custom-card.js b/docs/pages/experiments/blog/blog-custom-card.js
new file mode 100644
index 00000000000000..57dfbb8a95e4d0
--- /dev/null
+++ b/docs/pages/experiments/blog/blog-custom-card.js
@@ -0,0 +1,7 @@
+import * as React from 'react';
+import TopLayoutBlog from 'docs/src/modules/components/TopLayoutBlog';
+import { docs } from './blog-custom-card.md?muiMarkdown';
+
+export default function Page() {
+ return ;
+}
diff --git a/docs/pages/experiments/blog/blog-custom-card.md b/docs/pages/experiments/blog/blog-custom-card.md
new file mode 100644
index 00000000000000..1c26c97454e62d
--- /dev/null
+++ b/docs/pages/experiments/blog/blog-custom-card.md
@@ -0,0 +1,30 @@
+---
+title: Blog post title
+description: Our internationally distributed startup gathered on a remote island to get to know each other better. Here's what happened!
+date: 2022-07-28T00:00:00.000Z
+authors: ['alexfauquette']
+tags: ['Company']
+manualCard: false
+cardTitle: blog with\n*custom* card
+---
+
+## Description
+
+### Image
+
+
+
+An image description with a link .
+
+More text below.
+
+### Code
+
+```jsx
+// add margin: 8px 0px;
+
+```
+
+CodeSandbox
+
+More text below.
diff --git a/docs/pages/experiments/blog/blog.md b/docs/pages/experiments/blog/blog.md
index 0579a43e8f4eff..42c229e45f99c0 100644
--- a/docs/pages/experiments/blog/blog.md
+++ b/docs/pages/experiments/blog/blog.md
@@ -4,14 +4,14 @@ description: Our internationally distributed startup gathered on a remote island
date: 2022-07-28T00:00:00.000Z
authors: ['samuelsycamore']
tags: ['Company']
-card: false
+manualCard: false
---
## Description
### Image
-
+
An image description with a link .
diff --git a/docs/pages/experiments/docs/demos.md b/docs/pages/experiments/docs/demos.md
index 9334e1a03b1097..5a630ed5a063fb 100644
--- a/docs/pages/experiments/docs/demos.md
+++ b/docs/pages/experiments/docs/demos.md
@@ -1,12 +1,19 @@
# Demos
-Demos
+The different variants of demo containers we have in the docs.
## Standard demo
+"Standard" refers to when no background is explicitly defined.
+So, it renders the "outlined" background variant.
+
{{"demo": "DemoInDocs.js"}}
-## "bg": "inline" demo
+## "bg": "outlined"
+
+{{"demo": "DemoInDocs.js", "bg": "outlined"}}
+
+## "bg": "inline"
{{"demo": "DemoInDocs.js", "bg": "inline"}}
@@ -14,6 +21,10 @@
{{"demo": "DemoInDocs.js", "bg": true}}
+## "bg": gradient
+
+{{"demo": "DemoInDocs.js", "bg": "gradient"}}
+
## "hideToolbar": true
{{"demo": "DemoInDocs.js", "hideToolbar": true}}
diff --git a/docs/pages/experiments/docs/og-card.js b/docs/pages/experiments/docs/og-card.js
new file mode 100644
index 00000000000000..3c3ab187e0adcf
--- /dev/null
+++ b/docs/pages/experiments/docs/og-card.js
@@ -0,0 +1,7 @@
+import * as React from 'react';
+import MarkdownDocs from 'docs/src/modules/components/MarkdownDocs';
+import * as pageProps from './og-card.md?muiMarkdown';
+
+export default function Page() {
+ return ;
+}
diff --git a/docs/pages/experiments/docs/og-card.md b/docs/pages/experiments/docs/og-card.md
new file mode 100644
index 00000000000000..4a169ff15df2f4
--- /dev/null
+++ b/docs/pages/experiments/docs/og-card.md
@@ -0,0 +1,33 @@
+---
+title: OG card generation
+cardDescription: A quick overview of available options.
+---
+
+# OG card
+
+How the docs platform generate Open Graph card images
+
+## The edge function
+
+The URL `mui.com/edge-functions/og-image` can be queried with 4 search parameters:
+
+- `product`: the text element displayed next to the MUI logo
+- `title`: the title which can contains `\*` to delimit the highlighted (in blue) text sections
+- `description`: a paragraph added under the main title
+- `authors`: the GitHub username of the authors. It should be divided by a coma.
+
+## Usage with Markdown
+
+By default, the card is generated using the page title and description.
+You can override this behavior by providing different/specific `cardTitle` and `cardDescription` in the Markdown header, like so:
+
+```markup
+--
+cardTitle: A *different* title than the page title
+cardDecription: The word "different" on the title is highlighted
+--
+```
+
+## Card design preview
+
+Visit [this StackBlitz demo](https://stackblitz.com/edit/vitejs-vite-ukeejd?file=src%2FApp.tsx) to see how the card looks like without having to run a random page on an OG preview site.
diff --git a/docs/pages/material-ui/api/step-connector.json b/docs/pages/material-ui/api/step-connector.json
index c0d62fb18711f6..ddfa3bb8b11fef 100644
--- a/docs/pages/material-ui/api/step-connector.json
+++ b/docs/pages/material-ui/api/step-connector.json
@@ -54,14 +54,16 @@
{
"key": "lineHorizontal",
"className": "MuiStepConnector-lineHorizontal",
- "description": "Styles applied to the root element if `orientation=\"horizontal\"`.",
- "isGlobal": false
+ "description": "Styles applied to the line element if `orientation=\"horizontal\"`.",
+ "isGlobal": false,
+ "isDeprecated": true
},
{
"key": "lineVertical",
"className": "MuiStepConnector-lineVertical",
- "description": "Styles applied to the root element if `orientation=\"vertical\"`.",
- "isGlobal": false
+ "description": "Styles applied to the line element if `orientation=\"vertical\"`.",
+ "isGlobal": false,
+ "isDeprecated": true
},
{
"key": "root",
diff --git a/docs/pages/material-ui/api/toggle-button-group.json b/docs/pages/material-ui/api/toggle-button-group.json
index e3d1c10eefb45c..0ce12e51e361b8 100644
--- a/docs/pages/material-ui/api/toggle-button-group.json
+++ b/docs/pages/material-ui/api/toggle-button-group.json
@@ -73,12 +73,20 @@
"key": "groupedHorizontal",
"className": "MuiToggleButtonGroup-groupedHorizontal",
"description": "Styles applied to the children if `orientation=\"horizontal\"`.",
- "isGlobal": false
+ "isGlobal": false,
+ "isDeprecated": true
},
{
"key": "groupedVertical",
"className": "MuiToggleButtonGroup-groupedVertical",
"description": "Styles applied to the children if `orientation=\"vertical\"`.",
+ "isGlobal": false,
+ "isDeprecated": true
+ },
+ {
+ "key": "horizontal",
+ "className": "MuiToggleButtonGroup-horizontal",
+ "description": "Styles applied to the root element if `orientation=\"horizontal\"`.",
"isGlobal": false
},
{
diff --git a/docs/src/modules/components/Ad.js b/docs/src/modules/components/Ad.js
index 9750bfeed8b6ab..0e612dc7970101 100644
--- a/docs/src/modules/components/Ad.js
+++ b/docs/src/modules/components/Ad.js
@@ -5,6 +5,7 @@ import Box from '@mui/material/Box';
import Paper from '@mui/material/Paper';
import AdCarbon from 'docs/src/modules/components/AdCarbon';
import AdInHouse from 'docs/src/modules/components/AdInHouse';
+import { GA_ADS_DISPLAY_RATIO } from 'docs/src/modules/constants';
import { AdContext, adShape } from 'docs/src/modules/components/AdManager';
import { useTranslate } from '@mui/docs/i18n';
@@ -197,7 +198,7 @@ export default function Ad() {
React.useEffect(() => {
// Avoid an exceed on the Google Analytics quotas.
- if (Math.random() < 0.9 || !eventLabel) {
+ if (Math.random() > GA_ADS_DISPLAY_RATIO || !eventLabel) {
return undefined;
}
diff --git a/docs/src/modules/components/AdCarbon.js b/docs/src/modules/components/AdCarbon.js
index 64963da1702729..bd62cf8bfe3871 100644
--- a/docs/src/modules/components/AdCarbon.js
+++ b/docs/src/modules/components/AdCarbon.js
@@ -126,6 +126,7 @@ export function AdCarbonInline(props) {
name: ad.company,
description: `${ad.company} - ${ad.description}`,
poweredby: 'Carbon',
+ label: 'carbon-demo-inline',
}}
/>
diff --git a/docs/src/modules/components/AdDisplay.js b/docs/src/modules/components/AdDisplay.js
index 1de9a19857246f..e31003bd3225de 100644
--- a/docs/src/modules/components/AdDisplay.js
+++ b/docs/src/modules/components/AdDisplay.js
@@ -2,6 +2,7 @@ import * as React from 'react';
import PropTypes from 'prop-types';
import { styled } from '@mui/material/styles';
import { adShape } from 'docs/src/modules/components/AdManager';
+import { GA_ADS_DISPLAY_RATIO } from 'docs/src/modules/constants';
import { adStylesObject } from 'docs/src/modules/components/ad.styles';
const Root = styled('span', { shouldForwardProp: (prop) => prop !== 'shape' })(({
@@ -23,6 +24,18 @@ const Root = styled('span', { shouldForwardProp: (prop) => prop !== 'shape' })((
export default function AdDisplay(props) {
const { ad, className, shape = 'auto' } = props;
+ React.useEffect(() => {
+ // Avoid an exceed on the Google Analytics quotas.
+ if (Math.random() > GA_ADS_DISPLAY_RATIO || !ad.label) {
+ return;
+ }
+
+ window.gtag('event', 'ad', {
+ eventAction: 'display',
+ eventLabel: ad.label,
+ });
+ }, [ad.label]);
+
/* eslint-disable material-ui/no-hardcoded-labels, react/no-danger */
return (
diff --git a/docs/src/modules/components/AppFrame.js b/docs/src/modules/components/AppFrame.js
index 9f0d45acc58879..08d1eb2c232786 100644
--- a/docs/src/modules/components/AppFrame.js
+++ b/docs/src/modules/components/AppFrame.js
@@ -165,6 +165,9 @@ export default function AppFrame(props) {
const [mobileOpen, setMobileOpen] = React.useState(false);
const [settingsOpen, setSettingsOpen] = React.useState(false);
+ const closeDrawer = React.useCallback(() => setMobileOpen(false), []);
+ const openDrawer = React.useCallback(() => setMobileOpen(true), []);
+
const { activePage } = React.useContext(PageContext);
const disablePermanent = activePage?.disableDrawer === true || disableDrawer === true;
@@ -229,8 +232,8 @@ export default function AppFrame(props) {
setMobileOpen(false)}
- onOpen={() => setMobileOpen(true)}
+ onClose={closeDrawer}
+ onOpen={openDrawer}
mobileOpen={mobileOpen}
/>
{children}
diff --git a/docs/src/modules/components/AppLayoutDocs.js b/docs/src/modules/components/AppLayoutDocs.js
index 3070ad0f1d3a56..c343c6b3338147 100644
--- a/docs/src/modules/components/AppLayoutDocs.js
+++ b/docs/src/modules/components/AppLayoutDocs.js
@@ -101,6 +101,7 @@ export default function AppLayoutDocs(props) {
const router = useRouter();
const {
BannerComponent,
+ cardOptions,
children,
description,
disableAd = false,
@@ -137,6 +138,7 @@ export default function AppLayoutDocs(props) {
const Layout = disableLayout ? React.Fragment : AppFrame;
const layoutProps = disableLayout ? {} : { BannerComponent };
+ const card = `/edge-functions/og-image?product=${productName}&title=${cardOptions?.title ?? title}&description=${cardOptions?.description ?? description}`;
return (
{/*
@@ -172,6 +174,10 @@ export default function AppLayoutDocs(props) {
AppLayoutDocs.propTypes = {
BannerComponent: PropTypes.elementType,
+ cardOptions: PropTypes.shape({
+ description: PropTypes.string,
+ title: PropTypes.string,
+ }),
children: PropTypes.node.isRequired,
description: PropTypes.string.isRequired,
disableAd: PropTypes.bool.isRequired,
diff --git a/docs/src/modules/components/AppNavDrawerItem.js b/docs/src/modules/components/AppNavDrawerItem.js
index e626a11fe7d7e0..f4e9371c3489bb 100644
--- a/docs/src/modules/components/AppNavDrawerItem.js
+++ b/docs/src/modules/components/AppNavDrawerItem.js
@@ -144,7 +144,7 @@ const Item = styled(
theme.applyDarkStyles({
...color,
'&::before': {
- background: alpha(theme.palette.primaryDark[700], 0.6),
+ background: alpha(theme.palette.primaryDark[500], 0.3),
},
'&.app-drawer-active': {
color: (theme.vars || theme).palette.primary[300],
diff --git a/docs/src/modules/components/Demo.js b/docs/src/modules/components/Demo.js
index 1d6eb268fa9092..ed82ae5d5aa386 100644
--- a/docs/src/modules/components/Demo.js
+++ b/docs/src/modules/components/Demo.js
@@ -210,6 +210,11 @@ const DemoRootMaterial = styled('div', {
...(bg === 'inline' && {
padding: theme.spacing(0),
}),
+ ...(bg === 'gradient' && {
+ padding: theme.spacing(12, 8),
+ borderLeftWidth: 1,
+ borderRightWidth: 1,
+ }),
},
/* Isolate the demo with an outline. */
...(bg === 'outlined' && {
@@ -218,7 +223,6 @@ const DemoRootMaterial = styled('div', {
border: `1px solid ${(theme.vars || theme).palette.divider}`,
borderLeftWidth: 0,
borderRightWidth: 0,
- borderBottomWidth: 0,
...theme.applyDarkStyles({
backgroundColor: alpha(theme.palette.primaryDark[700], 0.1),
}),
@@ -232,28 +236,25 @@ const DemoRootMaterial = styled('div', {
/* Prepare the background to display an inner elevation. */
...(bg === true && {
padding: theme.spacing(3),
- backgroundColor: alpha(theme.palette.grey[50], 0.6),
+ backgroundColor: alpha((theme.vars || theme).palette.grey[50], 0.5),
border: `1px solid ${(theme.vars || theme).palette.divider}`,
...theme.applyDarkStyles({
- backgroundColor: alpha(theme.palette.primaryDark[700], 0.15),
+ backgroundColor: alpha((theme.vars || theme).palette.primaryDark[700], 0.4),
}),
}),
/* Mostly meant for introduction demos. */
...(bg === 'gradient' && {
overflow: 'auto',
- padding: theme.spacing(20, 8),
- border: `1px solid`,
- borderColor: (theme.vars || theme).palette.divider,
+ padding: theme.spacing(4, 2),
+ border: `1px solid ${(theme.vars || theme).palette.divider}`,
+ borderLeftWidth: 0,
+ borderRightWidth: 0,
backgroundClip: 'padding-box',
- backgroundColor: alpha(theme.palette.primary[50], 0.5),
- backgroundImage: `radial-gradient(140% 108% at 50% 8%, transparent 40%, ${
- theme.palette.primary[50]
- } 70%, ${alpha(theme.palette.primary[100], 0.2)} 100%)`,
+ backgroundColor: alpha(theme.palette.primary[50], 0.2),
+ backgroundImage: `radial-gradient(120% 140% at 50% 10%, transparent 40%, ${alpha((theme.vars || theme).palette.primary[100], 0.2)} 70%)`,
...theme.applyDarkStyles({
- borderColor: (theme.vars || theme).palette.divider,
- backgroundColor: '#00111A',
- backgroundImage:
- 'radial-gradient(140% 120% at 50% 8%, transparent 40%, #051729 70%, #041425 100%)',
+ backgroundColor: (theme.vars || theme).palette.primaryDark[900],
+ backgroundImage: `radial-gradient(120% 140% at 50% 10%, transparent 30%, ${alpha((theme.vars || theme).palette.primary[900], 0.3)} 80%)`,
}),
}),
}));
@@ -332,6 +333,9 @@ const DemoCodeViewer = styled(HighlightedCode)(() => ({
maxWidth: 'initial',
borderRadius: 0,
},
+ '& .MuiCode-copy': {
+ display: 'none',
+ },
}));
const AnchorLink = styled('div')({
diff --git a/docs/src/modules/components/DemoEditor.tsx b/docs/src/modules/components/DemoEditor.tsx
index a73d74799d6c35..b73c500fae1727 100644
--- a/docs/src/modules/components/DemoEditor.tsx
+++ b/docs/src/modules/components/DemoEditor.tsx
@@ -2,7 +2,7 @@ import * as React from 'react';
import SimpleCodeEditor from 'react-simple-code-editor';
import Box from '@mui/material/Box';
import { NoSsr } from '@mui/base/NoSsr';
-import { styled, useTheme } from '@mui/material/styles';
+import { styled, alpha, useTheme } from '@mui/material/styles';
import prism from '@mui/internal-markdown/prism';
import MarkdownElement from 'docs/src/modules/components/MarkdownElement';
import CodeCopyButton from 'docs/src/modules/components/CodeCopyButton';
@@ -20,10 +20,10 @@ const StyledMarkdownElement = styled(MarkdownElement)(({ theme }) => [
border: `1px solid ${(theme.vars || theme).palette.divider}`,
colorScheme: 'dark',
'&:hover': {
- boxShadow: `0 0 0 3px ${(theme.vars || theme).palette.primary.light}`,
+ boxShadow: `0 0 0 3px ${alpha((theme.vars || theme).palette.primary[500], 0.5)}`,
},
'&:focus-within': {
- boxShadow: `0 0 0 2px ${(theme.vars || theme).palette.primary.main}`,
+ boxShadow: `0 0 0 2px ${alpha((theme.vars || theme).palette.primary[500], 0.5)}`,
},
[theme.breakpoints.up('sm')]: {
borderRadius: '0 0 12px 12px',
@@ -35,16 +35,13 @@ const StyledMarkdownElement = styled(MarkdownElement)(({ theme }) => [
maxWidth: 'initial',
maxHeight: 'initial',
},
+ '& .MuiCode-copy': {
+ display: 'none',
+ },
},
theme.applyDarkStyles({
'& .scrollContainer': {
borderColor: (theme.vars || theme).palette.divider,
- '&:hover': {
- boxShadow: `0 0 0 3px ${(theme.vars || theme).palette.primaryDark[300]}`,
- },
- '&:focus-within': {
- boxShadow: `0 0 0 2px ${(theme.vars || theme).palette.primaryDark[400]}`,
- },
},
}),
]) as any;
diff --git a/docs/src/modules/components/DemoToolbarRoot.ts b/docs/src/modules/components/DemoToolbarRoot.ts
index 984115f71f2f7d..071aea7f1df146 100644
--- a/docs/src/modules/components/DemoToolbarRoot.ts
+++ b/docs/src/modules/components/DemoToolbarRoot.ts
@@ -11,11 +11,12 @@ const DemoToolbarRoot = styled('div', {
{
display: 'none',
[theme.breakpoints.up('sm')]: {
+ top: 0,
display: 'block',
- border: `1px solid ${(theme.vars || theme).palette.divider}`,
marginTop: demoOptions.bg === 'inline' ? theme.spacing(1) : -1,
- top: 0,
padding: theme.spacing(0.5, 1),
+ border: `1px solid ${(theme.vars || theme).palette.divider}`,
+ borderTopWidth: demoOptions.bg === 'inline' ? 1 : 0,
backgroundColor: alpha(theme.palette.grey[50], 0.2),
borderRadius: openDemoSource ? 0 : '0 0 12px 12px',
transition: theme.transitions.create('border-radius'),
diff --git a/docs/src/modules/components/Head.tsx b/docs/src/modules/components/Head.tsx
index 7366a2ce2fd8ff..884ecea4b08879 100644
--- a/docs/src/modules/components/Head.tsx
+++ b/docs/src/modules/components/Head.tsx
@@ -6,7 +6,9 @@ import { useUserLanguage, useTranslate } from '@mui/docs/i18n';
import { pathnameToLanguage } from 'docs/src/modules/utils/helpers';
// #major-version-switch
-const HOST = 'https://mui.com';
+const HOST = process.env.PULL_REQUEST_ID
+ ? `https://deploy-preview-${process.env.PULL_REQUEST_ID}--${process.env.NETLIFY_SITE_NAME}.netlify.app`
+ : 'https://mui.com';
interface HeadProps {
card?: string;
diff --git a/docs/src/modules/components/MarkdownDocs.js b/docs/src/modules/components/MarkdownDocs.js
index 9d12aef4dad2c5..5d1dc61a55b3c8 100644
--- a/docs/src/modules/components/MarkdownDocs.js
+++ b/docs/src/modules/components/MarkdownDocs.js
@@ -54,6 +54,10 @@ export default function MarkdownDocs(props) {
return (
,
},
{
name: 'Express.js (server-rendered)',
- label: 'View JS example',
+ label: 'View JavaScript',
link: 'https://github.com/mui/material-ui/tree/next/examples/material-ui-express-ssr',
src: '/static/images/examples/express.png',
},
{
name: 'Gatsby',
- label: 'View JS example',
+ label: 'View JavaScript',
link: 'https://github.com/mui/material-ui/tree/next/examples/material-ui-gatsby',
src: '/static/images/examples/gatsby.svg',
},
{
name: 'React-admin',
- label: 'View TS example',
+ label: 'View TypeScript',
link: 'https://github.com/marmelab/material-ui-react-admin',
src: '/static/images/examples/reactadmin.svg',
},
@@ -107,12 +107,7 @@ export default function MaterialUIExampleCollection() {
display: 'flex',
alignItems: 'center',
gap: 2,
- background: `${(theme.vars || theme).palette.gradients.linearSubtle}`,
- ...theme.applyDarkStyles({
- bgcolor: 'primaryDark.900',
- background: `${(theme.vars || theme).palette.gradients.linearSubtle}`,
- borderColor: 'primaryDark.700',
- }),
+ background: `${(theme.vars || theme).palette.gradients.radioSubtle}`,
})}
>
- •
+ /
{
+ const { github, name } = authors[author];
+ return `${name} @${github}`;
+ })
+ .join(',')}&product=Blog`;
if (process.env.NODE_ENV !== 'production') {
- if (headers.card === undefined) {
+ if (headers.manualCard === undefined) {
throw new Error(
[
- `MUI: the "card" markdown header for the blog post "${slug}" is missing.`,
- `Set card: true or card: false header in docs/pages/blog/${slug}.md.`,
+ `MUI: the "manualCard" markdown header for the blog post "${slug}" is missing.`,
+ `Set manualCard: true or manualCard: false header in docs/pages/blog/${slug}.md.`,
].join('\n'),
);
}
@@ -296,7 +314,7 @@ export default function TopLayoutBlog(props) {
true, the footer always appear at the bottom of the overflow table. ⚠️ It doesn't work with IE11."
+ "description": "If true
, the footer always appear at the bottom of the overflow table."
},
"stickyHeader": {
- "description": "If true
, the header always appear at the top of the overflow table. ⚠️ It doesn't work with IE11."
+ "description": "If true
, the header always appear at the top of the overflow table."
},
"stripe": {
"description": "The odd or even row of the table body will have subtle background color."
diff --git a/docs/translations/api-docs/step-connector/step-connector.json b/docs/translations/api-docs/step-connector/step-connector.json
index 87eacce62772ef..650f2fd5e5c8dd 100644
--- a/docs/translations/api-docs/step-connector/step-connector.json
+++ b/docs/translations/api-docs/step-connector/step-connector.json
@@ -35,13 +35,15 @@
"line": { "description": "Styles applied to {{nodeName}}.", "nodeName": "the line element" },
"lineHorizontal": {
"description": "Styles applied to {{nodeName}} if {{conditions}}.",
- "nodeName": "the root element",
- "conditions": "orientation=\"horizontal\"
"
+ "nodeName": "the line element",
+ "conditions": "orientation=\"horizontal\"
",
+ "deprecationInfo": "Combine the .MuiStepConnector-horizontal and .MuiStepConnector-line classes instead. How to migrate "
},
"lineVertical": {
"description": "Styles applied to {{nodeName}} if {{conditions}}.",
- "nodeName": "the root element",
- "conditions": "orientation=\"vertical\"
"
+ "nodeName": "the line element",
+ "conditions": "orientation=\"vertical\"
",
+ "deprecationInfo": "Combine the .MuiStepConnector-vertical and .MuiStepConnector-line classes instead. How to migrate "
},
"root": { "description": "Styles applied to the root element." },
"vertical": {
diff --git a/docs/translations/api-docs/table/table.json b/docs/translations/api-docs/table/table.json
index a121d095ef3c81..c84bbf8d0f86e7 100644
--- a/docs/translations/api-docs/table/table.json
+++ b/docs/translations/api-docs/table/table.json
@@ -10,9 +10,7 @@
},
"padding": { "description": "Allows TableCells to inherit padding of the Table." },
"size": { "description": "Allows TableCells to inherit size of the Table." },
- "stickyHeader": {
- "description": "Set the header sticky. ⚠️ It doesn't work with IE11."
- },
+ "stickyHeader": { "description": "Set the header sticky." },
"sx": {
"description": "The system prop that allows defining system overrides as well as additional CSS styles."
}
diff --git a/docs/translations/api-docs/toggle-button-group/toggle-button-group.json b/docs/translations/api-docs/toggle-button-group/toggle-button-group.json
index 21eccbcd92b660..a507c96bf9f224 100644
--- a/docs/translations/api-docs/toggle-button-group/toggle-button-group.json
+++ b/docs/translations/api-docs/toggle-button-group/toggle-button-group.json
@@ -50,12 +50,19 @@
"groupedHorizontal": {
"description": "Styles applied to {{nodeName}} if {{conditions}}.",
"nodeName": "the children",
- "conditions": "orientation=\"horizontal\"
"
+ "conditions": "orientation=\"horizontal\"
",
+ "deprecationInfo": "Combine the .MuiToggleButtonGroup-horizontal and .MuiToggleButtonGroup-grouped classes instead. How to migrate "
},
"groupedVertical": {
"description": "Styles applied to {{nodeName}} if {{conditions}}.",
"nodeName": "the children",
- "conditions": "orientation=\"vertical\"
"
+ "conditions": "orientation=\"vertical\"
",
+ "deprecationInfo": "Combine the .MuiToggleButtonGroup-vertical and .MuiToggleButtonGroup-grouped classes instead. How to migrate "
+ },
+ "horizontal": {
+ "description": "Styles applied to {{nodeName}} if {{conditions}}.",
+ "nodeName": "the root element",
+ "conditions": "orientation=\"horizontal\"
"
},
"lastButton": {
"description": "Styles applied to {{nodeName}}.",
diff --git a/netlify/edge-functions/og-image.tsx b/netlify/edge-functions/og-image.tsx
new file mode 100644
index 00000000000000..43c6eab58a42e7
--- /dev/null
+++ b/netlify/edge-functions/og-image.tsx
@@ -0,0 +1,268 @@
+import React from 'https://esm.sh/react@18.2.0';
+// eslint-disable-next-line import/extensions
+import { ImageResponse } from 'https://deno.land/x/og_edge/mod.ts';
+
+const MAX_AUTHORS = 5;
+export default async function handler(req: Request) {
+ const params = new URL(req.url).searchParams;
+ const title = params.get('title');
+ const authors = params.get('authors');
+ const product = params.get('product');
+ const description = params.get('description');
+
+ const parsedAuthors =
+ authors &&
+ authors
+ .split(',')
+ .map((author) => {
+ const [name, github] = author.split('@');
+ return { name: name.trim(), github: github.trim() };
+ })
+ .filter(({ name, github }) => name && github);
+
+ const withAuthors = parsedAuthors && parsedAuthors.length > 0;
+ let starCount = 0;
+
+ return new ImageResponse(
+ (
+
+
+
+
+
+
+
+
+
+ {product}
+
+
+
+ {title &&
+ title.split('\\n').map((line) => (
+
+ {line.split('*').flatMap((text, index) => {
+ if (index > 0) {
+ starCount += 1;
+ }
+
+ const isBlue = starCount % 2 === 1;
+ return text.split(' ').map((word) => (
+ 0 ? 15 : 0,
+ }}
+ >
+ {word}
+
+ ));
+ })}
+
+ ))}
+ {description && (
+
+ {description}
+
+ )}
+
+
+ {withAuthors &&
+ parsedAuthors.slice(0, MAX_AUTHORS).map(({ name, github }) => {
+ return (
+
+
+
+
+
+
+ {name}
+
+
+ @{github}
+
+
+
+ );
+ })}
+
+
+
+ ),
+ {
+ width: 1280,
+ height: 640,
+ // debug: true,
+ fonts: [
+ {
+ name: 'IBM Plex Sans',
+ data: await fetch('https://fonts.cdnfonts.com/s/15449/IBMPlexSans-SemiBold.woff').then(
+ (a) => a.arrayBuffer(),
+ ),
+ weight: 600,
+ style: 'normal',
+ },
+ {
+ name: 'General Sans',
+ data: await fetch('https://fonts.cdnfonts.com/s/85793/GeneralSans-Semibold.woff').then(
+ (a) => a.arrayBuffer(),
+ ),
+ weight: 600,
+ style: 'normal',
+ },
+ {
+ name: 'General Sans',
+ data: await fetch('https://fonts.cdnfonts.com/s/85793/GeneralSans-Bold.woff').then((a) =>
+ a.arrayBuffer(),
+ ),
+ weight: 700,
+ style: 'normal',
+ },
+ ],
+ // Manage the caching
+ headers: {
+ // Cache control is already done by the package (https://github.com/ascorbic/og-edge/blob/d533ef878801d7f808eb004f254e782ec6ba1e3c/mod.ts#L233-L240)
+ 'Netlify-Vary': 'query',
+ },
+ },
+ );
+}
+export const config = {
+ cache: 'manual',
+ path: '/edge-functions/og-image',
+};
diff --git a/package.json b/package.json
index c8baca2b302388..ba58c416b28879 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@mui/monorepo",
- "version": "6.0.0-alpha.0",
+ "version": "6.0.0-alpha.2",
"private": true,
"scripts": {
"preinstall": "npx only-allow pnpm",
@@ -116,13 +116,13 @@
"@mui/utils": "workspace:^",
"@pigment-css/react": "workspace:^",
"@next/eslint-plugin-next": "^14.1.4",
- "@octokit/rest": "^20.0.2",
- "@playwright/test": "1.42.1",
+ "@octokit/rest": "^20.1.0",
+ "@playwright/test": "1.43.0",
"@types/enzyme": "^3.10.18",
"@types/fs-extra": "^11.0.4",
"@types/lodash": "^4.17.0",
"@types/mocha": "^10.0.6",
- "@types/node": "^18.19.28",
+ "@types/node": "^18.19.31",
"@types/prettier": "^2.7.3",
"@types/react": "^18.2.55",
"@types/yargs": "^17.0.32",
@@ -186,14 +186,14 @@
"stylelint-processor-styled-components": "^1.10.0",
"terser-webpack-plugin": "^5.3.10",
"tsup": "^8.0.2",
- "tsx": "^4.7.1",
- "typescript": "^5.4.3",
+ "tsx": "^4.7.2",
+ "typescript": "^5.4.4",
"webpack": "^5.90.3",
"webpack-bundle-analyzer": "^4.10.1",
"webpack-cli": "^5.1.4",
"yargs": "^17.7.2"
},
- "packageManager": "pnpm@8.15.5",
+ "packageManager": "pnpm@8.15.6",
"resolutions": {
"@babel/core": "^7.24.4",
"@babel/code-frame": "^7.24.2",
@@ -212,7 +212,7 @@
"@definitelytyped/header-parser": "^0.2.8",
"@definitelytyped/typescript-versions": "^0.1.1",
"@definitelytyped/utils": "^0.1.5",
- "@types/node": "^18.19.28",
+ "@types/node": "^18.19.31",
"@types/react": "18.2.55",
"@types/react-dom": "18.2.19",
"cross-fetch": "^4.0.0"
diff --git a/packages-internal/docs-utils/package.json b/packages-internal/docs-utils/package.json
index c0ac779a5cf3f5..a0bf7c1cc79fdc 100644
--- a/packages-internal/docs-utils/package.json
+++ b/packages-internal/docs-utils/package.json
@@ -1,6 +1,6 @@
{
"name": "@mui/internal-docs-utils",
- "version": "1.0.4",
+ "version": "1.0.5",
"author": "MUI Team",
"description": "Utilities for MUI docs. This is an internal package not meant for general use.",
"main": "./build/index.js",
@@ -22,7 +22,7 @@
},
"dependencies": {
"rimraf": "^5.0.5",
- "typescript": "^5.4.3"
+ "typescript": "^5.4.4"
},
"publishConfig": {
"access": "public"
diff --git a/packages-internal/scripts/package.json b/packages-internal/scripts/package.json
index 071b9ff4ea5557..d68d07740cbdec 100644
--- a/packages-internal/scripts/package.json
+++ b/packages-internal/scripts/package.json
@@ -1,6 +1,6 @@
{
"name": "@mui/internal-scripts",
- "version": "1.0.4",
+ "version": "1.0.5",
"author": "MUI Team",
"description": "Utilities supporting MUI libraries build and docs generation. This is an internal package not meant for general use.",
"main": "build/index.js",
@@ -33,7 +33,7 @@
"@mui/internal-docs-utils": "workspace:^",
"doctrine": "^3.0.0",
"lodash": "^4.17.21",
- "typescript": "^5.4.3",
+ "typescript": "^5.4.4",
"uuid": "^9.0.1"
},
"devDependencies": {
@@ -42,7 +42,7 @@
"@types/chai": "^4.3.14",
"@types/doctrine": "^0.0.9",
"@types/lodash": "^4.17.0",
- "@types/node": "^18.19.28",
+ "@types/node": "^18.19.31",
"@types/prettier": "^2.7.3",
"@types/react": "^18.2.55",
"@types/uuid": "^9.0.8",
diff --git a/packages/api-docs-builder-core/package.json b/packages/api-docs-builder-core/package.json
index a819ced75abe2d..a111b120ec6679 100644
--- a/packages/api-docs-builder-core/package.json
+++ b/packages/api-docs-builder-core/package.json
@@ -17,10 +17,10 @@
"devDependencies": {
"@types/chai": "^4.3.14",
"@types/mocha": "^10.0.6",
- "@types/node": "^18.19.28",
+ "@types/node": "^18.19.31",
"@types/sinon": "^10.0.20",
"chai": "^4.4.1",
"sinon": "^15.2.0",
- "typescript": "^5.4.3"
+ "typescript": "^5.4.4"
}
}
diff --git a/packages/api-docs-builder/ApiBuilders/HookApiBuilder.ts b/packages/api-docs-builder/ApiBuilders/HookApiBuilder.ts
index f02e5e6d9de344..2f48f39bc9d73f 100644
--- a/packages/api-docs-builder/ApiBuilders/HookApiBuilder.ts
+++ b/packages/api-docs-builder/ApiBuilders/HookApiBuilder.ts
@@ -482,7 +482,7 @@ const extractInfoFromType = async (
* @param filename The filename where its defined (to infer the package)
* @returns an array of import command
*/
-const getHookImports = (name: string, filename: string) => {
+const defaultGetHookImports = (name: string, filename: string) => {
const githubPath = toGitHubPath(filename);
const rootImportPath = githubPath.replace(
/\/packages\/mui(?:-(.+?))?\/src\/.*/,
@@ -552,6 +552,8 @@ export default async function generateHookApi(
if (annotatedDescriptionMatch !== null) {
reactApi.description = reactApi.description.slice(0, annotatedDescriptionMatch.index).trim();
}
+
+ const { getHookImports = defaultGetHookImports } = projectSettings;
reactApi.filename = filename;
reactApi.name = name;
reactApi.imports = getHookImports(name, filename);
diff --git a/packages/api-docs-builder/ProjectSettings.ts b/packages/api-docs-builder/ProjectSettings.ts
index 2ba937f0a4e9b2..3ae895666b561e 100644
--- a/packages/api-docs-builder/ProjectSettings.ts
+++ b/packages/api-docs-builder/ProjectSettings.ts
@@ -74,9 +74,13 @@ export interface ProjectSettings {
*/
importTranslationPagesDirectory?: string;
/**
- * Returns an array of import commands used for the API page header.
+ * Returns an array of import commands used for the component API page header.
*/
getComponentImports?: (name: string, filename: string) => string[];
+ /**
+ * Returns an array of import commands used for the hook API page header.
+ */
+ getHookImports?: (name: string, filename: string) => string[];
/**
* Settings to configure props definition tests.
*/
diff --git a/packages/api-docs-builder/package.json b/packages/api-docs-builder/package.json
index 05c60c84d1e3d6..835fefbb459dec 100644
--- a/packages/api-docs-builder/package.json
+++ b/packages/api-docs-builder/package.json
@@ -22,7 +22,7 @@
"react-docgen": "^5.4.3",
"recast": "^0.23.6",
"remark": "^13.0.0",
- "typescript": "^5.4.3",
+ "typescript": "^5.4.4",
"unist-util-visit": "^2.0.3"
},
"devDependencies": {
@@ -32,7 +32,7 @@
"@types/doctrine": "^0.0.9",
"@types/mdast": "4.0.3",
"@types/mocha": "^10.0.6",
- "@types/node": "^18.19.28",
+ "@types/node": "^18.19.31",
"@types/react-docgen": "workspace:*",
"@types/sinon": "^10.0.20",
"chai": "^4.4.1",
diff --git a/packages/eslint-plugin-material-ui/package.json b/packages/eslint-plugin-material-ui/package.json
index e23ad8e78db986..39cbd86a6a0709 100644
--- a/packages/eslint-plugin-material-ui/package.json
+++ b/packages/eslint-plugin-material-ui/package.json
@@ -8,7 +8,7 @@
"emoji-regex": "^10.3.0"
},
"devDependencies": {
- "@types/eslint": "^8.56.6",
+ "@types/eslint": "^8.56.7",
"@typescript-eslint/parser": "^6.21.0",
"eslint": "^8.57.0"
},
diff --git a/packages/markdown/package.json b/packages/markdown/package.json
index bd494d82ef487c..9d6cef39b4b224 100644
--- a/packages/markdown/package.json
+++ b/packages/markdown/package.json
@@ -1,6 +1,6 @@
{
"name": "@mui/internal-markdown",
- "version": "1.0.1",
+ "version": "1.0.2",
"author": "MUI Team",
"description": "MUI markdown parser. This is an internal package not meant for general use.",
"main": "./index.js",
diff --git a/packages/mui-babel-macros/package.json b/packages/mui-babel-macros/package.json
index 423de40c410a04..2cc41924b72c25 100644
--- a/packages/mui-babel-macros/package.json
+++ b/packages/mui-babel-macros/package.json
@@ -1,6 +1,6 @@
{
"name": "@mui/internal-babel-macros",
- "version": "1.0.1",
+ "version": "1.0.2",
"author": "MUI Team",
"description": "MUI Babel macros. This is an internal package not meant for general use.",
"main": "./MuiError.macro.js",
@@ -32,7 +32,7 @@
"@types/babel-plugin-macros": "^3.1.3",
"@types/chai": "^4.3.14",
"@types/mocha": "^10.0.6",
- "@types/node": "^18.19.28",
+ "@types/node": "^18.19.31",
"babel-plugin-tester": "^11.0.4",
"chai": "^4.4.1"
},
diff --git a/packages/mui-base/package.json b/packages/mui-base/package.json
index e9a512b10d2faa..51006729c675fa 100644
--- a/packages/mui-base/package.json
+++ b/packages/mui-base/package.json
@@ -1,6 +1,6 @@
{
"name": "@mui/base",
- "version": "5.0.0-beta.41",
+ "version": "5.0.0-beta.42",
"private": false,
"author": "MUI Team",
"description": "Base UI is a library of headless ('unstyled') React components and low-level hooks. You gain complete control over your app's CSS and accessibility features.",
diff --git a/packages/mui-codemod/README.md b/packages/mui-codemod/README.md
index 6f2d0529c45f45..20f6078ca6c131 100644
--- a/packages/mui-codemod/README.md
+++ b/packages/mui-codemod/README.md
@@ -948,6 +948,43 @@ npx @mui/codemod@next deprecations/pagination-item-classes
npx @mui/codemod@next deprecations/slider-props
```
+#### `toggle-button-group-classes`
+
+JS transforms:
+
+```diff
+ import { toggleButtonGroupClasses } from '@mui/material/ToggleButtonGroup';
+
+ MuiToggleButtonGroup: {
+ styleOverrides: {
+ root: {
+- [`& .${toggleButtonGroupClasses.groupedHorizontal}`]: {
++ [`&.${toggleButtonGroupClasses.horizontal} > .${toggleButtonGroupClasses.grouped}`]: {
+ color: 'red',
+ },
+- [`& .${toggleButtonGroupClasses.groupedVertical}`]: {
++ [`&.${toggleButtonGroupClasses.vertical} > .${toggleButtonGroupClasses.grouped}`]: {
+ color: 'red',
+ },
+ },
+ },
+ },
+```
+
+CSS transforms:
+
+```diff
+-.MuiToggleButtonGroup-root .MuiToggleButtonGroup-groupedHorizontal
++.MuiToggleButtonGroup-root.MuiToggleButtonGroup-horizontal > .MuiToggleButtonGroup-grouped
+-.MuiToggleButtonGroup-root .MuiToggleButtonGroup-groupedVertical
++.MuiToggleButtonGroup-root.MuiToggleButtonGroup-vertical > .MuiToggleButtonGroup-grouped
+ />
+```
+
+```bash
+npx @mui/codemod@latest deprecations/toggle-button-group-classes
+```
+
#### `step-label-props`
```diff
@@ -971,6 +1008,42 @@ npx @mui/codemod@latest deprecations/step-label-props
```
+#### `step-connector-classes`
+
+JS transforms:
+
+```diff
+ import { stepConnectorClasses } from '@mui/material/StepConnector';
+
+ MuiStepConnector: {
+ styleOverrides: {
+ root: {
+- [`& .${stepConnectorClasses.lineHorizontal}`]: {
++ [`&.${stepConnectorClasses.horizontal} > .${stepConnectorClasses.line}`]: {
+ color: 'red',
+ },
+- [`& .${stepConnectorClasses.lineVertical}`]: {
++ [`&.${stepConnectorClasses.vertical} > .${stepConnectorClasses.line}`]: {
+ color: 'red',
+ },
+ },
+ },
+ },
+```
+
+CSS transforms:
+
+```diff
+- .MuiStepConnector-lineHorizontal
++.MuiStepConnector-horizontal > .MuiStepConnector-line
+- .MuiStepConnector-lineVertical
++.MuiStepConnector-vertical > .MuiStepConnector-line
+```
+
+```bash
+npx @mui/codemod@next deprecations/step-connector-classes
+```
+
### v6.0.0
### v5.0.0
diff --git a/packages/mui-codemod/package.json b/packages/mui-codemod/package.json
index 479dfe56c50acd..da49eb953ddce7 100644
--- a/packages/mui-codemod/package.json
+++ b/packages/mui-codemod/package.json
@@ -1,6 +1,6 @@
{
"name": "@mui/codemod",
- "version": "6.0.0-alpha.0",
+ "version": "6.0.0-alpha.1",
"bin": "./codemod.js",
"private": false,
"author": "MUI Team",
@@ -33,7 +33,7 @@
"@babel/core": "^7.24.4",
"@babel/runtime": "^7.24.4",
"@babel/traverse": "^7.24.1",
- "jscodeshift": "^0.13.1",
+ "jscodeshift": "^0.15.2",
"jscodeshift-add-imports": "^1.0.10",
"postcss": "^8.4.38",
"postcss-cli": "^8.3.1",
@@ -41,7 +41,7 @@
},
"devDependencies": {
"@types/chai": "^4.3.14",
- "@types/jscodeshift": "0.11.5",
+ "@types/jscodeshift": "0.11.11",
"chai": "^4.4.1"
},
"sideEffects": false,
diff --git a/packages/mui-codemod/src/deprecations/accordion-props/accordion-props.js b/packages/mui-codemod/src/deprecations/accordion-props/accordion-props.js
index dddc01c2288104..386de541096490 100644
--- a/packages/mui-codemod/src/deprecations/accordion-props/accordion-props.js
+++ b/packages/mui-codemod/src/deprecations/accordion-props/accordion-props.js
@@ -1,6 +1,5 @@
-import findComponentJSX from '../../util/findComponentJSX';
-import assignObject from '../../util/assignObject';
-import appendAttribute from '../../util/appendAttribute';
+import movePropIntoSlots from '../utils/movePropIntoSlots';
+import movePropIntoSlotProps from '../utils/movePropIntoSlotProps';
/**
* @param {import('jscodeshift').FileInfo} file
@@ -11,84 +10,18 @@ export default function transformer(file, api, options) {
const root = j(file.source);
const printOptions = options.printOptions;
- findComponentJSX(j, { root, componentName: 'Accordion' }, (elementPath) => {
- let index = elementPath.node.openingElement.attributes.findIndex(
- (attr) => attr.type === 'JSXAttribute' && attr.name.name === 'TransitionComponent',
- );
- if (index !== -1) {
- const removed = elementPath.node.openingElement.attributes.splice(index, 1);
- let hasNode = false;
- elementPath.node.openingElement.attributes.forEach((attr) => {
- if (attr.name?.name === 'slots') {
- hasNode = true;
- assignObject(j, {
- target: attr,
- key: 'transition',
- expression: removed[0].value.expression,
- });
- }
- });
- if (!hasNode) {
- appendAttribute(j, {
- target: elementPath.node,
- attributeName: 'slots',
- expression: j.objectExpression([
- j.objectProperty(j.identifier('transition'), removed[0].value.expression),
- ]),
- });
- }
- }
-
- index = elementPath.node.openingElement.attributes.findIndex(
- (attr) => attr.type === 'JSXAttribute' && attr.name.name === 'TransitionProps',
- );
- if (index !== -1) {
- const removed = elementPath.node.openingElement.attributes.splice(index, 1);
- let hasNode = false;
- elementPath.node.openingElement.attributes.forEach((attr) => {
- if (attr.name?.name === 'slotProps') {
- hasNode = true;
- assignObject(j, {
- target: attr,
- key: 'transition',
- expression: removed[0].value.expression,
- });
- }
- });
- if (!hasNode) {
- appendAttribute(j, {
- target: elementPath.node,
- attributeName: 'slotProps',
- expression: j.objectExpression([
- j.objectProperty(j.identifier('transition'), removed[0].value.expression),
- ]),
- });
- }
- }
- });
-
- root.find(j.ObjectProperty, { key: { name: 'TransitionComponent' } }).forEach((path) => {
- if (path.parent?.parent?.parent?.parent?.node.key?.name === 'MuiAccordion') {
- path.replace(
- j.property(
- 'init',
- j.identifier('slots'),
- j.objectExpression([j.objectProperty(j.identifier('transition'), path.node.value)]),
- ),
- );
- }
+ movePropIntoSlots(j, {
+ root,
+ componentName: 'Accordion',
+ propName: 'TransitionComponent',
+ slotName: 'transition',
});
- root.find(j.ObjectProperty, { key: { name: 'TransitionProps' } }).forEach((path) => {
- if (path.parent?.parent?.parent?.parent?.node.key?.name === 'MuiAccordion') {
- path.replace(
- j.property(
- 'init',
- j.identifier('slotProps'),
- j.objectExpression([j.objectProperty(j.identifier('transition'), path.node.value)]),
- ),
- );
- }
+ movePropIntoSlotProps(j, {
+ root,
+ componentName: 'Accordion',
+ propName: 'TransitionProps',
+ slotName: 'transition',
});
return root.toSource(printOptions);
diff --git a/packages/mui-codemod/src/deprecations/accordion-props/test-cases/actual.js b/packages/mui-codemod/src/deprecations/accordion-props/test-cases/actual.js
index 20ac7fa81a3bb8..9f6a4672656efd 100644
--- a/packages/mui-codemod/src/deprecations/accordion-props/test-cases/actual.js
+++ b/packages/mui-codemod/src/deprecations/accordion-props/test-cases/actual.js
@@ -23,6 +23,8 @@ import { Accordion as MyAccordion } from '@mui/material';
...outerSlotProps,
}}
/>;
+ ;
+ ;
// should skip non MUI components
;
+ ;
+ ;
// should skip non MUI components
{
- const index = elementPath.node.openingElement.attributes.findIndex(
- (attr) => attr.type === 'JSXAttribute' && attr.name.name === 'imgProps',
- );
- if (index !== -1) {
- const removed = elementPath.node.openingElement.attributes.splice(index, 1);
- let hasNode = false;
- elementPath.node.openingElement.attributes.forEach((attr) => {
- if (attr.name?.name === 'slotProps') {
- hasNode = true;
- assignObject(j, {
- target: attr,
- key: 'img',
- expression: removed[0].value.expression,
- });
- }
- });
- if (!hasNode) {
- appendAttribute(j, {
- target: elementPath.node,
- attributeName: 'slotProps',
- expression: j.objectExpression([
- j.objectProperty(j.identifier('img'), removed[0].value.expression),
- ]),
- });
- }
- }
- });
-
- root.find(j.ObjectProperty, { key: { name: 'imgProps' } }).forEach((path) => {
- if (path.parent?.parent?.parent?.parent?.node.key?.name === 'MuiAvatar') {
- path.replace(
- j.property(
- 'init',
- j.identifier('slotProps'),
- j.objectExpression([j.objectProperty(j.identifier('img'), path.node.value)]),
- ),
- );
- }
+ movePropIntoSlotProps(j, {
+ root,
+ componentName: 'Avatar',
+ propName: 'imgProps',
+ slotName: 'img',
});
return root.toSource(printOptions);
diff --git a/packages/mui-codemod/src/deprecations/avatar-props/test-cases/actual.js b/packages/mui-codemod/src/deprecations/avatar-props/test-cases/actual.js
index e553aae667fd1a..541efaabed3e79 100644
--- a/packages/mui-codemod/src/deprecations/avatar-props/test-cases/actual.js
+++ b/packages/mui-codemod/src/deprecations/avatar-props/test-cases/actual.js
@@ -13,6 +13,16 @@ import { Avatar as MyAvatar } from '@mui/material';
onLoad: () => {},
}}
/>;
+ {},
+ }}
+ slotProps={{
+ img: {
+ onError: () => {},
+ },
+ }}
+/>;
// should skip non MUI components
;
+ {},
+ },
+
+ ...{
+ onError: () => {},
+ }
+ },
+ }} />;
// should skip non MUI components
{},
+ },
+ slotProps: {
+ img: {
+ onError: () => {},
+ },
+ },
+ },
+ },
+});
diff --git a/packages/mui-codemod/src/deprecations/avatar-props/test-cases/theme.expected.js b/packages/mui-codemod/src/deprecations/avatar-props/test-cases/theme.expected.js
index a4ac9d4cf5fccb..f1b14e5af41789 100644
--- a/packages/mui-codemod/src/deprecations/avatar-props/test-cases/theme.expected.js
+++ b/packages/mui-codemod/src/deprecations/avatar-props/test-cases/theme.expected.js
@@ -6,6 +6,24 @@ fn({
onError: () => {},
onLoad: () => {},
}
+ },
+ },
+ },
+});
+
+fn({
+ MuiAvatar: {
+ defaultProps: {
+ slotProps: {
+ img: {
+ ...{
+ onLoad: () => {},
+ },
+
+ ...{
+ onError: () => {},
+ }
+ },
}
},
},
diff --git a/packages/mui-codemod/src/deprecations/backdrop-props/backdrop-props.js b/packages/mui-codemod/src/deprecations/backdrop-props/backdrop-props.js
index c444dfc97b1004..d462ae49ed5b1f 100644
--- a/packages/mui-codemod/src/deprecations/backdrop-props/backdrop-props.js
+++ b/packages/mui-codemod/src/deprecations/backdrop-props/backdrop-props.js
@@ -1,6 +1,4 @@
-import findComponentJSX from '../../util/findComponentJSX';
-import assignObject from '../../util/assignObject';
-import appendAttribute from '../../util/appendAttribute';
+import movePropIntoSlots from '../utils/movePropIntoSlots';
/**
* @param {import('jscodeshift').FileInfo} file
@@ -11,73 +9,11 @@ export default function transformer(file, api, options) {
const root = j(file.source);
const printOptions = options.printOptions;
- findComponentJSX(j, { root, componentName: 'Backdrop' }, (elementPath) => {
- const index = elementPath.node.openingElement.attributes.findIndex(
- (attr) => attr.type === 'JSXAttribute' && attr.name.name === 'TransitionComponent',
- );
-
- if (index !== -1) {
- const removed = elementPath.node.openingElement.attributes.splice(index, 1);
- let hasNode = false;
- elementPath.node.openingElement.attributes.forEach((attr) => {
- if (attr.name?.name === 'slots') {
- hasNode = true;
- assignObject(j, {
- target: attr,
- key: 'transition',
- expression: removed[0].value.expression,
- });
- }
- });
-
- if (!hasNode) {
- appendAttribute(j, {
- target: elementPath.node,
- attributeName: 'slots',
- expression: j.objectExpression([
- j.objectProperty(j.identifier('transition'), removed[0].value.expression),
- ]),
- });
- }
- }
- });
-
- root.find(j.ObjectProperty, { key: { name: 'TransitionComponent' } }).forEach((path) => {
- if (path.parent?.parent?.parent?.parent?.node.key?.name === 'MuiBackdrop') {
- const { properties: defaultPropsProperties } = path.parent.value;
-
- const existingSlots = defaultPropsProperties.find((prop) => prop.key.name === 'slots');
- const slots = existingSlots
- ? existingSlots.value.properties.reduce((acc, prop) => {
- return { ...acc, [prop.key.name]: prop.value };
- }, {})
- : {};
-
- const transitionComponent =
- defaultPropsProperties.find((prop) => prop.key.name === 'TransitionComponent') ?? {};
-
- const updatedSlots = j.objectExpression(
- Object.entries({
- transition: transitionComponent?.value,
- ...slots,
- }).map(([slot, value]) => {
- return j.objectProperty(j.identifier(slot), value);
- }),
- );
-
- if (existingSlots) {
- existingSlots.value = updatedSlots;
- path.prune();
- } else {
- path.replace(
- j.property(
- 'init',
- j.identifier('slots'),
- j.objectExpression([j.objectProperty(j.identifier('transition'), path.node.value)]),
- ),
- );
- }
- }
+ movePropIntoSlots(j, {
+ root,
+ componentName: 'Backdrop',
+ propName: 'TransitionComponent',
+ slotName: 'transition',
});
return root.toSource(printOptions);
diff --git a/packages/mui-codemod/src/deprecations/backdrop-props/backdrop-props.test.js b/packages/mui-codemod/src/deprecations/backdrop-props/backdrop-props.test.js
index 4d825b0076014a..13949c52396b08 100644
--- a/packages/mui-codemod/src/deprecations/backdrop-props/backdrop-props.test.js
+++ b/packages/mui-codemod/src/deprecations/backdrop-props/backdrop-props.test.js
@@ -31,7 +31,7 @@ describe('@mui/codemod', () => {
const actual = transform(
{ source: read('./test-cases/theme.actual.js') },
{ jscodeshift },
- { printOptions: { trailingComma: true } },
+ {},
);
const expected = read('./test-cases/theme.expected.js');
diff --git a/packages/mui-codemod/src/deprecations/backdrop-props/test-cases/actual.js b/packages/mui-codemod/src/deprecations/backdrop-props/test-cases/actual.js
index 8cca730fda99e4..00edff06a072ce 100644
--- a/packages/mui-codemod/src/deprecations/backdrop-props/test-cases/actual.js
+++ b/packages/mui-codemod/src/deprecations/backdrop-props/test-cases/actual.js
@@ -8,17 +8,18 @@ import { Backdrop as MyBackdrop } from '@mui/material';
slots={{
root: 'div',
}}
- slotProps={{
- root: { className: 'foo' },
- }}
/>;
;
+ ;
// should skip non MUI components
diff --git a/packages/mui-codemod/src/deprecations/backdrop-props/test-cases/expected.js b/packages/mui-codemod/src/deprecations/backdrop-props/test-cases/expected.js
index ca22506cedab88..60b85e0d7b2556 100644
--- a/packages/mui-codemod/src/deprecations/backdrop-props/test-cases/expected.js
+++ b/packages/mui-codemod/src/deprecations/backdrop-props/test-cases/expected.js
@@ -11,17 +11,16 @@ import { Backdrop as MyBackdrop } from '@mui/material';
slots={{
root: 'div',
transition: CustomTransition
- }}
- slotProps={{
- root: { className: 'foo' },
}} />;
;
+ ;
// should skip non MUI components
;
diff --git a/packages/mui-codemod/src/deprecations/backdrop-props/test-cases/theme.actual.js b/packages/mui-codemod/src/deprecations/backdrop-props/test-cases/theme.actual.js
index a8e62bd3583647..8488ea0176baaa 100644
--- a/packages/mui-codemod/src/deprecations/backdrop-props/test-cases/theme.actual.js
+++ b/packages/mui-codemod/src/deprecations/backdrop-props/test-cases/theme.actual.js
@@ -16,3 +16,15 @@ fn({
},
},
});
+
+fn({
+ MuiBackdrop: {
+ defaultProps: {
+ TransitionComponent: ComponentTransition,
+ slots: {
+ root: 'div',
+ transition: SlotTransition
+ },
+ },
+ },
+});
diff --git a/packages/mui-codemod/src/deprecations/backdrop-props/test-cases/theme.expected.js b/packages/mui-codemod/src/deprecations/backdrop-props/test-cases/theme.expected.js
index ccc52bc558129d..46e9175ad5fdab 100644
--- a/packages/mui-codemod/src/deprecations/backdrop-props/test-cases/theme.expected.js
+++ b/packages/mui-codemod/src/deprecations/backdrop-props/test-cases/theme.expected.js
@@ -2,8 +2,8 @@ fn({
MuiBackdrop: {
defaultProps: {
slots: {
- transition: CustomTransition,
- },
+ transition: CustomTransition
+ }
},
},
});
@@ -12,9 +12,20 @@ fn({
MuiBackdrop: {
defaultProps: {
slots: {
- transition: CustomTransition,
root: 'div',
- },
+ transition: CustomTransition
+ }
+ },
+ },
+});
+
+fn({
+ MuiBackdrop: {
+ defaultProps: {
+ slots: {
+ root: 'div',
+ transition: SlotTransition
+ }
},
},
});
diff --git a/packages/mui-codemod/src/deprecations/step-connector-classes/index.js b/packages/mui-codemod/src/deprecations/step-connector-classes/index.js
new file mode 100644
index 00000000000000..c4b340dac5ae6d
--- /dev/null
+++ b/packages/mui-codemod/src/deprecations/step-connector-classes/index.js
@@ -0,0 +1 @@
+export { default } from './step-connector-classes';
diff --git a/packages/mui-codemod/src/deprecations/step-connector-classes/postcss-plugin.js b/packages/mui-codemod/src/deprecations/step-connector-classes/postcss-plugin.js
new file mode 100644
index 00000000000000..71e512e0678a8c
--- /dev/null
+++ b/packages/mui-codemod/src/deprecations/step-connector-classes/postcss-plugin.js
@@ -0,0 +1,33 @@
+const classes = [
+ {
+ deprecatedClass: ' .MuiStepConnector-lineHorizontal',
+ replacementSelector: '.MuiStepConnector-horizontal > .MuiStepConnector-line',
+ },
+ {
+ deprecatedClass: ' .MuiStepConnector-lineVertical',
+ replacementSelector: '.MuiStepConnector-vertical > .MuiStepConnector-line',
+ },
+];
+
+const plugin = () => {
+ return {
+ postcssPlugin: `Replace deperecated StepConnector classes with new classes`,
+ Rule(rule) {
+ const { selector } = rule;
+
+ classes.forEach(({ deprecatedClass, replacementSelector }) => {
+ const selectorRegex = new RegExp(`${deprecatedClass}$`);
+
+ if (selector.match(selectorRegex)) {
+ rule.selector = selector.replace(selectorRegex, replacementSelector);
+ }
+ });
+ },
+ };
+};
+plugin.postcss = true;
+
+module.exports = {
+ plugin,
+ classes,
+};
diff --git a/packages/mui-codemod/src/deprecations/step-connector-classes/postcss.config.js b/packages/mui-codemod/src/deprecations/step-connector-classes/postcss.config.js
new file mode 100644
index 00000000000000..23bebc1125be6e
--- /dev/null
+++ b/packages/mui-codemod/src/deprecations/step-connector-classes/postcss.config.js
@@ -0,0 +1,5 @@
+const { plugin } = require('./postcss-plugin');
+
+module.exports = {
+ plugins: [plugin],
+};
diff --git a/packages/mui-codemod/src/deprecations/step-connector-classes/step-connector-classes.js b/packages/mui-codemod/src/deprecations/step-connector-classes/step-connector-classes.js
new file mode 100644
index 00000000000000..00f08a6c9b49f9
--- /dev/null
+++ b/packages/mui-codemod/src/deprecations/step-connector-classes/step-connector-classes.js
@@ -0,0 +1,127 @@
+import { classes } from './postcss-plugin';
+
+/**
+ * @param {import('jscodeshift').FileInfo} file
+ * @param {import('jscodeshift').API} api
+ */
+export default function transformer(file, api, options) {
+ const j = api.jscodeshift;
+ const root = j(file.source);
+ const printOptions = options.printOptions;
+ classes.forEach(({ deprecatedClass, replacementSelector }) => {
+ const replacementSelectorPrefix = '&';
+ root
+ .find(j.ImportDeclaration)
+ .filter((path) => path.node.source.value.match(/^@mui\/material\/StepConnector$/))
+ .forEach((path) => {
+ path.node.specifiers.forEach((specifier) => {
+ if (
+ specifier.type === 'ImportSpecifier' &&
+ specifier.imported.name === 'stepConnectorClasses'
+ ) {
+ const deprecatedAtomicClass = deprecatedClass.replace(
+ `${deprecatedClass.split('-')[0]}-`,
+ '',
+ );
+ root
+ .find(j.MemberExpression, {
+ object: { name: specifier.local.name },
+ property: { name: deprecatedAtomicClass },
+ })
+ .forEach((memberExpression) => {
+ const parent = memberExpression.parentPath.parentPath.value;
+ if (parent.type === j.TemplateLiteral.name) {
+ const memberExpressionIndex = parent.expressions.findIndex(
+ (expression) => expression === memberExpression.value,
+ );
+ const precedingTemplateElement = parent.quasis[memberExpressionIndex];
+ const atomicClasses = replacementSelector
+ .replaceAll('MuiStepConnector-', '')
+ .replaceAll(replacementSelectorPrefix, '')
+ .replaceAll(' > ', '')
+ .split('.')
+ .filter(Boolean);
+
+ if (
+ precedingTemplateElement.value.raw.endsWith(
+ deprecatedClass.startsWith(' ')
+ ? `${replacementSelectorPrefix} .`
+ : `${replacementSelectorPrefix}.`,
+ )
+ ) {
+ const atomicClassesArgs = [
+ memberExpressionIndex,
+ 1,
+ ...atomicClasses.map((atomicClass) =>
+ j.memberExpression(
+ memberExpression.value.object,
+ j.identifier(atomicClass),
+ ),
+ ),
+ ];
+ parent.expressions.splice(...atomicClassesArgs);
+
+ if (replacementSelector.includes(' > ')) {
+ const quasisArgs = [
+ memberExpressionIndex,
+ 1,
+ j.templateElement(
+ {
+ raw: precedingTemplateElement.value.raw.replace(' ', ''),
+ cooked: precedingTemplateElement.value.cooked.replace(' ', ''),
+ },
+ false,
+ ),
+ j.templateElement({ raw: ' > .', cooked: ' > .' }, false),
+ ];
+
+ if (atomicClasses.length === 3) {
+ quasisArgs.splice(
+ 3,
+ 0,
+ j.templateElement({ raw: '.', cooked: '.' }, false),
+ );
+ }
+
+ parent.quasis.splice(...quasisArgs);
+ } else {
+ parent.quasis.splice(
+ memberExpressionIndex,
+ 1,
+ j.templateElement(
+ {
+ raw: precedingTemplateElement.value.raw,
+ cooked: precedingTemplateElement.value.cooked,
+ },
+ false,
+ ),
+
+ j.templateElement({ raw: '.', cooked: '.' }, false),
+ );
+ }
+ }
+ }
+ });
+ }
+ });
+ });
+
+ const selectorRegex = new RegExp(`${replacementSelectorPrefix}${deprecatedClass}$`);
+ root
+ .find(
+ j.Literal,
+ (literal) => typeof literal.value === 'string' && literal.value.match(selectorRegex),
+ )
+ .forEach((path) => {
+ path.replace(
+ j.literal(
+ path.value.value.replace(
+ selectorRegex,
+ `${replacementSelectorPrefix}${replacementSelector}`,
+ ),
+ ),
+ );
+ });
+ });
+ return root.toSource(printOptions);
+}
diff --git a/packages/mui-codemod/src/deprecations/step-connector-classes/step-connector-classes.test.js b/packages/mui-codemod/src/deprecations/step-connector-classes/step-connector-classes.test.js
new file mode 100644
index 00000000000000..ea3ace7ef9d7e4
--- /dev/null
+++ b/packages/mui-codemod/src/deprecations/step-connector-classes/step-connector-classes.test.js
@@ -0,0 +1,78 @@
+import path from 'path';
+import { expect } from 'chai';
+import postcss from 'postcss';
+import { jscodeshift } from '../../../testUtils';
+import jsTransform from './step-connector-classes';
+import { plugin as postcssPlugin } from './postcss-plugin';
+import readFile from '../../util/readFile';
+
+function read(fileName) {
+ return readFile(path.join(__dirname, fileName));
+}
+
+const postcssProcessor = postcss([postcssPlugin]);
+
+describe('@mui/codemod', () => {
+ describe('deprecations', () => {
+ describe('step-connector-classes', () => {
+ describe('js-transform', () => {
+ it('transforms props as needed', () => {
+ const actual = jsTransform(
+ { source: read('./test-cases/actual.js') },
+ { jscodeshift },
+ { printOptions: { quote: 'double', trailingComma: true } },
+ );
+
+ const expected = read('./test-cases/expected.js');
+ expect(actual).to.equal(expected, 'The transformed version should be correct');
+ });
+
+ it('should be idempotent', () => {
+ const actual = jsTransform(
+ { source: read('./test-cases/expected.js') },
+ { jscodeshift },
+ {},
+ );
+
+ const expected = read('./test-cases/expected.js');
+ expect(actual).to.equal(expected, 'The transformed version should be correct');
+ });
+ });
+
+ describe('css-transform', () => {
+ it('transforms classes as needed', async () => {
+ const actual = await postcssProcessor.process(read('./test-cases/actual.css'), {
+ from: undefined,
+ });
+
+ const expected = read('./test-cases/expected.css');
+ expect(actual.css).to.equal(expected, 'The transformed version should be correct');
+ });
+
+ it('should be idempotent', async () => {
+ const actual = await postcssProcessor.process(read('./test-cases/expected.css'), {
+ from: undefined,
+ });
+
+ const expected = read('./test-cases/expected.css');
+ expect(actual.css).to.equal(expected, 'The transformed version should be correct');
+ });
+ });
+
+ describe('test-cases', () => {
+ it('should not be the same', () => {
+ const actualJS = read('./test-cases/actual.js');
+ const expectedJS = read('./test-cases/expected.js');
+ expect(actualJS).not.to.equal(expectedJS, 'The actual and expected should be different');
+
+ const actualCSS = read('./test-cases/actual.css');
+ const expectedCSS = read('./test-cases/expected.css');
+ expect(actualCSS).not.to.equal(
+ expectedCSS,
+ 'The actual and expected should be different',
+ );
+ });
+ });
+ });
+ });
+});
diff --git a/packages/mui-codemod/src/deprecations/step-connector-classes/test-cases/actual.css b/packages/mui-codemod/src/deprecations/step-connector-classes/test-cases/actual.css
new file mode 100644
index 00000000000000..a6803c62d2dd52
--- /dev/null
+++ b/packages/mui-codemod/src/deprecations/step-connector-classes/test-cases/actual.css
@@ -0,0 +1,7 @@
+.MuiStepConnector-root .MuiStepConnector-lineHorizontal {
+ color: red;
+}
+
+.MuiStepConnector-root .MuiStepConnector-lineVertical {
+ color: red;
+}
diff --git a/packages/mui-codemod/src/deprecations/step-connector-classes/test-cases/actual.js b/packages/mui-codemod/src/deprecations/step-connector-classes/test-cases/actual.js
new file mode 100644
index 00000000000000..2a3d38d0081cbf
--- /dev/null
+++ b/packages/mui-codemod/src/deprecations/step-connector-classes/test-cases/actual.js
@@ -0,0 +1,6 @@
+import { stepConnectorClasses } from '@mui/material/StepConnector';
+
+('& .MuiStepConnector-lineHorizontal');
+('& .MuiStepConnector-lineVertical');
+`& .${stepConnectorClasses.lineHorizontal}`;
+`& .${stepConnectorClasses.lineVertical}`;
diff --git a/packages/mui-codemod/src/deprecations/step-connector-classes/test-cases/expected.css b/packages/mui-codemod/src/deprecations/step-connector-classes/test-cases/expected.css
new file mode 100644
index 00000000000000..e57ec5b0540422
--- /dev/null
+++ b/packages/mui-codemod/src/deprecations/step-connector-classes/test-cases/expected.css
@@ -0,0 +1,7 @@
+.MuiStepConnector-root.MuiStepConnector-horizontal > .MuiStepConnector-line {
+ color: red;
+}
+
+.MuiStepConnector-root.MuiStepConnector-vertical > .MuiStepConnector-line {
+ color: red;
+}
diff --git a/packages/mui-codemod/src/deprecations/step-connector-classes/test-cases/expected.js b/packages/mui-codemod/src/deprecations/step-connector-classes/test-cases/expected.js
new file mode 100644
index 00000000000000..5779ddf485b802
--- /dev/null
+++ b/packages/mui-codemod/src/deprecations/step-connector-classes/test-cases/expected.js
@@ -0,0 +1,6 @@
+import { stepConnectorClasses } from '@mui/material/StepConnector';
+
+("&.MuiStepConnector-horizontal > .MuiStepConnector-line");
+("&.MuiStepConnector-vertical > .MuiStepConnector-line");
+`&.${stepConnectorClasses.horizontal} > .${stepConnectorClasses.line}`;
+`&.${stepConnectorClasses.vertical} > .${stepConnectorClasses.line}`;
diff --git a/packages/mui-codemod/src/deprecations/toggle-button-group-classes/index.js b/packages/mui-codemod/src/deprecations/toggle-button-group-classes/index.js
new file mode 100644
index 00000000000000..652d00fe9b9c62
--- /dev/null
+++ b/packages/mui-codemod/src/deprecations/toggle-button-group-classes/index.js
@@ -0,0 +1 @@
+export { default } from './toggle-button-group-classes';
diff --git a/packages/mui-codemod/src/deprecations/toggle-button-group-classes/postcss-plugin.js b/packages/mui-codemod/src/deprecations/toggle-button-group-classes/postcss-plugin.js
new file mode 100644
index 00000000000000..fc59a4a1c8b29a
--- /dev/null
+++ b/packages/mui-codemod/src/deprecations/toggle-button-group-classes/postcss-plugin.js
@@ -0,0 +1,33 @@
+const classes = [
+ {
+ deprecatedClass: ' .MuiToggleButtonGroup-groupedHorizontal',
+ replacementSelector: '.MuiToggleButtonGroup-horizontal > .MuiToggleButtonGroup-grouped',
+ },
+ {
+ deprecatedClass: ' .MuiToggleButtonGroup-groupedVertical',
+ replacementSelector: '.MuiToggleButtonGroup-vertical > .MuiToggleButtonGroup-grouped',
+ },
+];
+
+const plugin = () => {
+ return {
+ postcssPlugin: `Replace deperecated ToggleButtonGroup classes with new classes`,
+ Rule(rule) {
+ const { selector } = rule;
+
+ classes.forEach(({ deprecatedClass, replacementSelector }) => {
+ const selectorRegex = new RegExp(`${deprecatedClass}$`);
+
+ if (selector.match(selectorRegex)) {
+ rule.selector = selector.replace(selectorRegex, replacementSelector);
+ }
+ });
+ },
+ };
+};
+plugin.postcss = true;
+
+module.exports = {
+ plugin,
+ classes,
+};
diff --git a/packages/mui-codemod/src/deprecations/toggle-button-group-classes/postcss.config.js b/packages/mui-codemod/src/deprecations/toggle-button-group-classes/postcss.config.js
new file mode 100644
index 00000000000000..23bebc1125be6e
--- /dev/null
+++ b/packages/mui-codemod/src/deprecations/toggle-button-group-classes/postcss.config.js
@@ -0,0 +1,5 @@
+const { plugin } = require('./postcss-plugin');
+
+module.exports = {
+ plugins: [plugin],
+};
diff --git a/packages/mui-codemod/src/deprecations/toggle-button-group-classes/test-cases/actual.css b/packages/mui-codemod/src/deprecations/toggle-button-group-classes/test-cases/actual.css
new file mode 100644
index 00000000000000..2e856c77e5cb7b
--- /dev/null
+++ b/packages/mui-codemod/src/deprecations/toggle-button-group-classes/test-cases/actual.css
@@ -0,0 +1,7 @@
+.MuiToggleButtonGroup-root .MuiToggleButtonGroup-groupedHorizontal {
+ color: red;
+}
+
+.MuiToggleButtonGroup-root .MuiToggleButtonGroup-groupedVertical {
+ color: red;
+}
diff --git a/packages/mui-codemod/src/deprecations/toggle-button-group-classes/test-cases/actual.js b/packages/mui-codemod/src/deprecations/toggle-button-group-classes/test-cases/actual.js
new file mode 100644
index 00000000000000..eed30d616d7210
--- /dev/null
+++ b/packages/mui-codemod/src/deprecations/toggle-button-group-classes/test-cases/actual.js
@@ -0,0 +1,6 @@
+import { toggleButtonGroupClasses } from '@mui/material/ToggleButtonGroup';
+
+('& .MuiToggleButtonGroup-groupedHorizontal');
+('& .MuiToggleButtonGroup-groupedVertical');
+`& .${toggleButtonGroupClasses.groupedHorizontal}`;
+`& .${toggleButtonGroupClasses.groupedVertical}`;
diff --git a/packages/mui-codemod/src/deprecations/toggle-button-group-classes/test-cases/expected.css b/packages/mui-codemod/src/deprecations/toggle-button-group-classes/test-cases/expected.css
new file mode 100644
index 00000000000000..0a1721efbc7eec
--- /dev/null
+++ b/packages/mui-codemod/src/deprecations/toggle-button-group-classes/test-cases/expected.css
@@ -0,0 +1,7 @@
+.MuiToggleButtonGroup-root.MuiToggleButtonGroup-horizontal > .MuiToggleButtonGroup-grouped {
+ color: red;
+}
+
+.MuiToggleButtonGroup-root.MuiToggleButtonGroup-vertical > .MuiToggleButtonGroup-grouped {
+ color: red;
+}
diff --git a/packages/mui-codemod/src/deprecations/toggle-button-group-classes/test-cases/expected.js b/packages/mui-codemod/src/deprecations/toggle-button-group-classes/test-cases/expected.js
new file mode 100644
index 00000000000000..b2030174207157
--- /dev/null
+++ b/packages/mui-codemod/src/deprecations/toggle-button-group-classes/test-cases/expected.js
@@ -0,0 +1,6 @@
+import { toggleButtonGroupClasses } from '@mui/material/ToggleButtonGroup';
+
+("&.MuiToggleButtonGroup-horizontal > .MuiToggleButtonGroup-grouped");
+("&.MuiToggleButtonGroup-vertical > .MuiToggleButtonGroup-grouped");
+`&.${toggleButtonGroupClasses.horizontal} > .${toggleButtonGroupClasses.grouped}`;
+`&.${toggleButtonGroupClasses.vertical} > .${toggleButtonGroupClasses.grouped}`;
diff --git a/packages/mui-codemod/src/deprecations/toggle-button-group-classes/toggle-button-group-classes.js b/packages/mui-codemod/src/deprecations/toggle-button-group-classes/toggle-button-group-classes.js
new file mode 100644
index 00000000000000..60bec34f754946
--- /dev/null
+++ b/packages/mui-codemod/src/deprecations/toggle-button-group-classes/toggle-button-group-classes.js
@@ -0,0 +1,127 @@
+import { classes } from './postcss-plugin';
+
+/**
+ * @param {import('jscodeshift').FileInfo} file
+ * @param {import('jscodeshift').API} api
+ */
+export default function transformer(file, api, options) {
+ const j = api.jscodeshift;
+ const root = j(file.source);
+ const printOptions = options.printOptions;
+ classes.forEach(({ deprecatedClass, replacementSelector }) => {
+ const replacementSelectorPrefix = '&';
+ root
+ .find(j.ImportDeclaration)
+ .filter((path) => path.node.source.value.match(/^@mui\/material\/ToggleButtonGroup$/))
+ .forEach((path) => {
+ path.node.specifiers.forEach((specifier) => {
+ if (
+ specifier.type === 'ImportSpecifier' &&
+ specifier.imported.name === 'toggleButtonGroupClasses'
+ ) {
+ const deprecatedAtomicClass = deprecatedClass.replace(
+ `${deprecatedClass.split('-')[0]}-`,
+ '',
+ );
+ root
+ .find(j.MemberExpression, {
+ object: { name: specifier.local.name },
+ property: { name: deprecatedAtomicClass },
+ })
+ .forEach((memberExpression) => {
+ const parent = memberExpression.parentPath.parentPath.value;
+ if (parent.type === j.TemplateLiteral.name) {
+ const memberExpressionIndex = parent.expressions.findIndex(
+ (expression) => expression === memberExpression.value,
+ );
+ const precedingTemplateElement = parent.quasis[memberExpressionIndex];
+ const atomicClasses = replacementSelector
+ .replaceAll('MuiToggleButtonGroup-', '')
+ .replaceAll(replacementSelectorPrefix, '')
+ .replaceAll(' > ', '')
+ .split('.')
+ .filter(Boolean);
+
+ if (
+ precedingTemplateElement.value.raw.endsWith(
+ deprecatedClass.startsWith(' ')
+ ? `${replacementSelectorPrefix} .`
+ : `${replacementSelectorPrefix}.`,
+ )
+ ) {
+ const atomicClassesArgs = [
+ memberExpressionIndex,
+ 1,
+ ...atomicClasses.map((atomicClass) =>
+ j.memberExpression(
+ memberExpression.value.object,
+ j.identifier(atomicClass),
+ ),
+ ),
+ ];
+ parent.expressions.splice(...atomicClassesArgs);
+
+ if (replacementSelector.includes(' > ')) {
+ const quasisArgs = [
+ memberExpressionIndex,
+ 1,
+ j.templateElement(
+ {
+ raw: precedingTemplateElement.value.raw.replace(' ', ''),
+ cooked: precedingTemplateElement.value.cooked.replace(' ', ''),
+ },
+ false,
+ ),
+ j.templateElement({ raw: ' > .', cooked: ' > .' }, false),
+ ];
+
+ if (atomicClasses.length === 3) {
+ quasisArgs.splice(
+ 3,
+ 0,
+ j.templateElement({ raw: '.', cooked: '.' }, false),
+ );
+ }
+
+ parent.quasis.splice(...quasisArgs);
+ } else {
+ parent.quasis.splice(
+ memberExpressionIndex,
+ 1,
+ j.templateElement(
+ {
+ raw: precedingTemplateElement.value.raw,
+ cooked: precedingTemplateElement.value.cooked,
+ },
+ false,
+ ),
+
+ j.templateElement({ raw: '.', cooked: '.' }, false),
+ );
+ }
+ }
+ }
+ });
+ }
+ });
+ });
+
+ const selectorRegex = new RegExp(`${replacementSelectorPrefix}${deprecatedClass}$`);
+ root
+ .find(
+ j.Literal,
+ (literal) => typeof literal.value === 'string' && literal.value.match(selectorRegex),
+ )
+ .forEach((path) => {
+ path.replace(
+ j.literal(
+ path.value.value.replace(
+ selectorRegex,
+ `${replacementSelectorPrefix}${replacementSelector}`,
+ ),
+ ),
+ );
+ });
+ });
+ return root.toSource(printOptions);
+}
diff --git a/packages/mui-codemod/src/deprecations/toggle-button-group-classes/toggle-button-group-classes.test.js b/packages/mui-codemod/src/deprecations/toggle-button-group-classes/toggle-button-group-classes.test.js
new file mode 100644
index 00000000000000..9769a168e9f86c
--- /dev/null
+++ b/packages/mui-codemod/src/deprecations/toggle-button-group-classes/toggle-button-group-classes.test.js
@@ -0,0 +1,78 @@
+import path from 'path';
+import { expect } from 'chai';
+import postcss from 'postcss';
+import { jscodeshift } from '../../../testUtils';
+import jsTransform from './toggle-button-group-classes';
+import { plugin as postcssPlugin } from './postcss-plugin';
+import readFile from '../../util/readFile';
+
+function read(fileName) {
+ return readFile(path.join(__dirname, fileName));
+}
+
+const postcssProcessor = postcss([postcssPlugin]);
+
+describe('@mui/codemod', () => {
+ describe('deprecations', () => {
+ describe('toggle-button-group-classes', () => {
+ describe('js-transform', () => {
+ it('transforms props as needed', () => {
+ const actual = jsTransform(
+ { source: read('./test-cases/actual.js') },
+ { jscodeshift },
+ { printOptions: { quote: 'double', trailingComma: true } },
+ );
+
+ const expected = read('./test-cases/expected.js');
+ expect(actual).to.equal(expected, 'The transformed version should be correct');
+ });
+
+ it('should be idempotent', () => {
+ const actual = jsTransform(
+ { source: read('./test-cases/expected.js') },
+ { jscodeshift },
+ {},
+ );
+
+ const expected = read('./test-cases/expected.js');
+ expect(actual).to.equal(expected, 'The transformed version should be correct');
+ });
+ });
+
+ describe('css-transform', () => {
+ it('transforms classes as needed', async () => {
+ const actual = await postcssProcessor.process(read('./test-cases/actual.css'), {
+ from: undefined,
+ });
+
+ const expected = read('./test-cases/expected.css');
+ expect(actual.css).to.equal(expected, 'The transformed version should be correct');
+ });
+
+ it('should be idempotent', async () => {
+ const actual = await postcssProcessor.process(read('./test-cases/expected.css'), {
+ from: undefined,
+ });
+
+ const expected = read('./test-cases/expected.css');
+ expect(actual.css).to.equal(expected, 'The transformed version should be correct');
+ });
+ });
+
+ describe('test-cases', () => {
+ it('should not be the same', () => {
+ const actualJS = read('./test-cases/actual.js');
+ const expectedJS = read('./test-cases/expected.js');
+ expect(actualJS).not.to.equal(expectedJS, 'The actual and expected should be different');
+
+ const actualCSS = read('./test-cases/actual.css');
+ const expectedCSS = read('./test-cases/expected.css');
+ expect(actualCSS).not.to.equal(
+ expectedCSS,
+ 'The actual and expected should be different',
+ );
+ });
+ });
+ });
+ });
+});
diff --git a/packages/mui-codemod/src/deprecations/utils/movePropIntoSlotProps.js b/packages/mui-codemod/src/deprecations/utils/movePropIntoSlotProps.js
new file mode 100644
index 00000000000000..2e09e3d1d021cc
--- /dev/null
+++ b/packages/mui-codemod/src/deprecations/utils/movePropIntoSlotProps.js
@@ -0,0 +1,111 @@
+import findComponentJSX from '../../util/findComponentJSX';
+import findComponentDefaultProps from '../../util/findComponentDefaultProps';
+import assignObject from '../../util/assignObject';
+import appendAttribute from '../../util/appendAttribute';
+
+function moveJsxPropIntoSlotProps(j, element, propName, slotName) {
+ const propIndex = element.openingElement.attributes.findIndex(
+ (attr) => attr.type === 'JSXAttribute' && attr.name.name === propName,
+ );
+
+ if (propIndex !== -1) {
+ const removedValue = element.openingElement.attributes.splice(propIndex, 1)[0].value.expression;
+ let hasSlotProps = false;
+ element.openingElement.attributes.forEach((attr) => {
+ if (attr.name?.name === 'slotProps') {
+ hasSlotProps = true;
+ const slots = attr.value.expression;
+ const slotIndex = slots.properties.findIndex((prop) => prop?.key?.name === slotName);
+ if (slotIndex === -1) {
+ assignObject(j, {
+ target: attr,
+ key: slotName,
+ expression: removedValue,
+ });
+ } else {
+ const slotPropsSlotValue = slots.properties.splice(slotIndex, 1)[0].value;
+ assignObject(j, {
+ target: attr,
+ key: slotName,
+ expression: j.objectExpression([
+ j.spreadElement(removedValue),
+ j.spreadElement(slotPropsSlotValue),
+ ]),
+ });
+ }
+ }
+ });
+
+ if (!hasSlotProps) {
+ appendAttribute(j, {
+ target: element,
+ attributeName: 'slotProps',
+ expression: j.objectExpression([j.objectProperty(j.identifier(slotName), removedValue)]),
+ });
+ }
+ }
+}
+
+function moveDefaultPropsPropIntoslotProps(j, defaultPropsPathCollection, propName, slotName) {
+ defaultPropsPathCollection.find(j.ObjectProperty, { key: { name: propName } }).forEach((path) => {
+ const removedValue = path.value.value;
+ const defaultProps = path.parent.value;
+
+ let hasSlotProps = false;
+ defaultProps.properties.forEach((property) => {
+ if (property.key?.name === 'slotProps') {
+ hasSlotProps = true;
+ const slotIndex = property.value.properties.findIndex(
+ (prop) => prop?.key?.name === slotName,
+ );
+ if (slotIndex === -1) {
+ property.value.properties.push(j.objectProperty(j.identifier(slotName), removedValue));
+ } else {
+ const slotPropsSlotValue = property.value.properties.splice(slotIndex, 1)[0].value;
+ property.value.properties.push(
+ j.objectProperty(
+ j.identifier(slotName),
+ j.objectExpression([
+ j.spreadElement(removedValue),
+ j.spreadElement(slotPropsSlotValue),
+ ]),
+ ),
+ );
+ }
+ }
+ });
+
+ if (!hasSlotProps) {
+ defaultProps.properties.push(
+ j.objectProperty(
+ j.identifier('slotProps'),
+ j.objectExpression([j.objectProperty(j.identifier(slotName), removedValue)]),
+ ),
+ );
+ }
+
+ path.prune();
+ });
+}
+
+/**
+ * Moves prop into slotProps.
+ * If the slotProps prop exists, it will merge the prop into the slotProps.
+ * If there are duplicated values, the values will be spread.
+ *
+ * @param {import('jscodeshift')} j
+ * @param {{ root: import('jscodeshift').Collection; componentName: string, propName: string, slotName: string }} options
+ *
+ * @example =>
+ */
+export default function movePropIntoSlotProps(j, options) {
+ const { root, componentName, propName, slotName } = options;
+
+ findComponentJSX(j, { root, componentName }, (elementPath) => {
+ moveJsxPropIntoSlotProps(j, elementPath.node, propName, slotName);
+ });
+
+ const defaultPropsPathCollection = findComponentDefaultProps(j, { root, componentName });
+
+ moveDefaultPropsPropIntoslotProps(j, defaultPropsPathCollection, propName, slotName);
+}
diff --git a/packages/mui-codemod/src/deprecations/utils/movePropIntoSlots.js b/packages/mui-codemod/src/deprecations/utils/movePropIntoSlots.js
new file mode 100644
index 00000000000000..9910853c3b4949
--- /dev/null
+++ b/packages/mui-codemod/src/deprecations/utils/movePropIntoSlots.js
@@ -0,0 +1,91 @@
+import findComponentJSX from '../../util/findComponentJSX';
+import findComponentDefaultProps from '../../util/findComponentDefaultProps';
+import assignObject from '../../util/assignObject';
+import appendAttribute from '../../util/appendAttribute';
+
+function moveJsxPropIntoSlots(j, element, propName, slotName) {
+ const index = element.openingElement.attributes.findIndex(
+ (attr) => attr.type === 'JSXAttribute' && attr.name.name === propName,
+ );
+
+ if (index !== -1) {
+ const removedValue = element.openingElement.attributes.splice(index, 1)[0].value.expression;
+ let hasSlots = false;
+ element.openingElement.attributes.forEach((attr) => {
+ if (attr.name?.name === 'slots') {
+ hasSlots = true;
+ const slotIndex = attr.value.expression.properties.findIndex(
+ (prop) => prop?.key?.name === slotName,
+ );
+ if (slotIndex === -1) {
+ assignObject(j, {
+ target: attr,
+ key: slotName,
+ expression: removedValue,
+ });
+ }
+ }
+ });
+
+ if (!hasSlots) {
+ appendAttribute(j, {
+ target: element,
+ attributeName: 'slots',
+ expression: j.objectExpression([j.objectProperty(j.identifier(slotName), removedValue)]),
+ });
+ }
+ }
+}
+
+function moveDefaultPropsPropIntoSlots(j, defaultPropsPathCollection, propName, slotName) {
+ defaultPropsPathCollection.find(j.ObjectProperty, { key: { name: propName } }).forEach((path) => {
+ const removedValue = path.value.value;
+ const defaultProps = path.parent.value;
+
+ let hasSlots = false;
+ defaultProps.properties.forEach((property) => {
+ if (property.key?.name === 'slots') {
+ hasSlots = true;
+ const slots = property.value;
+ const slotIndex = slots.properties.findIndex((prop) => prop?.key?.name === slotName);
+ if (slotIndex === -1) {
+ slots.properties.push(j.objectProperty(j.identifier(slotName), removedValue));
+ }
+ }
+ });
+
+ if (!hasSlots) {
+ defaultProps.properties.push(
+ j.property(
+ 'init',
+ j.identifier('slots'),
+ j.objectExpression([j.objectProperty(j.identifier(slotName), removedValue)]),
+ ),
+ );
+ }
+
+ path.prune();
+ });
+}
+
+/**
+ * Moves prop into slots.
+ * If the slots prop exists, it will add the prop to the slots.
+ * If there are duplicated values, the slots values will be used.
+ *
+ * @param {import('jscodeshift')} j
+ * @param {{ root: import('jscodeshift').Collection; componentName: string, propName: string, slotName: string }} options
+ *
+ * @example =>
+ */
+export default function movePropIntoSlots(j, options) {
+ const { root, componentName, propName, slotName } = options;
+
+ findComponentJSX(j, { root, componentName }, (elementPath) => {
+ moveJsxPropIntoSlots(j, elementPath.node, propName, slotName);
+ });
+
+ const defaultPropsPathCollection = findComponentDefaultProps(j, { root, componentName });
+
+ moveDefaultPropsPropIntoSlots(j, defaultPropsPathCollection, propName, slotName);
+}
diff --git a/packages/mui-codemod/src/v5.0.0/base-remove-unstyled-suffix.js b/packages/mui-codemod/src/v5.0.0/base-remove-unstyled-suffix.js
index 6d773a08c0f639..6c3e45094df4ec 100644
--- a/packages/mui-codemod/src/v5.0.0/base-remove-unstyled-suffix.js
+++ b/packages/mui-codemod/src/v5.0.0/base-remove-unstyled-suffix.js
@@ -10,14 +10,13 @@ export default function transformer(file, api) {
.find(j.ImportDeclaration)
.filter(({ node }) => {
const sourceVal = node.source.value;
- if (sourceVal.startsWith('@mui/base')) {
- node.source.value = sourceVal.replace(/unstyled/im, '');
- node.source.raw = sourceVal.replace(/unstyled/im, '');
- }
-
return sourceVal.startsWith('@mui/base');
})
.forEach((path) => {
+ const sourceVal = path.node.source.value;
+ if (sourceVal.startsWith('@mui/base')) {
+ path.node.source = j.stringLiteral(sourceVal.replace(/unstyled/im, ''));
+ }
const specifiers = [];
path.node.specifiers.forEach((elementNode) => {
const importedName = elementNode.imported?.name || '';
diff --git a/packages/mui-codemod/src/v5.0.0/box-sx-prop.test/expected.js b/packages/mui-codemod/src/v5.0.0/box-sx-prop.test/expected.js
index 1c5cb573310c52..0a58fec3d56e84 100644
--- a/packages/mui-codemod/src/v5.0.0/box-sx-prop.test/expected.js
+++ b/packages/mui-codemod/src/v5.0.0/box-sx-prop.test/expected.js
@@ -4,7 +4,7 @@ import Button from '@material-ui/core/Button';
export default function BoxComponent(props) {
return (
-
-
+ )
);
}
diff --git a/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/eighth.expected.js b/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/eighth.expected.js
index 65cd75818c0c89..95c31a25fe07e3 100644
--- a/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/eighth.expected.js
+++ b/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/eighth.expected.js
@@ -115,7 +115,7 @@ export default function Cart() {
});
};
return (
-
+ (
@@ -208,6 +208,6 @@ export default function Cart() {
-
+ )
);
}
\ No newline at end of file
diff --git a/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/eleventh.expected.js b/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/eleventh.expected.js
index 8fb90973ad75f7..71e28fcea2d4e3 100644
--- a/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/eleventh.expected.js
+++ b/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/eleventh.expected.js
@@ -29,9 +29,9 @@ export default function Page() {
return (
-
+ (
-
+ )
);
}
\ No newline at end of file
diff --git a/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/fifth.expected.js b/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/fifth.expected.js
index 493cbe51da0472..093020d104b1d2 100644
--- a/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/fifth.expected.js
+++ b/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/fifth.expected.js
@@ -62,7 +62,7 @@ function SellHero() {
return (
-
+ (
Sell themes
@@ -87,7 +87,7 @@ function SellHero() {
-
+ )
);
}
diff --git a/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/first.expected.js b/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/first.expected.js
index c919a8c97db252..5169edb4b7cd3a 100644
--- a/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/first.expected.js
+++ b/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/first.expected.js
@@ -180,7 +180,7 @@ class AppAppBar extends React.Component {
const { menuOpen } = this.state;
return (
-
+ (
@@ -237,7 +237,7 @@ class AppAppBar extends React.Component {
)}
-
+ )
);
}
}
diff --git a/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/fourth.expected.js b/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/fourth.expected.js
index cc59b1db8d5abd..714539faff3696 100644
--- a/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/fourth.expected.js
+++ b/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/fourth.expected.js
@@ -31,10 +31,10 @@ const StyledCard = styled(Card)(function getStyles(
export const MyCard = ((props) => {
const { } = props;
return (
-
+ (
Submit
-
+ )
);
});
diff --git a/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/nineth.expected.js b/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/nineth.expected.js
index 8661d681bbb3e8..b2d000ea40311c 100644
--- a/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/nineth.expected.js
+++ b/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/nineth.expected.js
@@ -29,9 +29,9 @@ export default function Page() {
return (
-
+ (
-
+ )
);
}
\ No newline at end of file
diff --git a/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/second.expected.js b/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/second.expected.js
index 30eb0ee2541889..0a5f0311b364c4 100644
--- a/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/second.expected.js
+++ b/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/second.expected.js
@@ -63,7 +63,7 @@ function AffiliatesHero() {
return (
-
+ (
Affiliate Program
@@ -85,7 +85,7 @@ function AffiliatesHero() {
-
+ )
);
}
diff --git a/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/seventh.expected.js b/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/seventh.expected.js
index 2715106e6ff16a..2a9c9e35f18226 100644
--- a/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/seventh.expected.js
+++ b/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/seventh.expected.js
@@ -86,7 +86,7 @@ function Iframe(props) {
}, []);
return (
-
+ (
{loaded === false ? (
@@ -109,7 +109,7 @@ function Iframe(props) {
frameBorder="0"
{...props}
/>
-
+ )
);
}
diff --git a/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/third.expected.js b/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/third.expected.js
index bd072a096a31d8..5525352eb6dfa0 100644
--- a/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/third.expected.js
+++ b/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/third.expected.js
@@ -27,10 +27,10 @@ const StyledCard = styled(Card)((
export const MyCard = ((props) => {
const { } = props;
return (
-
+ (
Submit
-
+ )
);
});
diff --git a/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/withCreateStyles.expected.tsx b/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/withCreateStyles.expected.tsx
index 63e961a28eff28..3ac787c22c4308 100644
--- a/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/withCreateStyles.expected.tsx
+++ b/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/withCreateStyles.expected.tsx
@@ -19,7 +19,7 @@ const Root = styled('div')((
const MyComponent = (props) => {
- return
;
+ return (
);
};
export default MyComponent;
\ No newline at end of file
diff --git a/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/withCreateStyles1.expected.tsx b/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/withCreateStyles1.expected.tsx
index 31d6cef054510c..55073749924256 100644
--- a/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/withCreateStyles1.expected.tsx
+++ b/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/withCreateStyles1.expected.tsx
@@ -19,7 +19,7 @@ const Root = styled('div')((
const MyComponent = (props) => {
const { } = props;
- return
;
+ return (
);
};
export default (MyComponent);
\ No newline at end of file
diff --git a/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/withCreateStyles2.expected.tsx b/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/withCreateStyles2.expected.tsx
index 7c5a2d26246fc7..6b84c2a5f090ad 100644
--- a/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/withCreateStyles2.expected.tsx
+++ b/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/withCreateStyles2.expected.tsx
@@ -15,7 +15,7 @@ const Root = styled('div')({
const MyComponent = (props) => {
const { } = props;
- return
;
+ return (
);
};
export default (MyComponent);
\ No newline at end of file
diff --git a/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/withCreateStyles3.expected.tsx b/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/withCreateStyles3.expected.tsx
index d40f46b983f2ce..cbede67798b670 100644
--- a/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/withCreateStyles3.expected.tsx
+++ b/packages/mui-codemod/src/v5.0.0/jss-to-styled.test/withCreateStyles3.expected.tsx
@@ -15,7 +15,7 @@ const Root = styled('div')({
const MyComponent = (props) => {
- return
;
+ return (
);
};
export default MyComponent;
\ No newline at end of file
diff --git a/packages/mui-codemod/src/v5.0.0/jss-to-tss-react.test/expected-typescript-docs-example-params.tsx b/packages/mui-codemod/src/v5.0.0/jss-to-tss-react.test/expected-typescript-docs-example-params.tsx
index 11951ce8c1a7c0..af3bb81e8b8343 100644
--- a/packages/mui-codemod/src/v5.0.0/jss-to-tss-react.test/expected-typescript-docs-example-params.tsx
+++ b/packages/mui-codemod/src/v5.0.0/jss-to-tss-react.test/expected-typescript-docs-example-params.tsx
@@ -1,12 +1,13 @@
import { makeStyles } from 'tss-react/mui';
const useStyles = makeStyles<{color: 'primary' | 'secondary', padding: number}, 'child' | 'small'>({name: 'App'})((theme, { color, padding }, classes) => ({
- root: {
+ root: ({
padding: padding,
+
[`&:hover .${classes.child}`]: {
backgroundColor: theme.palette[color].main,
}
- },
+ }),
small: {},
child: {
border: '1px solid black',
@@ -28,7 +29,7 @@ function App({classes: classesProp}: {classes?: any}) {
});
return (
-
+ (
The Background take the primary theme color when the mouse hovers the parent.
@@ -36,7 +37,7 @@ function App({classes: classesProp}: {classes?: any}) {
The Background take the primary theme color when the mouse hovers the parent.
I am smaller than the other child.
-
+
)
);
}
diff --git a/packages/mui-codemod/src/v5.0.0/jss-to-tss-react.test/expected-typescript-docs-example.tsx b/packages/mui-codemod/src/v5.0.0/jss-to-tss-react.test/expected-typescript-docs-example.tsx
index b906d0c65b7665..495a6f1c8853a7 100644
--- a/packages/mui-codemod/src/v5.0.0/jss-to-tss-react.test/expected-typescript-docs-example.tsx
+++ b/packages/mui-codemod/src/v5.0.0/jss-to-tss-react.test/expected-typescript-docs-example.tsx
@@ -22,7 +22,7 @@ const useStyles = makeStyles()((theme, _params, classes
function App() {
const { classes, cx } = useStyles();
return (
-
+ (
Background turns red when the mouse hovers over the parent.
@@ -30,7 +30,7 @@ function App() {
Background turns red when the mouse hovers over the parent.
I am smaller than the other child.
-
+ )
);
}
diff --git a/packages/mui-codemod/src/v5.0.0/preset-safe.test/expected.js b/packages/mui-codemod/src/v5.0.0/preset-safe.test/expected.js
index 511a87bcb82936..d65e32b346d5aa 100644
--- a/packages/mui-codemod/src/v5.0.0/preset-safe.test/expected.js
+++ b/packages/mui-codemod/src/v5.0.0/preset-safe.test/expected.js
@@ -87,7 +87,7 @@ const Header = () => {
const classes = useStyles();
const { dark, setDark } = React.useContext(DarkContext);
return (
-
+ (
👋 Hello
@@ -110,7 +110,7 @@ const Header = () => {
onChange={(event, checked) => setDark(checked)}
/>
-
+ )
);
};
@@ -119,7 +119,7 @@ function App() {
const handleClose = () => setOpen(false);
const { setDark } = React.useContext(DarkContext);
const classes = useStyles();
- return <>
+ return (<>
@@ -173,7 +173,7 @@ function App() {
- >;
+ >);
}
const withThemeProvider = (Component) => (props) => {
@@ -188,7 +188,7 @@ const withThemeProvider = (Component) => (props) => {
[dark],
);
return (
-
+ (
@@ -196,7 +196,7 @@ const withThemeProvider = (Component) => (props) => {
-
+ )
);
};
diff --git a/packages/mui-codemod/src/v5.0.0/styled-engine-provider.test/mui-theme-provider.expected.js b/packages/mui-codemod/src/v5.0.0/styled-engine-provider.test/mui-theme-provider.expected.js
index 107f5814aa1f23..6826808eedbe0d 100644
--- a/packages/mui-codemod/src/v5.0.0/styled-engine-provider.test/mui-theme-provider.expected.js
+++ b/packages/mui-codemod/src/v5.0.0/styled-engine-provider.test/mui-theme-provider.expected.js
@@ -5,7 +5,7 @@ import Page from './pages';
const App = () => {
return (
-
+ (
@@ -13,7 +13,7 @@ const App = () => {
-
+ )
);
};
diff --git a/packages/mui-codemod/src/v5.0.0/styled-engine-provider.test/theme-provider.expected.js b/packages/mui-codemod/src/v5.0.0/styled-engine-provider.test/theme-provider.expected.js
index ce27802818f1fc..b727b543d2728d 100644
--- a/packages/mui-codemod/src/v5.0.0/styled-engine-provider.test/theme-provider.expected.js
+++ b/packages/mui-codemod/src/v5.0.0/styled-engine-provider.test/theme-provider.expected.js
@@ -6,11 +6,11 @@ import Page from './pages';
const App = () => {
return (
-
+ (
-
+ )
);
};
diff --git a/packages/mui-codemod/src/v5.0.0/theme-provider.test/core-import.expected.js b/packages/mui-codemod/src/v5.0.0/theme-provider.test/core-import.expected.js
index 15925ec0af83d1..0f5322c1c02a6e 100644
--- a/packages/mui-codemod/src/v5.0.0/theme-provider.test/core-import.expected.js
+++ b/packages/mui-codemod/src/v5.0.0/theme-provider.test/core-import.expected.js
@@ -2,8 +2,8 @@ import { createTheme, ThemeProvider, Theme } from '@material-ui/core';
function App() {
return (
-
+ (
-
+ )
);
}
diff --git a/packages/mui-codemod/src/v5.0.0/theme-provider.test/expected.js b/packages/mui-codemod/src/v5.0.0/theme-provider.test/expected.js
index 21b87540236096..c90abfb69000d1 100644
--- a/packages/mui-codemod/src/v5.0.0/theme-provider.test/expected.js
+++ b/packages/mui-codemod/src/v5.0.0/theme-provider.test/expected.js
@@ -2,8 +2,8 @@ import { createTheme, ThemeProvider, Theme } from '@material-ui/core/styles';
function App() {
return (
-
+ (
-
+ )
);
}
diff --git a/packages/mui-codemod/src/v5.0.0/variant-prop.test/expected.js b/packages/mui-codemod/src/v5.0.0/variant-prop.test/expected.js
index e668c182c28d65..7b38552e579f7b 100644
--- a/packages/mui-codemod/src/v5.0.0/variant-prop.test/expected.js
+++ b/packages/mui-codemod/src/v5.0.0/variant-prop.test/expected.js
@@ -11,7 +11,7 @@ const Select2 = () => ;
export default function TextFieldComponent(props) {
return (
-
+ (
@@ -33,10 +33,9 @@ export default function TextFieldComponent(props) {
-
-
+
)
);
}
diff --git a/packages/mui-core-downloads-tracker/package.json b/packages/mui-core-downloads-tracker/package.json
index 50d462045792c9..a2aa0d9631db7b 100644
--- a/packages/mui-core-downloads-tracker/package.json
+++ b/packages/mui-core-downloads-tracker/package.json
@@ -1,6 +1,6 @@
{
"name": "@mui/core-downloads-tracker",
- "version": "6.0.0-alpha.0",
+ "version": "6.0.0-alpha.2",
"private": false,
"author": "MUI Team",
"description": "Internal package to track number of downloads of our design system libraries",
diff --git a/packages/mui-docs/package.json b/packages/mui-docs/package.json
index 83df3edba09fc0..54f3b4c83f9a47 100644
--- a/packages/mui-docs/package.json
+++ b/packages/mui-docs/package.json
@@ -1,6 +1,6 @@
{
"name": "@mui/docs",
- "version": "6.0.0-alpha.0",
+ "version": "6.0.0-alpha.2",
"private": false,
"author": "MUI Team",
"description": "MUI Docs - Documentation building blocks.",
@@ -41,18 +41,18 @@
"prop-types": "^15.8.1"
},
"devDependencies": {
- "@mui/material": "workspace:*",
"@mui/icons-material": "workspace:*",
- "@types/node": "^18.19.28",
+ "@mui/material": "workspace:*",
+ "@types/node": "^18.19.31",
"@types/prop-types": "^15.7.12",
"@types/react": "^18.2.55",
"next": "^13.5.1",
"react": "^18.2.0"
},
"peerDependencies": {
- "@mui/material": "^5.0.0",
"@mui/base": "*",
"@mui/icons-material": "^5.0.0",
+ "@mui/material": "^5.0.0",
"@mui/system": "^5.0.0",
"@types/react": "^17.0.0 || ^18.0.0",
"next": "^13.5.1 || ^14",
diff --git a/packages/mui-docs/src/InfoCard/InfoCard.tsx b/packages/mui-docs/src/InfoCard/InfoCard.tsx
index 754a22b43e5c77..56ec11e1f94486 100644
--- a/packages/mui-docs/src/InfoCard/InfoCard.tsx
+++ b/packages/mui-docs/src/InfoCard/InfoCard.tsx
@@ -23,11 +23,11 @@ export function GlowingIconContainer({ icon }: GlowingIconContainerProps) {
border: '1px solid',
borderColor: 'primary.200',
bgcolor: 'primary.50',
- boxShadow: `0px 1px 6px 0px ${alpha(theme.palette.primary[500], 0.2)}, 0px 2px 12px 0px rgba(234, 237, 241, 0.3) inset`,
+ boxShadow: `0px 0 0 2px ${alpha(theme.palette.primary[500], 0.1)}, 0px 2px 12px 0px rgba(234, 237, 241, 0.3) inset`,
...theme.applyDarkStyles({
borderColor: alpha(theme.palette.primary[400], 0.25),
- bgcolor: alpha(theme.palette.primary[900], 0.25),
- boxShadow: `0 2px 6px 0 ${alpha(theme.palette.primary[600], 0.3)}, 0px 2px 12px 0px rgba(0, 0, 0, 0.25) inset`,
+ bgcolor: alpha(theme.palette.primary[900], 0.4),
+ boxShadow: `0 0 0 2px ${alpha(theme.palette.primary[600], 0.1)}, 0px 2px 12px 0px rgba(0, 0, 0, 0.25) inset`,
}),
})}
>
diff --git a/packages/mui-docs/src/branding/brandingTheme.ts b/packages/mui-docs/src/branding/brandingTheme.ts
index a8b1b98b07a9d9..d6e428314aeeee 100644
--- a/packages/mui-docs/src/branding/brandingTheme.ts
+++ b/packages/mui-docs/src/branding/brandingTheme.ts
@@ -32,8 +32,7 @@ declare module '@mui/material/styles/createPalette' {
interface Palette {
primaryDark: PaletteColor;
gradients: {
- lightGrayRadio: string;
- stylizedRadio: string;
+ radioSubtle: string;
linearSubtle: string;
};
}
@@ -255,12 +254,10 @@ export const getDesignTokens = (mode: 'light' | 'dark') =>
},
warning,
gradients: {
- lightGrayRadio:
- 'radial-gradient(50% 50% at 50% 50%, #F0F7FF 0%, rgba(240, 247, 255, 0.05) 100%)',
- stylizedRadio:
+ radioSubtle:
mode === 'dark'
- ? 'linear-gradient(rgba(0 0 0 / 0.1), rgba(0 0 0 / 0.1)), linear-gradient(254.86deg, rgba(0, 58, 117, 0.18) 0%, rgba(11, 13, 14, 0.3) 49.98%, rgba(0, 76, 153, 0.21) 100.95%)'
- : 'linear-gradient(rgba(255 255 255 / 0.3), rgba(255 255 255 / 0.3)), linear-gradient(254.86deg, rgba(194, 224, 255, 0.12) 0%, rgba(194, 224, 255, 0.12) 0%, rgba(255, 255, 255, 0.3) 49.98%, rgba(240, 247, 255, 0.3) 100.95%)',
+ ? `radial-gradient(100% 100% at 100% 100%, transparent 0, ${alpha(blue[900], 0.3)} 300%)`
+ : `radial-gradient(100% 90% at 50% 0, transparent 0, ${alpha(blue[100], 0.3)} 300%)`,
linearSubtle:
mode === 'light'
? `linear-gradient(to bottom right, ${alpha(blue[50], 0.3)} 25%, ${alpha(grey[50], 0.2)} 100%)`
@@ -824,7 +821,7 @@ export function getThemedComponents(): ThemeOptions {
root: ({ theme }) => ({
borderColor: (theme.vars || theme).palette.grey[100],
...theme.applyDarkStyles({
- borderColor: alpha(theme.palette.primaryDark[700], 0.8),
+ borderColor: alpha(theme.palette.primaryDark[500], 0.3),
}),
}),
},
@@ -954,6 +951,9 @@ export function getThemedComponents(): ThemeOptions {
color: (theme.vars || theme).palette.primary[700],
},
},
+ '&.Mui-focusVisible': {
+ backgroundColor: (theme.vars || theme).palette.primary[200],
+ },
...theme.applyDarkStyles({
color: (theme.vars || theme).palette.primary[100],
backgroundColor: alpha(theme.palette.primary[800], 0.5),
diff --git a/packages/mui-envinfo/package.json b/packages/mui-envinfo/package.json
index 6df16c363800eb..b345ea78a6c5b6 100644
--- a/packages/mui-envinfo/package.json
+++ b/packages/mui-envinfo/package.json
@@ -1,6 +1,6 @@
{
"name": "@mui/envinfo",
- "version": "2.0.19",
+ "version": "2.0.20",
"private": false,
"author": "MUI Team",
"description": "Logs infos about the environment relevant to @mui/*",
diff --git a/packages/mui-icons-material/package.json b/packages/mui-icons-material/package.json
index 26a1ac8334359a..b5e4c824365edd 100644
--- a/packages/mui-icons-material/package.json
+++ b/packages/mui-icons-material/package.json
@@ -1,6 +1,6 @@
{
"name": "@mui/icons-material",
- "version": "6.0.0-alpha.0",
+ "version": "6.0.0-alpha.2",
"private": false,
"author": "MUI Team",
"description": "Material Design icons distributed as SVG React components.",
diff --git a/packages/mui-joy/package.json b/packages/mui-joy/package.json
index dc54c810feb38b..0dabc1fb459b7a 100644
--- a/packages/mui-joy/package.json
+++ b/packages/mui-joy/package.json
@@ -1,6 +1,6 @@
{
"name": "@mui/joy",
- "version": "5.0.0-beta.33",
+ "version": "5.0.0-beta.35",
"private": false,
"author": "MUI Team",
"description": "Joy UI is an open-source React component library that implements MUI's own design principles. It's comprehensive and can be used in production out of the box.",
diff --git a/packages/mui-joy/src/Table/Table.tsx b/packages/mui-joy/src/Table/Table.tsx
index cffc5d1c300470..37a50b558621af 100644
--- a/packages/mui-joy/src/Table/Table.tsx
+++ b/packages/mui-joy/src/Table/Table.tsx
@@ -418,15 +418,11 @@ Table.propTypes /* remove-proptypes */ = {
}),
/**
* If `true`, the footer always appear at the bottom of the overflow table.
- *
- * ⚠️ It doesn't work with IE11.
* @default false
*/
stickyFooter: PropTypes.bool,
/**
* If `true`, the header always appear at the top of the overflow table.
- *
- * ⚠️ It doesn't work with IE11.
* @default false
*/
stickyHeader: PropTypes.bool,
diff --git a/packages/mui-joy/src/Table/TableProps.ts b/packages/mui-joy/src/Table/TableProps.ts
index e87321e1e4747d..df683c4d344a68 100644
--- a/packages/mui-joy/src/Table/TableProps.ts
+++ b/packages/mui-joy/src/Table/TableProps.ts
@@ -65,15 +65,11 @@ export interface TableTypeMap {
size?: OverridableStringUnion<'sm' | 'md' | 'lg', TablePropsSizeOverrides>;
/**
* If `true`, the header always appear at the top of the overflow table.
- *
- * ⚠️ It doesn't work with IE11.
* @default false
*/
stickyHeader?: boolean;
/**
* If `true`, the footer always appear at the bottom of the overflow table.
- *
- * ⚠️ It doesn't work with IE11.
* @default false
*/
stickyFooter?: boolean;
diff --git a/packages/mui-lab/package.json b/packages/mui-lab/package.json
index afc6243c9efbe5..4ba2dab61dbfaf 100644
--- a/packages/mui-lab/package.json
+++ b/packages/mui-lab/package.json
@@ -1,6 +1,6 @@
{
"name": "@mui/lab",
- "version": "6.0.0-alpha.0",
+ "version": "6.0.0-alpha.2",
"private": false,
"author": "MUI Team",
"description": "Laboratory for new MUI modules.",
diff --git a/packages/mui-material/package.json b/packages/mui-material/package.json
index e82242b4699c1c..29e2ce960aba0a 100644
--- a/packages/mui-material/package.json
+++ b/packages/mui-material/package.json
@@ -1,6 +1,6 @@
{
"name": "@mui/material",
- "version": "6.0.0-alpha.0",
+ "version": "6.0.0-alpha.2",
"private": false,
"author": "MUI Team",
"description": "Material UI is an open-source React component library that implements Google's Material Design. It's comprehensive and can be used in production out of the box.",
@@ -73,7 +73,7 @@
"fast-glob": "^3.3.2",
"fs-extra": "^11.2.0",
"lodash": "^4.17.21",
- "playwright": "^1.42.1",
+ "playwright": "^1.43.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-router-dom": "^6.22.3",
diff --git a/packages/mui-material/src/CircularProgress/CircularProgress.js b/packages/mui-material/src/CircularProgress/CircularProgress.js
index 183b589359da0b..2b81f050eb44d5 100644
--- a/packages/mui-material/src/CircularProgress/CircularProgress.js
+++ b/packages/mui-material/src/CircularProgress/CircularProgress.js
@@ -4,12 +4,12 @@ import PropTypes from 'prop-types';
import clsx from 'clsx';
import chainPropTypes from '@mui/utils/chainPropTypes';
import composeClasses from '@mui/utils/composeClasses';
-import { keyframes, css } from '@mui/system';
+import { keyframes, css, createUseThemeProps, styled } from '../zero-styled';
import capitalize from '../utils/capitalize';
-import useThemeProps from '../styles/useThemeProps';
-import styled from '../styles/styled';
import { getCircularProgressUtilityClass } from './circularProgressClasses';
+const useThemeProps = createUseThemeProps('MuiCircularProgress');
+
const SIZE = 44;
const circularRotateKeyframe = keyframes`
@@ -39,6 +39,14 @@ const circularDashKeyframe = keyframes`
}
`;
+const rotateAnimation = css`
+ animation: ${circularRotateKeyframe} 1.4s linear infinite;
+`;
+
+const dashAnimation = css`
+ animation: ${circularDashKeyframe} 1.4s ease-in-out infinite;
+`;
+
const useUtilityClasses = (ownerState) => {
const { classes, variant, color, disableShrink } = ownerState;
@@ -63,22 +71,39 @@ const CircularProgressRoot = styled('span', {
styles[`color${capitalize(ownerState.color)}`],
];
},
-})(
- ({ ownerState, theme }) => ({
- display: 'inline-block',
- ...(ownerState.variant === 'determinate' && {
- transition: theme.transitions.create('transform'),
- }),
- ...(ownerState.color !== 'inherit' && {
- color: (theme.vars || theme).palette[ownerState.color].main,
- }),
- }),
- ({ ownerState }) =>
- ownerState.variant === 'indeterminate' &&
- css`
- animation: ${circularRotateKeyframe} 1.4s linear infinite;
- `,
-);
+})(({ theme }) => ({
+ display: 'inline-block',
+ variants: [
+ {
+ props: {
+ variant: 'determinate',
+ },
+ style: {
+ transition: theme.transitions.create('transform'),
+ },
+ },
+ {
+ props: {
+ variant: 'indeterminate',
+ },
+ style:
+ // For Styled-components v4+: https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#12
+ rotateAnimation !== 'string'
+ ? rotateAnimation
+ : {
+ animation: `${circularRotateKeyframe} 1.4s linear infinite`,
+ },
+ },
+ ...Object.entries(theme.palette)
+ .filter(([, palette]) => palette.main)
+ .map(([color]) => ({
+ props: { color },
+ style: {
+ color: (theme.vars || theme).palette[color].main,
+ },
+ })),
+ ],
+}));
const CircularProgressSVG = styled('svg', {
name: 'MuiCircularProgress',
@@ -100,27 +125,40 @@ const CircularProgressCircle = styled('circle', {
ownerState.disableShrink && styles.circleDisableShrink,
];
},
-})(
- ({ ownerState, theme }) => ({
- stroke: 'currentColor',
- // Use butt to follow the specification, by chance, it's already the default CSS value.
- // strokeLinecap: 'butt',
- ...(ownerState.variant === 'determinate' && {
- transition: theme.transitions.create('stroke-dashoffset'),
- }),
- ...(ownerState.variant === 'indeterminate' && {
- // Some default value that looks fine waiting for the animation to kicks in.
- strokeDasharray: '80px, 200px',
- strokeDashoffset: 0, // Add the unit to fix a Edge 16 and below bug.
- }),
- }),
- ({ ownerState }) =>
- ownerState.variant === 'indeterminate' &&
- !ownerState.disableShrink &&
- css`
- animation: ${circularDashKeyframe} 1.4s ease-in-out infinite;
- `,
-);
+})(({ theme }) => ({
+ stroke: 'currentColor',
+ variants: [
+ {
+ props: {
+ variant: 'determinate',
+ },
+ style: {
+ transition: theme.transitions.create('stroke-dashoffset'),
+ },
+ },
+ {
+ props: {
+ variant: 'indeterminate',
+ },
+ style: {
+ // Some default value that looks fine waiting for the animation to kicks in.
+ strokeDasharray: '80px, 200px',
+ strokeDashoffset: 0, // Add the unit to fix a Edge 16 and below bug.
+ },
+ },
+ {
+ // For Styled-components v4+: https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#12
+ props: ({ ownerState }) =>
+ ownerState.variant === 'indeterminate' && !ownerState.disableShrink,
+ style:
+ typeof dashAnimation !== 'string'
+ ? dashAnimation
+ : {
+ animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`,
+ },
+ },
+ ],
+}));
/**
* ## ARIA
diff --git a/packages/mui-material/src/Select/Select.d.ts b/packages/mui-material/src/Select/Select.d.ts
index c39944e1e0ded8..f4984bdc71f84d 100644
--- a/packages/mui-material/src/Select/Select.d.ts
+++ b/packages/mui-material/src/Select/Select.d.ts
@@ -151,7 +151,8 @@ export interface BaseSelectProps
variant?: SelectVariants;
}
-export interface FilledSelectProps extends Omit {
+export interface FilledSelectProps
+ extends Omit {
/**
* The variant to use.
* @default 'outlined'
@@ -159,7 +160,8 @@ export interface FilledSelectProps extends Omit {
+export interface StandardSelectProps
+ extends Omit {
/**
* The variant to use.
* @default 'outlined'
@@ -167,7 +169,8 @@ export interface StandardSelectProps extends Omit {
+export interface OutlinedSelectProps
+ extends Omit {
/**
* The variant to use.
* @default 'outlined'
@@ -193,8 +196,8 @@ export type SelectProps =
* - [Select API](https://mui.com/material-ui/api/select/)
* - inherits [OutlinedInput API](https://mui.com/material-ui/api/outlined-input/)
*/
-export default function Select(
- props: SelectProps,
-): JSX.Element & {
+declare const Select: ((props: SelectProps) => JSX.Element) & {
muiName: string;
};
+
+export default Select;
diff --git a/packages/mui-material/src/Select/Select.spec.tsx b/packages/mui-material/src/Select/Select.spec.tsx
index 78f69c76c606d0..0aaa8004646534 100644
--- a/packages/mui-material/src/Select/Select.spec.tsx
+++ b/packages/mui-material/src/Select/Select.spec.tsx
@@ -196,3 +196,6 @@ const AppSelect = (props: Props) => {
);
};
+
+// test for applying Select's static muiName property type to wrapper components
+AppSelect.muiName = Select.muiName;
diff --git a/packages/mui-material/src/StepConnector/stepConnectorClasses.ts b/packages/mui-material/src/StepConnector/stepConnectorClasses.ts
index 30f6fb2f3fa54f..a7f46ca2880c9f 100644
--- a/packages/mui-material/src/StepConnector/stepConnectorClasses.ts
+++ b/packages/mui-material/src/StepConnector/stepConnectorClasses.ts
@@ -18,9 +18,13 @@ export interface StepConnectorClasses {
disabled: string;
/** Styles applied to the line element. */
line: string;
- /** Styles applied to the root element if `orientation="horizontal"`. */
+ /** Styles applied to the line element if `orientation="horizontal"`.
+ * @deprecated Combine the [.MuiStepConnector-horizontal](/material-ui/api/step-connector/#step-connector-classes-horizontal) and [.MuiStepConnector-line](/material-ui/api/step-connector/#step-connector-classes-line) classes instead. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/)
+ */
lineHorizontal: string;
- /** Styles applied to the root element if `orientation="vertical"`. */
+ /** Styles applied to the line element if `orientation="vertical"`.
+ * @deprecated Combine the [.MuiStepConnector-vertical](/material-ui/api/step-connector/#step-connector-classes-vertical) and [.MuiStepConnector-line](/material-ui/api/step-connector/#step-connector-classes-line) classes instead. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/)
+ */
lineVertical: string;
}
diff --git a/packages/mui-material/src/Table/Table.d.ts b/packages/mui-material/src/Table/Table.d.ts
index cbc37912c61bbf..4327d327dc68b9 100644
--- a/packages/mui-material/src/Table/Table.d.ts
+++ b/packages/mui-material/src/Table/Table.d.ts
@@ -28,8 +28,6 @@ export interface TableOwnProps {
size?: OverridableStringUnion<'small' | 'medium', TablePropsSizeOverrides>;
/**
* Set the header sticky.
- *
- * ⚠️ It doesn't work with IE11.
* @default false
*/
stickyHeader?: boolean;
diff --git a/packages/mui-material/src/Table/Table.js b/packages/mui-material/src/Table/Table.js
index 33201ca6ae94ab..8690bf2017f2a0 100644
--- a/packages/mui-material/src/Table/Table.js
+++ b/packages/mui-material/src/Table/Table.js
@@ -122,8 +122,6 @@ Table.propTypes /* remove-proptypes */ = {
]),
/**
* Set the header sticky.
- *
- * ⚠️ It doesn't work with IE11.
* @default false
*/
stickyHeader: PropTypes.bool,
diff --git a/packages/mui-material/src/ToggleButton/ToggleButton.js b/packages/mui-material/src/ToggleButton/ToggleButton.js
index bfa15b63247e6a..c9224e80889d4f 100644
--- a/packages/mui-material/src/ToggleButton/ToggleButton.js
+++ b/packages/mui-material/src/ToggleButton/ToggleButton.js
@@ -5,16 +5,17 @@ import PropTypes from 'prop-types';
import clsx from 'clsx';
import resolveProps from '@mui/utils/resolveProps';
import composeClasses from '@mui/utils/composeClasses';
-import { alpha } from '../styles';
+import { alpha } from '@mui/system/colorManipulator';
import ButtonBase from '../ButtonBase';
import capitalize from '../utils/capitalize';
-import useThemeProps from '../styles/useThemeProps';
-import styled from '../styles/styled';
+import { createUseThemeProps, styled } from '../zero-styled';
import toggleButtonClasses, { getToggleButtonUtilityClass } from './toggleButtonClasses';
import ToggleButtonGroupContext from '../ToggleButtonGroup/ToggleButtonGroupContext';
import ToggleButtonGroupButtonContext from '../ToggleButtonGroup/ToggleButtonGroupButtonContext';
import isValueSelected from '../ToggleButtonGroup/isValueSelected';
+const useThemeProps = createUseThemeProps('MuiToggleButton');
+
const useUtilityClasses = (ownerState) => {
const { classes, fullWidth, selected, disabled, size, color } = ownerState;
@@ -40,76 +41,105 @@ const ToggleButtonRoot = styled(ButtonBase, {
return [styles.root, styles[`size${capitalize(ownerState.size)}`]];
},
-})(({ theme, ownerState }) => {
- let selectedColor =
- ownerState.color === 'standard'
- ? theme.palette.text.primary
- : theme.palette[ownerState.color].main;
- let selectedColorChannel;
- if (theme.vars) {
- selectedColor =
- ownerState.color === 'standard'
- ? theme.vars.palette.text.primary
- : theme.vars.palette[ownerState.color].main;
- selectedColorChannel =
- ownerState.color === 'standard'
- ? theme.vars.palette.text.primaryChannel
- : theme.vars.palette[ownerState.color].mainChannel;
- }
-
- return {
- ...theme.typography.button,
- borderRadius: (theme.vars || theme).shape.borderRadius,
- padding: 11,
- border: `1px solid ${(theme.vars || theme).palette.divider}`,
- color: (theme.vars || theme).palette.action.active,
- ...(ownerState.fullWidth && {
- width: '100%',
- }),
- [`&.${toggleButtonClasses.disabled}`]: {
- color: (theme.vars || theme).palette.action.disabled,
- border: `1px solid ${(theme.vars || theme).palette.action.disabledBackground}`,
+})(({ theme }) => ({
+ ...theme.typography.button,
+ borderRadius: (theme.vars || theme).shape.borderRadius,
+ padding: 11,
+ border: `1px solid ${(theme.vars || theme).palette.divider}`,
+ color: (theme.vars || theme).palette.action.active,
+ [`&.${toggleButtonClasses.disabled}`]: {
+ color: (theme.vars || theme).palette.action.disabled,
+ border: `1px solid ${(theme.vars || theme).palette.action.disabledBackground}`,
+ },
+ '&:hover': {
+ textDecoration: 'none',
+ // Reset on mouse devices
+ backgroundColor: theme.vars
+ ? `rgba(${theme.vars.palette.text.primaryChannel} / ${theme.vars.palette.action.hoverOpacity})`
+ : alpha(theme.palette.text.primary, theme.palette.action.hoverOpacity),
+ '@media (hover: none)': {
+ backgroundColor: 'transparent',
},
- '&:hover': {
- textDecoration: 'none',
- // Reset on mouse devices
- backgroundColor: theme.vars
- ? `rgba(${theme.vars.palette.text.primaryChannel} / ${theme.vars.palette.action.hoverOpacity})`
- : alpha(theme.palette.text.primary, theme.palette.action.hoverOpacity),
- '@media (hover: none)': {
- backgroundColor: 'transparent',
+ },
+ variants: [
+ {
+ props: { color: 'standard' },
+ style: {
+ [`&.${toggleButtonClasses.selected}`]: {
+ color: (theme.vars || theme).palette.text.primary,
+ backgroundColor: theme.vars
+ ? `rgba(${theme.vars.palette.text.primaryChannel} / ${theme.vars.palette.action.selectedOpacity})`
+ : alpha(theme.palette.text.primary, theme.palette.action.selectedOpacity),
+ '&:hover': {
+ backgroundColor: theme.vars
+ ? `rgba(${theme.vars.palette.text.primaryChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))`
+ : alpha(
+ theme.palette.text.primary,
+ theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity,
+ ),
+ // Reset on touch devices, it doesn't add specificity
+ '@media (hover: none)': {
+ backgroundColor: theme.vars
+ ? `rgba(${theme.vars.palette.text.primaryChannel} / ${theme.vars.palette.action.selectedOpacity})`
+ : alpha(theme.palette.text.primary, theme.palette.action.selectedOpacity),
+ },
+ },
+ },
},
},
- [`&.${toggleButtonClasses.selected}`]: {
- color: selectedColor,
- backgroundColor: theme.vars
- ? `rgba(${selectedColorChannel} / ${theme.vars.palette.action.selectedOpacity})`
- : alpha(selectedColor, theme.palette.action.selectedOpacity),
- '&:hover': {
- backgroundColor: theme.vars
- ? `rgba(${selectedColorChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))`
- : alpha(
- selectedColor,
- theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity,
- ),
- // Reset on touch devices, it doesn't add specificity
- '@media (hover: none)': {
- backgroundColor: theme.vars
- ? `rgba(${selectedColorChannel} / ${theme.vars.palette.action.selectedOpacity})`
- : alpha(selectedColor, theme.palette.action.selectedOpacity),
+ ...Object.keys((theme.vars || theme).palette)
+ .filter((key) =>
+ theme.vars
+ ? theme.vars.palette[key].main && theme.vars.palette[key].mainChannel
+ : theme.palette[key].main,
+ )
+ .map((color) => ({
+ props: { color },
+ style: {
+ [`&.${toggleButtonClasses.selected}`]: {
+ color: (theme.vars || theme).palette[color].main,
+ backgroundColor: theme.vars
+ ? `rgba(${theme.vars.palette[color].mainChannel} / ${theme.vars.palette.action.selectedOpacity})`
+ : alpha(theme.palette[color].main, theme.palette.action.selectedOpacity),
+ '&:hover': {
+ backgroundColor: theme.vars
+ ? `rgba(${theme.vars.palette[color].mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))`
+ : alpha(
+ theme.palette[color].main,
+ theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity,
+ ),
+ // Reset on touch devices, it doesn't add specificity
+ '@media (hover: none)': {
+ backgroundColor: theme.vars
+ ? `rgba(${theme.vars.palette[color].mainChannel} / ${theme.vars.palette.action.selectedOpacity})`
+ : alpha(theme.palette[color].main, theme.palette.action.selectedOpacity),
+ },
+ },
+ },
},
+ })),
+ {
+ props: { fullWidth: true },
+ style: {
+ width: '100%',
},
},
- ...(ownerState.size === 'small' && {
- padding: 7,
- fontSize: theme.typography.pxToRem(13),
- }),
- ...(ownerState.size === 'large' && {
- padding: 15,
- fontSize: theme.typography.pxToRem(15),
- }),
- };
-});
+ {
+ props: { size: 'small' },
+ style: {
+ padding: 7,
+ fontSize: theme.typography.pxToRem(13),
+ },
+ },
+ {
+ props: { size: 'large' },
+ style: {
+ padding: 15,
+ fontSize: theme.typography.pxToRem(15),
+ },
+ },
+ ],
+}));
const ToggleButton = React.forwardRef(function ToggleButton(inProps, ref) {
// props priority: `inProps` > `contextProps` > `themeDefaultProps`
diff --git a/packages/mui-material/src/ToggleButtonGroup/ToggleButtonGroup.js b/packages/mui-material/src/ToggleButtonGroup/ToggleButtonGroup.js
index 799cf46053b912..73e31065a0c4c1 100644
--- a/packages/mui-material/src/ToggleButtonGroup/ToggleButtonGroup.js
+++ b/packages/mui-material/src/ToggleButtonGroup/ToggleButtonGroup.js
@@ -5,8 +5,7 @@ import PropTypes from 'prop-types';
import clsx from 'clsx';
import composeClasses from '@mui/utils/composeClasses';
import getValidReactChildren from '@mui/utils/getValidReactChildren';
-import styled from '../styles/styled';
-import useThemeProps from '../styles/useThemeProps';
+import { styled, createUseThemeProps } from '../zero-styled';
import capitalize from '../utils/capitalize';
import toggleButtonGroupClasses, {
getToggleButtonGroupUtilityClass,
@@ -15,11 +14,13 @@ import ToggleButtonGroupContext from './ToggleButtonGroupContext';
import ToggleButtonGroupButtonContext from './ToggleButtonGroupButtonContext';
import toggleButtonClasses from '../ToggleButton/toggleButtonClasses';
+const useThemeProps = createUseThemeProps('MuiToggleButtonGroup');
+
const useUtilityClasses = (ownerState) => {
const { classes, orientation, fullWidth, disabled } = ownerState;
const slots = {
- root: ['root', orientation === 'vertical' && 'vertical', fullWidth && 'fullWidth'],
+ root: ['root', orientation, fullWidth && 'fullWidth'],
grouped: ['grouped', `grouped${capitalize(orientation)}`, disabled && 'disabled'],
firstButton: ['firstButton'],
lastButton: ['lastButton'],
@@ -55,47 +56,21 @@ const ToggleButtonGroupRoot = styled('div', {
ownerState.fullWidth && styles.fullWidth,
];
},
-})(({ ownerState, theme }) => ({
+})(({ theme }) => ({
display: 'inline-flex',
borderRadius: (theme.vars || theme).shape.borderRadius,
- ...(ownerState.orientation === 'vertical' && {
- flexDirection: 'column',
- }),
- ...(ownerState.fullWidth && {
- width: '100%',
- }),
- [`& .${toggleButtonGroupClasses.grouped}`]: {
- ...(ownerState.orientation === 'horizontal'
- ? {
- [`&.${toggleButtonGroupClasses.selected} + .${toggleButtonGroupClasses.grouped}.${toggleButtonGroupClasses.selected}`]:
- {
- borderLeft: 0,
- marginLeft: 0,
- },
- }
- : {
+ variants: [
+ {
+ props: { orientation: 'vertical' },
+ style: {
+ flexDirection: 'column',
+ [`& .${toggleButtonGroupClasses.grouped}`]: {
[`&.${toggleButtonGroupClasses.selected} + .${toggleButtonGroupClasses.grouped}.${toggleButtonGroupClasses.selected}`]:
{
borderTop: 0,
marginTop: 0,
},
- }),
- },
- ...(ownerState.orientation === 'horizontal'
- ? {
- [`& .${toggleButtonGroupClasses.firstButton},& .${toggleButtonGroupClasses.middleButton}`]:
- {
- borderTopRightRadius: 0,
- borderBottomRightRadius: 0,
- },
- [`& .${toggleButtonGroupClasses.lastButton},& .${toggleButtonGroupClasses.middleButton}`]: {
- marginLeft: -1,
- borderLeft: '1px solid transparent',
- borderTopLeftRadius: 0,
- borderBottomLeftRadius: 0,
},
- }
- : {
[`& .${toggleButtonGroupClasses.firstButton},& .${toggleButtonGroupClasses.middleButton}`]:
{
borderBottomLeftRadius: 0,
@@ -107,20 +82,46 @@ const ToggleButtonGroupRoot = styled('div', {
borderTopLeftRadius: 0,
borderTopRightRadius: 0,
},
- }),
- ...(ownerState.orientation === 'horizontal'
- ? {
[`& .${toggleButtonGroupClasses.lastButton}.${toggleButtonClasses.disabled},& .${toggleButtonGroupClasses.middleButton}.${toggleButtonClasses.disabled}`]:
{
- borderLeft: '1px solid transparent',
+ borderTop: '1px solid transparent',
},
- }
- : {
+ },
+ },
+ {
+ props: { fullWidth: true },
+ style: {
+ width: '100%',
+ },
+ },
+ {
+ props: { orientation: 'horizontal' },
+ style: {
+ [`& .${toggleButtonGroupClasses.grouped}`]: {
+ [`&.${toggleButtonGroupClasses.selected} + .${toggleButtonGroupClasses.grouped}.${toggleButtonGroupClasses.selected}`]:
+ {
+ borderLeft: 0,
+ marginLeft: 0,
+ },
+ },
+ [`& .${toggleButtonGroupClasses.firstButton},& .${toggleButtonGroupClasses.middleButton}`]:
+ {
+ borderTopRightRadius: 0,
+ borderBottomRightRadius: 0,
+ },
+ [`& .${toggleButtonGroupClasses.lastButton},& .${toggleButtonGroupClasses.middleButton}`]: {
+ marginLeft: -1,
+ borderLeft: '1px solid transparent',
+ borderTopLeftRadius: 0,
+ borderBottomLeftRadius: 0,
+ },
[`& .${toggleButtonGroupClasses.lastButton}.${toggleButtonClasses.disabled},& .${toggleButtonGroupClasses.middleButton}.${toggleButtonClasses.disabled}`]:
{
- borderTop: '1px solid transparent',
+ borderLeft: '1px solid transparent',
},
- }),
+ },
+ },
+ ],
}));
const ToggleButtonGroup = React.forwardRef(function ToggleButtonGroup(inProps, ref) {
diff --git a/packages/mui-material/src/ToggleButtonGroup/ToggleButtonGroup.test.js b/packages/mui-material/src/ToggleButtonGroup/ToggleButtonGroup.test.js
index 142ffc45a3ef5e..385ae149f5d6a7 100644
--- a/packages/mui-material/src/ToggleButtonGroup/ToggleButtonGroup.test.js
+++ b/packages/mui-material/src/ToggleButtonGroup/ToggleButtonGroup.test.js
@@ -39,6 +39,15 @@ describe(' ', () => {
expect(getByRole('button')).to.have.class('MuiToggleButtonGroup-groupedVertical');
});
+ it('should have horizontal class', () => {
+ const { getByRole } = render(
+
+ 1
+ ,
+ );
+ expect(getByRole('group')).to.have.class(classes.horizontal);
+ });
+
it('should disable all ToggleButton if disabled prop is passed', () => {
render(
diff --git a/packages/mui-material/src/ToggleButtonGroup/toggleButtonGroupClasses.ts b/packages/mui-material/src/ToggleButtonGroup/toggleButtonGroupClasses.ts
index 75cf854a4d59fc..d4a133d61996f7 100644
--- a/packages/mui-material/src/ToggleButtonGroup/toggleButtonGroupClasses.ts
+++ b/packages/mui-material/src/ToggleButtonGroup/toggleButtonGroupClasses.ts
@@ -4,15 +4,21 @@ import generateUtilityClass from '@mui/utils/generateUtilityClass';
export interface ToggleButtonGroupClasses {
/** Styles applied to the root element. */
root: string;
+ /** Styles applied to the root element if `orientation="horizontal"`. */
+ horizontal: string;
/** Styles applied to the root element if `orientation="vertical"`. */
vertical: string;
/** State class applied to the root element if `disabled={true}`. */
disabled: string;
/** Styles applied to the children. */
grouped: string;
- /** Styles applied to the children if `orientation="horizontal"`. */
+ /** Styles applied to the children if `orientation="horizontal"`.
+ * @deprecated Combine the [.MuiToggleButtonGroup-horizontal](/material-ui/api/toggle-button-group/#toggle-button-group-classes-horizontal) and [.MuiToggleButtonGroup-grouped](/material-ui/api/toggle-button-group/#toggle-button-group-classes-grouped) classes instead. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/)
+ */
groupedHorizontal: string;
- /** Styles applied to the children if `orientation="vertical"`. */
+ /** Styles applied to the children if `orientation="vertical"`.
+ * @deprecated Combine the [.MuiToggleButtonGroup-vertical](/material-ui/api/toggle-button-group/#toggle-button-group-classes-vertical) and [.MuiToggleButtonGroup-grouped](/material-ui/api/toggle-button-group/#toggle-button-group-classes-grouped) classes instead. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/)
+ */
groupedVertical: string;
/** Styles applied to the root element if `fullWidth={true}`. */
fullWidth: string;
@@ -35,6 +41,7 @@ const toggleButtonGroupClasses: ToggleButtonGroupClasses = generateUtilityClasse
[
'root',
'selected',
+ 'horizontal',
'vertical',
'disabled',
'grouped',
diff --git a/packages/mui-material/src/Typography/Typography.js b/packages/mui-material/src/Typography/Typography.js
index 0f917f9d9a0318..36201f1829f952 100644
--- a/packages/mui-material/src/Typography/Typography.js
+++ b/packages/mui-material/src/Typography/Typography.js
@@ -46,6 +46,8 @@ export const TypographyRoot = styled('span', {
...(ownerState.variant === 'inherit' && {
// Some elements, like on Chrome have default font that doesn't inherit, reset this.
font: 'inherit',
+ lineHeight: 'inherit',
+ letterSpacing: 'inherit',
}),
...(ownerState.variant !== 'inherit' && theme.typography[ownerState.variant]),
...(ownerState.align !== 'inherit' && {
diff --git a/packages/mui-material/src/locale/index.ts b/packages/mui-material/src/locale/index.ts
index cc37e2429ab0ac..c6c494c16f96f8 100644
--- a/packages/mui-material/src/locale/index.ts
+++ b/packages/mui-material/src/locale/index.ts
@@ -1864,7 +1864,7 @@ export const isIS: Localization = {
},
labelRowsPerPage: 'Raðir á síðu:',
labelDisplayedRows: ({ from, to, count }) =>
- `${from}–${to} af ${count !== -1 ? count : `fleiri enn ${to}`}`,
+ `${from}–${to} af ${count !== -1 ? count : `fleiri en ${to}`}`,
},
},
MuiRating: {
diff --git a/packages/mui-material/src/zero-styled/index.ts b/packages/mui-material/src/zero-styled/index.ts
index e36c2ac982e786..deff4b2bff07a0 100644
--- a/packages/mui-material/src/zero-styled/index.ts
+++ b/packages/mui-material/src/zero-styled/index.ts
@@ -1,6 +1,6 @@
import useThemeProps from '../styles/useThemeProps';
-export { keyframes } from '@mui/system';
+export { css, keyframes } from '@mui/system';
export { default as styled } from '../styles/styled';
diff --git a/packages/mui-private-theming/package.json b/packages/mui-private-theming/package.json
index 24815bbbb6b8e4..7bf488f86cb475 100644
--- a/packages/mui-private-theming/package.json
+++ b/packages/mui-private-theming/package.json
@@ -1,6 +1,6 @@
{
"name": "@mui/private-theming",
- "version": "5.15.14",
+ "version": "6.0.0-alpha.1",
"private": false,
"author": "MUI Team",
"description": "Private - The React theme context to be shared between `@mui/styles` and `@mui/material`.",
diff --git a/packages/mui-styled-engine-sc/package.json b/packages/mui-styled-engine-sc/package.json
index 756b4e0596d84b..5e850007c2b664 100644
--- a/packages/mui-styled-engine-sc/package.json
+++ b/packages/mui-styled-engine-sc/package.json
@@ -1,6 +1,6 @@
{
"name": "@mui/styled-engine-sc",
- "version": "6.0.0-alpha.19",
+ "version": "6.0.0-alpha.20",
"private": false,
"author": "MUI Team",
"description": "styled() API wrapper package for styled-components.",
diff --git a/packages/mui-styled-engine/package.json b/packages/mui-styled-engine/package.json
index 22e13788d0a4af..3f8e17d2c0f092 100644
--- a/packages/mui-styled-engine/package.json
+++ b/packages/mui-styled-engine/package.json
@@ -1,6 +1,6 @@
{
"name": "@mui/styled-engine",
- "version": "6.0.0-alpha.0",
+ "version": "6.0.0-alpha.1",
"private": false,
"author": "MUI Team",
"description": "styled() API wrapper package for emotion.",
diff --git a/packages/mui-styles/package.json b/packages/mui-styles/package.json
index 229341dc6735ad..25fb2d11243519 100644
--- a/packages/mui-styles/package.json
+++ b/packages/mui-styles/package.json
@@ -1,6 +1,6 @@
{
"name": "@mui/styles",
- "version": "6.0.0-alpha.0",
+ "version": "6.0.0-alpha.2",
"private": false,
"author": "MUI Team",
"description": "MUI Styles - The legacy JSS-based styling solution of Material UI.",
diff --git a/packages/mui-system/package.json b/packages/mui-system/package.json
index e0c3e06e7123d7..7a6bb48a0104fe 100644
--- a/packages/mui-system/package.json
+++ b/packages/mui-system/package.json
@@ -1,6 +1,6 @@
{
"name": "@mui/system",
- "version": "6.0.0-alpha.0",
+ "version": "6.0.0-alpha.1",
"private": false,
"author": "MUI Team",
"description": "MUI System is a set of CSS utilities to help you build custom designs more efficiently. It makes it possible to rapidly lay out custom designs.",
diff --git a/packages/mui-utils/package.json b/packages/mui-utils/package.json
index 216b9a102e1c4b..2675ce2917f370 100644
--- a/packages/mui-utils/package.json
+++ b/packages/mui-utils/package.json
@@ -1,6 +1,6 @@
{
"name": "@mui/utils",
- "version": "5.15.14",
+ "version": "6.0.0-alpha.1",
"private": false,
"author": "MUI Team",
"description": "Utility functions for React components.",
@@ -50,7 +50,7 @@
"@mui/types": "workspace:^",
"@types/chai": "^4.3.14",
"@types/mocha": "^10.0.6",
- "@types/node": "^18.19.28",
+ "@types/node": "^18.19.31",
"@types/react": "^18.2.55",
"@types/react-dom": "^18.2.19",
"@types/react-is": "^18.2.4",
diff --git a/packages/pigment-css-nextjs-plugin/package.json b/packages/pigment-css-nextjs-plugin/package.json
index 48fc30fa15324f..7096e3095ad65c 100644
--- a/packages/pigment-css-nextjs-plugin/package.json
+++ b/packages/pigment-css-nextjs-plugin/package.json
@@ -1,6 +1,6 @@
{
"name": "@pigment-css/nextjs-plugin",
- "version": "0.0.4",
+ "version": "0.0.6",
"main": "build/index.js",
"module": "build/index.mjs",
"types": "build/index.d.ts",
diff --git a/packages/pigment-css-nextjs-plugin/src/index.ts b/packages/pigment-css-nextjs-plugin/src/index.ts
index 6055f710f4ebd8..53e6e62ffdf78e 100644
--- a/packages/pigment-css-nextjs-plugin/src/index.ts
+++ b/packages/pigment-css-nextjs-plugin/src/index.ts
@@ -53,6 +53,7 @@ export function withPigment(nextConfig: NextConfig, pigmentConfig?: PigmentOptio
isServer,
outputCss: dev || hasAppDir || !isServer,
placeholderCssFile: extractionFile,
+ projectPath: dir,
},
async asyncResolve(what: string, importer: string, stack: string[]) {
// Using the same stub file as "next/font". Should be updated in future to
diff --git a/packages/pigment-css-react/README.md b/packages/pigment-css-react/README.md
index b9197f55b28896..a949e580fa803a 100644
--- a/packages/pigment-css-react/README.md
+++ b/packages/pigment-css-react/README.md
@@ -343,7 +343,7 @@ Pigment CSS replaces the callback with a CSS variable and injects the value thr
```jsx
(isError ? 'red' : 'black'),
+ '--Heading_class_akjsdfb-0': isError ? 'red' : 'black',
}}
>
Hello
@@ -814,7 +814,7 @@ const Flex = styled('div')((props) => ({
2. **Programatically generated styles**
-For Emotion and styled-components, the styles is different on each render and instance because the styles are generated at runtime:
+For Emotion and styled-components, the styles are different on each render and instance because the styles are generated at runtime:
```js
function randomBetween(min: number, max: number) {
@@ -957,47 +957,47 @@ In this example, a prop named `variant` is defined to let consumers change the a
Pass down the `variant` prop to `` to style the `root` slot, as shown below:
```diff
- const Stat = React.forwardRef(function Stat(props, ref) {
-+ const { value, unit, variant, ...other } = props;
-
- return (
--
-- {value}
-- {unit}
--
-+
-+ {value}
-+ {unit}
-+
- );
- });
+ const Stat = React.forwardRef(function Stat(props, ref) {
++ const { value, unit, variant, ...other } = props;
+
+ return (
+-
+- {value}
+- {unit}
+-
++
++ {value}
++ {unit}
++
+ );
+ });
```
Then you can use Pigment CSS variants API to style it when `variant` prop has a value of `outlined`:
```diff
- const StatRoot = styled('div', {
- name: 'PigmentStat',
- slot: 'root',
- })({
- display: 'flex',
- flexDirection: 'column',
- gap: '1rem',
- padding: '0.75rem 1rem',
- backgroundColor: '#f9f9f9',
- borderRadius: '8px',
- boxShadow: '0 2px 4px rgba(0, 0, 0, 0.1)',
- letterSpacing: '-0.025em',
- fontWeight: 600,
-+ variants: [
-+ {
-+ props: { variant: 'outlined' },
-+ style: {
-+ border: `2px solid #e9e9e9`,
-+ },
-+ },
-+ ],
- });
+ const StatRoot = styled('div', {
+ name: 'PigmentStat',
+ slot: 'root',
+ })({
+ display: 'flex',
+ flexDirection: 'column',
+ gap: '1rem',
+ padding: '0.75rem 1rem',
+ backgroundColor: '#f9f9f9',
+ borderRadius: '8px',
+ boxShadow: '0 2px 4px rgba(0, 0, 0, 0.1)',
+ letterSpacing: '-0.025em',
+ fontWeight: 600,
++ variants: [
++ {
++ props: { variant: 'outlined' },
++ style: {
++ border: `2px solid #e9e9e9`,
++ },
++ },
++ ],
+ });
```
This completes the reusable statistics component.
diff --git a/packages/pigment-css-react/package.json b/packages/pigment-css-react/package.json
index 2b0c8fb30606c5..c337b8ad6eebfb 100644
--- a/packages/pigment-css-react/package.json
+++ b/packages/pigment-css-react/package.json
@@ -1,6 +1,6 @@
{
"name": "@pigment-css/react",
- "version": "0.0.4",
+ "version": "0.0.6",
"main": "build/index.js",
"module": "build/index.mjs",
"types": "build/index.d.ts",
@@ -61,7 +61,7 @@
"@types/cssesc": "^3.0.2",
"@types/lodash": "^4.17.0",
"@types/mocha": "^10.0.6",
- "@types/node": "^18.19.28",
+ "@types/node": "^18.19.31",
"@types/react": "^18.2.55",
"@types/stylis": "^4.2.5",
"chai": "^4.4.1",
@@ -127,26 +127,8 @@
"require": "./utils/index.js",
"default": "./utils/index.js"
},
- "./exports/generateAtomics": {
- "default": "./exports/generateAtomics.js"
- },
- "./exports/keyframes": {
- "default": "./exports/keyframes.js"
- },
- "./exports/styled": {
- "default": "./exports/styled.js"
- },
- "./exports/sx-plugin": {
- "default": "./exports/sx-plugin.js"
- },
- "./exports/remove-prop-types-plugin": {
- "default": "./exports/remove-prop-types-plugin.js"
- },
- "./exports/sx": {
- "default": "./exports/sx.js"
- },
- "./exports/createUseThemeProps": {
- "default": "./exports/createUseThemeProps.js"
+ "./exports/*": {
+ "default": "./exports/*.js"
},
"./Box": {
"types": "./build/Box.d.ts",
diff --git a/packages/pigment-css-react/src/utils/remove-prop-types-plugin.ts b/packages/pigment-css-react/src/utils/remove-prop-types-plugin.ts
index 944209882af369..de48af2ae2d0ba 100644
--- a/packages/pigment-css-react/src/utils/remove-prop-types-plugin.ts
+++ b/packages/pigment-css-react/src/utils/remove-prop-types-plugin.ts
@@ -11,7 +11,10 @@ export const removePropTypesPlugin = declare<{}>((api) => {
return;
}
const property = left.get('property');
- if (!property.isIdentifier({ name: 'propTypes' })) {
+ const isPropTypes = property.isIdentifier({ name: 'propTypes' });
+ const isMuiName = property.isIdentifier({ name: 'muiName' });
+
+ if (!isPropTypes && !isMuiName) {
return;
}
const parentExpression = path.findParent((p) => p.isExpressionStatement());
diff --git a/packages/pigment-css-react/tests/styled/fixtures/styled-theme.input.js b/packages/pigment-css-react/tests/styled/fixtures/styled-theme.input.js
index 80b96babb87007..d06b7864ff96d4 100644
--- a/packages/pigment-css-react/tests/styled/fixtures/styled-theme.input.js
+++ b/packages/pigment-css-react/tests/styled/fixtures/styled-theme.input.js
@@ -50,3 +50,5 @@ process.env.NODE_ENV !== 'production'
children: PropTypes.element,
})
: void 0;
+
+process.env.NODE_ENV !== 'production' ? (App.muiName = 'App') : void 0;
diff --git a/packages/pigment-css-react/tests/styled/fixtures/styled-theme.output.js b/packages/pigment-css-react/tests/styled/fixtures/styled-theme.output.js
index 2eae296833973e..3e3eae8b2f3244 100644
--- a/packages/pigment-css-react/tests/styled/fixtures/styled-theme.output.js
+++ b/packages/pigment-css-react/tests/styled/fixtures/styled-theme.output.js
@@ -26,3 +26,4 @@ process.env.NODE_ENV !== 'production'
children: PropTypes.element,
})
: void 0;
+process.env.NODE_ENV !== 'production' ? (App.muiName = 'App') : void 0;
diff --git a/packages/pigment-css-react/tests/styled/fixtures/styled.input.js b/packages/pigment-css-react/tests/styled/fixtures/styled.input.js
index 1d7464f329a50d..355ba897b1d1f4 100644
--- a/packages/pigment-css-react/tests/styled/fixtures/styled.input.js
+++ b/packages/pigment-css-react/tests/styled/fixtures/styled.input.js
@@ -46,3 +46,5 @@ export function App() {
App.propTypes = {
children: PropTypes.element,
};
+
+App.muiName = 'App';
diff --git a/packages/pigment-css-react/tests/styled/fixtures/styled.output.js b/packages/pigment-css-react/tests/styled/fixtures/styled.output.js
index e29c5075747ff5..5ae7640121516f 100644
--- a/packages/pigment-css-react/tests/styled/fixtures/styled.output.js
+++ b/packages/pigment-css-react/tests/styled/fixtures/styled.output.js
@@ -24,3 +24,4 @@ export function App() {
App.propTypes = {
children: PropTypes.element,
};
+App.muiName = 'App';
diff --git a/packages/pigment-css-unplugin/.eslintrc b/packages/pigment-css-unplugin/.eslintrc
new file mode 100644
index 00000000000000..5abd34a395bc37
--- /dev/null
+++ b/packages/pigment-css-unplugin/.eslintrc
@@ -0,0 +1,5 @@
+{
+ "rules": {
+ "import/prefer-default-export": "off"
+ }
+}
diff --git a/packages/pigment-css-unplugin/package.json b/packages/pigment-css-unplugin/package.json
index 6af6ac66d757fa..ecddb0af7ccd3e 100644
--- a/packages/pigment-css-unplugin/package.json
+++ b/packages/pigment-css-unplugin/package.json
@@ -1,6 +1,6 @@
{
"name": "@pigment-css/unplugin",
- "version": "0.0.4",
+ "version": "0.0.6",
"main": "build/index.js",
"module": "build/index.mjs",
"types": "build/index.d.ts",
@@ -25,7 +25,9 @@
"watch": "tsup --watch --tsconfig tsconfig.build.json",
"copy-license": "node ../../scripts/pigment-license.mjs",
"build": "tsup --tsconfig tsconfig.build.json",
- "typecheck": "tsc --noEmit -p ."
+ "typecheck": "tsc --noEmit -p .",
+ "test": "cd ../../ && cross-env NODE_ENV=test mocha 'packages/pigment-css-unplugin/**/*.test.{js,ts,tsx}'",
+ "test:ci": "cd ../../ && cross-env NODE_ENV=test BABEL_ENV=coverage nyc --reporter=lcov --report-dir=./coverage/pigment-css-unplugin mocha 'packages/pigment-css-unplugin/**/*.test.{js,ts,tsx}'"
},
"dependencies": {
"@babel/core": "^7.24.4",
@@ -36,7 +38,10 @@
"unplugin": "^1.7.1"
},
"devDependencies": {
- "@types/babel__core": "^7.20.5"
+ "@types/babel__core": "^7.20.5",
+ "@types/chai": "^4.3.14",
+ "@types/mocha": "^10.0.6",
+ "chai": "^4.4.1"
},
"sideEffects": false,
"publishConfig": {
diff --git a/packages/pigment-css-unplugin/src/index.ts b/packages/pigment-css-unplugin/src/index.ts
index bd8a047609fd4c..cbddd39982e4d7 100644
--- a/packages/pigment-css-unplugin/src/index.ts
+++ b/packages/pigment-css-unplugin/src/index.ts
@@ -21,15 +21,19 @@ import {
generateThemeTokens,
extendTheme,
type Theme as BaseTheme,
+ type PluginCustomOptions,
} from '@pigment-css/react/utils';
import type { ResolvePluginInstance } from 'webpack';
+import { handleUrlReplacement, type AsyncResolver } from './utils';
+
type NextMeta = {
type: 'next';
dev: boolean;
isServer: boolean;
outputCss: boolean;
placeholderCssFile: string;
+ projectPath: string;
};
type ViteMeta = {
@@ -41,7 +45,6 @@ type WebpackMeta = {
};
type Meta = NextMeta | ViteMeta | WebpackMeta;
-export type AsyncResolver = (what: string, importer: string, stack: string[]) => Promise;
export type PigmentOptions = {
theme?: Theme;
@@ -52,7 +55,8 @@ export type PigmentOptions = {
meta?: Meta;
asyncResolve?: (...args: Parameters) => Promise;
transformSx?: boolean;
-} & Partial;
+} & Partial &
+ Omit;
const extensions = ['.js', '.jsx', '.mjs', '.cjs', '.ts', '.tsx', '.mts', '.cts'];
@@ -100,13 +104,14 @@ export const plugin = createUnplugin((options) => {
theme,
meta,
transformLibraries = [],
- preprocessor = basePreprocessor,
+ preprocessor,
asyncResolve: asyncResolveOpt,
debug = false,
sourceMap = false,
transformSx = true,
overrideContext,
tagResolver,
+ css,
...rest
} = options;
const cache = new TransformCacheCollection();
@@ -116,7 +121,7 @@ export const plugin = createUnplugin((options) => {
const isNext = meta?.type === 'next';
const outputCss = isNext && meta.outputCss;
const babelTransformPlugin: UnpluginOptions = {
- name: 'zero-plugin-transform-babel',
+ name: 'pigment-css-plugin-transform-babel',
enforce: 'post',
transformInclude(id) {
return isZeroRuntimeProcessableFile(id, transformLibraries);
@@ -137,6 +142,7 @@ export const plugin = createUnplugin((options) => {
};
},
};
+ const projectPath = meta?.type === 'next' ? meta.projectPath : process.cwd();
let webpackResolver: AsyncResolver;
@@ -151,8 +157,12 @@ export const plugin = createUnplugin((options) => {
return asyncResolveFallback(what, importer, stack);
};
+ const withRtl = (selector: string, cssText: string) => {
+ return basePreprocessor(selector, cssText, css);
+ };
+
const wywInJSTransformPlugin: UnpluginOptions = {
- name: 'zero-plugin-transform-wyw-in-js',
+ name: 'pigment-css-plugin-transform-wyw-in-js',
enforce: 'post',
buildEnd() {
onDone(process.cwd());
@@ -188,12 +198,13 @@ export const plugin = createUnplugin((options) => {
compiler.options.resolve.plugins = compiler.options.resolve.plugins || [];
compiler.options.resolve.plugins.push(resolverPlugin);
},
- async transform(code, id) {
+ async transform(code, filePath) {
+ const [id] = filePath.split('?');
const transformServices = {
options: {
filename: id,
root: process.cwd(),
- preprocessor,
+ preprocessor: preprocessor ?? withRtl,
pluginOptions: {
...rest,
themeArgs: {
@@ -246,8 +257,15 @@ export const plugin = createUnplugin((options) => {
map: result.sourceMap,
};
}
- const slug = slugify(cssText);
- const cssFilename = `${slug}.zero.css`;
+
+ if (isNext) {
+ // Handle url() replacement in css. Only handled in Next.js as the css is injected
+ // through the use of a placeholder CSS file that lies in the nextjs plugin package.
+ // So url paths can't be resolved relative to that file.
+ if (cssText && cssText.includes('url(')) {
+ cssText = await handleUrlReplacement(cssText, id, asyncResolve, projectPath);
+ }
+ }
if (sourceMap && result.cssSourceMapText) {
const map = Buffer.from(result.cssSourceMapText).toString('base64');
@@ -255,12 +273,13 @@ export const plugin = createUnplugin((options) => {
}
// Virtual modules do not work consistently in Next.js (the build is done at least
- // thrice) resulting in error in subsequent builds. So we use a placeholder CSS
- // file with the actual CSS content as part of the query params.
+ // thrice with different combination of parameters) resulting in error in
+ // subsequent builds. So we use a placeholder CSS file with the actual CSS content
+ // as part of the query params.
if (isNext) {
const data = `${meta.placeholderCssFile}?${encodeURIComponent(
JSON.stringify({
- filename: cssFilename,
+ filename: id.split('/').pop(),
source: cssText,
}),
)}`;
@@ -270,9 +289,13 @@ export const plugin = createUnplugin((options) => {
map: result.sourceMap,
};
}
+
+ const slug = slugify(cssText);
+ const cssFilename = `${slug}.pigment.css`;
const cssId = `./${cssFilename}`;
cssFileLookup.set(cssId, cssFilename);
cssLookup.set(cssFilename, cssText);
+
return {
code: `${result.code}\nimport ${JSON.stringify(`./${cssFilename}`)};`,
map: result.sourceMap,
@@ -287,7 +310,7 @@ export const plugin = createUnplugin((options) => {
const plugins: Array = [
{
- name: 'zero-plugin-theme-tokens',
+ name: 'pigment-css-plugin-theme-tokens',
enforce: 'pre',
webpack(compiler) {
compiler.hooks.normalModuleFactory.tap(pluginName, (nmf) => {
@@ -295,7 +318,7 @@ export const plugin = createUnplugin((options) => {
pluginName,
// @ts-expect-error CreateData is typed as 'object'...
(createData: { matchResource?: string; settings: { sideEffects?: boolean } }) => {
- if (createData.matchResource && createData.matchResource.endsWith('.zero.css')) {
+ if (createData.matchResource && createData.matchResource.endsWith('.pigment.css')) {
createData.settings.sideEffects = true;
}
},
@@ -361,13 +384,13 @@ export const plugin = createUnplugin((options) => {
// This is already handled separately for Next.js using `placeholderCssFile`
if (!isNext) {
plugins.push({
- name: 'zero-plugin-load-output-css',
+ name: 'pigment-css-plugin-load-output-css',
enforce: 'pre',
resolveId(source: string) {
return cssFileLookup.get(source);
},
loadInclude(id) {
- return id.endsWith('.zero.css');
+ return id.endsWith('.pigment.css');
},
load(id) {
return cssLookup.get(id) ?? '';
@@ -382,4 +405,4 @@ export const webpack = plugin.webpack as unknown as UnpluginFactoryOutput<
WebpackPluginInstance
>;
-export { extendTheme };
+export { type AsyncResolver, extendTheme };
diff --git a/packages/pigment-css-unplugin/src/utils.ts b/packages/pigment-css-unplugin/src/utils.ts
new file mode 100644
index 00000000000000..da108320f607b2
--- /dev/null
+++ b/packages/pigment-css-unplugin/src/utils.ts
@@ -0,0 +1,66 @@
+import * as path from 'node:path';
+
+export type AsyncResolver = (what: string, importer: string, stack: string[]) => Promise;
+
+/**
+ * There might be a better way to do this in future, but due to the async
+ * nature of the resolver, this is the best way currently to replace url()
+ * content references with the absolute path of the referenced file.
+ * This is because WyW-in-JS's preprocessor is a sync call. So we can't resolve
+ * paths in this call asyncronously.
+ * The upside is that we can use aliases in the url() references as well
+ * alongside relative paths.
+ */
+export const handleUrlReplacement = async (
+ cssText: string,
+ filename: string,
+ asyncResolver: AsyncResolver,
+ projectPath: string,
+) => {
+ // [0] [1][2] [3] [4]
+ const urlRegex = /\b(url\((["']?))(\.?[^)]+?)(\2\))/g;
+ let newCss = '';
+ let match = urlRegex.exec(cssText);
+ let lastIndex = 0;
+ while (match) {
+ newCss += cssText.substring(lastIndex, match.index);
+ const mainItem = match[3];
+ // no need to handle data uris or absolute paths
+ if (
+ mainItem.startsWith('data:') ||
+ mainItem.startsWith('http:') ||
+ mainItem.startsWith('https:')
+ ) {
+ newCss += `url(${mainItem})`;
+ } else if (mainItem[0] === '/') {
+ const newPath = mainItem.replace(projectPath, '').split(path.sep).join('/');
+ if (newPath === mainItem) {
+ // absolute path unrelated to files in the project or in public directory
+ newCss += `url(${mainItem})`;
+ } else {
+ // absolute path to files in the project
+ newCss += `url(~${mainItem.replace(projectPath, '').split(path.sep).join('/')})`;
+ }
+ } else {
+ // eslint-disable-next-line no-await-in-loop
+ const resolvedAbsolutePath = await asyncResolver(mainItem, filename, []);
+ if (!resolvedAbsolutePath) {
+ newCss += `url(${mainItem})`;
+ } else {
+ let pathFromRoot = resolvedAbsolutePath.replace(projectPath, '');
+ // Need to do this for Windows paths
+ pathFromRoot = pathFromRoot.split(path.sep).join('/');
+ // const relativePathToProjectRoot = path.relative()
+ // Next.js expects the path to be relative to the project root and starting with ~
+ newCss += `url(~${pathFromRoot})`;
+ }
+ }
+ lastIndex = match.index + match[0].length;
+ match = urlRegex.exec(cssText);
+ }
+ newCss += cssText.substring(lastIndex);
+ if (!newCss) {
+ return cssText;
+ }
+ return newCss;
+};
diff --git a/packages/pigment-css-unplugin/tests/utils.test.ts b/packages/pigment-css-unplugin/tests/utils.test.ts
new file mode 100644
index 00000000000000..c0f8a4bd97ee4f
--- /dev/null
+++ b/packages/pigment-css-unplugin/tests/utils.test.ts
@@ -0,0 +1,88 @@
+import { expect } from 'chai';
+import { handleUrlReplacement } from '../src/utils';
+
+const DATA_URI =
+ 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTIwLjUgMTMuN2';
+const HTML_LOGO_URL = 'https://mui.com/static/logo.svg';
+const ABSOLUTE_PATH = '/static/logo.svg';
+const dummyResolver = (url: string) => {
+ return Promise.resolve(url);
+};
+
+describe('utils', () => {
+ describe('handleUrlReplacement', () => {
+ it('should not replace http/data/absolute urls', async () => {
+ [DATA_URI, HTML_LOGO_URL, ABSOLUTE_PATH].forEach(async (url) => {
+ const cssString1 = `.className {
+ background-image: url(${url});
+ }`;
+ const cssString2 = `.className {
+ background-image: url('${url}');
+ }`;
+ expect(
+ await handleUrlReplacement(
+ cssString1,
+ '/path/to/project/filename.ts',
+ dummyResolver,
+ '/path/to/project',
+ ),
+ ).to.equal(cssString1);
+ expect(
+ await handleUrlReplacement(
+ cssString2,
+ '/path/to/project/filename.ts',
+ dummyResolver,
+ '/path/to/project',
+ ),
+ ).to.equal(cssString1);
+ });
+ });
+
+ it('should replace relative or aliased paths with paths relative to the current working directory', async () => {
+ const projectPath = '/path/to/project';
+ const filePath = `${projectPath}/src/components/Slider.tsx`;
+ const resolver = (url: string): Promise => {
+ return new Promise((resolve) => {
+ if (url.startsWith('@/')) {
+ resolve(`${projectPath}/src${url.slice(1)}`);
+ } else if (url.startsWith('../../')) {
+ resolve(`${projectPath}/src/${url.replace('../../', '')}`);
+ } else if (url.startsWith('/')) {
+ resolve(url);
+ }
+ });
+ };
+ const cssString = `.className_c17ksbvo{
+ background-color:var(--mui-palette-background-default, #fff);
+ color:var(--mui-palette-text-primary, rgba(0, 0, 0, 0.87));
+ background-image: url('${DATA_URI}');
+ background-image: url('${HTML_LOGO_URL}');
+ background-image: url(${ABSOLUTE_PATH});
+ background-image: url('../../assets/mui.svg');
+ background-image: url('@/assets/mui.svg');
+ background-image: url('${projectPath}/src/assets/mui.svg');
+ background-image: url('/assets/mui.svg');
+ background-image: url('@/assets/mui.svg');
+ display: flex;
+ position: absolute;
+ }`;
+ const expectedCssString = `.className_c17ksbvo{
+ background-color:var(--mui-palette-background-default, #fff);
+ color:var(--mui-palette-text-primary, rgba(0, 0, 0, 0.87));
+ background-image: url(${DATA_URI});
+ background-image: url(${HTML_LOGO_URL});
+ background-image: url(${ABSOLUTE_PATH});
+ background-image: url(~/src/assets/mui.svg);
+ background-image: url(~/src/assets/mui.svg);
+ background-image: url(~/src/assets/mui.svg);
+ background-image: url(/assets/mui.svg);
+ background-image: url(~/src/assets/mui.svg);
+ display: flex;
+ position: absolute;
+ }`;
+ expect(await handleUrlReplacement(cssString, filePath, resolver, projectPath)).to.equal(
+ expectedCssString,
+ );
+ });
+ });
+});
diff --git a/packages/pigment-css-unplugin/tsconfig.json b/packages/pigment-css-unplugin/tsconfig.json
index aa7c7cb0fab5b0..76104e9ff8ee6d 100644
--- a/packages/pigment-css-unplugin/tsconfig.json
+++ b/packages/pigment-css-unplugin/tsconfig.json
@@ -11,7 +11,8 @@
"@mui/utils/*": ["./packages/mui-utils/src/*"],
"@pigment-css/react": ["./packages/pigment-css-react/src"],
"@pigment-css/react/*": ["./packages/pigment-css-react/src/*"]
- }
+ },
+ "types": ["node", "mocha", "chai"]
},
"include": ["src/**/*.ts"],
"exclude": ["./tsup.config.ts"]
diff --git a/packages/pigment-css-vite-plugin/package.json b/packages/pigment-css-vite-plugin/package.json
index 8c35a92b7b0a23..866082e607cfe5 100644
--- a/packages/pigment-css-vite-plugin/package.json
+++ b/packages/pigment-css-vite-plugin/package.json
@@ -1,6 +1,6 @@
{
"name": "@pigment-css/vite-plugin",
- "version": "0.0.4",
+ "version": "0.0.6",
"main": "build/index.js",
"module": "build/index.mjs",
"types": "build/index.d.ts",
@@ -37,7 +37,7 @@
},
"devDependencies": {
"@types/babel__core": "^7.20.5",
- "vite": "^5.2.7"
+ "vite": "^5.2.8"
},
"peerDependencies": {
"vite": "^4.0.0 || ^5.0.0"
diff --git a/packages/pigment-css-vite-plugin/src/index.ts b/packages/pigment-css-vite-plugin/src/index.ts
index 20bb2d6c39b716..a3772fce0f726e 100644
--- a/packages/pigment-css-vite-plugin/src/index.ts
+++ b/packages/pigment-css-vite-plugin/src/index.ts
@@ -9,16 +9,11 @@ import {
import { transformAsync } from '@babel/core';
import baseWywPluginPlugin, { type VitePluginOptions } from './vite-plugin';
-export interface PigmentOptions extends VitePluginOptions {
+export interface PigmentOptions extends Omit {
/**
* The theme object that you want to be passed to the `styled` function
*/
theme: Theme;
- /**
- * Whether the css variables for the default theme should target the :root selector or not.
- * @default true
- */
- injectDefaultThemeInRoot?: boolean;
}
const VIRTUAL_CSS_FILE = `\0zero-runtime-styles.css`;
diff --git a/packages/rsc-builder/package.json b/packages/rsc-builder/package.json
index 41a6f0a0424f3d..8960baa67a5402 100644
--- a/packages/rsc-builder/package.json
+++ b/packages/rsc-builder/package.json
@@ -9,6 +9,6 @@
},
"devDependencies": {
"@types/mocha": "^10.0.6",
- "@types/node": "^18.19.28"
+ "@types/node": "^18.19.31"
}
}
diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json
index b1665154ed0979..4def2c983b8f83 100644
--- a/packages/test-utils/package.json
+++ b/packages/test-utils/package.json
@@ -36,7 +36,7 @@
"jsdom": "^24.0.0",
"lodash": "^4.17.21",
"mocha": "^10.4.0",
- "playwright": "^1.42.1",
+ "playwright": "^1.43.0",
"prop-types": "^15.8.1",
"react-test-renderer": "^18.2.0",
"sinon": "^15.2.0"
@@ -51,7 +51,7 @@
"@types/react-dom": "^18.2.19",
"@types/react-test-renderer": "^18.0.7",
"@types/sinon": "^10.0.20",
- "typescript": "^5.4.3"
+ "typescript": "^5.4.4"
},
"peerDependencies": {
"react": "^18.2.0",
diff --git a/packages/zero-runtime/src/RtlProvider/index.ts b/packages/zero-runtime/src/RtlProvider/index.ts
deleted file mode 100644
index 811b0c2c514f04..00000000000000
--- a/packages/zero-runtime/src/RtlProvider/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default as RtlProvider, useRtl } from '@mui/system/RtlProvider';
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 916a77b0389f3d..ed81cf2b286ad1 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -22,7 +22,7 @@ overrides:
'@definitelytyped/header-parser': ^0.2.8
'@definitelytyped/typescript-versions': ^0.1.1
'@definitelytyped/utils': ^0.1.5
- '@types/node': ^18.19.28
+ '@types/node': ^18.19.31
'@types/react': 18.2.55
'@types/react-dom': 18.2.19
cross-fetch: ^4.0.0
@@ -123,14 +123,14 @@ importers:
specifier: ^14.1.4
version: 14.1.4
'@octokit/rest':
- specifier: ^20.0.2
- version: 20.0.2
+ specifier: ^20.1.0
+ version: 20.1.0
'@pigment-css/react':
specifier: workspace:^
version: link:packages/pigment-css-react
'@playwright/test':
- specifier: 1.42.1
- version: 1.42.1
+ specifier: 1.43.0
+ version: 1.43.0
'@types/enzyme':
specifier: ^3.10.18
version: 3.10.18
@@ -144,8 +144,8 @@ importers:
specifier: ^10.0.6
version: 10.0.6
'@types/node':
- specifier: ^18.19.28
- version: 18.19.28
+ specifier: ^18.19.31
+ version: 18.19.31
'@types/prettier':
specifier: ^2.7.3
version: 2.7.3
@@ -157,10 +157,10 @@ importers:
version: 17.0.32
'@typescript-eslint/eslint-plugin':
specifier: ^6.21.0
- version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.3)
+ version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.4)
'@typescript-eslint/parser':
specifier: ^6.21.0
- version: 6.21.0(eslint@8.57.0)(typescript@5.4.3)
+ version: 6.21.0(eslint@8.57.0)(typescript@5.4.4)
babel-loader:
specifier: ^9.1.3
version: 9.1.3(@babel/core@7.24.4)(webpack@5.90.3)
@@ -334,13 +334,13 @@ importers:
version: 5.3.10(esbuild@0.19.11)(webpack@5.90.3)
tsup:
specifier: ^8.0.2
- version: 8.0.2(postcss@8.4.38)(typescript@5.4.3)
+ version: 8.0.2(postcss@8.4.38)(typescript@5.4.4)
tsx:
- specifier: ^4.7.1
- version: 4.7.1
+ specifier: ^4.7.2
+ version: 4.7.2
typescript:
- specifier: ^5.4.3
- version: 5.4.3
+ specifier: ^5.4.4
+ version: 5.4.4
webpack:
specifier: ^5.90.3
version: 5.90.3(esbuild@0.19.11)(webpack-cli@5.1.4)
@@ -406,8 +406,8 @@ importers:
specifier: workspace:^
version: link:../../packages/pigment-css-nextjs-plugin
'@types/node':
- specifier: ^18.19.28
- version: 18.19.28
+ specifier: ^18.19.31
+ version: 18.19.31
'@types/react':
specifier: 18.2.55
version: 18.2.55
@@ -418,8 +418,8 @@ importers:
specifier: ^8.57.0
version: 8.57.0
typescript:
- specifier: ^5.4.3
- version: 5.4.3
+ specifier: ^5.4.4
+ version: 5.4.4
apps/pigment-css-vite-app:
dependencies:
@@ -483,7 +483,7 @@ importers:
version: 18.2.19
'@vitejs/plugin-react':
specifier: ^4.2.1
- version: 4.2.1(vite@5.2.7)
+ version: 4.2.1(vite@5.2.8)
postcss:
specifier: ^8.4.38
version: 8.4.38
@@ -491,11 +491,11 @@ importers:
specifier: ^1.0.1
version: 1.0.1
vite:
- specifier: 5.2.7
- version: 5.2.7(@types/node@18.19.28)
+ specifier: 5.2.8
+ version: 5.2.8(@types/node@18.19.31)
vite-plugin-pages:
specifier: ^0.32.1
- version: 0.32.1(vite@5.2.7)
+ version: 0.32.1(vite@5.2.8)
benchmark:
dependencies:
@@ -539,8 +539,8 @@ importers:
specifier: ^10.10.0
version: 10.10.0
playwright:
- specifier: ^1.42.1
- version: 1.42.1
+ specifier: ^1.43.0
+ version: 1.43.0
prop-types:
specifier: ^15.8.1
version: 15.8.1
@@ -590,7 +590,7 @@ importers:
specifier: ^7.24.4
version: 7.24.4
'@babel/runtime-corejs2':
- specifier: ^7.24.1
+ specifier: ^7.24.4
version: 7.24.4
'@docsearch/react':
specifier: ^3.6.0
@@ -608,14 +608,14 @@ importers:
specifier: ^11.11.5
version: 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.55)(react@18.2.0)
'@fortawesome/fontawesome-svg-core':
- specifier: ^6.5.1
- version: 6.5.1
+ specifier: ^6.5.2
+ version: 6.5.2
'@fortawesome/free-solid-svg-icons':
- specifier: ^6.5.1
- version: 6.5.1
+ specifier: ^6.5.2
+ version: 6.5.2
'@fortawesome/react-fontawesome':
specifier: ^0.2.0
- version: 0.2.0(@fortawesome/fontawesome-svg-core@6.5.1)(react@18.2.0)
+ version: 0.2.0(@fortawesome/fontawesome-svg-core@6.5.2)(react@18.2.0)
'@mui/base':
specifier: workspace:*
version: link:../packages/mui-base/build
@@ -659,23 +659,23 @@ importers:
specifier: 6.19.8
version: 6.19.8(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
'@mui/x-data-grid':
- specifier: 7.0.0
- version: 7.0.0(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@packages+mui-material+build)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
+ specifier: 7.1.1
+ version: 7.1.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@packages+mui-material+build)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
'@mui/x-data-grid-generator':
- specifier: 7.0.0
- version: 7.0.0(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/icons-material@packages+mui-icons-material+build)(@mui/material@packages+mui-material+build)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
+ specifier: 7.1.1
+ version: 7.1.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/icons-material@packages+mui-icons-material+build)(@mui/material@packages+mui-material+build)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
'@mui/x-data-grid-premium':
- specifier: 7.0.0
- version: 7.0.0(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@packages+mui-material+build)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
+ specifier: 7.1.1
+ version: 7.1.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@packages+mui-material+build)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
'@mui/x-data-grid-pro':
- specifier: 7.0.0
- version: 7.0.0(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@packages+mui-material+build)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
+ specifier: 7.1.1
+ version: 7.1.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@packages+mui-material+build)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
'@mui/x-date-pickers':
- specifier: 6.19.8
- version: 6.19.8(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.2.55)(date-fns-jalali@2.21.3-1)(date-fns@2.30.0)(react-dom@18.2.0)(react@18.2.0)
+ specifier: 6.19.9
+ version: 6.19.9(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.2.55)(date-fns-jalali@2.21.3-1)(date-fns@2.30.0)(react-dom@18.2.0)(react@18.2.0)
'@mui/x-date-pickers-pro':
- specifier: 6.19.8
- version: 6.19.8(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.2.55)(date-fns-jalali@2.21.3-1)(date-fns@2.30.0)(react-dom@18.2.0)(react@18.2.0)
+ specifier: 6.19.9
+ version: 6.19.9(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.2.55)(date-fns-jalali@2.21.3-1)(date-fns@2.30.0)(react-dom@18.2.0)(react@18.2.0)
'@mui/x-license-pro':
specifier: 6.10.2
version: 6.10.2(@types/react@18.2.55)(react@18.2.0)
@@ -764,8 +764,8 @@ importers:
specifier: ^1.5.0
version: 1.5.0
markdown-to-jsx:
- specifier: ^7.4.5
- version: 7.4.5(react@18.2.0)
+ specifier: ^7.4.6
+ version: 7.4.6(react@18.2.0)
material-ui-popup-state:
specifier: ^5.1.0
version: 5.1.0(@mui/material@packages+mui-material+build)(react@18.2.0)
@@ -833,8 +833,8 @@ importers:
specifier: ^4.4.5
version: 4.4.5(react-dom@18.2.0)(react@18.2.0)
react-virtuoso:
- specifier: ^4.7.2
- version: 4.7.2(react-dom@18.2.0)(react@18.2.0)
+ specifier: ^4.7.8
+ version: 4.7.8(react-dom@18.2.0)(react@18.2.0)
react-window:
specifier: ^1.8.10
version: 1.8.10(react-dom@18.2.0)(react@18.2.0)
@@ -885,8 +885,8 @@ importers:
specifier: ^0.2.2
version: 0.2.2
'@types/node':
- specifier: ^18.19.28
- version: 18.19.28
+ specifier: ^18.19.31
+ version: 18.19.31
'@types/prop-types':
specifier: ^15.7.12
version: 15.7.12
@@ -924,8 +924,8 @@ importers:
specifier: ^5.1.2
version: 5.1.2
playwright:
- specifier: ^1.42.1
- version: 1.42.1
+ specifier: ^1.43.0
+ version: 1.43.0
prettier:
specifier: ^3.2.5
version: 3.2.5
@@ -942,8 +942,8 @@ importers:
specifier: ^5.0.5
version: 5.0.5
typescript:
- specifier: ^5.4.3
- version: 5.4.3
+ specifier: ^5.4.4
+ version: 5.4.4
packages-internal/scripts:
dependencies:
@@ -972,8 +972,8 @@ importers:
specifier: ^4.17.21
version: 4.17.21
typescript:
- specifier: ^5.4.3
- version: 5.4.3
+ specifier: ^5.4.4
+ version: 5.4.4
uuid:
specifier: ^9.0.1
version: 9.0.1
@@ -994,8 +994,8 @@ importers:
specifier: ^4.17.0
version: 4.17.0
'@types/node':
- specifier: ^18.19.28
- version: 18.19.28
+ specifier: ^18.19.31
+ version: 18.19.31
'@types/prettier':
specifier: ^2.7.3
version: 2.7.3
@@ -1063,8 +1063,8 @@ importers:
specifier: ^13.0.0
version: 13.0.0
typescript:
- specifier: ^5.4.3
- version: 5.4.3
+ specifier: ^5.4.4
+ version: 5.4.4
unist-util-visit:
specifier: ^2.0.3
version: 2.0.3
@@ -1088,8 +1088,8 @@ importers:
specifier: ^10.0.6
version: 10.0.6
'@types/node':
- specifier: ^18.19.28
- version: 18.19.28
+ specifier: ^18.19.31
+ version: 18.19.31
'@types/react-docgen':
specifier: workspace:*
version: link:../react-docgen-types
@@ -1125,8 +1125,8 @@ importers:
specifier: ^10.0.6
version: 10.0.6
'@types/node':
- specifier: ^18.19.28
- version: 18.19.28
+ specifier: ^18.19.31
+ version: 18.19.31
'@types/sinon':
specifier: ^10.0.20
version: 10.0.20
@@ -1137,8 +1137,8 @@ importers:
specifier: ^15.2.0
version: 15.2.0
typescript:
- specifier: ^5.4.3
- version: 5.4.3
+ specifier: ^5.4.4
+ version: 5.4.4
packages/eslint-plugin-material-ui:
dependencies:
@@ -1147,11 +1147,11 @@ importers:
version: 10.3.0
devDependencies:
'@types/eslint':
- specifier: ^8.56.6
- version: 8.56.6
+ specifier: ^8.56.7
+ version: 8.56.7
'@typescript-eslint/parser':
specifier: ^6.21.0
- version: 6.21.0(eslint@8.57.0)(typescript@5.4.3)
+ version: 6.21.0(eslint@8.57.0)(typescript@5.4.4)
eslint:
specifier: ^8.57.0
version: 8.57.0
@@ -1205,7 +1205,7 @@ importers:
version: 7.24.4
'@mui/utils':
specifier: ^5.0.0
- version: link:../mui-utils/build
+ version: 5.15.14(@types/react@18.2.55)(react@18.2.0)
babel-plugin-macros:
specifier: ^3.1.0
version: 3.1.0
@@ -1223,8 +1223,8 @@ importers:
specifier: ^10.0.6
version: 10.0.6
'@types/node':
- specifier: ^18.19.28
- version: 18.19.28
+ specifier: ^18.19.31
+ version: 18.19.31
babel-plugin-tester:
specifier: ^11.0.4
version: 11.0.4(@babel/core@7.24.4)
@@ -1315,11 +1315,11 @@ importers:
specifier: ^7.24.1
version: 7.24.1
jscodeshift:
- specifier: ^0.13.1
- version: 0.13.1(@babel/preset-env@7.24.4)
+ specifier: ^0.15.2
+ version: 0.15.2(@babel/preset-env@7.24.4)
jscodeshift-add-imports:
specifier: ^1.0.10
- version: 1.0.10(jscodeshift@0.13.1)
+ version: 1.0.10(jscodeshift@0.15.2)
postcss:
specifier: ^8.4.38
version: 8.4.38
@@ -1334,8 +1334,8 @@ importers:
specifier: ^4.3.14
version: 4.3.14
'@types/jscodeshift':
- specifier: 0.11.5
- version: 0.11.5
+ specifier: 0.11.11
+ version: 0.11.11
chai:
specifier: ^4.4.1
version: 4.4.1
@@ -1372,8 +1372,8 @@ importers:
specifier: workspace:*
version: link:../mui-material/build
'@types/node':
- specifier: ^18.19.28
- version: 18.19.28
+ specifier: ^18.19.31
+ version: 18.19.31
'@types/prop-types':
specifier: ^15.7.12
version: 15.7.12
@@ -1730,8 +1730,8 @@ importers:
specifier: ^4.17.21
version: 4.17.21
playwright:
- specifier: ^1.42.1
- version: 1.42.1
+ specifier: ^1.43.0
+ version: 1.43.0
react:
specifier: ^18.2.0
version: 18.2.0
@@ -2108,8 +2108,8 @@ importers:
specifier: ^10.0.6
version: 10.0.6
'@types/node':
- specifier: ^18.19.28
- version: 18.19.28
+ specifier: ^18.19.31
+ version: 18.19.31
'@types/react':
specifier: 18.2.55
version: 18.2.55
@@ -2240,8 +2240,8 @@ importers:
specifier: ^10.0.6
version: 10.0.6
'@types/node':
- specifier: ^18.19.28
- version: 18.19.28
+ specifier: ^18.19.31
+ version: 18.19.31
'@types/react':
specifier: 18.2.55
version: 18.2.55
@@ -2285,6 +2285,15 @@ importers:
'@types/babel__core':
specifier: ^7.20.5
version: 7.20.5
+ '@types/chai':
+ specifier: ^4.3.14
+ version: 4.3.14
+ '@types/mocha':
+ specifier: ^10.0.6
+ version: 10.0.6
+ chai:
+ specifier: ^4.4.1
+ version: 4.4.1
packages/pigment-css-vite-plugin:
dependencies:
@@ -2311,8 +2320,8 @@ importers:
specifier: ^7.20.5
version: 7.20.5
vite:
- specifier: ^5.2.7
- version: 5.2.7(@types/node@18.19.28)
+ specifier: ^5.2.8
+ version: 5.2.8(@types/node@18.19.31)
packages/react-docgen-types:
devDependencies:
@@ -2333,8 +2342,8 @@ importers:
specifier: ^10.0.6
version: 10.0.6
'@types/node':
- specifier: ^18.19.28
- version: 18.19.28
+ specifier: ^18.19.31
+ version: 18.19.31
packages/test-utils:
dependencies:
@@ -2393,8 +2402,8 @@ importers:
specifier: ^10.4.0
version: 10.4.0
playwright:
- specifier: ^1.42.1
- version: 1.42.1
+ specifier: ^1.43.0
+ version: 1.43.0
prop-types:
specifier: ^15.8.1
version: 15.8.1
@@ -2439,8 +2448,8 @@ importers:
specifier: ^10.0.20
version: 10.0.20
typescript:
- specifier: ^5.4.3
- version: 5.4.3
+ specifier: ^5.4.4
+ version: 5.4.4
packages/waterfall: {}
@@ -2480,8 +2489,8 @@ importers:
specifier: workspace:^
version: link:../packages/mui-utils/build
'@playwright/test':
- specifier: 1.42.1
- version: 1.42.1
+ specifier: 1.43.0
+ version: 1.43.0
'@testing-library/dom':
specifier: ^9.3.4
version: 9.3.4
@@ -2516,8 +2525,8 @@ importers:
specifier: ^4.17.21
version: 4.17.21
playwright:
- specifier: ^1.42.1
- version: 1.42.1
+ specifier: ^1.43.0
+ version: 1.43.0
prop-types:
specifier: ^15.8.1
version: 15.8.1
@@ -4987,7 +4996,7 @@ packages:
/@fast-csv/format@4.3.5:
resolution: {integrity: sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A==}
dependencies:
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
lodash.escaperegexp: 4.1.2
lodash.isboolean: 3.0.3
lodash.isequal: 4.5.0
@@ -4998,7 +5007,7 @@ packages:
/@fast-csv/parse@4.3.6:
resolution: {integrity: sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA==}
dependencies:
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
lodash.escaperegexp: 4.1.2
lodash.groupby: 4.6.0
lodash.isfunction: 3.0.9
@@ -5035,35 +5044,35 @@ packages:
resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==}
dev: false
- /@fortawesome/fontawesome-common-types@6.5.1:
- resolution: {integrity: sha512-GkWzv+L6d2bI5f/Vk6ikJ9xtl7dfXtoRu3YGE6nq0p/FFqA1ebMOAWg3XgRyb0I6LYyYkiAo+3/KrwuBp8xG7A==}
+ /@fortawesome/fontawesome-common-types@6.5.2:
+ resolution: {integrity: sha512-gBxPg3aVO6J0kpfHNILc+NMhXnqHumFxOmjYCFfOiLZfwhnnfhtsdA2hfJlDnj+8PjAs6kKQPenOTKj3Rf7zHw==}
engines: {node: '>=6'}
requiresBuild: true
dev: false
- /@fortawesome/fontawesome-svg-core@6.5.1:
- resolution: {integrity: sha512-MfRCYlQPXoLlpem+egxjfkEuP9UQswTrlCOsknus/NcMoblTH2g0jPrapbcIb04KGA7E2GZxbAccGZfWoYgsrQ==}
+ /@fortawesome/fontawesome-svg-core@6.5.2:
+ resolution: {integrity: sha512-5CdaCBGl8Rh9ohNdxeeTMxIj8oc3KNBgIeLMvJosBMdslK/UnEB8rzyDRrbKdL1kDweqBPo4GT9wvnakHWucZw==}
engines: {node: '>=6'}
requiresBuild: true
dependencies:
- '@fortawesome/fontawesome-common-types': 6.5.1
+ '@fortawesome/fontawesome-common-types': 6.5.2
dev: false
- /@fortawesome/free-solid-svg-icons@6.5.1:
- resolution: {integrity: sha512-S1PPfU3mIJa59biTtXJz1oI0+KAXW6bkAb31XKhxdxtuXDiUIFsih4JR1v5BbxY7hVHsD1RKq+jRkVRaf773NQ==}
+ /@fortawesome/free-solid-svg-icons@6.5.2:
+ resolution: {integrity: sha512-QWFZYXFE7O1Gr1dTIp+D6UcFUF0qElOnZptpi7PBUMylJh+vFmIedVe1Ir6RM1t2tEQLLSV1k7bR4o92M+uqlw==}
engines: {node: '>=6'}
requiresBuild: true
dependencies:
- '@fortawesome/fontawesome-common-types': 6.5.1
+ '@fortawesome/fontawesome-common-types': 6.5.2
dev: false
- /@fortawesome/react-fontawesome@0.2.0(@fortawesome/fontawesome-svg-core@6.5.1)(react@18.2.0):
+ /@fortawesome/react-fontawesome@0.2.0(@fortawesome/fontawesome-svg-core@6.5.2)(react@18.2.0):
resolution: {integrity: sha512-uHg75Rb/XORTtVt7OS9WoK8uM276Ufi7gCzshVWkUJbHhh3svsUUeqXerrM96Wm7fRiDzfKRwSoahhMIkGAYHw==}
peerDependencies:
'@fortawesome/fontawesome-svg-core': ~1 || ~6
react: '>=16.3'
dependencies:
- '@fortawesome/fontawesome-svg-core': 6.5.1
+ '@fortawesome/fontawesome-svg-core': 6.5.2
prop-types: 15.8.1
react: 18.2.0
dev: false
@@ -5190,7 +5199,7 @@ packages:
dependencies:
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
jest-mock: 29.7.0
dev: false
@@ -5200,7 +5209,7 @@ packages:
dependencies:
'@jest/types': 29.6.3
'@sinonjs/fake-timers': 10.3.0
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
jest-message-util: 29.7.0
jest-mock: 29.7.0
jest-util: 29.7.0
@@ -5218,7 +5227,7 @@ packages:
dependencies:
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
'@types/yargs': 15.0.19
chalk: 4.1.2
dev: false
@@ -5230,7 +5239,7 @@ packages:
'@jest/schemas': 29.6.3
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
'@types/yargs': 17.0.32
chalk: 4.1.2
dev: false
@@ -5652,8 +5661,8 @@ packages:
- '@types/react'
dev: false
- /@mui/x-data-grid-generator@7.0.0(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/icons-material@packages+mui-icons-material+build)(@mui/material@packages+mui-material+build)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-VnkTeScXs5fYEPGPpTDzZClxb6OupV1I70wH1u2E5TO2bcCF1UTZLFP24rCB7/OFSXlBkcXcQZ0kXrtRIUz7bg==}
+ /@mui/x-data-grid-generator@7.1.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/icons-material@packages+mui-icons-material+build)(@mui/material@packages+mui-material+build)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-PcjmlnkD7kCwu/VPsRjYvCs8mqRA50/slUoPnfaT63J7hwKuPg5xXrOpHCosGWd2B3/4WEoHd+f52h+hldwHzw==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@mui/icons-material': ^5.4.1
@@ -5664,7 +5673,7 @@ packages:
'@mui/base': 5.0.0-beta.40(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
'@mui/icons-material': link:packages/mui-icons-material/build
'@mui/material': link:packages/mui-material/build
- '@mui/x-data-grid-premium': 7.0.0(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@packages+mui-material+build)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
+ '@mui/x-data-grid-premium': 7.1.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@packages+mui-material+build)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
chance: 1.1.11
clsx: 2.1.0
lru-cache: 7.18.3
@@ -5676,8 +5685,8 @@ packages:
- react-dom
dev: false
- /@mui/x-data-grid-premium@7.0.0(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@packages+mui-material+build)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-Vi9o9jzqsFaUcawx2NGq/8sEEeP4smeOwj0EPKftLRcVogJl6zWonnbM7pvth5Swqqyzu6dntn5vPnW2Q5gSfA==}
+ /@mui/x-data-grid-premium@7.1.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@packages+mui-material+build)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-tHQbHGeoyVOGblFQ1I68q4rmNXej/slVlDD/XC/oDTsF2SeJK1R/LIegeuh5P73MVEVe0HeD+q6xhRizkLlg2g==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@mui/material': ^5.15.14
@@ -5688,9 +5697,9 @@ packages:
'@mui/material': link:packages/mui-material/build
'@mui/system': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.55)(react@18.2.0)
'@mui/utils': 5.15.14(@types/react@18.2.55)(react@18.2.0)
- '@mui/x-data-grid': 7.0.0(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@packages+mui-material+build)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
- '@mui/x-data-grid-pro': 7.0.0(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@packages+mui-material+build)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
- '@mui/x-license': 7.0.0(@types/react@18.2.55)(react@18.2.0)
+ '@mui/x-data-grid': 7.1.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@packages+mui-material+build)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
+ '@mui/x-data-grid-pro': 7.1.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@packages+mui-material+build)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
+ '@mui/x-license': 7.1.1(@types/react@18.2.55)(react@18.2.0)
'@types/format-util': 1.0.4
clsx: 2.1.0
exceljs: 4.4.0
@@ -5704,8 +5713,8 @@ packages:
- '@types/react'
dev: false
- /@mui/x-data-grid-pro@7.0.0(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@packages+mui-material+build)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-2lauQfkV3gksfFS5cBC992/Xs1PDfOAcr9JV8bQNX2MmwdYFhCJmJR+MYK5VbO72bDrwCDRJC399Pgxnw9Saxg==}
+ /@mui/x-data-grid-pro@7.1.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@packages+mui-material+build)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-MurP9VpwyHy96gzO92HN8q8Z5GqkIAW2DGIa2465XwIoqzMMfAtGAanyiw93F9AwY+OKnnbYd576Q842rHxzwQ==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@mui/material': ^5.15.14
@@ -5716,8 +5725,8 @@ packages:
'@mui/material': link:packages/mui-material/build
'@mui/system': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.55)(react@18.2.0)
'@mui/utils': 5.15.14(@types/react@18.2.55)(react@18.2.0)
- '@mui/x-data-grid': 7.0.0(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@packages+mui-material+build)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
- '@mui/x-license': 7.0.0(@types/react@18.2.55)(react@18.2.0)
+ '@mui/x-data-grid': 7.1.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@packages+mui-material+build)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
+ '@mui/x-license': 7.1.1(@types/react@18.2.55)(react@18.2.0)
'@types/format-util': 1.0.4
clsx: 2.1.0
prop-types: 15.8.1
@@ -5730,8 +5739,8 @@ packages:
- '@types/react'
dev: false
- /@mui/x-data-grid@7.0.0(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@packages+mui-material+build)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-Nwwfr+ot/di0oH/pVwIxKV2QD7QyUY/MKkTWRSKzQoJw2aiFQf1Usmvq9Fu1qsCsvMmqIFaToY7972p0cczRjw==}
+ /@mui/x-data-grid@7.1.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@packages+mui-material+build)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-hNvz927lkAznFdy45QPE7mIZVyQhlqveHmTK9+SD0N1us4sSTij90uUJ/roTNDod0VA9f5GqWmNz+5h8ihpz6Q==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@mui/material': ^5.15.14
@@ -5753,8 +5762,8 @@ packages:
- '@types/react'
dev: false
- /@mui/x-date-pickers-pro@6.19.8(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.2.55)(date-fns-jalali@2.21.3-1)(date-fns@2.30.0)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-0E4He1uxcJLYovKG0BByvQq2lTqL0MkpPoIdZwKA7PSP4iexSEn46zGsufgbGrcHEi7ievSUxXbjazpcDQPTiQ==}
+ /@mui/x-date-pickers-pro@6.19.9(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.2.55)(date-fns-jalali@2.21.3-1)(date-fns@2.30.0)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-0EmWiRoZUc3ZGin3EdJaYNuCS5PA45KHEc9HkCmkT6sAnPeXMVpXrl8TFJvJxFVV6Vp7IYV8RZHC5gSZcfIrfQ==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@emotion/react': ^11.9.0
@@ -5797,7 +5806,7 @@ packages:
'@mui/material': link:packages/mui-material/build
'@mui/system': link:packages/mui-system/build
'@mui/utils': 5.15.14(@types/react@18.2.55)(react@18.2.0)
- '@mui/x-date-pickers': 6.19.8(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.2.55)(date-fns-jalali@2.21.3-1)(date-fns@2.30.0)(react-dom@18.2.0)(react@18.2.0)
+ '@mui/x-date-pickers': 6.19.9(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.2.55)(date-fns-jalali@2.21.3-1)(date-fns@2.30.0)(react-dom@18.2.0)(react@18.2.0)
'@mui/x-license-pro': 6.10.2(@types/react@18.2.55)(react@18.2.0)
clsx: 2.1.0
date-fns: 2.30.0
@@ -5810,8 +5819,8 @@ packages:
- '@types/react'
dev: false
- /@mui/x-date-pickers@6.19.8(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.2.55)(date-fns-jalali@2.21.3-1)(date-fns@2.30.0)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-6wgc2DoRTR9/mKesku4CVCKr9yYkY3FI2Oy/wshLTs2rFkw2Z10uxXFHBR9ugEtNPNCQv0qqwldElenYI97wsA==}
+ /@mui/x-date-pickers@6.19.9(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@18.2.55)(date-fns-jalali@2.21.3-1)(date-fns@2.30.0)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-B2m4Fv/fOme5qmV6zuE3QnWQSvj3zKtI2OvikPz5prpiCcIxqpeytkQ7VfrWH3/Aqd5yhG1Yr4IgbqG0ymIXGg==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@emotion/react': ^11.9.0
@@ -5879,8 +5888,8 @@ packages:
- '@types/react'
dev: false
- /@mui/x-license@7.0.0(@types/react@18.2.55)(react@18.2.0):
- resolution: {integrity: sha512-WR9OkroKKGmnIno6tw4RzuyCQqI/Y+nbzt1r9sKtBgDQG/LvoBI45lC6zNtVosi8HhGWuXVsHDC7NYsEh31suA==}
+ /@mui/x-license@7.1.1(@types/react@18.2.55)(react@18.2.0):
+ resolution: {integrity: sha512-MadABMJ7agqaHqmDTzH2BudEqtTDelm3kNDk+WXgkv+DBF3IBFInIeO2YgvqnzOQSBMKpyNF/FiNowRm7uXtqQ==}
engines: {node: '>=14.0.0'}
peerDependencies:
react: ^17.0.0 || ^18.0.0
@@ -6372,15 +6381,15 @@ packages:
- encoding
dev: true
- /@octokit/core@5.0.0:
- resolution: {integrity: sha512-YbAtMWIrbZ9FCXbLwT9wWB8TyLjq9mxpKdgB3dUNxQcIVTf9hJ70gRPwAcqGZdY6WdJPZ0I7jLaaNDCiloGN2A==}
+ /@octokit/core@5.2.0:
+ resolution: {integrity: sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==}
engines: {node: '>= 18'}
dependencies:
'@octokit/auth-token': 4.0.0
- '@octokit/graphql': 7.0.1
- '@octokit/request': 8.1.1
- '@octokit/request-error': 5.0.0
- '@octokit/types': 11.1.0
+ '@octokit/graphql': 7.1.0
+ '@octokit/request': 8.3.1
+ '@octokit/request-error': 5.1.0
+ '@octokit/types': 13.1.0
before-after-hook: 2.2.2
universal-user-agent: 6.0.0
dev: true
@@ -6402,12 +6411,11 @@ packages:
universal-user-agent: 6.0.0
dev: true
- /@octokit/endpoint@9.0.0:
- resolution: {integrity: sha512-szrQhiqJ88gghWY2Htt8MqUDO6++E/EIXqJ2ZEp5ma3uGS46o7LZAzSLt49myB7rT+Hfw5Y6gO3LmOxGzHijAQ==}
+ /@octokit/endpoint@9.0.5:
+ resolution: {integrity: sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw==}
engines: {node: '>= 18'}
dependencies:
- '@octokit/types': 11.1.0
- is-plain-object: 5.0.0
+ '@octokit/types': 13.1.0
universal-user-agent: 6.0.0
dev: true
@@ -6432,12 +6440,12 @@ packages:
- encoding
dev: true
- /@octokit/graphql@7.0.1:
- resolution: {integrity: sha512-T5S3oZ1JOE58gom6MIcrgwZXzTaxRnxBso58xhozxHpOqSTgDS6YNeEUvZ/kRvXgPrRz/KHnZhtb7jUMRi9E6w==}
+ /@octokit/graphql@7.1.0:
+ resolution: {integrity: sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==}
engines: {node: '>= 18'}
dependencies:
- '@octokit/request': 8.1.1
- '@octokit/types': 11.1.0
+ '@octokit/request': 8.3.1
+ '@octokit/types': 13.1.0
universal-user-agent: 6.0.0
dev: true
@@ -6453,8 +6461,12 @@ packages:
resolution: {integrity: sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==}
dev: true
- /@octokit/openapi-types@19.0.2:
- resolution: {integrity: sha512-8li32fUDUeml/ACRp/njCWTsk5t17cfTM1jp9n08pBrqs5cDFJubtjsSnuz56r5Tad6jdEPJld7LxNp9dNcyjQ==}
+ /@octokit/openapi-types@20.0.0:
+ resolution: {integrity: sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==}
+ dev: true
+
+ /@octokit/openapi-types@21.2.0:
+ resolution: {integrity: sha512-xx+Xd6I7rYvul/hgUDqv6TeGX0IOGnhSg9IOeYgd/uI7IAqUy6DE2B6Ipv2M4mWoxaMcWjIzgTIcv8pMO3F3vw==}
dev: true
/@octokit/plugin-enterprise-rest@6.0.1:
@@ -6481,14 +6493,14 @@ packages:
'@octokit/types': 9.3.2
dev: true
- /@octokit/plugin-paginate-rest@9.1.2(@octokit/core@5.0.0):
- resolution: {integrity: sha512-euDbNV6fxX6btsCDnZoZM4vw3zO1nj1Z7TskHAulO6mZ9lHoFTpwll6farf+wh31mlBabgU81bBYdflp0GLVAQ==}
+ /@octokit/plugin-paginate-rest@9.2.1(@octokit/core@5.2.0):
+ resolution: {integrity: sha512-wfGhE/TAkXZRLjksFXuDZdmGnJQHvtU/joFQdweXUgzo1XwvBCD4o4+75NtFfjfLK5IwLf9vHTfSiU3sLRYpRw==}
engines: {node: '>= 18'}
peerDependencies:
- '@octokit/core': '>=5'
+ '@octokit/core': '5'
dependencies:
- '@octokit/core': 5.0.0
- '@octokit/types': 12.1.1
+ '@octokit/core': 5.2.0
+ '@octokit/types': 12.6.0
dev: true
/@octokit/plugin-request-log@1.0.4(@octokit/core@3.6.0):
@@ -6507,23 +6519,23 @@ packages:
'@octokit/core': 4.2.4
dev: true
- /@octokit/plugin-request-log@4.0.0(@octokit/core@5.0.0):
+ /@octokit/plugin-request-log@4.0.0(@octokit/core@5.2.0):
resolution: {integrity: sha512-2uJI1COtYCq8Z4yNSnM231TgH50bRkheQ9+aH8TnZanB6QilOnx8RMD2qsnamSOXtDj0ilxvevf5fGsBhBBzKA==}
engines: {node: '>= 18'}
peerDependencies:
'@octokit/core': '>=5'
dependencies:
- '@octokit/core': 5.0.0
+ '@octokit/core': 5.2.0
dev: true
- /@octokit/plugin-rest-endpoint-methods@10.1.2(@octokit/core@5.0.0):
- resolution: {integrity: sha512-JztgZ82CY4JNlPTuF0jh4iWuuGpEi5czFCoXyAbMg4F2XyFBbG5DWAKfa3odRvdZww6Df1tQgBKnqpd9X0WF9g==}
+ /@octokit/plugin-rest-endpoint-methods@10.4.1(@octokit/core@5.2.0):
+ resolution: {integrity: sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg==}
engines: {node: '>= 18'}
peerDependencies:
- '@octokit/core': '>=5'
+ '@octokit/core': '5'
dependencies:
- '@octokit/core': 5.0.0
- '@octokit/types': 12.1.1
+ '@octokit/core': 5.2.0
+ '@octokit/types': 12.6.0
dev: true
/@octokit/plugin-rest-endpoint-methods@5.16.2(@octokit/core@3.6.0):
@@ -6563,11 +6575,11 @@ packages:
once: 1.4.0
dev: true
- /@octokit/request-error@5.0.0:
- resolution: {integrity: sha512-1ue0DH0Lif5iEqT52+Rf/hf0RmGO9NWFjrzmrkArpG9trFfDM/efx00BJHdLGuro4BR/gECxCU2Twf5OKrRFsQ==}
+ /@octokit/request-error@5.1.0:
+ resolution: {integrity: sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==}
engines: {node: '>= 18'}
dependencies:
- '@octokit/types': 11.1.0
+ '@octokit/types': 13.1.0
deprecation: 2.3.1
once: 1.4.0
dev: true
@@ -6599,14 +6611,13 @@ packages:
- encoding
dev: true
- /@octokit/request@8.1.1:
- resolution: {integrity: sha512-8N+tdUz4aCqQmXl8FpHYfKG9GelDFd7XGVzyN8rc6WxVlYcfpHECnuRkgquzz+WzvHTK62co5di8gSXnzASZPQ==}
+ /@octokit/request@8.3.1:
+ resolution: {integrity: sha512-fin4cl5eHN5Ybmb/gtn7YZ+ycyUlcyqqkg5lfxeSChqj7sUt6TNaJPehREi+0PABKLREYL8pfaUhH3TicEWNoA==}
engines: {node: '>= 18'}
dependencies:
- '@octokit/endpoint': 9.0.0
- '@octokit/request-error': 5.0.0
- '@octokit/types': 11.1.0
- is-plain-object: 5.0.0
+ '@octokit/endpoint': 9.0.5
+ '@octokit/request-error': 5.1.0
+ '@octokit/types': 13.1.0
universal-user-agent: 6.0.0
dev: true
@@ -6633,14 +6644,14 @@ packages:
- encoding
dev: true
- /@octokit/rest@20.0.2:
- resolution: {integrity: sha512-Ux8NDgEraQ/DMAU1PlAohyfBBXDwhnX2j33Z1nJNziqAfHi70PuxkFYIcIt8aIAxtRE7KVuKp8lSR8pA0J5iOQ==}
+ /@octokit/rest@20.1.0:
+ resolution: {integrity: sha512-STVO3itHQLrp80lvcYB2UIKoeil5Ctsgd2s1AM+du3HqZIR35ZH7WE9HLwUOLXH0myA0y3AGNPo8gZtcgIbw0g==}
engines: {node: '>= 18'}
dependencies:
- '@octokit/core': 5.0.0
- '@octokit/plugin-paginate-rest': 9.1.2(@octokit/core@5.0.0)
- '@octokit/plugin-request-log': 4.0.0(@octokit/core@5.0.0)
- '@octokit/plugin-rest-endpoint-methods': 10.1.2(@octokit/core@5.0.0)
+ '@octokit/core': 5.2.0
+ '@octokit/plugin-paginate-rest': 9.2.1(@octokit/core@5.2.0)
+ '@octokit/plugin-request-log': 4.0.0(@octokit/core@5.2.0)
+ '@octokit/plugin-rest-endpoint-methods': 10.4.1(@octokit/core@5.2.0)
dev: true
/@octokit/tsconfig@1.0.2:
@@ -6653,16 +6664,16 @@ packages:
'@octokit/openapi-types': 18.0.0
dev: true
- /@octokit/types@11.1.0:
- resolution: {integrity: sha512-Fz0+7GyLm/bHt8fwEqgvRBWwIV1S6wRRyq+V6exRKLVWaKGsuy6H9QFYeBVDV7rK6fO3XwHgQOPxv+cLj2zpXQ==}
+ /@octokit/types@12.6.0:
+ resolution: {integrity: sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==}
dependencies:
- '@octokit/openapi-types': 18.0.0
+ '@octokit/openapi-types': 20.0.0
dev: true
- /@octokit/types@12.1.1:
- resolution: {integrity: sha512-qnJTldJ1NyGT5MTsCg/Zi+y2IFHZ1Jo5+njNCjJ9FcainV7LjuHgmB697kA0g4MjZeDAJsM3B45iqCVsCLVFZg==}
+ /@octokit/types@13.1.0:
+ resolution: {integrity: sha512-nBwAFOYqVUUJ2AZFK4ZzESQptaAVqdTDKk8gE0Xr0o99WuPDSrhUC38x0F40xD9OUxXhOOuZKWNNVVLPSHQDvQ==}
dependencies:
- '@octokit/openapi-types': 19.0.2
+ '@octokit/openapi-types': 21.2.0
dev: true
/@octokit/types@6.41.0:
@@ -6689,12 +6700,12 @@ packages:
requiresBuild: true
optional: true
- /@playwright/test@1.42.1:
- resolution: {integrity: sha512-Gq9rmS54mjBL/7/MvBaNOBwbfnh7beHvS6oS4srqXFcQHpQCV1+c8JXWE8VLPyRDhgS3H8x8A7hztqI9VnwrAQ==}
+ /@playwright/test@1.43.0:
+ resolution: {integrity: sha512-Ebw0+MCqoYflop7wVKj711ccbNlrwTBCtjY5rlbiY9kHL2bCYxq+qltK6uPsVBGGAOb033H2VO0YobcQVxoW7Q==}
engines: {node: '>=16'}
hasBin: true
dependencies:
- playwright: 1.42.1
+ playwright: 1.43.0
dev: true
/@polka/url@1.0.0-next.21:
@@ -7479,14 +7490,14 @@ packages:
resolution: {integrity: sha512-DTuBFbqu4gGfajREEMrkq5jBhcnskinhr4+AnfJEk48zhVeEv3XnUKGIX98B74kxhYsIMfApGGySTn7V3b5yBA==}
engines: {node: '>= 12.13.0', npm: '>= 6.12.0'}
dependencies:
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
dev: false
/@slack/logger@4.0.0:
resolution: {integrity: sha512-Wz7QYfPAlG/DR+DfABddUZeNgoeY7d1J39OCR2jR+v7VBsB8ezulDK5szTnDDPDwLH5IWhLvXIHlCFZV7MSKgA==}
engines: {node: '>= 18', npm: '>= 8.6.0'}
dependencies:
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
dev: false
/@slack/oauth@2.6.2:
@@ -7496,7 +7507,7 @@ packages:
'@slack/logger': 3.0.0
'@slack/web-api': 6.12.0
'@types/jsonwebtoken': 8.5.9
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
jsonwebtoken: 9.0.0
lodash.isstring: 4.0.1
transitivePeerDependencies:
@@ -7509,7 +7520,7 @@ packages:
dependencies:
'@slack/logger': 3.0.0
'@slack/web-api': 6.12.0
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
'@types/p-queue': 2.3.2
'@types/ws': 7.4.7
eventemitter3: 3.1.2
@@ -7535,7 +7546,7 @@ packages:
'@slack/logger': 3.0.0
'@slack/types': 2.11.0
'@types/is-stream': 1.1.0
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
axios: 1.6.5(debug@4.3.4)
eventemitter3: 3.1.2
form-data: 2.5.1
@@ -7855,7 +7866,7 @@ packages:
resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==}
dependencies:
'@types/connect': 3.4.35
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
dev: false
/@types/cacheable-request@6.0.2:
@@ -7863,7 +7874,7 @@ packages:
dependencies:
'@types/http-cache-semantics': 4.0.1
'@types/keyv': 3.1.4
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
'@types/responselike': 1.0.0
dev: true
@@ -7880,13 +7891,13 @@ packages:
/@types/cheerio@0.22.31:
resolution: {integrity: sha512-Kt7Cdjjdi2XWSfrZ53v4Of0wG3ZcmaegFXjMmz9tfNrZSkzzo36G0AL1YqSdcIA78Etjt6E609pt5h1xnQkPUw==}
dependencies:
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
dev: true
/@types/connect@3.4.35:
resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==}
dependencies:
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
dev: false
/@types/cookie@0.4.1:
@@ -7925,11 +7936,11 @@ packages:
/@types/eslint-scope@3.7.4:
resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==}
dependencies:
- '@types/eslint': 8.56.6
+ '@types/eslint': 8.56.7
'@types/estree': 1.0.5
- /@types/eslint@8.56.6:
- resolution: {integrity: sha512-ymwc+qb1XkjT/gfoQwxIeHZ6ixH23A+tCT2ADSA/DPVKzAjwYkTXBMCQ/f6fe4wEa85Lhp26VPeUxI7wMhAi7A==}
+ /@types/eslint@8.56.7:
+ resolution: {integrity: sha512-SjDvI/x3zsZnOkYZ3lCt9lOZWZLB2jIlNKz+LBgCtDurK0JZcwucxYHn1w2BJkD34dgX9Tjnak0txtq4WTggEA==}
dependencies:
'@types/estree': 1.0.5
'@types/json-schema': 7.0.12
@@ -7940,7 +7951,7 @@ packages:
/@types/express-serve-static-core@4.17.35:
resolution: {integrity: sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==}
dependencies:
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
'@types/qs': 6.9.7
'@types/range-parser': 1.2.4
'@types/send': 0.17.1
@@ -7962,7 +7973,7 @@ packages:
resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==}
dependencies:
'@types/jsonfile': 6.1.1
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
dev: true
/@types/hoist-non-react-statics@3.3.5:
@@ -7986,7 +7997,7 @@ packages:
/@types/is-stream@1.1.0:
resolution: {integrity: sha512-jkZatu4QVbR60mpIzjINmtS1ZF4a/FqdTUTBeQDVOQ2PYyidtwFKr0B5G6ERukKwliq+7mIXvxyppwzG5EgRYg==}
dependencies:
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
dev: false
/@types/istanbul-lib-coverage@2.0.6:
@@ -8005,8 +8016,8 @@ packages:
'@types/istanbul-lib-report': 3.0.3
dev: false
- /@types/jscodeshift@0.11.5:
- resolution: {integrity: sha512-7JV0qdblTeWFigevmwFUgROXX395F+MQx6v0YqPn8Bx0B4Sng6alEejz9PENzgLYpG+zL0O4tGdBzc4gKZH8XA==}
+ /@types/jscodeshift@0.11.11:
+ resolution: {integrity: sha512-d7CAfFGOupj5qCDqMODXxNz2/NwCv/Lha78ZFbnr6qpk3K98iSB8I+ig9ERE2+EeYML352VMRsjPyOpeA+04eQ==}
dependencies:
ast-types: 0.14.2
recast: 0.20.5
@@ -8026,19 +8037,19 @@ packages:
/@types/jsonfile@6.1.1:
resolution: {integrity: sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==}
dependencies:
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
dev: true
/@types/jsonwebtoken@8.5.9:
resolution: {integrity: sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==}
dependencies:
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
dev: false
/@types/keyv@3.1.4:
resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==}
dependencies:
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
dev: true
/@types/lodash.mergewith@4.6.7:
@@ -8086,8 +8097,8 @@ packages:
resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
dev: true
- /@types/node@18.19.28:
- resolution: {integrity: sha512-J5cOGD9n4x3YGgVuaND6khm5x07MMdAKkRyXnjVR6KFhLMNh2yONGiP7Z+4+tBOt5mK+GvDTiacTOVGGpqiecw==}
+ /@types/node@18.19.31:
+ resolution: {integrity: sha512-ArgCD39YpyyrtFKIqMDvjz79jto5fcI/SVUs2HwB+f0dAzq68yqOdyaSivLiLugSziTpNXLQrVb7RZFmdZzbhA==}
dependencies:
undici-types: 5.26.5
@@ -8185,13 +8196,13 @@ packages:
/@types/resolve@0.0.8:
resolution: {integrity: sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==}
dependencies:
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
dev: true
/@types/responselike@1.0.0:
resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==}
dependencies:
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
dev: true
/@types/retry@0.12.0:
@@ -8209,7 +8220,7 @@ packages:
resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==}
dependencies:
'@types/mime': 1.3.2
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
dev: false
/@types/serve-static@1.15.2:
@@ -8217,7 +8228,7 @@ packages:
dependencies:
'@types/http-errors': 2.0.1
'@types/mime': 3.0.1
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
dev: false
/@types/sinon@10.0.20:
@@ -8273,7 +8284,7 @@ packages:
/@types/ws@7.4.7:
resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==}
dependencies:
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
dev: false
/@types/yargs-parser@21.0.3:
@@ -8290,7 +8301,7 @@ packages:
dependencies:
'@types/yargs-parser': 21.0.3
- /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.3):
+ /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.4):
resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
@@ -8302,10 +8313,10 @@ packages:
optional: true
dependencies:
'@eslint-community/regexpp': 4.6.2
- '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.3)
+ '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.4)
'@typescript-eslint/scope-manager': 6.21.0
- '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.0)(typescript@5.4.3)
- '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.3)
+ '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.0)(typescript@5.4.4)
+ '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.4)
'@typescript-eslint/visitor-keys': 6.21.0
debug: 4.3.4(supports-color@8.1.1)
eslint: 8.57.0
@@ -8313,13 +8324,13 @@ packages:
ignore: 5.3.1
natural-compare: 1.4.0
semver: 7.6.0
- ts-api-utils: 1.0.1(typescript@5.4.3)
- typescript: 5.4.3
+ ts-api-utils: 1.0.1(typescript@5.4.4)
+ typescript: 5.4.4
transitivePeerDependencies:
- supports-color
dev: true
- /@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.3):
+ /@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.4):
resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
@@ -8331,11 +8342,11 @@ packages:
dependencies:
'@typescript-eslint/scope-manager': 6.21.0
'@typescript-eslint/types': 6.21.0
- '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.3)
+ '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.4)
'@typescript-eslint/visitor-keys': 6.21.0
debug: 4.3.4(supports-color@8.1.1)
eslint: 8.57.0
- typescript: 5.4.3
+ typescript: 5.4.4
transitivePeerDependencies:
- supports-color
dev: true
@@ -8348,7 +8359,7 @@ packages:
'@typescript-eslint/visitor-keys': 6.21.0
dev: true
- /@typescript-eslint/type-utils@6.21.0(eslint@8.57.0)(typescript@5.4.3):
+ /@typescript-eslint/type-utils@6.21.0(eslint@8.57.0)(typescript@5.4.4):
resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
@@ -8358,12 +8369,12 @@ packages:
typescript:
optional: true
dependencies:
- '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.3)
- '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.3)
+ '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.4)
+ '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.4)
debug: 4.3.4(supports-color@8.1.1)
eslint: 8.57.0
- ts-api-utils: 1.0.1(typescript@5.4.3)
- typescript: 5.4.3
+ ts-api-utils: 1.0.1(typescript@5.4.4)
+ typescript: 5.4.4
transitivePeerDependencies:
- supports-color
dev: true
@@ -8373,7 +8384,7 @@ packages:
engines: {node: ^16.0.0 || >=18.0.0}
dev: true
- /@typescript-eslint/typescript-estree@6.21.0(typescript@5.4.3):
+ /@typescript-eslint/typescript-estree@6.21.0(typescript@5.4.4):
resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
@@ -8389,13 +8400,13 @@ packages:
is-glob: 4.0.3
minimatch: 9.0.3
semver: 7.6.0
- ts-api-utils: 1.0.1(typescript@5.4.3)
- typescript: 5.4.3
+ ts-api-utils: 1.0.1(typescript@5.4.4)
+ typescript: 5.4.4
transitivePeerDependencies:
- supports-color
dev: true
- /@typescript-eslint/utils@6.21.0(eslint@8.57.0)(typescript@5.4.3):
+ /@typescript-eslint/utils@6.21.0(eslint@8.57.0)(typescript@5.4.4):
resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
@@ -8406,7 +8417,7 @@ packages:
'@types/semver': 7.5.0
'@typescript-eslint/scope-manager': 6.21.0
'@typescript-eslint/types': 6.21.0
- '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.3)
+ '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.4)
eslint: 8.57.0
semver: 7.6.0
transitivePeerDependencies:
@@ -8426,7 +8437,7 @@ packages:
resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
dev: true
- /@vitejs/plugin-react@4.2.1(vite@5.2.7):
+ /@vitejs/plugin-react@4.2.1(vite@5.2.8):
resolution: {integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==}
engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies:
@@ -8437,7 +8448,7 @@ packages:
'@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.4)
'@types/babel__core': 7.20.5
react-refresh: 0.14.0
- vite: 5.2.7(@types/node@18.19.28)
+ vite: 5.2.8(@types/node@18.19.31)
transitivePeerDependencies:
- supports-color
dev: true
@@ -9003,21 +9014,6 @@ packages:
dequal: 2.0.3
dev: true
- /arr-diff@4.0.0:
- resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==}
- engines: {node: '>=0.10.0'}
- dev: false
-
- /arr-flatten@1.1.0:
- resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==}
- engines: {node: '>=0.10.0'}
- dev: false
-
- /arr-union@3.1.0:
- resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==}
- engines: {node: '>=0.10.0'}
- dev: false
-
/array-buffer-byte-length@1.0.1:
resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==}
engines: {node: '>= 0.4'}
@@ -9060,11 +9056,6 @@ packages:
resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
engines: {node: '>=8'}
- /array-unique@0.3.2:
- resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==}
- engines: {node: '>=0.10.0'}
- dev: false
-
/array.prototype.filter@1.0.1:
resolution: {integrity: sha512-Dk3Ty7N42Odk7PjU/Ci3zT4pLj20YvuVnneG/58ICM6bt4Ij5kZaJTVQ9TSaWaIECX2sFyz4KItkVZqHNnciqw==}
engines: {node: '>= 0.4'}
@@ -9200,11 +9191,6 @@ packages:
/assertion-error@1.1.0:
resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
- /assign-symbols@1.0.0:
- resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==}
- engines: {node: '>=0.10.0'}
- dev: false
-
/ast-types-flow@0.0.7:
resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==}
dev: true
@@ -9272,12 +9258,6 @@ packages:
engines: {node: '>= 4.0.0'}
dev: false
- /atob@2.1.2:
- resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==}
- engines: {node: '>= 4.5.0'}
- hasBin: true
- dev: false
-
/autoprefixer@10.4.19(postcss@8.4.38):
resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==}
engines: {node: ^10 || ^12 || >=14}
@@ -9506,19 +9486,6 @@ packages:
engines: {node: ^4.5.0 || >= 5.9}
dev: true
- /base@0.11.2:
- resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==}
- engines: {node: '>=0.10.0'}
- dependencies:
- cache-base: 1.0.1
- class-utils: 0.3.6
- component-emitter: 1.3.0
- define-property: 1.0.0
- isobject: 3.0.1
- mixin-deep: 1.3.2
- pascalcase: 0.1.1
- dev: false
-
/before-after-hook@2.2.2:
resolution: {integrity: sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==}
dev: true
@@ -9613,24 +9580,6 @@ packages:
dependencies:
balanced-match: 1.0.2
- /braces@2.3.2:
- resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==}
- engines: {node: '>=0.10.0'}
- dependencies:
- arr-flatten: 1.1.0
- array-unique: 0.3.2
- extend-shallow: 2.0.1
- fill-range: 4.0.0
- isobject: 3.0.1
- repeat-element: 1.1.4
- snapdragon: 0.8.2
- snapdragon-node: 2.1.1
- split-string: 3.1.0
- to-regex: 3.0.2
- transitivePeerDependencies:
- - supports-color
- dev: false
-
/braces@3.0.2:
resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
engines: {node: '>=8'}
@@ -9833,21 +9782,6 @@ packages:
unique-filename: 3.0.0
dev: true
- /cache-base@1.0.1:
- resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==}
- engines: {node: '>=0.10.0'}
- dependencies:
- collection-visit: 1.0.0
- component-emitter: 1.3.0
- get-value: 2.0.6
- has-value: 1.0.0
- isobject: 3.0.1
- set-value: 2.0.1
- to-object-path: 0.3.0
- union-value: 1.0.1
- unset-value: 1.0.0
- dev: false
-
/cacheable-lookup@5.0.4:
resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==}
engines: {node: '>=10.6.0'}
@@ -10116,7 +10050,7 @@ packages:
engines: {node: '>=12.13.0'}
hasBin: true
dependencies:
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
escape-string-regexp: 4.0.0
is-wsl: 2.2.0
lighthouse-logger: 1.4.2
@@ -10131,7 +10065,7 @@ packages:
/chromium-edge-launcher@1.0.0:
resolution: {integrity: sha512-pgtgjNKZ7i5U++1g1PWv75umkHvhVTDOQIZ+sjeUX9483S7Y6MUvO0lrd7ShGlQlFHMN4SwKTCq/X8hWrbv2KA==}
dependencies:
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
escape-string-regexp: 4.0.0
is-wsl: 2.2.0
lighthouse-logger: 1.4.2
@@ -10149,16 +10083,6 @@ packages:
resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
engines: {node: '>=8'}
- /class-utils@0.3.6:
- resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==}
- engines: {node: '>=0.10.0'}
- dependencies:
- arr-union: 3.1.0
- define-property: 0.2.5
- isobject: 3.0.1
- static-extend: 0.1.2
- dev: false
-
/classnames@2.3.2:
resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==}
dev: false
@@ -10303,14 +10227,6 @@ packages:
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
dev: true
- /collection-visit@1.0.0:
- resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==}
- engines: {node: '>=0.10.0'}
- dependencies:
- map-visit: 1.0.0
- object-visit: 1.0.1
- dev: false
-
/color-convert@1.9.3:
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
dependencies:
@@ -10425,10 +10341,6 @@ packages:
dot-prop: 5.3.0
dev: true
- /component-emitter@1.3.0:
- resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==}
- dev: false
-
/compress-commons@2.1.1:
resolution: {integrity: sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q==}
engines: {node: '>= 6'}
@@ -10646,11 +10558,6 @@ packages:
resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==}
engines: {node: '>= 0.6'}
- /copy-descriptor@0.1.1:
- resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==}
- engines: {node: '>=0.10.0'}
- dev: false
-
/core-js-compat@3.36.1:
resolution: {integrity: sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==}
dependencies:
@@ -11147,6 +11054,7 @@ packages:
/decode-uri-component@0.2.2:
resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==}
engines: {node: '>=0.10'}
+ dev: true
/decompress-response@6.0.0:
resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==}
@@ -11245,28 +11153,6 @@ packages:
has-property-descriptors: 1.0.2
object-keys: 1.1.1
- /define-property@0.2.5:
- resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==}
- engines: {node: '>=0.10.0'}
- dependencies:
- is-descriptor: 0.1.6
- dev: false
-
- /define-property@1.0.0:
- resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==}
- engines: {node: '>=0.10.0'}
- dependencies:
- is-descriptor: 1.0.2
- dev: false
-
- /define-property@2.0.2:
- resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==}
- engines: {node: '>=0.10.0'}
- dependencies:
- is-descriptor: 1.0.2
- isobject: 3.0.1
- dev: false
-
/delay@5.0.0:
resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==}
engines: {node: '>=10'}
@@ -11558,7 +11444,7 @@ packages:
dependencies:
'@types/cookie': 0.4.1
'@types/cors': 2.8.12
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
accepts: 1.3.8
base64id: 2.0.0
cookie: 0.4.2
@@ -11932,8 +11818,8 @@ packages:
eslint: ^7.32.0 || ^8.2.0
eslint-plugin-import: ^2.25.3
dependencies:
- '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.3)
- '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.3)
+ '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.4)
+ '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.4)
eslint: 8.57.0
eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.0)
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0)
@@ -12023,7 +11909,7 @@ packages:
eslint-import-resolver-webpack:
optional: true
dependencies:
- '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.3)
+ '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.4)
debug: 3.2.7
eslint: 8.57.0
eslint-import-resolver-node: 0.3.9
@@ -12064,7 +11950,7 @@ packages:
'@typescript-eslint/parser':
optional: true
dependencies:
- '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.3)
+ '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.4)
array-includes: 3.1.7
array.prototype.findlastindex: 1.2.3
array.prototype.flat: 1.3.2
@@ -12414,21 +12300,6 @@ packages:
strip-final-newline: 3.0.0
dev: false
- /expand-brackets@2.1.4:
- resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==}
- engines: {node: '>=0.10.0'}
- dependencies:
- debug: 2.6.9
- define-property: 0.2.5
- extend-shallow: 2.0.1
- posix-character-classes: 0.1.1
- regex-not: 1.0.2
- snapdragon: 0.8.2
- to-regex: 3.0.2
- transitivePeerDependencies:
- - supports-color
- dev: false
-
/expand-template@2.0.3:
resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==}
engines: {node: '>=6'}
@@ -12488,14 +12359,7 @@ packages:
engines: {node: '>=0.10.0'}
dependencies:
is-extendable: 0.1.1
-
- /extend-shallow@3.0.2:
- resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==}
- engines: {node: '>=0.10.0'}
- dependencies:
- assign-symbols: 1.0.0
- is-extendable: 1.0.1
- dev: false
+ dev: true
/extend@3.0.2:
resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
@@ -12509,22 +12373,6 @@ packages:
tmp: 0.0.33
dev: true
- /extglob@2.0.4:
- resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==}
- engines: {node: '>=0.10.0'}
- dependencies:
- array-unique: 0.3.2
- define-property: 1.0.0
- expand-brackets: 2.1.4
- extend-shallow: 2.0.1
- fragment-cache: 0.2.1
- regex-not: 1.0.2
- snapdragon: 0.8.2
- to-regex: 3.0.2
- transitivePeerDependencies:
- - supports-color
- dev: false
-
/extract-comments@1.1.0:
resolution: {integrity: sha512-dzbZV2AdSSVW/4E7Ti5hZdHWbA+Z80RJsJhr5uiL10oyjl/gy7/o+HI1HwK4/WSZhlq4SNKU3oUzXlM13Qx02Q==}
engines: {node: '>=6'}
@@ -12635,16 +12483,6 @@ packages:
minimatch: 5.1.0
dev: true
- /fill-range@4.0.0:
- resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==}
- engines: {node: '>=0.10.0'}
- dependencies:
- extend-shallow: 2.0.1
- is-number: 3.0.0
- repeat-string: 1.6.1
- to-regex-range: 2.1.1
- dev: false
-
/fill-range@7.0.1:
resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
engines: {node: '>=8'}
@@ -12810,11 +12648,6 @@ packages:
dependencies:
is-callable: 1.2.7
- /for-in@1.0.2:
- resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==}
- engines: {node: '>=0.10.0'}
- dev: false
-
/foreground-child@2.0.0:
resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==}
engines: {node: '>=8.0.0'}
@@ -12858,13 +12691,6 @@ packages:
resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
dev: false
- /fragment-cache@0.2.1:
- resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==}
- engines: {node: '>=0.10.0'}
- dependencies:
- map-cache: 0.2.2
- dev: false
-
/framesync@6.1.2:
resolution: {integrity: sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==}
dependencies:
@@ -13110,11 +12936,6 @@ packages:
resolve-pkg-maps: 1.0.0
dev: true
- /get-value@2.0.6:
- resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==}
- engines: {node: '>=0.10.0'}
- dev: false
-
/git-config-path@1.0.1:
resolution: {integrity: sha512-KcJ2dlrrP5DbBnYIZ2nlikALfRhKzNSX0stvv3ImJ+fvC4hXKoV+U+74SV0upg+jlQZbrtQzc0bu6/Zh+7aQbg==}
engines: {node: '>=0.10.0'}
@@ -13500,37 +13321,6 @@ packages:
resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==}
dev: true
- /has-value@0.3.1:
- resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==}
- engines: {node: '>=0.10.0'}
- dependencies:
- get-value: 2.0.6
- has-values: 0.1.4
- isobject: 2.1.0
- dev: false
-
- /has-value@1.0.0:
- resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==}
- engines: {node: '>=0.10.0'}
- dependencies:
- get-value: 2.0.6
- has-values: 1.0.0
- isobject: 3.0.1
- dev: false
-
- /has-values@0.1.4:
- resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==}
- engines: {node: '>=0.10.0'}
- dev: false
-
- /has-values@1.0.0:
- resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==}
- engines: {node: '>=0.10.0'}
- dependencies:
- is-number: 3.0.0
- kind-of: 4.0.0
- dev: false
-
/has@1.0.3:
resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
engines: {node: '>= 0.4.0'}
@@ -13995,22 +13785,6 @@ packages:
resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
engines: {node: '>= 0.10'}
- /is-accessor-descriptor@0.1.6:
- resolution: {integrity: sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==}
- engines: {node: '>=0.10.0'}
- deprecated: Please upgrade to v0.1.7
- dependencies:
- kind-of: 3.2.2
- dev: false
-
- /is-accessor-descriptor@1.0.0:
- resolution: {integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==}
- engines: {node: '>=0.10.0'}
- deprecated: Please upgrade to v1.0.1
- dependencies:
- kind-of: 6.0.3
- dev: false
-
/is-alphabetical@1.0.4:
resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==}
dev: false
@@ -14069,10 +13843,6 @@ packages:
call-bind: 1.0.7
has-tostringtag: 1.0.2
- /is-buffer@1.1.6:
- resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==}
- dev: false
-
/is-buffer@2.0.5:
resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==}
engines: {node: '>=4'}
@@ -14094,22 +13864,6 @@ packages:
dependencies:
hasown: 2.0.2
- /is-data-descriptor@0.1.4:
- resolution: {integrity: sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==}
- engines: {node: '>=0.10.0'}
- deprecated: Please upgrade to v0.1.5
- dependencies:
- kind-of: 3.2.2
- dev: false
-
- /is-data-descriptor@1.0.0:
- resolution: {integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==}
- engines: {node: '>=0.10.0'}
- deprecated: Please upgrade to v1.0.1
- dependencies:
- kind-of: 6.0.3
- dev: false
-
/is-date-object@1.0.5:
resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
engines: {node: '>= 0.4'}
@@ -14124,24 +13878,6 @@ packages:
resolution: {integrity: sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==}
dev: true
- /is-descriptor@0.1.6:
- resolution: {integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==}
- engines: {node: '>=0.10.0'}
- dependencies:
- is-accessor-descriptor: 0.1.6
- is-data-descriptor: 0.1.4
- kind-of: 5.1.0
- dev: false
-
- /is-descriptor@1.0.2:
- resolution: {integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==}
- engines: {node: '>=0.10.0'}
- dependencies:
- is-accessor-descriptor: 1.0.0
- is-data-descriptor: 1.0.0
- kind-of: 6.0.3
- dev: false
-
/is-directory@0.3.1:
resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==}
engines: {node: '>=0.10.0'}
@@ -14159,6 +13895,7 @@ packages:
/is-extendable@0.1.1:
resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==}
engines: {node: '>=0.10.0'}
+ dev: true
/is-extendable@1.0.1:
resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==}
@@ -14237,13 +13974,6 @@ packages:
dependencies:
has-tostringtag: 1.0.2
- /is-number@3.0.0:
- resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==}
- engines: {node: '>=0.10.0'}
- dependencies:
- kind-of: 3.2.2
- dev: false
-
/is-number@7.0.0:
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
engines: {node: '>=0.12.0'}
@@ -14390,6 +14120,7 @@ packages:
/is-windows@1.0.2:
resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
engines: {node: '>=0.10.0'}
+ dev: true
/is-wsl@1.1.0:
resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==}
@@ -14424,13 +14155,6 @@ packages:
engines: {node: '>=16'}
dev: true
- /isobject@2.1.0:
- resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==}
- engines: {node: '>=0.10.0'}
- dependencies:
- isarray: 1.0.0
- dev: false
-
/isobject@3.0.1:
resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==}
engines: {node: '>=0.10.0'}
@@ -14593,7 +14317,7 @@ packages:
'@jest/environment': 29.7.0
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
jest-mock: 29.7.0
jest-util: 29.7.0
dev: false
@@ -14622,7 +14346,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@jest/types': 29.6.3
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
jest-util: 29.7.0
dev: false
@@ -14631,7 +14355,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@jest/types': 29.6.3
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
chalk: 4.1.2
ci-info: 3.9.0
graceful-fs: 4.2.11
@@ -14654,7 +14378,7 @@ packages:
resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==}
engines: {node: '>= 10.13.0'}
dependencies:
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
merge-stream: 2.0.0
supports-color: 7.2.0
dev: true
@@ -14663,7 +14387,7 @@ packages:
resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
engines: {node: '>= 10.13.0'}
dependencies:
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
merge-stream: 2.0.0
supports-color: 8.1.1
@@ -14671,7 +14395,7 @@ packages:
resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
jest-util: 29.7.0
merge-stream: 2.0.0
supports-color: 8.1.1
@@ -14726,28 +14450,28 @@ packages:
resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==}
dev: false
- /jscodeshift-add-imports@1.0.10(jscodeshift@0.13.1):
+ /jscodeshift-add-imports@1.0.10(jscodeshift@0.15.2):
resolution: {integrity: sha512-VUe9DJ3zkWIR62zSRQnmsOVeyt77yD8knvYNna/PzRZlF9j799hJw5sqTZu4EX16XLIqS3FxWz3nXuGuiw9iyQ==}
peerDependencies:
jscodeshift: ^0.7.0 || ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0
dependencies:
'@babel/traverse': 7.24.1
- jscodeshift: 0.13.1(@babel/preset-env@7.24.4)
- jscodeshift-find-imports: 2.0.4(jscodeshift@0.13.1)
+ jscodeshift: 0.15.2(@babel/preset-env@7.24.4)
+ jscodeshift-find-imports: 2.0.4(jscodeshift@0.15.2)
transitivePeerDependencies:
- supports-color
dev: false
- /jscodeshift-find-imports@2.0.4(jscodeshift@0.13.1):
+ /jscodeshift-find-imports@2.0.4(jscodeshift@0.15.2):
resolution: {integrity: sha512-HxOzjWDOFFSCf8EKSTQGqCxXeRFqZszOywnZ0HuMB9YPDFHVpxftGRsY+QS+Qq8o2qUojlmNU3JEHts5DWYS1A==}
peerDependencies:
jscodeshift: ^0.7.0 || ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0
dependencies:
- jscodeshift: 0.13.1(@babel/preset-env@7.24.4)
+ jscodeshift: 0.15.2(@babel/preset-env@7.24.4)
dev: false
- /jscodeshift@0.13.1(@babel/preset-env@7.24.4):
- resolution: {integrity: sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ==}
+ /jscodeshift@0.14.0(@babel/preset-env@7.24.4):
+ resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==}
hasBin: true
peerDependencies:
'@babel/preset-env': ^7.24.4
@@ -14766,28 +14490,32 @@ packages:
chalk: 4.1.2
flow-parser: 0.206.0
graceful-fs: 4.2.11
- micromatch: 3.1.10
+ micromatch: 4.0.5
neo-async: 2.6.2
node-dir: 0.1.17
- recast: 0.20.5
+ recast: 0.21.5
temp: 0.8.4
write-file-atomic: 2.4.3
transitivePeerDependencies:
- supports-color
dev: false
- /jscodeshift@0.14.0(@babel/preset-env@7.24.4):
- resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==}
+ /jscodeshift@0.15.2(@babel/preset-env@7.24.4):
+ resolution: {integrity: sha512-FquR7Okgmc4Sd0aEDwqho3rEiKR3BdvuG9jfdHjLJ6JQoWSMpavug3AoIfnfWhxFlf+5pzQh8qjqz0DWFrNQzA==}
hasBin: true
peerDependencies:
'@babel/preset-env': ^7.24.4
+ peerDependenciesMeta:
+ '@babel/preset-env':
+ optional: true
dependencies:
'@babel/core': 7.24.4
'@babel/parser': 7.24.4
- '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.4)
- '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.4)
- '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.4)
+ '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.4)
'@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.4)
+ '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.4)
+ '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.4)
+ '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.4)
'@babel/preset-env': 7.24.4(@babel/core@7.24.4)
'@babel/preset-flow': 7.24.1(@babel/core@7.24.4)
'@babel/preset-typescript': 7.24.1(@babel/core@7.24.4)
@@ -14799,7 +14527,7 @@ packages:
micromatch: 4.0.5
neo-async: 2.6.2
node-dir: 0.1.17
- recast: 0.21.5
+ recast: 0.23.6
temp: 0.8.4
write-file-atomic: 2.4.3
transitivePeerDependencies:
@@ -15230,25 +14958,6 @@ packages:
json-buffer: 3.0.1
dev: true
- /kind-of@3.2.2:
- resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==}
- engines: {node: '>=0.10.0'}
- dependencies:
- is-buffer: 1.1.6
- dev: false
-
- /kind-of@4.0.0:
- resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==}
- engines: {node: '>=0.10.0'}
- dependencies:
- is-buffer: 1.1.6
- dev: false
-
- /kind-of@5.1.0:
- resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==}
- engines: {node: '>=0.10.0'}
- dev: false
-
/kind-of@6.0.3:
resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
engines: {node: '>=0.10.0'}
@@ -15352,7 +15061,7 @@ packages:
strong-log-transformer: 2.1.0
tar: 6.1.11
temp-dir: 1.0.0
- typescript: 5.4.3
+ typescript: 5.4.4
upath: 2.0.1
uuid: 9.0.1
validate-npm-package-license: 3.0.4
@@ -15834,11 +15543,6 @@ packages:
tmpl: 1.0.5
dev: false
- /map-cache@0.2.2:
- resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==}
- engines: {node: '>=0.10.0'}
- dev: false
-
/map-obj@1.0.1:
resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==}
engines: {node: '>=0.10.0'}
@@ -15853,13 +15557,6 @@ packages:
resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==}
dev: true
- /map-visit@1.0.0:
- resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==}
- engines: {node: '>=0.10.0'}
- dependencies:
- object-visit: 1.0.1
- dev: false
-
/markdown-it@14.0.0:
resolution: {integrity: sha512-seFjF0FIcPt4P9U39Bq1JYblX0KZCjDLFFQPHpL5AzHpqPEKtosxmdq/LTVZnjfH7tjt9BxStm+wXcDBNuYmzw==}
hasBin: true
@@ -15872,8 +15569,8 @@ packages:
uc.micro: 2.0.0
dev: true
- /markdown-to-jsx@7.4.5(react@18.2.0):
- resolution: {integrity: sha512-c8NB0H/ig+FOWssE9be0PKsYbCDhcWEkicxMnpdfUuHbFljnen4LAdgUShOyR/PgO3/qKvt9cwfQ0U/zQvZ44A==}
+ /markdown-to-jsx@7.4.6(react@18.2.0):
+ resolution: {integrity: sha512-3cyNxI/PwotvYkjg6KmFaN1uyN/7NqETteD2DobBB8ro/FR9jsHIh4Fi7ywAz0s9QHRKCmGlOUggs5GxSWACKA==}
engines: {node: '>= 10'}
peerDependencies:
react: '>= 0.14.0'
@@ -16277,27 +15974,6 @@ packages:
- supports-color
dev: false
- /micromatch@3.1.10:
- resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==}
- engines: {node: '>=0.10.0'}
- dependencies:
- arr-diff: 4.0.0
- array-unique: 0.3.2
- braces: 2.3.2
- define-property: 2.0.2
- extend-shallow: 3.0.2
- extglob: 2.0.4
- fragment-cache: 0.2.1
- kind-of: 6.0.3
- nanomatch: 1.2.13
- object.pick: 1.3.0
- regex-not: 1.0.2
- snapdragon: 0.8.2
- to-regex: 3.0.2
- transitivePeerDependencies:
- - supports-color
- dev: false
-
/micromatch@4.0.5:
resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
engines: {node: '>=8.6'}
@@ -16498,14 +16174,6 @@ packages:
yallist: 4.0.0
dev: true
- /mixin-deep@1.3.2:
- resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==}
- engines: {node: '>=0.10.0'}
- dependencies:
- for-in: 1.0.2
- is-extendable: 1.0.1
- dev: false
-
/mkdirp-classic@0.5.3:
resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==}
dev: true
@@ -16625,25 +16293,6 @@ packages:
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
- /nanomatch@1.2.13:
- resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==}
- engines: {node: '>=0.10.0'}
- dependencies:
- arr-diff: 4.0.0
- array-unique: 0.3.2
- define-property: 2.0.2
- extend-shallow: 3.0.2
- fragment-cache: 0.2.1
- is-windows: 1.0.2
- kind-of: 6.0.3
- object.pick: 1.3.0
- regex-not: 1.0.2
- snapdragon: 0.8.2
- to-regex: 3.0.2
- transitivePeerDependencies:
- - supports-color
- dev: false
-
/napi-build-utils@1.0.2:
resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==}
dev: true
@@ -17231,15 +16880,6 @@ packages:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
- /object-copy@0.1.0:
- resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==}
- engines: {node: '>=0.10.0'}
- dependencies:
- copy-descriptor: 0.1.1
- define-property: 0.2.5
- kind-of: 3.2.2
- dev: false
-
/object-hash@2.2.0:
resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==}
engines: {node: '>= 6'}
@@ -17266,13 +16906,6 @@ packages:
resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
engines: {node: '>= 0.4'}
- /object-visit@1.0.1:
- resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==}
- engines: {node: '>=0.10.0'}
- dependencies:
- isobject: 3.0.1
- dev: false
-
/object.assign@4.1.5:
resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==}
engines: {node: '>= 0.4'}
@@ -17331,13 +16964,6 @@ packages:
is-extendable: 1.0.1
dev: false
- /object.pick@1.3.0:
- resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==}
- engines: {node: '>=0.10.0'}
- dependencies:
- isobject: 3.0.1
- dev: false
-
/object.values@1.1.7:
resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==}
engines: {node: '>= 0.4'}
@@ -17790,11 +17416,6 @@ packages:
tslib: 2.6.2
dev: true
- /pascalcase@0.1.1:
- resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==}
- engines: {node: '>=0.10.0'}
- dev: false
-
/path-exists@3.0.0:
resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==}
engines: {node: '>=4'}
@@ -17974,17 +17595,17 @@ packages:
resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==}
dev: false
- /playwright-core@1.42.1:
- resolution: {integrity: sha512-mxz6zclokgrke9p1vtdy/COWBH+eOZgYUVVU34C73M+4j4HLlQJHtfcqiqqxpP0o8HhMkflvfbquLX5dg6wlfA==}
+ /playwright-core@1.43.0:
+ resolution: {integrity: sha512-iWFjyBUH97+pUFiyTqSLd8cDMMOS0r2ZYz2qEsPjH8/bX++sbIJT35MSwKnp1r/OQBAqC5XO99xFbJ9XClhf4w==}
engines: {node: '>=16'}
hasBin: true
- /playwright@1.42.1:
- resolution: {integrity: sha512-PgwB03s2DZBcNRoW+1w9E+VkLBxweib6KTXM0M3tkiT4jVxKSi6PmVJ591J+0u10LUrgxB7dLRbiJqO5s2QPMg==}
+ /playwright@1.43.0:
+ resolution: {integrity: sha512-SiOKHbVjTSf6wHuGCbqrEyzlm6qvXcv7mENP+OZon1I07brfZLGdfWV0l/efAzVx7TF3Z45ov1gPEkku9q25YQ==}
engines: {node: '>=16'}
hasBin: true
dependencies:
- playwright-core: 1.42.1
+ playwright-core: 1.43.0
optionalDependencies:
fsevents: 2.3.2
@@ -17994,11 +17615,6 @@ packages:
semver-compare: 1.0.0
dev: false
- /posix-character-classes@0.1.1:
- resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==}
- engines: {node: '>=0.10.0'}
- dev: false
-
/possible-typed-array-names@1.0.0:
resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==}
engines: {node: '>= 0.4'}
@@ -18138,7 +17754,7 @@ packages:
postcss: ^8.4.21
dependencies:
postcss: 8.4.38
- typescript: 5.4.3
+ typescript: 5.4.4
dev: true
/postcss-value-parser@4.2.0:
@@ -18990,8 +18606,8 @@ packages:
react-dom: 18.2.0(react@18.2.0)
dev: false
- /react-virtuoso@4.7.2(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-xF4es1ajK36Hs9MciaiGA9l16tV2bpkpgxM9JVKh0rJSn6uhdAUrxSQ6FttQOOPAGt4GRG2A4gdjlo18JWhyRw==}
+ /react-virtuoso@4.7.8(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-P0BHOsLrmfnXv1bY9Nja07nvFciRGNgM7lTRHMcVDteTDb9tLtHzajBapKGUZ5zdyUOEVWvuW6ufQxzdGN2AKw==}
engines: {node: '>=10'}
peerDependencies:
react: '>=16 || >=17 || >= 18'
@@ -19185,6 +18801,7 @@ packages:
esprima: 4.0.1
source-map: 0.6.1
tslib: 2.6.2
+ dev: true
/recast@0.21.5:
resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==}
@@ -19277,14 +18894,6 @@ packages:
dependencies:
'@babel/runtime': 7.24.4
- /regex-not@1.0.2:
- resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==}
- engines: {node: '>=0.10.0'}
- dependencies:
- extend-shallow: 3.0.2
- safe-regex: 1.1.0
- dev: false
-
/regexp.prototype.flags@1.5.2:
resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==}
engines: {node: '>= 0.4'}
@@ -19375,11 +18984,6 @@ packages:
strip-ansi: 6.0.1
dev: true
- /repeat-element@1.1.4:
- resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==}
- engines: {node: '>=0.10.0'}
- dev: false
-
/repeat-string@1.6.1:
resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==}
engines: {node: '>=0.10'}
@@ -19434,11 +19038,6 @@ packages:
resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
dev: true
- /resolve-url@0.2.1:
- resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==}
- deprecated: https://github.com/lydell/resolve-url#deprecated
- dev: false
-
/resolve@1.22.8:
resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
hasBin: true
@@ -19689,12 +19288,6 @@ packages:
es-errors: 1.3.0
is-regex: 1.1.4
- /safe-regex@1.1.0:
- resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==}
- dependencies:
- ret: 0.1.15
- dev: false
-
/safer-buffer@2.1.2:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
@@ -19896,16 +19489,6 @@ packages:
functions-have-names: 1.2.3
has-property-descriptors: 1.0.2
- /set-value@2.0.1:
- resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==}
- engines: {node: '>=0.10.0'}
- dependencies:
- extend-shallow: 2.0.1
- is-extendable: 0.1.1
- is-plain-object: 2.0.4
- split-string: 3.1.0
- dev: false
-
/setimmediate@1.0.5:
resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==}
dev: false
@@ -20097,38 +19680,6 @@ packages:
engines: {node: '>= 6.0.0', npm: '>= 3.0.0'}
dev: true
- /snapdragon-node@2.1.1:
- resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==}
- engines: {node: '>=0.10.0'}
- dependencies:
- define-property: 1.0.0
- isobject: 3.0.1
- snapdragon-util: 3.0.1
- dev: false
-
- /snapdragon-util@3.0.1:
- resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==}
- engines: {node: '>=0.10.0'}
- dependencies:
- kind-of: 3.2.2
- dev: false
-
- /snapdragon@0.8.2:
- resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==}
- engines: {node: '>=0.10.0'}
- dependencies:
- base: 0.11.2
- debug: 2.6.9
- define-property: 0.2.5
- extend-shallow: 2.0.1
- map-cache: 0.2.2
- source-map: 0.5.7
- source-map-resolve: 0.5.3
- use: 3.1.1
- transitivePeerDependencies:
- - supports-color
- dev: false
-
/socket.io-adapter@2.5.4:
resolution: {integrity: sha512-wDNHGXGewWAjQPt3pyeYBtpWSq9cLE5UW1ZUPL/2eGK9jtse/FpXib7epSTsz0Q0m+6sg6Y4KtcFTlah1bdOVg==}
dependencies:
@@ -20208,28 +19759,12 @@ packages:
resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
engines: {node: '>=0.10.0'}
- /source-map-resolve@0.5.3:
- resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==}
- deprecated: See https://github.com/lydell/source-map-resolve#deprecated
- dependencies:
- atob: 2.1.2
- decode-uri-component: 0.2.2
- resolve-url: 0.2.1
- source-map-url: 0.4.1
- urix: 0.1.0
- dev: false
-
/source-map-support@0.5.21:
resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
dependencies:
buffer-from: 1.1.2
source-map: 0.6.1
- /source-map-url@0.4.1:
- resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==}
- deprecated: See https://github.com/lydell/source-map-url#deprecated
- dev: false
-
/source-map@0.5.7:
resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==}
engines: {node: '>=0.10.0'}
@@ -20298,13 +19833,6 @@ packages:
engines: {node: '>=6'}
dev: true
- /split-string@3.1.0:
- resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==}
- engines: {node: '>=0.10.0'}
- dependencies:
- extend-shallow: 3.0.2
- dev: false
-
/split2@3.2.2:
resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==}
dependencies:
@@ -20358,14 +19886,6 @@ packages:
type-fest: 0.7.1
dev: false
- /static-extend@0.1.2:
- resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==}
- engines: {node: '>=0.10.0'}
- dependencies:
- define-property: 0.2.5
- object-copy: 0.1.0
- dev: false
-
/statuses@1.5.0:
resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==}
engines: {node: '>= 0.6'}
@@ -21090,37 +20610,12 @@ packages:
resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
engines: {node: '>=4'}
- /to-object-path@0.3.0:
- resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==}
- engines: {node: '>=0.10.0'}
- dependencies:
- kind-of: 3.2.2
- dev: false
-
- /to-regex-range@2.1.1:
- resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==}
- engines: {node: '>=0.10.0'}
- dependencies:
- is-number: 3.0.0
- repeat-string: 1.6.1
- dev: false
-
/to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
dependencies:
is-number: 7.0.0
- /to-regex@3.0.2:
- resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==}
- engines: {node: '>=0.10.0'}
- dependencies:
- define-property: 2.0.2
- extend-shallow: 3.0.2
- regex-not: 1.0.2
- safe-regex: 1.1.0
- dev: false
-
/toidentifier@1.0.1:
resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
engines: {node: '>=0.6'}
@@ -21178,13 +20673,13 @@ packages:
resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==}
dev: false
- /ts-api-utils@1.0.1(typescript@5.4.3):
+ /ts-api-utils@1.0.1(typescript@5.4.4):
resolution: {integrity: sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==}
engines: {node: '>=16.13.0'}
peerDependencies:
typescript: '>=4.2.0'
dependencies:
- typescript: 5.4.3
+ typescript: 5.4.4
dev: true
/ts-interface-checker@0.1.13:
@@ -21230,7 +20725,7 @@ packages:
engines: {node: '>=0.6.x'}
dev: false
- /tsup@8.0.2(postcss@8.4.38)(typescript@5.4.3):
+ /tsup@8.0.2(postcss@8.4.38)(typescript@5.4.4):
resolution: {integrity: sha512-NY8xtQXdH7hDUAZwcQdY/Vzlw9johQsaqf7iwZ6g1DOUlFYQ5/AtVAjTvihhEyeRlGo4dLRVHtrRaL35M1daqQ==}
engines: {node: '>=18'}
hasBin: true
@@ -21264,14 +20759,14 @@ packages:
source-map: 0.8.0-beta.0
sucrase: 3.34.0
tree-kill: 1.2.2
- typescript: 5.4.3
+ typescript: 5.4.4
transitivePeerDependencies:
- supports-color
- ts-node
dev: true
- /tsx@4.7.1:
- resolution: {integrity: sha512-8d6VuibXHtlN5E3zFkgY8u4DX7Y3Z27zvvPKVmLon/D4AjuKzarkUBTLDBgj9iTQ0hg5xM7c/mYiRVM+HETf0g==}
+ /tsx@4.7.2:
+ resolution: {integrity: sha512-BCNd4kz6fz12fyrgCTEdZHGJ9fWTGeUzXmQysh0RVocDY3h4frk05ZNCXSy4kIenF7y/QnrdiVpTsyNRn6vlAw==}
engines: {node: '>=18.0.0'}
hasBin: true
dependencies:
@@ -21422,8 +20917,8 @@ packages:
resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==}
dev: true
- /typescript@5.4.3:
- resolution: {integrity: sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==}
+ /typescript@5.4.4:
+ resolution: {integrity: sha512-dGE2Vv8cpVvw28v8HCPqyb08EzbBURxDpuhJvTrusShUfGnhHBafDsLdS1EhhxyL6BJQE+2cT3dDPAv+MQ6oLw==}
engines: {node: '>=14.17'}
hasBin: true
@@ -21494,16 +20989,6 @@ packages:
vfile: 4.2.1
dev: false
- /union-value@1.0.1:
- resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==}
- engines: {node: '>=0.10.0'}
- dependencies:
- arr-union: 3.1.0
- get-value: 2.0.6
- is-extendable: 0.1.1
- set-value: 2.0.1
- dev: false
-
/unique-filename@3.0.0:
resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
@@ -21573,14 +21058,6 @@ packages:
webpack-virtual-modules: 0.6.1
dev: false
- /unset-value@1.0.0:
- resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==}
- engines: {node: '>=0.10.0'}
- dependencies:
- has-value: 0.3.1
- isobject: 3.0.1
- dev: false
-
/unzipper@0.10.11:
resolution: {integrity: sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==}
dependencies:
@@ -21623,11 +21100,6 @@ packages:
dependencies:
punycode: 2.3.1
- /urix@0.1.0:
- resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==}
- deprecated: Please see https://github.com/lydell/urix#deprecated
- dev: false
-
/url-parse@1.5.10:
resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==}
dependencies:
@@ -21675,11 +21147,6 @@ packages:
react: 18.2.0
dev: false
- /use@3.1.1:
- resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==}
- engines: {node: '>=0.10.0'}
- dev: false
-
/util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
@@ -21770,7 +21237,7 @@ packages:
vfile-message: 2.0.4
dev: false
- /vite-plugin-pages@0.32.1(vite@5.2.7):
+ /vite-plugin-pages@0.32.1(vite@5.2.8):
resolution: {integrity: sha512-4oPlIbb+J+zpJGfT2xI/27xqY+qTkRc3MBgWKfbW6IWM3CTcSyybuL9kRMCFRdBHfmgkF28qDs7fqVf/HjH1Xw==}
peerDependencies:
'@vue/compiler-sfc': ^2.7.0 || ^3.0.0
@@ -21787,18 +21254,18 @@ packages:
json5: 2.2.3
local-pkg: 0.5.0
picocolors: 1.0.0
- vite: 5.2.7(@types/node@18.19.28)
+ vite: 5.2.8(@types/node@18.19.31)
yaml: 2.4.1
transitivePeerDependencies:
- supports-color
dev: true
- /vite@5.2.7(@types/node@18.19.28):
- resolution: {integrity: sha512-k14PWOKLI6pMaSzAuGtT+Cf0YmIx12z9YGon39onaJNy8DLBfBJrzg9FQEmkAM5lpHBZs9wksWAsyF/HkpEwJA==}
+ /vite@5.2.8(@types/node@18.19.31):
+ resolution: {integrity: sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
- '@types/node': ^18.19.28
+ '@types/node': ^18.19.31
less: '*'
lightningcss: ^1.21.0
sass: '*'
@@ -21821,7 +21288,7 @@ packages:
terser:
optional: true
dependencies:
- '@types/node': 18.19.28
+ '@types/node': 18.19.31
esbuild: 0.20.2
postcss: 8.4.38
rollup: 4.13.0
diff --git a/test/bundling/fixtures/create-react-app/package.json b/test/bundling/fixtures/create-react-app/package.json
index c5cfabb1f6c3ae..f576760bfb700c 100644
--- a/test/bundling/fixtures/create-react-app/package.json
+++ b/test/bundling/fixtures/create-react-app/package.json
@@ -25,7 +25,7 @@
"devDependencies": {
"concurrently": "7.4.0",
"cross-env": "7.0.3",
- "playwright": "1.42.1",
+ "playwright": "1.43.0",
"serve": "14.0.1"
},
"browserslist": {
diff --git a/test/bundling/fixtures/esbuild/package.json b/test/bundling/fixtures/esbuild/package.json
index b4d19f0ee05829..78cb20425e6c5b 100644
--- a/test/bundling/fixtures/esbuild/package.json
+++ b/test/bundling/fixtures/esbuild/package.json
@@ -25,7 +25,7 @@
},
"devDependencies": {
"concurrently": "7.4.0",
- "playwright": "1.42.1",
+ "playwright": "1.43.0",
"serve": "14.0.1"
}
}
diff --git a/test/bundling/fixtures/gatsby/package.json b/test/bundling/fixtures/gatsby/package.json
index 712e24e04d31d7..26cfb6a4ad426c 100644
--- a/test/bundling/fixtures/gatsby/package.json
+++ b/test/bundling/fixtures/gatsby/package.json
@@ -23,6 +23,6 @@
},
"devDependencies": {
"concurrently": "7.4.0",
- "playwright": "1.42.1"
+ "playwright": "1.43.0"
}
}
diff --git a/test/bundling/fixtures/next-webpack4/package.json b/test/bundling/fixtures/next-webpack4/package.json
index f6d4ab868517b3..e1eed0558d467c 100644
--- a/test/bundling/fixtures/next-webpack4/package.json
+++ b/test/bundling/fixtures/next-webpack4/package.json
@@ -23,6 +23,6 @@
},
"devDependencies": {
"concurrently": "7.4.0",
- "playwright": "1.42.1"
+ "playwright": "1.43.0"
}
}
diff --git a/test/bundling/fixtures/next-webpack5/package.json b/test/bundling/fixtures/next-webpack5/package.json
index 65f197ec50f422..89418e1e310ef0 100644
--- a/test/bundling/fixtures/next-webpack5/package.json
+++ b/test/bundling/fixtures/next-webpack5/package.json
@@ -23,6 +23,6 @@
},
"devDependencies": {
"concurrently": "7.4.0",
- "playwright": "1.42.1"
+ "playwright": "1.43.0"
}
}
diff --git a/test/bundling/fixtures/snowpack/package.json b/test/bundling/fixtures/snowpack/package.json
index 697bea33ec61a5..d1e54da1e01734 100644
--- a/test/bundling/fixtures/snowpack/package.json
+++ b/test/bundling/fixtures/snowpack/package.json
@@ -24,7 +24,7 @@
},
"devDependencies": {
"concurrently": "7.4.0",
- "playwright": "1.42.1",
+ "playwright": "1.43.0",
"serve": "14.0.1"
}
}
diff --git a/test/bundling/fixtures/vite/package.json b/test/bundling/fixtures/vite/package.json
index 40b4108a0151b6..948d209ed8c5ff 100644
--- a/test/bundling/fixtures/vite/package.json
+++ b/test/bundling/fixtures/vite/package.json
@@ -20,11 +20,11 @@
"react": "18.2.0",
"react-dom": "18.2.0",
"react-is": "18.2.0",
- "vite": "3.2.8"
+ "vite": "3.2.10"
},
"devDependencies": {
"concurrently": "7.4.0",
- "playwright": "1.42.1",
+ "playwright": "1.43.0",
"serve": "14.0.1"
}
}
diff --git a/test/package.json b/test/package.json
index 5eda378e5e3240..fc2f3b067219b1 100644
--- a/test/package.json
+++ b/test/package.json
@@ -17,7 +17,7 @@
"@mui/material": "workspace:^",
"@mui/system": "workspace:^",
"@mui/utils": "workspace:^",
- "@playwright/test": "1.42.1",
+ "@playwright/test": "1.43.0",
"@testing-library/dom": "^9.3.4",
"@types/chai": "^4.3.14",
"@types/react": "^18.2.55",
@@ -29,7 +29,7 @@
"fs-extra": "^11.2.0",
"html-webpack-plugin": "^5.6.0",
"lodash": "^4.17.21",
- "playwright": "^1.42.1",
+ "playwright": "^1.43.0",
"prop-types": "^15.8.1",
"react": "^18.2.0",
"react-dom": "^18.2.0",