-
+
.{className}
{displayClassKeys && (
{!isGlobal && {key} }
)}
-
+
-
+
{propName}
{isRequired ? '*' : ''}
{isOptional ? '?' : ''}
@@ -200,7 +200,7 @@ export default function PropertiesTable(props: PropertiesTableProps) {
)}
)}
-
+
{description && }
{seeMoreDescription && (
({
- padding: theme.spacing(1),
- marginBottom: theme.spacing(1),
- marginRight: theme.spacing(1),
- fontWeight: 600,
- minHeight: 32,
+ padding: theme.spacing(0.5),
+ border: '1px solid',
+ borderColor: 'transparent',
+ fontWeight: theme.typography.fontWeightSemiBold,
+ minHeight: 30,
minWidth: 0,
- borderRadius: '12px',
+ borderRadius: '8px',
'&:hover': {
background: (theme.vars || theme).palette.grey[50],
+ borderColor: (theme.vars || theme).palette.divider,
+ color: (theme.vars || theme).palette.text.primary,
},
...theme.applyDarkStyles({
'&:hover': {
+ borderColor: (theme.vars || theme).palette.divider,
background: (theme.vars || theme).palette.primaryDark[700],
},
'&.Mui-selected': {
@@ -54,21 +57,16 @@ export default function ComponentPageTabs(props) {
sx={{
position: 'sticky',
top: 65, // to be positioned below the app bar
- mt: 1,
- pt: 1,
- mx: {
- xs: -2,
- sm: 0,
- },
- px: {
- xs: 2,
- sm: 0,
- },
- backgroundColor: (theme) =>
- theme.palette.mode === 'dark' ? theme.palette.primaryDark[900] : 'rgba(255,255,255)',
+ mt: 2,
+ mx: -1,
+ backgroundColor: 'background.default',
borderBottom: 1,
borderColor: 'divider',
zIndex: 1000,
+ [`& .${tabsClasses.flexContainer}`]: {
+ p: 1,
+ gap: 1,
+ },
[`& .${tabsClasses.indicator}`]: {
transition: 'none',
},
@@ -82,20 +80,11 @@ export default function ComponentPageTabs(props) {
},
}}
>
-
+
{headers.components?.length > 0 && (
-
+
-
+
{Object.keys(parameters).length > 0 ? (
-
+ {message.title}
required={true}"
- },
- "root": { "description": "Class applied to the root element." }
- }
+ }
+ },
+ "slotDescriptions": { "root": "The component that renders the root." }
}
diff --git a/docs/translations/translations.json b/docs/translations/translations.json
index a79583b7a2a6ba..8f2b913c50c525 100644
--- a/docs/translations/translations.json
+++ b/docs/translations/translations.json
@@ -38,6 +38,7 @@
"/base-ui/getting-started/usage": "Usage",
"/base-ui/getting-started/customization": "Customization",
"/base-ui/getting-started/accessibility": "Accessibility",
+ "/base-ui/getting-started/roadmap": "Roadmap",
"/base-ui/getting-started/support": "Support",
"/base-ui/react-": "Components",
"/base-ui/all-components": "All components",
diff --git a/examples/joy-ui-cra-ts/README.md b/examples/joy-ui-cra-ts/README.md
index 55d8c02e5bd8cf..01765382b76618 100644
--- a/examples/joy-ui-cra-ts/README.md
+++ b/examples/joy-ui-cra-ts/README.md
@@ -1,4 +1,4 @@
-# Joy UI - Create React App example in TypeScript
+# Joy UI - Create React App example in TypeScript
`@mui/joy` is still in early development and is not recommended for use in production.
diff --git a/examples/joy-ui-nextjs-ts/README.md b/examples/joy-ui-nextjs-ts/README.md
index ffac971f742fa5..796dc1137db89c 100644
--- a/examples/joy-ui-nextjs-ts/README.md
+++ b/examples/joy-ui-nextjs-ts/README.md
@@ -1,4 +1,4 @@
-# Joy UI - Next.js App Router with TypeScript
+# Joy UI - Next.js App Router with TypeScript
This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/HEAD/packages/create-next-app).
@@ -35,7 +35,7 @@ or:
To learn more about this example:
- [Next.js documentation](https://nextjs.org/docs) - learn about Next.js features and API.
-- [Customizing Joy UI](https://mui.com/joy-ui/customization/approaches/) - approaches to customizing Joy UI.
+- [Customizing Joy UI](https://mui.com/joy-ui/customization/approaches/) - approaches to customizing Joy UI.
## What's next?
diff --git a/examples/joy-ui-vite-ts/README.md b/examples/joy-ui-vite-ts/README.md
index a06f4ef1961e16..d4132910765647 100644
--- a/examples/joy-ui-vite-ts/README.md
+++ b/examples/joy-ui-vite-ts/README.md
@@ -1,6 +1,6 @@
-# Joy UI - Vite.js in TypeScript example
+# Joy UI - Vite.js in TypeScript example
-[Joy UI](https://mui.com/joy-ui/getting-started/) is a library of beautifully designed React UI components built to spark joy in the development process.
+[Joy UI](https://mui.com/joy-ui/getting-started/) is a library of beautifully designed React UI components built to spark joy in the development process.
[Vite](https://vitejs.dev/) is a build tool that aims to provide a faster and leaner development experience for modern web projects, consisting of a dev server and a build command.
diff --git a/examples/pigment-css-nextjs-ts/.gitignore b/examples/pigment-css-nextjs-ts/.gitignore
new file mode 100644
index 00000000000000..28c8a5adb7c034
--- /dev/null
+++ b/examples/pigment-css-nextjs-ts/.gitignore
@@ -0,0 +1,36 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+
+# testing
+/coverage
+
+# next.js
+/.next/
+/out/
+
+# production
+/build
+
+# misc
+.DS_Store
+*.pem
+
+# debug
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+.pnpm-debug.log*
+
+# local env files
+.env*.local
+
+# vercel
+.vercel
+
+# typescript
+*.tsbuildinfo
+# next-env.d.ts
diff --git a/examples/pigment-css-nextjs-ts/README.md b/examples/pigment-css-nextjs-ts/README.md
new file mode 100644
index 00000000000000..f4ef7dd52a8ece
--- /dev/null
+++ b/examples/pigment-css-nextjs-ts/README.md
@@ -0,0 +1,38 @@
+# Pigment CSS - Next.js App Router with TypeScript example project
+
+This is a [Next.js](https://nextjs.org/) project bootstrapped using [`create-next-app`](https://github.com/vercel/next.js/tree/HEAD/packages/create-next-app), with TypeScript and Pigment CSS, a zero-runtime CSS-in-JS library, installed.
+
+## How to use
+
+Download the example [or clone the repo](https://github.com/mui/material-ui):
+
+
+
+```bash
+curl https://codeload.github.com/mui/material-ui/tar.gz/master | tar -xz --strip=2 material-ui-master/examples/pigment-css-nextjs-ts
+cd pigment-css-nextjs-ts
+```
+
+Install it and run:
+
+```bash
+npm install
+npm run dev
+```
+
+Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
+
+or:
+
+
+
+[![Edit on StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/mui/material-ui/tree/master/examples/pigment-css-nextjs-ts)
+
+[![Edit on CodeSandbox](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/p/sandbox/github/mui/material-ui/tree/master/examples/pigment-css-nextjs-ts)
+
+## Learn more
+
+To learn more about this example:
+
+- [Pigment CSS documentation](https://github.com/mui/material-ui/blob/master/packages/pigment-react/README.md) - learn more about Pigment CSS features and APIs.
+- [Next.js documentation](https://nextjs.org/docs) - learn about Next.js features and APIs.
diff --git a/examples/pigment-css-nextjs-ts/next-env.d.ts b/examples/pigment-css-nextjs-ts/next-env.d.ts
new file mode 100644
index 00000000000000..4f11a03dc6cc37
--- /dev/null
+++ b/examples/pigment-css-nextjs-ts/next-env.d.ts
@@ -0,0 +1,5 @@
+///
+///
+
+// NOTE: This file should not be edited
+// see https://nextjs.org/docs/basic-features/typescript for more information.
diff --git a/examples/pigment-css-nextjs-ts/next.config.js b/examples/pigment-css-nextjs-ts/next.config.js
new file mode 100644
index 00000000000000..2196cab8c75dda
--- /dev/null
+++ b/examples/pigment-css-nextjs-ts/next.config.js
@@ -0,0 +1,28 @@
+const { withPigment, extendTheme } = require('@pigment-css/nextjs-plugin');
+
+// To learn more about theming, visit https://github.com/mui/material-ui/blob/master/packages/zero-runtime/README.md#theming
+const theme = extendTheme({
+ colorSchemes: {
+ light: {
+ palette: {
+ background: '0 0% 100%',
+ foreground: '240 10% 3.9%',
+ primary: '240 5.9% 10%',
+ border: '240 5.9% 90%',
+ },
+ },
+ dark: {
+ palette: {
+ background: '240 10% 3.9%',
+ foreground: '0 0% 80%',
+ primary: '0 0% 98%',
+ border: '240 3.7% 15.9%',
+ },
+ },
+ },
+});
+
+/** @type {import('next').NextConfig} */
+const nextConfig = {};
+
+module.exports = withPigment(nextConfig, { theme });
diff --git a/examples/pigment-css-nextjs-ts/package.json b/examples/pigment-css-nextjs-ts/package.json
new file mode 100644
index 00000000000000..b2579629a61906
--- /dev/null
+++ b/examples/pigment-css-nextjs-ts/package.json
@@ -0,0 +1,27 @@
+{
+ "name": "pigment-css-nextjs-ts",
+ "version": "5.0.0",
+ "private": true,
+ "scripts": {
+ "dev": "next dev",
+ "build": "next build",
+ "start": "next start",
+ "lint": "next lint",
+ "post-update": "echo \"codesandbox preview only, need an update\" && pnpm update --latest"
+ },
+ "dependencies": {
+ "@pigment-css/react": "latest",
+ "react": "latest",
+ "react-dom": "latest",
+ "next": "latest"
+ },
+ "devDependencies": {
+ "@pigment-css/nextjs-plugin": "latest",
+ "@types/node": "latest",
+ "@types/react": "latest",
+ "@types/react-dom": "latest",
+ "eslint": "latest",
+ "eslint-config-next": "latest",
+ "typescript": "latest"
+ }
+}
diff --git a/examples/pigment-css-nextjs-ts/public/.gitkeep b/examples/pigment-css-nextjs-ts/public/.gitkeep
new file mode 100644
index 00000000000000..e69de29bb2d1d6
diff --git a/examples/pigment-css-nextjs-ts/src/app/favicon.ico b/examples/pigment-css-nextjs-ts/src/app/favicon.ico
new file mode 100644
index 00000000000000..e19f48f591206d
Binary files /dev/null and b/examples/pigment-css-nextjs-ts/src/app/favicon.ico differ
diff --git a/examples/pigment-css-nextjs-ts/src/app/globals.css b/examples/pigment-css-nextjs-ts/src/app/globals.css
new file mode 100644
index 00000000000000..3dd82369c1b57d
--- /dev/null
+++ b/examples/pigment-css-nextjs-ts/src/app/globals.css
@@ -0,0 +1,10 @@
+* {
+ box-sizing: border-box;
+ padding: 0;
+ margin: 0;
+}
+
+a {
+ color: inherit;
+ text-decoration: none;
+}
diff --git a/examples/pigment-css-nextjs-ts/src/app/layout.tsx b/examples/pigment-css-nextjs-ts/src/app/layout.tsx
new file mode 100644
index 00000000000000..fb3a3b8adb2db7
--- /dev/null
+++ b/examples/pigment-css-nextjs-ts/src/app/layout.tsx
@@ -0,0 +1,31 @@
+import * as React from 'react';
+import type { Metadata } from 'next';
+import '@pigment-css/react/styles.css';
+import { css } from '@pigment-css/react';
+
+import './globals.css';
+
+export const metadata: Metadata = {
+ title: 'Create Next App',
+ description: 'Generated by create next app',
+};
+
+export default function RootLayout(props: { children: React.ReactNode }) {
+ return (
+
+ ({
+ color: 'hsl(var(--palette-foreground))',
+ backgroundColor: 'hsl(var(--palette-background))',
+ fontFamily:
+ "system-ui, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'",
+ ...theme.applyStyles('dark', {
+ colorScheme: 'dark',
+ }),
+ }))}
+ >
+ {props.children}
+
+
+ );
+}
diff --git a/examples/pigment-css-nextjs-ts/src/app/page.tsx b/examples/pigment-css-nextjs-ts/src/app/page.tsx
new file mode 100644
index 00000000000000..109b5cbdad5f10
--- /dev/null
+++ b/examples/pigment-css-nextjs-ts/src/app/page.tsx
@@ -0,0 +1,198 @@
+import * as React from 'react';
+import { styled, css, keyframes } from '@pigment-css/react';
+
+const scale = keyframes({
+ to: { scale: 'var(--s2)' },
+});
+
+const Link = styled('a', { shouldForwardProp: (prop) => prop !== 'outlined' })<{
+ outlined?: boolean;
+}>(({ theme }) => ({
+ fontSize: '1rem',
+ background: 'rgba(0 0 0 / 0.04)',
+ padding: '0.8rem 1rem',
+ letterSpacing: '1px',
+ borderRadius: '8px',
+ textAlign: 'center',
+ ...theme.applyStyles('dark', {
+ background: 'rgba(255 255 255 / 0.1)',
+ }),
+ variants: [
+ {
+ props: { outlined: true },
+ style: {
+ background: 'transparent',
+ color: `hsl(${theme.vars.palette.primary})`,
+ border: `1px solid hsl(${theme.vars.palette.border})`,
+ },
+ },
+ ],
+}));
+
+const Bubble = styled('span')({
+ height: 'var(--size, 100%)',
+ aspectRatio: '1',
+ background: 'radial-gradient(hsl(var(--h) 100% 70%) 25%, transparent 50%)',
+ position: 'absolute',
+ display: 'inline-block',
+ left: 'var(--x, 0)',
+ top: 'var(--y, 0)',
+ scale: '0',
+ translate: '-50% -50%',
+ mixBlendMode: 'multiply',
+ filter: 'blur(2px)',
+ animation: `${scale} var(--s, 2s) var(--d, 0s) infinite alternate`,
+});
+
+function randomBetween(min: number, max: number) {
+ return Math.floor(Math.random() * (max - min + 1) + min);
+}
+function generateBubbleVars() {
+ return `
+ --x: ${randomBetween(10, 90)}%;
+ --y: ${randomBetween(15, 85)}%;
+ --h: ${randomBetween(0, 360)};
+ --s2: ${randomBetween(2, 6)};
+ --d: -${randomBetween(250, 400) / 1000}s;
+ --s: ${randomBetween(3, 6)}s;
+ `;
+}
+
+export default function Home() {
+ return (
+
+ ({
+ fontFamily: 'system-ui, sans-serif',
+ fontSize: '4rem',
+ fontWeight: 500,
+ textAlign: 'center',
+ position: 'relative',
+ display: 'flex',
+ alignItems: 'center',
+ color: '#888',
+ marginBottom: '1rem',
+ ...theme.applyStyles('dark', { color: '#fff' }),
+ }))}`}
+ >
+ Pigment CSS
+ ({
+ position: 'absolute',
+ inset: '0',
+ background: 'white',
+ mixBlendMode: 'color-burn',
+ overflow: 'hidden',
+ pointerEvents: 'none',
+ ...theme.applyStyles('dark', {
+ mixBlendMode: 'darken',
+ filter: 'brightness(2)',
+ }),
+ }))}
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CSS-in-JS library with static extraction
+
+
+ *': { flex: 'auto' },
+ })}
+ >
+
+ Documentation
+
+
+ Roadmap
+
+
+
+ );
+}
diff --git a/examples/pigment-css-nextjs-ts/src/augment.d.ts b/examples/pigment-css-nextjs-ts/src/augment.d.ts
new file mode 100644
index 00000000000000..d10b46e01d4da0
--- /dev/null
+++ b/examples/pigment-css-nextjs-ts/src/augment.d.ts
@@ -0,0 +1,19 @@
+import type {} from '@pigment-css/react/theme';
+import type { ExtendTheme } from '@pigment-css/react';
+
+declare module '@pigment-css/react/theme' {
+ export interface ThemeArgs {
+ theme: ExtendTheme<{
+ colorScheme: 'light' | 'dark';
+ tokens: {
+ palette: {
+ background: string;
+ foreground: string;
+ primary: string;
+ primaryForeground: string;
+ border: string;
+ };
+ };
+ }>;
+ }
+}
diff --git a/examples/pigment-css-nextjs-ts/tsconfig.json b/examples/pigment-css-nextjs-ts/tsconfig.json
new file mode 100644
index 00000000000000..6a9c1a2e7a02a6
--- /dev/null
+++ b/examples/pigment-css-nextjs-ts/tsconfig.json
@@ -0,0 +1,29 @@
+{
+ "compilerOptions": {
+ "target": "es5",
+ "lib": ["dom", "dom.iterable", "esnext"],
+ "allowJs": true,
+ "skipLibCheck": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "noEmit": true,
+ "esModuleInterop": true,
+ "module": "esnext",
+ "moduleResolution": "node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "jsx": "preserve",
+ "incremental": true,
+ "plugins": [
+ {
+ "name": "next"
+ }
+ ],
+ "baseUrl": ".",
+ "paths": {
+ "@/*": ["./src/*"]
+ }
+ },
+ "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
+ "exclude": ["node_modules"]
+}
diff --git a/examples/pigment-css-vite-ts/.gitignore b/examples/pigment-css-vite-ts/.gitignore
new file mode 100644
index 00000000000000..a547bf36d8d11a
--- /dev/null
+++ b/examples/pigment-css-vite-ts/.gitignore
@@ -0,0 +1,24 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/examples/pigment-css-vite-ts/README.md b/examples/pigment-css-vite-ts/README.md
new file mode 100644
index 00000000000000..ee0b8e25c330a7
--- /dev/null
+++ b/examples/pigment-css-vite-ts/README.md
@@ -0,0 +1,34 @@
+# Pigment CSS - Vite with TypeScript example project
+
+## How to use
+
+Download the example [or clone the repo](https://github.com/mui/material-ui):
+
+
+
+```bash
+curl https://codeload.github.com/mui/material-ui/tar.gz/master | tar -xz --strip=2 material-ui-master/examples/pigment-css-vite-ts
+cd pigment-css-vite-ts
+```
+
+Install it and run:
+
+```bash
+npm install
+npm run dev
+```
+
+or:
+
+
+
+[![Edit on StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/mui/material-ui/tree/master/examples/pigment-css-vite-ts)
+
+[![Edit on CodeSandbox](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/p/sandbox/github/mui/material-ui/tree/master/examples/pigment-css-vite-ts)
+
+## Learn more
+
+To learn more about this example:
+
+- [Pigment CSS documentation](https://github.com/mui/material-ui/blob/master/packages/pigment-react/README.md) - learn more about Pigment CSS features and APIs.
+- [Vite documentation](https://vitejs.dev/guide/) - learn about Vite features and APIs.
diff --git a/examples/pigment-css-vite-ts/index.html b/examples/pigment-css-vite-ts/index.html
new file mode 100644
index 00000000000000..33cbc8ad392ca2
--- /dev/null
+++ b/examples/pigment-css-vite-ts/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ Pigment CSS + Vite + TypeScript
+
+
+
+
+
+
diff --git a/examples/pigment-css-vite-ts/package.json b/examples/pigment-css-vite-ts/package.json
new file mode 100644
index 00000000000000..8b61ac52d46cb2
--- /dev/null
+++ b/examples/pigment-css-vite-ts/package.json
@@ -0,0 +1,24 @@
+{
+ "name": "pigment-css-vite-ts",
+ "private": true,
+ "version": "5.0.0",
+ "type": "module",
+ "scripts": {
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview"
+ },
+ "dependencies": {
+ "@pigment-css/react": "latest",
+ "react": "latest",
+ "react-dom": "latest"
+ },
+ "devDependencies": {
+ "@pigment-css/vite-plugin": "latest",
+ "@types/react": "latest",
+ "@types/react-dom": "latest",
+ "@vitejs/plugin-react": "latest",
+ "typescript": "latest",
+ "vite": "latest"
+ }
+}
diff --git a/examples/pigment-css-vite-ts/public/vite.svg b/examples/pigment-css-vite-ts/public/vite.svg
new file mode 100644
index 00000000000000..e7b8dfb1b2a60b
--- /dev/null
+++ b/examples/pigment-css-vite-ts/public/vite.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/examples/pigment-css-vite-ts/src/App.tsx b/examples/pigment-css-vite-ts/src/App.tsx
new file mode 100644
index 00000000000000..cbc7ed15dc3740
--- /dev/null
+++ b/examples/pigment-css-vite-ts/src/App.tsx
@@ -0,0 +1,198 @@
+import * as React from 'react';
+import { styled, css, keyframes } from '@pigment-css/react';
+
+const scale = keyframes({
+ to: { scale: 'var(--s2)' },
+});
+
+const Link = styled('a', { shouldForwardProp: (prop) => prop !== 'outlined' })<{
+ outlined?: boolean;
+}>(({ theme }) => ({
+ fontSize: '1rem',
+ background: 'rgba(0 0 0 / 0.04)',
+ padding: '0.8rem 1rem',
+ letterSpacing: '1px',
+ borderRadius: '8px',
+ textAlign: 'center',
+ ...theme.applyStyles('dark', {
+ background: 'rgba(255 255 255 / 0.1)',
+ }),
+ variants: [
+ {
+ props: { outlined: true },
+ style: {
+ background: 'transparent',
+ color: `hsl(${theme.vars.palette.primary})`,
+ border: `1px solid hsl(${theme.vars.palette.border})`,
+ },
+ },
+ ],
+}));
+
+const Bubble = styled('span')({
+ height: 'var(--size, 100%)',
+ aspectRatio: '1',
+ background: 'radial-gradient(hsl(var(--h) 100% 70%) 25%, transparent 50%)',
+ position: 'absolute',
+ display: 'inline-block',
+ left: 'var(--x, 0)',
+ top: 'var(--y, 0)',
+ scale: '0',
+ translate: '-50% -50%',
+ mixBlendMode: 'multiply',
+ filter: 'blur(2px)',
+ animation: `${scale} var(--s, 2s) var(--d, 0s) infinite alternate`,
+});
+
+function randomBetween(min: number, max: number) {
+ return Math.floor(Math.random() * (max - min + 1) + min);
+}
+
+function generateBubbleVars() {
+ return `
+ --x: ${randomBetween(10, 90)}%;
+ --y: ${randomBetween(15, 85)}%;
+ --h: ${randomBetween(0, 360)};
+ --s2: ${randomBetween(2, 6)};
+ --d: -${randomBetween(250, 400) / 1000}s;
+ --s: ${randomBetween(3, 6)}s;
+ `;
+}
+
+export default function Home() {
+ return (
+
+ ({
+ fontFamily: 'system-ui, sans-serif',
+ fontSize: '4rem',
+ fontWeight: 500,
+ textAlign: 'center',
+ position: 'relative',
+ display: 'flex',
+ alignItems: 'center',
+ color: '#888',
+ marginBottom: '1rem',
+ ...theme.applyStyles('dark', { color: '#fff' }),
+ }))}`}
+ >
+ Pigment CSS
+ ({
+ position: 'absolute',
+ inset: '0',
+ background: 'white',
+ mixBlendMode: 'color-burn',
+ overflow: 'hidden',
+ pointerEvents: 'none',
+ ...theme.applyStyles('dark', {
+ mixBlendMode: 'darken',
+ filter: 'brightness(2)',
+ }),
+ }))}
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CSS-in-JS library with static extraction
+
+
+
+ Documentation
+
+
+ Roadmap
+
+
+
+ );
+}
diff --git a/examples/pigment-css-vite-ts/src/augment.d.ts b/examples/pigment-css-vite-ts/src/augment.d.ts
new file mode 100644
index 00000000000000..d10b46e01d4da0
--- /dev/null
+++ b/examples/pigment-css-vite-ts/src/augment.d.ts
@@ -0,0 +1,19 @@
+import type {} from '@pigment-css/react/theme';
+import type { ExtendTheme } from '@pigment-css/react';
+
+declare module '@pigment-css/react/theme' {
+ export interface ThemeArgs {
+ theme: ExtendTheme<{
+ colorScheme: 'light' | 'dark';
+ tokens: {
+ palette: {
+ background: string;
+ foreground: string;
+ primary: string;
+ primaryForeground: string;
+ border: string;
+ };
+ };
+ }>;
+ }
+}
diff --git a/apps/zero-runtime-next-app/src/app/globals.css b/examples/pigment-css-vite-ts/src/globals.css
similarity index 76%
rename from apps/zero-runtime-next-app/src/app/globals.css
rename to examples/pigment-css-vite-ts/src/globals.css
index f986282c43ac47..a1e5313f646dca 100644
--- a/apps/zero-runtime-next-app/src/app/globals.css
+++ b/examples/pigment-css-vite-ts/src/globals.css
@@ -4,12 +4,6 @@
margin: 0;
}
-html,
-body {
- max-width: 100vw;
- overflow-x: hidden;
-}
-
a {
color: inherit;
text-decoration: none;
diff --git a/examples/pigment-css-vite-ts/src/main.tsx b/examples/pigment-css-vite-ts/src/main.tsx
new file mode 100644
index 00000000000000..71b2cfa8aa8868
--- /dev/null
+++ b/examples/pigment-css-vite-ts/src/main.tsx
@@ -0,0 +1,11 @@
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import '@pigment-css/react/styles.css';
+import './globals.css';
+import App from './App';
+
+ReactDOM.createRoot(document.getElementById('root')!).render(
+
+
+ ,
+);
diff --git a/examples/pigment-css-vite-ts/src/vite-env.d.ts b/examples/pigment-css-vite-ts/src/vite-env.d.ts
new file mode 100644
index 00000000000000..11f02fe2a0061d
--- /dev/null
+++ b/examples/pigment-css-vite-ts/src/vite-env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/examples/pigment-css-vite-ts/tsconfig.json b/examples/pigment-css-vite-ts/tsconfig.json
new file mode 100644
index 00000000000000..3d0a51a86e2024
--- /dev/null
+++ b/examples/pigment-css-vite-ts/tsconfig.json
@@ -0,0 +1,21 @@
+{
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": ["DOM", "DOM.Iterable", "ESNext"],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx"
+ },
+ "include": ["src"],
+ "references": [{ "path": "./tsconfig.node.json" }]
+}
diff --git a/examples/pigment-css-vite-ts/tsconfig.node.json b/examples/pigment-css-vite-ts/tsconfig.node.json
new file mode 100644
index 00000000000000..9d31e2aed93c87
--- /dev/null
+++ b/examples/pigment-css-vite-ts/tsconfig.node.json
@@ -0,0 +1,9 @@
+{
+ "compilerOptions": {
+ "composite": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "allowSyntheticDefaultImports": true
+ },
+ "include": ["vite.config.ts"]
+}
diff --git a/examples/pigment-css-vite-ts/vite.config.ts b/examples/pigment-css-vite-ts/vite.config.ts
new file mode 100644
index 00000000000000..1a6ee2cd2f8942
--- /dev/null
+++ b/examples/pigment-css-vite-ts/vite.config.ts
@@ -0,0 +1,35 @@
+import { defineConfig } from 'vite';
+import react from '@vitejs/plugin-react';
+import { pigment, extendTheme } from '@pigment-css/vite-plugin';
+
+// To learn more about theming, visit https://github.com/mui/material-ui/blob/master/packages/zero-runtime/README.md#theming
+const theme = extendTheme({
+ colorSchemes: {
+ light: {
+ palette: {
+ background: '0 0% 100%',
+ foreground: '240 10% 3.9%',
+ primary: '240 5.9% 10%',
+ border: '240 5.9% 90%',
+ },
+ },
+ dark: {
+ palette: {
+ background: '240 10% 3.9%',
+ foreground: '0 0% 80%',
+ primary: '0 0% 98%',
+ border: '240 3.7% 15.9%',
+ },
+ },
+ },
+});
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [
+ pigment({
+ theme,
+ }),
+ react(),
+ ],
+});
diff --git a/package.json b/package.json
index 8dd8cc42e5d3ea..a8bf59a37a6a95 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@mui/monorepo",
- "version": "5.15.11",
+ "version": "5.15.12",
"private": true,
"scripts": {
"preinstall": "npx only-allow pnpm",
@@ -10,8 +10,8 @@
"build": "lerna run build --ignore docs",
"build:public": "lerna run --no-private build",
"build:ci": "lerna run build --ignore docs --concurrency 8 --skip-nx-cache",
- "build:zero": "lerna run --scope \"@mui/zero-*\" build",
- "clean:zero": "pnpm --filter \"@mui/zero-*\" clean",
+ "build:zero": "lerna run --scope \"@pigmentcss/*\" build",
+ "clean:zero": "pnpm --filter \"@pigmentcss/*\" clean",
"build:codesandbox": "NODE_OPTIONS=\"--max_old_space_size=4096\" lerna run --concurrency 8 --scope \"@mui/*\" --scope \"@mui-internal/*\" --no-private build",
"release:version": "lerna version --no-changelog --no-push --no-git-tag-version --no-private --force-publish=@mui/core-downloads-tracker",
"release:build": "lerna run --concurrency 8 --no-private build --skip-nx-cache",
@@ -54,9 +54,9 @@
"test": "node scripts/test.mjs",
"tc": "node test/cli.js",
"test:extended": "pnpm eslint && pnpm typescript && pnpm test:coverage",
- "test:zero-runtime:ci": "pnpm nx run @mui/zero-runtime:test:ci",
- "test:coverage": "cross-env NODE_ENV=test BABEL_ENV=coverage nyc --reporter=text mocha 'packages/**/*.test.{js,ts,tsx}' 'docs/**/*.test.{js,ts,tsx}' --exclude 'packages/zero-runtime/**/*.test.{js,ts,tsx}' && pnpm test:zero-runtime",
- "test:coverage:ci": "cross-env NODE_ENV=test BABEL_ENV=coverage nyc --reporter=lcov mocha 'packages/**/*.test.{js,ts,tsx}' 'docs/**/*.test.{js,ts,tsx}' --exclude 'packages/zero-runtime/**/*.test.{js,ts,tsx}' && pnpm test:zero-runtime:ci",
+ "test:pigment-react:ci": "pnpm nx run @pigment-css/react:test:ci",
+ "test:coverage": "cross-env NODE_ENV=test BABEL_ENV=coverage nyc --reporter=text mocha 'packages/**/*.test.{js,ts,tsx}' 'docs/**/*.test.{js,ts,tsx}' --exclude 'packages/pigment-react/**/*.test.{js,ts,tsx}' && pnpm test:pigment-react",
+ "test:coverage:ci": "cross-env NODE_ENV=test BABEL_ENV=coverage nyc --reporter=lcov mocha 'packages/**/*.test.{js,ts,tsx}' 'docs/**/*.test.{js,ts,tsx}' --exclude 'packages/pigment-react/**/*.test.{js,ts,tsx}' && pnpm test:pigment-react:ci",
"test:coverage:html": "cross-env NODE_ENV=test BABEL_ENV=coverage nyc --reporter=html mocha 'packages/**/*.test.{js,ts,tsx}' 'docs/**/*.test.{js,ts,tsx}'",
"test:e2e": "cross-env NODE_ENV=production pnpm test:e2e:build && concurrently --success first --kill-others \"pnpm test:e2e:run\" \"pnpm test:e2e:server\"",
"test:e2e:build": "webpack --config test/e2e/webpack.config.js",
@@ -76,19 +76,19 @@
"test:unit": "cross-env NODE_ENV=test mocha 'packages/**/*.test.{js,ts,tsx}' 'docs/**/*.test.{js,ts,tsx}'",
"test:argos": "node ./scripts/pushArgos.mjs",
"typescript": "lerna run --no-bail --parallel typescript",
- "typescript:ci": "lerna run --concurrency 5 --no-bail --no-sort typescript",
+ "typescript:ci": "lerna run --concurrency 3 --no-bail --no-sort typescript",
"validate-declarations": "tsx scripts/validateTypescriptDeclarations.mts",
"generate-codeowners": "node scripts/generateCodeowners.mjs",
- "watch:zero": "nx run-many -t watch --projects=\"@mui/zero-*\" --parallel"
+ "watch:zero": "nx run-many -t watch --projects=\"@pigmentcss/*\" --parallel"
},
"dependencies": {
"@googleapis/sheets": "^5.0.5",
"@slack/bolt": "^3.17.1",
"execa": "^8.0.1",
- "google-auth-library": "^9.5.0"
+ "google-auth-library": "^9.6.3"
},
"devDependencies": {
- "@argos-ci/core": "^1.5.3",
+ "@argos-ci/core": "^1.5.4",
"@babel/cli": "^7.23.9",
"@babel/core": "^7.23.9",
"@babel/node": "^7.23.9",
@@ -112,14 +112,15 @@
"@mui/joy": "workspace:*",
"@mui/material": "workspace:^",
"@mui/utils": "workspace:^",
- "@next/eslint-plugin-next": "^14.1.0",
+ "@pigment-css/react": "workspace:^",
+ "@next/eslint-plugin-next": "^14.1.1",
"@octokit/rest": "^20.0.2",
- "@playwright/test": "1.41.2",
+ "@playwright/test": "1.42.1",
"@types/enzyme": "^3.10.18",
"@types/fs-extra": "^11.0.4",
"@types/lodash": "^4.14.202",
"@types/mocha": "^10.0.6",
- "@types/node": "^18.19.15",
+ "@types/node": "^18.19.21",
"@types/prettier": "^2.7.3",
"@types/react": "^18.2.55",
"@types/yargs": "^17.0.32",
@@ -150,13 +151,13 @@
"eslint-plugin-import": "^2.29.1",
"eslint-plugin-jsx-a11y": "^6.7.1",
"eslint-plugin-material-ui": "workspace:^",
- "eslint-plugin-mocha": "^10.2.0",
+ "eslint-plugin-mocha": "^10.3.0",
"eslint-plugin-react": "^7.33.2",
"eslint-plugin-react-hooks": "^4.6.0",
"fast-glob": "^3.3.2",
"fs-extra": "^11.2.0",
- "globby": "^14.0.0",
- "karma": "^6.4.2",
+ "globby": "^14.0.1",
+ "karma": "^6.4.3",
"karma-browserstack-launcher": "~1.6.0",
"karma-chrome-launcher": "^3.2.0",
"karma-coverage-istanbul-reporter": "^3.0.3",
@@ -164,13 +165,13 @@
"karma-mocha": "^2.0.1",
"karma-sourcemap-loader": "^0.4.0",
"karma-webpack": "^5.0.0",
- "lerna": "^8.0.2",
+ "lerna": "^8.1.2",
"lodash": "^4.17.21",
"markdownlint-cli2": "^0.12.1",
- "mocha": "^10.2.0",
+ "mocha": "^10.3.0",
"nx": "^17.2.8",
"nyc": "^15.1.0",
- "piscina": "^4.3.1",
+ "piscina": "^4.4.0",
"postcss-styled-syntax": "^0.6.4",
"prettier": "^3.2.5",
"pretty-quick": "^4.0.0",
@@ -185,12 +186,12 @@
"tsup": "^8.0.2",
"tsx": "^4.7.1",
"typescript": "^5.3.3",
- "webpack": "^5.90.1",
+ "webpack": "^5.90.3",
"webpack-bundle-analyzer": "^4.10.1",
"webpack-cli": "^5.1.4",
"yargs": "^17.7.2"
},
- "packageManager": "pnpm@8.15.1",
+ "packageManager": "pnpm@8.15.4",
"resolutions": {
"@babel/core": "^7.23.9",
"@babel/code-frame": "^7.23.5",
@@ -206,10 +207,10 @@
"@babel/preset-typescript": "^7.23.3",
"@babel/runtime": "^7.23.9",
"@babel/types": "^7.23.9",
- "@definitelytyped/header-parser": "^0.2.3",
+ "@definitelytyped/header-parser": "^0.2.6",
"@definitelytyped/typescript-versions": "^0.1.0",
- "@definitelytyped/utils": "^0.1.2",
- "@types/node": "^18.19.15",
+ "@definitelytyped/utils": "^0.1.5",
+ "@types/node": "^18.19.21",
"@types/react": "^18.2.55",
"@types/react-dom": "18.2.19",
"cross-fetch": "^4.0.0"
diff --git a/packages-internal/scripts/package.json b/packages-internal/scripts/package.json
index 755c1b94c8305e..dfdea9913a2cfe 100644
--- a/packages-internal/scripts/package.json
+++ b/packages-internal/scripts/package.json
@@ -39,10 +39,10 @@
"devDependencies": {
"@babel/register": "^7.23.7",
"@types/babel__core": "^7.20.5",
- "@types/chai": "^4.3.11",
+ "@types/chai": "^4.3.12",
"@types/doctrine": "^0.0.9",
"@types/lodash": "^4.14.202",
- "@types/node": "^18.19.15",
+ "@types/node": "^18.19.21",
"@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 aa4dc20a1f6fc2..76d3feff4753e1 100644
--- a/packages/api-docs-builder-core/package.json
+++ b/packages/api-docs-builder-core/package.json
@@ -15,9 +15,9 @@
"lodash": "^4.17.21"
},
"devDependencies": {
- "@types/chai": "^4.3.11",
+ "@types/chai": "^4.3.12",
"@types/mocha": "^10.0.6",
- "@types/node": "^18.19.15",
+ "@types/node": "^18.19.21",
"@types/sinon": "^10.0.20",
"chai": "^4.4.1",
"sinon": "^15.2.0",
diff --git a/packages/api-docs-builder/package.json b/packages/api-docs-builder/package.json
index ab819321b1f584..6ed2ac331eccfe 100644
--- a/packages/api-docs-builder/package.json
+++ b/packages/api-docs-builder/package.json
@@ -20,7 +20,7 @@
"lodash": "^4.17.21",
"prettier": "^3.2.5",
"react-docgen": "^5.4.3",
- "recast": "^0.23.4",
+ "recast": "^0.23.5",
"remark": "^13.0.0",
"typescript": "^5.3.3",
"unist-util-visit": "^2.0.3"
@@ -28,11 +28,11 @@
"devDependencies": {
"@types/babel__core": "^7.20.5",
"@types/babel__traverse": "^7.20.5",
- "@types/chai": "^4.3.11",
+ "@types/chai": "^4.3.12",
"@types/doctrine": "^0.0.9",
"@types/mdast": "4.0.3",
"@types/mocha": "^10.0.6",
- "@types/node": "^18.19.15",
+ "@types/node": "^18.19.21",
"@types/react-docgen": "workspace:*",
"@types/sinon": "^10.0.20",
"chai": "^4.4.1",
diff --git a/packages/feedback/package.json b/packages/feedback/package.json
index a7cdd46eea7500..9a409066be134a 100644
--- a/packages/feedback/package.json
+++ b/packages/feedback/package.json
@@ -25,6 +25,6 @@
"claudia": "^5.14.1"
},
"optionalDependencies": {
- "aws-sdk": "^2.1545.0"
+ "aws-sdk": "^2.1569.0"
}
}
diff --git a/packages/markdown/package.json b/packages/markdown/package.json
index 4b799f5e3f95b2..e7067fa50d9507 100644
--- a/packages/markdown/package.json
+++ b/packages/markdown/package.json
@@ -26,7 +26,7 @@
"prismjs": "^1.29.0"
},
"devDependencies": {
- "@types/chai": "^4.3.11",
+ "@types/chai": "^4.3.12",
"chai": "^4.4.1"
},
"publishConfig": {
diff --git a/packages/markdown/prepareMarkdown.js b/packages/markdown/prepareMarkdown.js
index 31e2a95a9e710b..c66fbfebfc21cc 100644
--- a/packages/markdown/prepareMarkdown.js
+++ b/packages/markdown/prepareMarkdown.js
@@ -104,7 +104,7 @@ function prepareMarkdown(config) {
contents.push(`
## Unstyled
-Use the [Base UI ${markdownH1}](${headers.unstyled}) for complete ownership of the component's design, with no Material UI or Joy UI styles to override.
+Use the [Base UI ${markdownH1}](${headers.unstyled}) for complete ownership of the component's design, with no Material UI or Joy UI styles to override.
This unstyled version of the component is the ideal choice for heavy customization with a smaller bundle size.
`);
}
diff --git a/packages/mui-babel-macros/package.json b/packages/mui-babel-macros/package.json
index 825d35f8b080b3..1f579c02d1e4e6 100644
--- a/packages/mui-babel-macros/package.json
+++ b/packages/mui-babel-macros/package.json
@@ -30,9 +30,9 @@
"devDependencies": {
"@mui/internal-babel-macros": "workspace:*",
"@types/babel-plugin-macros": "^3.1.3",
- "@types/chai": "^4.3.11",
+ "@types/chai": "^4.3.12",
"@types/mocha": "^10.0.6",
- "@types/node": "^18.19.15",
+ "@types/node": "^18.19.21",
"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 7593292d12cd68..b7e86fdb4d5a82 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.37",
+ "version": "5.0.0-beta.38",
"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.",
@@ -50,12 +50,12 @@
"prop-types": "^15.8.1"
},
"devDependencies": {
- "@mui/internal-babel-macros": "workspace:^",
"@mui-internal/test-utils": "workspace:^",
+ "@mui/internal-babel-macros": "workspace:^",
"@mui/types": "workspace:^",
"@testing-library/react": "^14.2.1",
"@testing-library/user-event": "^14.5.2",
- "@types/chai": "^4.3.11",
+ "@types/chai": "^4.3.12",
"@types/prop-types": "^15.7.11",
"@types/react": "18.2.55",
"@types/react-dom": "18.2.19",
diff --git a/packages/mui-base/src/FormControl/index.ts b/packages/mui-base/src/FormControl/index.ts
index 8119bbdd4284bd..b722fbadccdc13 100644
--- a/packages/mui-base/src/FormControl/index.ts
+++ b/packages/mui-base/src/FormControl/index.ts
@@ -2,13 +2,7 @@ export { FormControl } from './FormControl';
export { FormControlContext } from './FormControlContext';
-export type {
- FormControlProps,
- FormControlRootSlotPropsOverrides,
- FormControlState,
- UseFormControlContextReturnValue,
- FormControlOwnProps,
-} from './FormControl.types';
+export * from './FormControl.types';
export * from './formControlClasses';
diff --git a/packages/mui-base/src/useAutocomplete/useAutocomplete.test.js b/packages/mui-base/src/useAutocomplete/useAutocomplete.test.js
index 0386731e59eeb8..264f0ee8f67ce2 100644
--- a/packages/mui-base/src/useAutocomplete/useAutocomplete.test.js
+++ b/packages/mui-base/src/useAutocomplete/useAutocomplete.test.js
@@ -118,6 +118,7 @@ describe('useAutocomplete', () => {
let filterOptions;
let getOptionLabel;
let options;
+
beforeEach(() => {
filterOptions = createFilterOptions({ matchFrom: 'any' });
getOptionLabel = (option) => option.name;
diff --git a/packages/mui-base/src/useInput/useInput.test.tsx b/packages/mui-base/src/useInput/useInput.test.tsx
index a2ff388030c95a..9ece7ed65a20ad 100644
--- a/packages/mui-base/src/useInput/useInput.test.tsx
+++ b/packages/mui-base/src/useInput/useInput.test.tsx
@@ -7,6 +7,7 @@ import { UseInputParameters } from './useInput.types';
describe('useInput', () => {
const { render } = createRenderer();
+
describe('params: inputRef', () => {
it('should be able to attach input ref passed through params', () => {
const inputRef = React.createRef();
diff --git a/packages/mui-base/src/useList/listReducer.test.ts b/packages/mui-base/src/useList/listReducer.test.ts
index 873be0f0f7430e..1a60ac1f74c42f 100644
--- a/packages/mui-base/src/useList/listReducer.test.ts
+++ b/packages/mui-base/src/useList/listReducer.test.ts
@@ -948,6 +948,7 @@ describe('listReducer', () => {
describe('using custom item comparer', () => {
type ItemType = { v: string };
+
it('keeps the highlighted value if it is present among the new items', () => {
const state: ListState = {
highlightedValue: { v: '1' },
diff --git a/packages/mui-base/src/useList/useList.test.tsx b/packages/mui-base/src/useList/useList.test.tsx
index 7e8ffa6f1ce2fb..1c225a474917bb 100644
--- a/packages/mui-base/src/useList/useList.test.tsx
+++ b/packages/mui-base/src/useList/useList.test.tsx
@@ -6,6 +6,7 @@ import { useList } from './useList';
describe('useList', () => {
const { render } = createRenderer();
+
describe('preventing default behavior on keyDown', () => {
['ArrowUp', 'ArrowDown', 'Home', 'End', 'PageUp', 'PageDown', 'Enter', ' '].forEach((key) =>
it(`prevents default behavior when ${key} is pressed in activeDescendant focus management mode`, () => {
diff --git a/packages/mui-base/src/useMenu/useMenu.test.js b/packages/mui-base/src/useMenu/useMenu.test.js
index d3973de7d06f3f..bca1913869d9a2 100644
--- a/packages/mui-base/src/useMenu/useMenu.test.js
+++ b/packages/mui-base/src/useMenu/useMenu.test.js
@@ -7,6 +7,7 @@ import { useMenu } from './useMenu';
describe('useMenu', () => {
const { render } = createRenderer();
+
describe('getListboxProps', () => {
it('returns props for root slot', () => {
function TestMenu() {
diff --git a/packages/mui-base/src/useMenuButton/useMenuButton.test.tsx b/packages/mui-base/src/useMenuButton/useMenuButton.test.tsx
index 9bf81af45f0a93..b58885e739495c 100644
--- a/packages/mui-base/src/useMenuButton/useMenuButton.test.tsx
+++ b/packages/mui-base/src/useMenuButton/useMenuButton.test.tsx
@@ -16,6 +16,7 @@ const testContext: DropdownContextValue = {
describe('useMenuButton', () => {
const { render } = createRenderer();
+
describe('getRootProps', () => {
it('returns props for root slot', () => {
function TestMenuButton() {
diff --git a/packages/mui-base/src/useMenuItem/useMenuItem.test.tsx b/packages/mui-base/src/useMenuItem/useMenuItem.test.tsx
index a599bfb52ae110..81b8e9435b303e 100644
--- a/packages/mui-base/src/useMenuItem/useMenuItem.test.tsx
+++ b/packages/mui-base/src/useMenuItem/useMenuItem.test.tsx
@@ -7,6 +7,7 @@ import { useMenuItem } from './useMenuItem';
describe('useMenuItem', () => {
const { render } = createRenderer();
+
describe('getRootProps', () => {
it('returns props for root slot', () => {
function TestMenuItem() {
diff --git a/packages/mui-base/src/useSlider/useSlider.test.js b/packages/mui-base/src/useSlider/useSlider.test.js
index b717f0e934b57e..c7b964335e184e 100644
--- a/packages/mui-base/src/useSlider/useSlider.test.js
+++ b/packages/mui-base/src/useSlider/useSlider.test.js
@@ -6,6 +6,7 @@ import { useSlider } from './useSlider';
describe('useSlider', () => {
const { render } = createRenderer();
+
describe('getRootProps', () => {
it('forwards external props including event handlers', () => {
const rootRef = React.createRef();
diff --git a/packages/mui-base/src/useTab/useTab.test.tsx b/packages/mui-base/src/useTab/useTab.test.tsx
index c20252849006af..047c739c137628 100644
--- a/packages/mui-base/src/useTab/useTab.test.tsx
+++ b/packages/mui-base/src/useTab/useTab.test.tsx
@@ -8,6 +8,7 @@ import { useTab } from './useTab';
describe('useTab', () => {
const { render } = createRenderer();
+
describe('getRootProps', () => {
it('returns props for root slot', () => {
function TestTab() {
diff --git a/packages/mui-base/src/useTabPanel/useTabPanel.test.js b/packages/mui-base/src/useTabPanel/useTabPanel.test.js
index e94b8bd283bbb9..c516c2ce9b860d 100644
--- a/packages/mui-base/src/useTabPanel/useTabPanel.test.js
+++ b/packages/mui-base/src/useTabPanel/useTabPanel.test.js
@@ -9,6 +9,7 @@ import { useTabPanel } from './useTabPanel';
describe('useTabPanel', () => {
const { render } = createRenderer();
+
describe('getRootProps', () => {
it('returns props for root slot', () => {
const rootRef = React.createRef();
diff --git a/packages/mui-base/src/useTabsList/useTabsList.test.tsx b/packages/mui-base/src/useTabsList/useTabsList.test.tsx
index dc9d4630aff8cc..02fe3b020c6b1b 100644
--- a/packages/mui-base/src/useTabsList/useTabsList.test.tsx
+++ b/packages/mui-base/src/useTabsList/useTabsList.test.tsx
@@ -7,6 +7,7 @@ import { useTabsList } from './useTabsList';
describe('useTabsList', () => {
const { render } = createRenderer();
+
describe('getRootProps', () => {
it('returns props for root slot', () => {
function TestTabsList() {
diff --git a/packages/mui-base/src/utils/prepareForSlot.test.tsx b/packages/mui-base/src/utils/prepareForSlot.test.tsx
index 7b26144b2e6e79..fd6e36368502bc 100644
--- a/packages/mui-base/src/utils/prepareForSlot.test.tsx
+++ b/packages/mui-base/src/utils/prepareForSlot.test.tsx
@@ -6,6 +6,7 @@ import { prepareForSlot } from './prepareForSlot';
describe('prepareForSlot', () => {
const { render } = createRenderer();
+
it('should not warn about ownerState', () => {
const ThirdPartyComponent = React.forwardRef((props, ref) => {
// @ts-ignore just double checking that it is not defined
diff --git a/packages/mui-codemod/README.md b/packages/mui-codemod/README.md
index f527a92d273c2c..3a123187bc9e18 100644
--- a/packages/mui-codemod/README.md
+++ b/packages/mui-codemod/README.md
@@ -1,6 +1,6 @@
# @mui/codemod
-> Codemod scripts for Material UI, Base UI, MUI System, Joy UI.
+> Codemod scripts for Material UI, Base UI, MUI System, Joy UI.
[![npm version](https://img.shields.io/npm/v/@mui/codemod.svg?style=flat-square)](https://www.npmjs.com/package/@mui/codemod)
[![npm downloads](https://img.shields.io/npm/dm/@mui/codemod.svg?style=flat-square)](https://www.npmjs.com/package/@mui/codemod)
@@ -834,7 +834,7 @@ npx @mui/codemod@latest v5.0.0/base-remove-component-prop
#### `rename-css-variables`
-Updates the names of the CSS variables of the Joy UI components to adapt to the new naming standards of the CSS variables for components.
+Updates the names of the CSS variables of the Joy UI components to adapt to the new naming standards of the CSS variables for components.
```diff
-
@@ -862,7 +862,7 @@ npx @mui/codemod@latest v5.0.0/base-hook-imports
#### `joy-rename-classname-prefix`
-Renames the classname prefix from `'Joy'` to `'Mui'` for Joy UI components.
+Renames the classname prefix from `'Joy'` to `'Mui'` for Joy UI components.
```diff
Remove `imgProps` prop by transferring its value into `slotProps.img`
-This change only affects Joy UI Avatar component.
+This change only affects Joy UI Avatar component.
```diff
Replace `` with composition of `Input`
-This change only affects Joy UI components.
+This change only affects Joy UI components.
```diff
-import TextField from '@mui/joy/TextField';
@@ -970,7 +970,7 @@ npx @mui/codemod@latest v5.0.0/joy-text-field-to-input
Renames the `components` and `componentsProps` props to `slots` and `slotProps`, respectively.
-This change only affects Joy UI components.
+This change only affects Joy UI components.
```diff
{
const actual = transform(
{ source: read('./test-cases/theme.actual.js') },
{ jscodeshift },
- { printOptions: { trailingComma: true } },
+ { printOptions: { trailingComma: false } },
);
const expected = read('./test-cases/theme.expected.js');
diff --git a/packages/mui-codemod/src/deprecations/alert-props/test-cases/actual.js b/packages/mui-codemod/src/deprecations/alert-props/test-cases/actual.js
index 380a640bce04fc..fd952d3fa91fcf 100644
--- a/packages/mui-codemod/src/deprecations/alert-props/test-cases/actual.js
+++ b/packages/mui-codemod/src/deprecations/alert-props/test-cases/actual.js
@@ -16,3 +16,9 @@ import Alert from '@mui/material/Alert';
slotProps={{ closeIcon: slotsIconProps, closeButton: slotsButtonProps }}
componentsProps={{ closeButton: componentsButtonProps }}
/>;
+ ;
diff --git a/packages/mui-codemod/src/deprecations/alert-props/test-cases/expected.js b/packages/mui-codemod/src/deprecations/alert-props/test-cases/expected.js
index 1c1a02c7b7e601..0b05305960385b 100644
--- a/packages/mui-codemod/src/deprecations/alert-props/test-cases/expected.js
+++ b/packages/mui-codemod/src/deprecations/alert-props/test-cases/expected.js
@@ -17,4 +17,16 @@ import Alert from '@mui/material/Alert';
}} />;
;
+ slotProps={{ closeIcon: slotsIconProps, closeButton: {
+ ...componentsButtonProps,
+ ...slotsButtonProps
+ } }} />;
+ ;
diff --git a/packages/mui-codemod/src/deprecations/alert-props/test-cases/theme.actual.js b/packages/mui-codemod/src/deprecations/alert-props/test-cases/theme.actual.js
index 53747aee31ea17..10591ba1dfb8b1 100644
--- a/packages/mui-codemod/src/deprecations/alert-props/test-cases/theme.actual.js
+++ b/packages/mui-codemod/src/deprecations/alert-props/test-cases/theme.actual.js
@@ -28,3 +28,14 @@ fn({
},
},
});
+
+fn({
+ MuiAlert: {
+ defaultProps: {
+ components: { CloseButton: ComponentsButton },
+ slots: { closeIcon: SlotsIcon, closeButton: SlotsButton },
+ componentsProps: { closeButton: componentsButtonProps, closeIcon: componentsIconProps },
+ slotProps: { closeIcon: slotsIconProps, closeButton: slotsButtonProps },
+ },
+ },
+});
diff --git a/packages/mui-codemod/src/deprecations/alert-props/test-cases/theme.expected.js b/packages/mui-codemod/src/deprecations/alert-props/test-cases/theme.expected.js
index dfab24532bd162..c3f2cb05133264 100644
--- a/packages/mui-codemod/src/deprecations/alert-props/test-cases/theme.expected.js
+++ b/packages/mui-codemod/src/deprecations/alert-props/test-cases/theme.expected.js
@@ -2,12 +2,12 @@ fn({
MuiAlert: {
defaultProps: {
slots: {
- closeButton: ComponentsButton,
+ closeButton: ComponentsButton
},
slotProps: {
- closeButton: componentsButtonProps,
- },
+ closeButton: componentsButtonProps
+ }
},
},
});
@@ -17,13 +17,13 @@ fn({
defaultProps: {
slots: {
closeButton: ComponentsButton,
- closeIcon: SlotsIcon,
+ closeIcon: SlotsIcon
},
slotProps: {
closeButton: componentsButtonProps,
- closeIcon: slotsIconProps,
- },
+ closeIcon: slotsIconProps
+ }
},
},
});
@@ -33,13 +33,40 @@ fn({
defaultProps: {
slots: {
closeButton: SlotsButton,
- closeIcon: SlotsIcon,
+ closeIcon: SlotsIcon
},
slotProps: {
- closeButton: slotsButtonProps,
- closeIcon: slotsIconProps,
+ closeButton: {
+ ...componentsButtonProps,
+ ...slotsButtonProps
+ },
+
+ closeIcon: slotsIconProps
+ }
+ },
+ },
+});
+
+fn({
+ MuiAlert: {
+ defaultProps: {
+ slots: {
+ closeButton: SlotsButton,
+ closeIcon: SlotsIcon
},
+
+ slotProps: {
+ closeButton: {
+ ...componentsButtonProps,
+ ...slotsButtonProps
+ },
+
+ closeIcon: {
+ ...componentsIconProps,
+ ...slotsIconProps
+ }
+ }
},
},
});
diff --git a/packages/mui-codemod/src/deprecations/slider-props/slider-props.test.js b/packages/mui-codemod/src/deprecations/slider-props/slider-props.test.js
index b6d5682eb2a76a..033acf231969bd 100644
--- a/packages/mui-codemod/src/deprecations/slider-props/slider-props.test.js
+++ b/packages/mui-codemod/src/deprecations/slider-props/slider-props.test.js
@@ -31,7 +31,7 @@ describe('@mui/codemod', () => {
const actual = transform(
{ source: read('./test-cases/theme.actual.js') },
{ jscodeshift },
- { printOptions: { trailingComma: true } },
+ { printOptions: { trailingComma: false } },
);
const expected = read('./test-cases/theme.expected.js');
diff --git a/packages/mui-codemod/src/deprecations/slider-props/test-cases/actual.js b/packages/mui-codemod/src/deprecations/slider-props/test-cases/actual.js
index c73ad39187900b..1ac48c7504c528 100644
--- a/packages/mui-codemod/src/deprecations/slider-props/test-cases/actual.js
+++ b/packages/mui-codemod/src/deprecations/slider-props/test-cases/actual.js
@@ -16,3 +16,9 @@ import Slider from '@mui/material/Slider';
slotProps={{ rail: slotsRailProps, track: slotsTrackProps }}
componentsProps={{ track: componentsTrackProps }}
/>;
+ ;
diff --git a/packages/mui-codemod/src/deprecations/slider-props/test-cases/expected.js b/packages/mui-codemod/src/deprecations/slider-props/test-cases/expected.js
index c1809d70cfa6eb..20037c1639358c 100644
--- a/packages/mui-codemod/src/deprecations/slider-props/test-cases/expected.js
+++ b/packages/mui-codemod/src/deprecations/slider-props/test-cases/expected.js
@@ -17,4 +17,16 @@ import Slider from '@mui/material/Slider';
}} />;
;
+ slotProps={{ rail: slotsRailProps, track: {
+ ...componentsTrackProps,
+ ...slotsTrackProps
+ } }} />;
+ ;
diff --git a/packages/mui-codemod/src/deprecations/slider-props/test-cases/theme.actual.js b/packages/mui-codemod/src/deprecations/slider-props/test-cases/theme.actual.js
index 5b68897f2ddc97..90df34bdd843f5 100644
--- a/packages/mui-codemod/src/deprecations/slider-props/test-cases/theme.actual.js
+++ b/packages/mui-codemod/src/deprecations/slider-props/test-cases/theme.actual.js
@@ -28,3 +28,14 @@ fn({
},
},
});
+
+fn({
+ MuiSlider: {
+ defaultProps: {
+ components: { Track: ComponentsTrack },
+ slots: { rail: SlotsRail, track: SlotsTrack },
+ componentsProps: { track: componentsTrackProps, rail: componentsRailProps },
+ slotProps: { rail: slotsRailProps, track: slotsTrackProps },
+ },
+ },
+});
diff --git a/packages/mui-codemod/src/deprecations/slider-props/test-cases/theme.expected.js b/packages/mui-codemod/src/deprecations/slider-props/test-cases/theme.expected.js
index 74c5dab30c7553..0ef10d93f7a880 100644
--- a/packages/mui-codemod/src/deprecations/slider-props/test-cases/theme.expected.js
+++ b/packages/mui-codemod/src/deprecations/slider-props/test-cases/theme.expected.js
@@ -2,12 +2,12 @@ fn({
MuiSlider: {
defaultProps: {
slots: {
- track: ComponentsTrack,
+ track: ComponentsTrack
},
slotProps: {
- track: componentsTrackProps,
- },
+ track: componentsTrackProps
+ }
},
},
});
@@ -17,13 +17,13 @@ fn({
defaultProps: {
slots: {
track: ComponentsTrack,
- rail: SlotsRail,
+ rail: SlotsRail
},
slotProps: {
track: componentsTrackProps,
- rail: slotsRailProps,
- },
+ rail: slotsRailProps
+ }
},
},
});
@@ -33,13 +33,40 @@ fn({
defaultProps: {
slots: {
track: SlotsTrack,
- rail: SlotsRail,
+ rail: SlotsRail
},
slotProps: {
- track: slotsTrackProps,
- rail: slotsRailProps,
+ track: {
+ ...componentsTrackProps,
+ ...slotsTrackProps
+ },
+
+ rail: slotsRailProps
+ }
+ },
+ },
+});
+
+fn({
+ MuiSlider: {
+ defaultProps: {
+ slots: {
+ track: SlotsTrack,
+ rail: SlotsRail
},
+
+ slotProps: {
+ track: {
+ ...componentsTrackProps,
+ ...slotsTrackProps
+ },
+
+ rail: {
+ ...componentsRailProps,
+ ...slotsRailProps
+ }
+ }
},
},
});
diff --git a/packages/mui-codemod/src/deprecations/utils/replaceComponentsWithSlots.js b/packages/mui-codemod/src/deprecations/utils/replaceComponentsWithSlots.js
index fb1ee1d87edad4..eaac90c45e6b4c 100644
--- a/packages/mui-codemod/src/deprecations/utils/replaceComponentsWithSlots.js
+++ b/packages/mui-codemod/src/deprecations/utils/replaceComponentsWithSlots.js
@@ -69,6 +69,19 @@ function replaceJsxComponentsPropsProp(j, element) {
key: prop.key.name,
expression: prop.value,
});
+ } else {
+ attr.value.expression.properties = attr.value.expression.properties.filter(
+ (p) => p?.key?.name !== prop.key.name,
+ );
+
+ assignObject(j, {
+ target: attr,
+ key: prop.key.name,
+ expression: j.objectExpression([
+ j.spreadElement(prop.value),
+ j.spreadElement(slotProps[prop.key.name]),
+ ]),
+ });
}
});
}
@@ -131,7 +144,15 @@ function replaceDefaultPropsComponentsPropsProp(j, defaultPropsPathCollection) {
const slots = existingSlots
? existingSlots.value.properties.reduce((acc, prop) => {
- return { ...acc, [prop.key.name]: prop.value };
+ return {
+ ...acc,
+ [prop.key.name]: components[prop.key.name]
+ ? j.objectExpression([
+ j.spreadElement(components[prop.key.name]),
+ j.spreadElement(prop.value),
+ ])
+ : prop.value,
+ };
}, {})
: {};
diff --git a/packages/mui-codemod/src/v5.0.0/jss-to-styled.test.js b/packages/mui-codemod/src/v5.0.0/jss-to-styled.test.js
index 932ff64687c877..2cbbd5fac8c9ba 100644
--- a/packages/mui-codemod/src/v5.0.0/jss-to-styled.test.js
+++ b/packages/mui-codemod/src/v5.0.0/jss-to-styled.test.js
@@ -24,6 +24,7 @@ describe('@mui/codemod', () => {
const expected = read('./jss-to-styled.test/Anonymous.expected.js');
expect(actual).to.equal(expected, 'The transformed version should be correct');
});
+
describe('first', () => {
it('transforms as needed', () => {
const actual = transform(
@@ -534,6 +535,7 @@ describe('@mui/codemod', () => {
expect(actual).to.equal(expected, 'The transformed version should be correct');
});
});
+
describe('bugs - #28317 export class declaration', () => {
it('transforms as needed', () => {
const actual = transform(
diff --git a/packages/mui-codemod/src/v5.0.0/jss-to-tss-react.test.js b/packages/mui-codemod/src/v5.0.0/jss-to-tss-react.test.js
index 12a4ce281419fd..b0c6848a4b5fae 100644
--- a/packages/mui-codemod/src/v5.0.0/jss-to-tss-react.test.js
+++ b/packages/mui-codemod/src/v5.0.0/jss-to-tss-react.test.js
@@ -25,6 +25,7 @@ describe('@mui/codemod', () => {
const expected = read('./jss-to-tss-react.test/expected-from-material-ui-core-styles.js');
expect(actual).to.equal(expected, 'The transformed version should be correct');
});
+
it('should be idempotent', () => {
const actual = transform(
{
@@ -40,6 +41,7 @@ describe('@mui/codemod', () => {
const expected = read('./jss-to-tss-react.test/expected-from-material-ui-core-styles.js');
expect(actual).to.equal(expected, 'The transformed version should be correct');
});
+
it('transforms @material-ui/core makeStyles to use tss-react', () => {
const actual = transform(
{
@@ -53,6 +55,7 @@ describe('@mui/codemod', () => {
const expected = read('./jss-to-tss-react.test/expected-from-material-ui-core.js');
expect(actual).to.equal(expected, 'The transformed version should be correct');
});
+
it('adds todo comments for scenarios that are not supported', () => {
const actual = transform(
{
@@ -66,6 +69,7 @@ describe('@mui/codemod', () => {
const expected = read('./jss-to-tss-react.test/expected-todo-comments.js');
expect(actual).to.equal(expected, 'The transformed version should be correct');
});
+
it('transforms makeStyles with style rules returned by function to use tss-react', () => {
const actual = transform(
{
@@ -79,6 +83,7 @@ describe('@mui/codemod', () => {
const expected = read('./jss-to-tss-react.test/expected-mixins-pattern.js');
expect(actual).to.equal(expected, 'The transformed version should be correct');
});
+
it('transforms @mui/styles makeStyles to use tss-react', () => {
const actual = transform(
{
@@ -92,6 +97,7 @@ describe('@mui/codemod', () => {
const expected = read('./jss-to-tss-react.test/expected-from-mui-styles.js');
expect(actual).to.equal(expected, 'The transformed version should be correct');
});
+
it('transforms @mui/styles/makeStyles to use tss-react', () => {
const actual = transform(
{
@@ -105,6 +111,7 @@ describe('@mui/codemod', () => {
const expected = read('./jss-to-tss-react.test/expected-from-mui-styles-makeStyles.js');
expect(actual).to.equal(expected, 'The transformed version should be correct');
});
+
it('transforms typescript makeStyles with nested selectors to use tss-react', () => {
const actual = transform(
{
@@ -118,6 +125,7 @@ describe('@mui/codemod', () => {
const expected = read('./jss-to-tss-react.test/expected-typescript.tsx');
expect(actual).to.equal(expected, 'The transformed version should be correct');
});
+
it('transforms typescript makeStyles example in docs to use tss-react', () => {
const actual = transform(
{
@@ -131,6 +139,7 @@ describe('@mui/codemod', () => {
const expected = read('./jss-to-tss-react.test/expected-typescript-docs-example.tsx');
expect(actual).to.equal(expected, 'The transformed version should be correct');
});
+
it('transforms typescript makeStyles advanced example in docs with params to use tss-react', () => {
const actual = transform(
{
@@ -148,6 +157,7 @@ describe('@mui/codemod', () => {
);
expect(actual).to.equal(expected, 'The transformed version should be correct');
});
+
it('transforms withStyles to use tss-react', () => {
const actual = transform(
{
diff --git a/packages/mui-core-downloads-tracker/package.json b/packages/mui-core-downloads-tracker/package.json
index fea026d1e65021..9d778304278211 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": "5.15.11",
+ "version": "5.15.12",
"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 7256766209a528..cf0c7855e2caae 100644
--- a/packages/mui-docs/package.json
+++ b/packages/mui-docs/package.json
@@ -1,6 +1,6 @@
{
"name": "@mui/docs",
- "version": "5.15.11",
+ "version": "5.15.12",
"private": false,
"author": "MUI Team",
"description": "MUI Docs - Documentation building blocks.",
@@ -43,7 +43,7 @@
"prop-types": "^15.8.1"
},
"devDependencies": {
- "@types/node": "^18.19.10",
+ "@types/node": "^18.19.21",
"@types/prop-types": "^15.7.11",
"@types/react": "^18.2.55",
"next": "^13.5.1",
diff --git a/packages/mui-docs/src/translations/translations.json b/packages/mui-docs/src/translations/translations.json
index 9b2462e0101c0f..8cdbb47cc9b8f0 100644
--- a/packages/mui-docs/src/translations/translations.json
+++ b/packages/mui-docs/src/translations/translations.json
@@ -15,7 +15,7 @@
"defaultComponent": "Default component",
"defaultValue": "Default value",
"defaultHTMLTag": "Default HTML tag",
- "demos": "Component demos",
+ "demos": "Demos",
"deprecated": "Deprecated",
"description": "Description",
"globalClass": "Global class",
diff --git a/packages/mui-envinfo/package.json b/packages/mui-envinfo/package.json
index 2bb11a613f57ae..e5ce3a88cc3bb9 100644
--- a/packages/mui-envinfo/package.json
+++ b/packages/mui-envinfo/package.json
@@ -23,7 +23,7 @@
"envinfo": "^7.11.1"
},
"devDependencies": {
- "@types/chai": "^4.3.11",
+ "@types/chai": "^4.3.12",
"chai": "^4.4.1",
"fs-extra": "^11.2.0"
},
diff --git a/packages/mui-envinfo/test/package.json b/packages/mui-envinfo/test/package.json
index e8ab131ef63a30..e63819d86b731c 100644
--- a/packages/mui-envinfo/test/package.json
+++ b/packages/mui-envinfo/test/package.json
@@ -3,7 +3,7 @@
"version": "1.0.0",
"private": true,
"dependencies": {
- "@emotion/react": "^11.11.3",
+ "@emotion/react": "^11.11.4",
"@emotion/styled": "^11.11.0",
"@mui/base": "5.0.0-beta.30",
"@mui/joy": "5.0.0-beta.22",
diff --git a/packages/mui-icons-material/package.json b/packages/mui-icons-material/package.json
index 655de74410cd1b..7adc8f786fe252 100644
--- a/packages/mui-icons-material/package.json
+++ b/packages/mui-icons-material/package.json
@@ -1,6 +1,6 @@
{
"name": "@mui/icons-material",
- "version": "5.15.11",
+ "version": "5.15.12",
"private": false,
"author": "MUI Team",
"description": "Material Design icons distributed as SVG React components.",
@@ -52,7 +52,7 @@
"@mui/icons-material": "workspace:*",
"@mui/internal-waterfall": "workspace:^",
"@mui/material": "workspace:^",
- "@types/chai": "^4.3.11",
+ "@types/chai": "^4.3.12",
"@types/react": "^18.2.55",
"chai": "^4.4.1",
"chalk": "^5.3.0",
diff --git a/packages/mui-icons-material/src/icon.d.ts b/packages/mui-icons-material/src/icon.d.ts
new file mode 100644
index 00000000000000..72c99eef1a4c82
--- /dev/null
+++ b/packages/mui-icons-material/src/icon.d.ts
@@ -0,0 +1 @@
+export { default } from '@mui/material/SvgIcon';
diff --git a/packages/mui-icons-material/test/generated-types/tsconfig.json b/packages/mui-icons-material/test/generated-types/tsconfig.json
index 9b00faf9c2d744..1099b243812bac 100644
--- a/packages/mui-icons-material/test/generated-types/tsconfig.json
+++ b/packages/mui-icons-material/test/generated-types/tsconfig.json
@@ -42,14 +42,12 @@
"@mui/types": ["./mui-types"],
"@mui/utils": ["./mui-utils/src"],
"@mui/utils/*": ["./mui-utils/src/*"],
- "@mui/zero-next-plugin": ["./zero-next-plugin/src"],
- "@mui/zero-next-plugin/*": ["./zero-next-plugin/src/*"],
- "@mui/zero-runtime": ["./zero-runtime/src"],
- "@mui/zero-runtime/*": ["./zero-runtime/src/*"],
- "@mui/zero-tag-processor": ["./zero-tag-processor/src"],
- "@mui/zero-tag-processor/*": ["./zero-tag-processor/src/*"],
- "@mui/zero-vite-plugin": ["./zero-vite-plugin/src"],
- "@mui/zero-vite-plugin/*": ["./zero-vite-plugin/src/*"],
+ "@pigment-css/nextjs-plugin": ["./pigment-nextjs-plugin/src"],
+ "@pigment-css/nextjs-plugin/*": ["./pigment-nextjs-plugin/src/*"],
+ "@pigment-css/react": ["./pigment-react/src"],
+ "@pigment-css/react/*": ["./pigment-react/src/*"],
+ "@pigment-css/vite-plugin": ["./pigment-vite-plugin/src"],
+ "@pigment-css/vite-plugin/*": ["./pigment-vite-plugin/src/*"],
"@mui/internal-scripts/typescript-to-proptypes": [
"../packages-internal/scripts/typescript-to-proptypes/src"
]
diff --git a/packages/mui-icons-material/tsconfig.json b/packages/mui-icons-material/tsconfig.json
index f762d7e08aeb2f..73a65ef2ef6e56 100644
--- a/packages/mui-icons-material/tsconfig.json
+++ b/packages/mui-icons-material/tsconfig.json
@@ -1,10 +1,5 @@
{
"extends": "../../tsconfig.json",
- "compilerOptions": {
- "paths": {
- "@mui/material": ["../mui-material/src"],
- "@mui/material/*": ["../mui-material/src/*"]
- }
- },
+ "compilerOptions": {},
"include": ["src/**/*"]
}
diff --git a/packages/mui-joy/README.md b/packages/mui-joy/README.md
index 98053e50428614..a69c37d192cbba 100644
--- a/packages/mui-joy/README.md
+++ b/packages/mui-joy/README.md
@@ -1,11 +1,11 @@
-
+
-Joy UI
+Joy UI
-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.
+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.
## Installation
@@ -26,13 +26,13 @@ Use the "joy-ui" tag on Stack Overflow to make it easier for the community to f
## Examples
-Our documentation features [a collection of example projects using Joy UI](https://github.com/mui/material-ui/tree/master/examples).
+Our documentation features [a collection of example projects using Joy UI](https://github.com/mui/material-ui/tree/master/examples).
## Contributing
Read the [contributing guide](/CONTRIBUTING.md) to learn about our development process, how to propose bug fixes and improvements, and how to build and test your changes.
-Contributing to Joy UI is about more than just issues and pull requests!
+Contributing to Joy UI is about more than just issues and pull requests!
There are many other ways to [support MUI](https://mui.com/material-ui/getting-started/faq/#mui-is-awesome-how-can-i-support-the-project) beyond contributing to the code base.
## Changelog
diff --git a/packages/mui-joy/package.json b/packages/mui-joy/package.json
index c46bd9f9b649af..170fb702806512 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.29",
+ "version": "5.0.0-beta.30",
"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.",
@@ -50,7 +50,7 @@
"devDependencies": {
"@mui-internal/test-utils": "workspace:^",
"@mui/material": "workspace:^",
- "@types/chai": "^4.3.11",
+ "@types/chai": "^4.3.12",
"@types/prop-types": "^15.7.11",
"@types/react": "^18.2.55",
"@types/react-dom": "^18.2.19",
diff --git a/packages/mui-joy/src/Autocomplete/Autocomplete.test.tsx b/packages/mui-joy/src/Autocomplete/Autocomplete.test.tsx
index 09b874caa4c560..44b0ce311cb53f 100644
--- a/packages/mui-joy/src/Autocomplete/Autocomplete.test.tsx
+++ b/packages/mui-joy/src/Autocomplete/Autocomplete.test.tsx
@@ -1323,6 +1323,7 @@ describe('Joy ', () => {
checkHighlightIs(autocompleteListbox, 'six');
expect(autocompleteListbox.scrollTop).to.greaterThan(0);
});
+
it('should keep focus on selected option and not reset to top option when options updated', () => {
const { setProps } = render( );
const textbox = screen.getByRole('combobox');
diff --git a/packages/mui-joy/src/Autocomplete/Autocomplete.tsx b/packages/mui-joy/src/Autocomplete/Autocomplete.tsx
index a6a806dec0a1e0..696feacf1ea575 100644
--- a/packages/mui-joy/src/Autocomplete/Autocomplete.tsx
+++ b/packages/mui-joy/src/Autocomplete/Autocomplete.tsx
@@ -416,6 +416,7 @@ const Autocomplete = React.forwardRef(function Autocomplete(
variant="soft"
color="neutral"
endDecorator={ }
+ sx={{ minWidth: 0 }}
>
{getOptionLabel(option)}
diff --git a/packages/mui-joy/src/Button/Button.test.tsx b/packages/mui-joy/src/Button/Button.test.tsx
index 57bf78208efa38..590e7a7af67666 100644
--- a/packages/mui-joy/src/Button/Button.test.tsx
+++ b/packages/mui-joy/src/Button/Button.test.tsx
@@ -112,12 +112,14 @@ describe('Joy ', () => {
const button = getByRole('button');
expect(button).to.have.property('disabled', true);
});
+
it('should disable button when loading is true and disabled is false', () => {
const { getByRole } = render( );
const button = getByRole('button');
expect(button).to.have.property('disabled', true);
});
+
it('should disable button when loading is false and disabled is true', () => {
const { getByRole } = render( );
diff --git a/packages/mui-joy/src/Checkbox/Checkbox.test.tsx b/packages/mui-joy/src/Checkbox/Checkbox.test.tsx
index 3dfb0bf6e7922d..8b76c36fbb533a 100644
--- a/packages/mui-joy/src/Checkbox/Checkbox.test.tsx
+++ b/packages/mui-joy/src/Checkbox/Checkbox.test.tsx
@@ -142,6 +142,7 @@ describe(' ', () => {
const { getByTestId } = render( );
expect(getByTestId('HorizontalRuleIcon')).not.to.equal(null);
});
+
it('should render checked icon', () => {
const { getByTestId } = render( );
expect(getByTestId('CheckIcon')).not.to.equal(null);
@@ -151,6 +152,7 @@ describe(' ', () => {
const { getByTestId } = render( } />);
expect(getByTestId('CloseIcon')).not.to.equal(null);
});
+
it('should not render icon', () => {
const { queryByTestId } = render(
} />,
diff --git a/packages/mui-joy/src/ChipDelete/ChipDelete.test.tsx b/packages/mui-joy/src/ChipDelete/ChipDelete.test.tsx
index 2e52ad0dce2e40..a36b316f97e1e8 100644
--- a/packages/mui-joy/src/ChipDelete/ChipDelete.test.tsx
+++ b/packages/mui-joy/src/ChipDelete/ChipDelete.test.tsx
@@ -74,6 +74,7 @@ describe(' ', () => {
expect(getByRole('button')).to.have.class(classes.colorNeutral);
});
});
+
describe('Chip onDelete', () => {
it('should call onDelete function when backspace, enter or delete is pressed', () => {
const handleDelete = spy();
diff --git a/packages/mui-joy/src/List/List.test.tsx b/packages/mui-joy/src/List/List.test.tsx
index e3c3d81246da7c..252995e53feb8d 100644
--- a/packages/mui-joy/src/List/List.test.tsx
+++ b/packages/mui-joy/src/List/List.test.tsx
@@ -102,6 +102,7 @@ describe('Joy
', () => {
describe('Menu - integration', () => {
const element = document.createElement('div');
element.setAttribute('aria-controls', 'test');
+
it('should have role="group" inside Menu', () => {
render(
element}>
diff --git a/packages/mui-joy/src/colorInversion/colorInversionUtils.test.tsx b/packages/mui-joy/src/colorInversion/colorInversionUtils.test.tsx
index b96b8d12b858a1..151e901ff7d304 100644
--- a/packages/mui-joy/src/colorInversion/colorInversionUtils.test.tsx
+++ b/packages/mui-joy/src/colorInversion/colorInversionUtils.test.tsx
@@ -7,6 +7,7 @@ import { applySoftInversion, applySolidInversion } from '@mui/joy/colorInversion
describe('colorInversionUtil', () => {
const { render } = createRenderer();
+
it('should not throw error using sx prop', () => {
expect(() =>
render( ),
diff --git a/packages/mui-joy/src/styles/CssVarsProvider.test.tsx b/packages/mui-joy/src/styles/CssVarsProvider.test.tsx
index 16791f6cc7784c..7a71401aaa3e7d 100644
--- a/packages/mui-joy/src/styles/CssVarsProvider.test.tsx
+++ b/packages/mui-joy/src/styles/CssVarsProvider.test.tsx
@@ -7,6 +7,7 @@ describe('[Joy] CssVarsProvider', () => {
let originalMatchmedia: typeof window.matchMedia;
const { render } = createRenderer();
const storage: Record = {};
+
beforeEach(() => {
originalMatchmedia = window.matchMedia;
// Create mocks of localStorage getItem and setItem functions
@@ -25,6 +26,7 @@ describe('[Joy] CssVarsProvider', () => {
removeListener: () => {},
}) as unknown as MediaQueryList;
});
+
afterEach(() => {
window.matchMedia = originalMatchmedia;
});
diff --git a/packages/mui-joy/src/styles/ThemeProvider.test.tsx b/packages/mui-joy/src/styles/ThemeProvider.test.tsx
index 584192f0748373..75de20ec715c57 100644
--- a/packages/mui-joy/src/styles/ThemeProvider.test.tsx
+++ b/packages/mui-joy/src/styles/ThemeProvider.test.tsx
@@ -6,6 +6,7 @@ import defaultTheme from './defaultTheme';
describe('[Joy] ThemeProvider', () => {
const { render } = createRenderer();
+
it('can render component without ThemeProvider', () => {
function Text() {
const theme = useTheme();
diff --git a/packages/mui-joy/src/styles/extendTheme.test.js b/packages/mui-joy/src/styles/extendTheme.test.js
index d6fe75ac3aa5b3..5a5986a8473319 100644
--- a/packages/mui-joy/src/styles/extendTheme.test.js
+++ b/packages/mui-joy/src/styles/extendTheme.test.js
@@ -104,6 +104,7 @@ describe('extendTheme', () => {
let originalMatchmedia;
const storage = {};
+
beforeEach(() => {
originalMatchmedia = window.matchMedia;
// Create mocks of localStorage getItem and setItem functions
@@ -121,6 +122,7 @@ describe('extendTheme', () => {
removeListener: () => {},
});
});
+
afterEach(() => {
window.matchMedia = originalMatchmedia;
});
diff --git a/packages/mui-joy/src/styles/styled.test.tsx b/packages/mui-joy/src/styles/styled.test.tsx
index 7a555ddaababef..4ddf5a023bdc84 100644
--- a/packages/mui-joy/src/styles/styled.test.tsx
+++ b/packages/mui-joy/src/styles/styled.test.tsx
@@ -8,6 +8,7 @@ const toPixel = (val: string | number | undefined) => (typeof val === 'number' ?
describe('[Joy] styled', () => {
const { render } = createRenderer();
+
it('use defaultTheme given no ThemeProvider', function test() {
if (/jsdom/.test(window.navigator.userAgent)) {
this.skip();
diff --git a/packages/mui-lab/package.json b/packages/mui-lab/package.json
index 37c1a9941320fa..122c54a1b04020 100644
--- a/packages/mui-lab/package.json
+++ b/packages/mui-lab/package.json
@@ -1,6 +1,6 @@
{
"name": "@mui/lab",
- "version": "5.0.0-alpha.166",
+ "version": "5.0.0-alpha.167",
"private": false,
"author": "MUI Team",
"description": "Laboratory for new MUI modules.",
@@ -51,7 +51,7 @@
},
"devDependencies": {
"@mui-internal/test-utils": "workspace:^",
- "@types/chai": "^4.3.11",
+ "@types/chai": "^4.3.12",
"@types/prop-types": "^15.7.11",
"@types/react": "^18.2.55",
"@types/react-dom": "^18.2.19",
diff --git a/packages/mui-material-next/CONTRIBUTING.md b/packages/mui-material-next/CONTRIBUTING.md
index de6a9e7132fb68..25505c81e5f22d 100644
--- a/packages/mui-material-next/CONTRIBUTING.md
+++ b/packages/mui-material-next/CONTRIBUTING.md
@@ -20,7 +20,7 @@ If the issue doesn't exist, create it, name it `[][material-next]
- In tests, using `CssVarsProvider` and `extendTheme` (both imported from `@mui/material-next/styles`) instead of `ThemeProvider` and `createTheme`, as well as providing the same `CssVarsProvier` and `extendTheme` to `describeConformance`'s `ThemeProvider` and `createTheme` options.
5. Implement M3 design specs. Add missing tokens if necessary. Use [material-web tokens](https://github.com/material-components/material-web/tree/main/tokens) as a reference for token values
6. Add component playground to the docs, take the [Slider playground](https://mui.com/material-ui/react-slider/#material-3-slider) as an example
-7. Refactor styles to use component CSS Variables, following [material-web tokens](https://github.com/material-components/material-web/tree/main/tokens) and Joy UI's equivalent component (if it exists) as guides.
+7. Refactor styles to use component CSS Variables, following [material-web tokens](https://github.com/material-components/material-web/tree/main/tokens) and Joy UI's equivalent component (if it exists) as guides.
## Other things to keep in mind
diff --git a/packages/mui-material-next/package.json b/packages/mui-material-next/package.json
index 474288b423c989..f7bff874303d07 100644
--- a/packages/mui-material-next/package.json
+++ b/packages/mui-material-next/package.json
@@ -1,6 +1,6 @@
{
"name": "@mui/material-next",
- "version": "6.0.0-alpha.124",
+ "version": "6.0.0-alpha.125",
"private": false,
"author": "MUI Team",
"description": "v6-alpha: React components that implement Google's Material Design",
@@ -53,11 +53,11 @@
"react-transition-group": "^4.4.5"
},
"devDependencies": {
- "@emotion/react": "^11.11.3",
+ "@emotion/react": "^11.11.4",
"@mui/internal-babel-macros": "workspace:^",
"@mui-internal/test-utils": "workspace:^",
"@testing-library/user-event": "^14.5.2",
- "@types/chai": "^4.3.11",
+ "@types/chai": "^4.3.12",
"@types/prop-types": "^15.7.11",
"@types/react": "^18.2.55",
"@types/react-dom": "^18.2.19",
diff --git a/packages/mui-material-next/src/ButtonBase/ButtonBase.test.tsx b/packages/mui-material-next/src/ButtonBase/ButtonBase.test.tsx
index 14bad4a702f6b9..6d4b178153bee7 100644
--- a/packages/mui-material-next/src/ButtonBase/ButtonBase.test.tsx
+++ b/packages/mui-material-next/src/ButtonBase/ButtonBase.test.tsx
@@ -51,6 +51,7 @@ describe(' ', () => {
removeListener: () => {},
}) as unknown as MediaQueryList;
});
+
afterEach(() => {
window.matchMedia = originalMatchmedia;
});
diff --git a/packages/mui-material-next/src/ButtonGroup/ButtonGroup.test.tsx b/packages/mui-material-next/src/ButtonGroup/ButtonGroup.test.tsx
index 27c6ae0a268273..448828f269e12b 100644
--- a/packages/mui-material-next/src/ButtonGroup/ButtonGroup.test.tsx
+++ b/packages/mui-material-next/src/ButtonGroup/ButtonGroup.test.tsx
@@ -20,6 +20,7 @@ describe(' ', () => {
removeListener: () => {},
}) as unknown as MediaQueryList;
});
+
afterEach(() => {
window.matchMedia = originalMatchmedia;
});
diff --git a/packages/mui-material-next/src/Chip/Chip.test.tsx b/packages/mui-material-next/src/Chip/Chip.test.tsx
index 1eaf75ea1b6bd0..afe4eadf86d1b6 100644
--- a/packages/mui-material-next/src/Chip/Chip.test.tsx
+++ b/packages/mui-material-next/src/Chip/Chip.test.tsx
@@ -34,6 +34,7 @@ describe(' ', () => {
removeListener: () => {},
}) as unknown as MediaQueryList;
});
+
afterEach(() => {
window.matchMedia = originalMatchmedia;
});
diff --git a/packages/mui-material-next/src/IconButton/IconButton.test.js b/packages/mui-material-next/src/IconButton/IconButton.test.js
index bb8ea99d596bfc..c98c84f44c6394 100644
--- a/packages/mui-material-next/src/IconButton/IconButton.test.js
+++ b/packages/mui-material-next/src/IconButton/IconButton.test.js
@@ -71,11 +71,13 @@ describe(' ', () => {
expect(container.firstChild).to.have.class(classes.edgeStart);
});
+
it('edge="end" should render the right class', () => {
const { container } = render(book );
expect(container.firstChild).to.have.class(classes.edgeEnd);
});
+
it('no edge should render the right class', () => {
const { container } = render(book );
diff --git a/packages/mui-material-next/src/OutlinedInput/NotchedOutline.test.js b/packages/mui-material-next/src/OutlinedInput/NotchedOutline.test.js
index 071166efd9645a..b27d8e928cbe75 100644
--- a/packages/mui-material-next/src/OutlinedInput/NotchedOutline.test.js
+++ b/packages/mui-material-next/src/OutlinedInput/NotchedOutline.test.js
@@ -54,6 +54,7 @@ describe(' ', () => {
paddingRight: '8px',
});
});
+
it('should not set padding (notch) for empty, null or undefined label props', function test() {
if (/jsdom/.test(window.navigator.userAgent)) {
this.skip();
diff --git a/packages/mui-material-next/src/Slider/Slider.test.js b/packages/mui-material-next/src/Slider/Slider.test.js
index 3ba62a672b0f13..05e0cd28116e01 100644
--- a/packages/mui-material-next/src/Slider/Slider.test.js
+++ b/packages/mui-material-next/src/Slider/Slider.test.js
@@ -37,6 +37,7 @@ describe(' ', () => {
removeListener: () => {},
});
});
+
afterEach(() => {
window.matchMedia = originalMatchmedia;
});
@@ -724,6 +725,7 @@ describe(' ', () => {
expect(slider).to.have.attribute('aria-valuenow', String(min));
});
});
+
describe('prop: max', () => {
it('should set the max and aria-valuemax on the input', () => {
const max = 750;
diff --git a/packages/mui-material-next/src/styles/styled.test.js b/packages/mui-material-next/src/styles/styled.test.js
index 720850622207fe..490fdd9d1ebaed 100644
--- a/packages/mui-material-next/src/styles/styled.test.js
+++ b/packages/mui-material-next/src/styles/styled.test.js
@@ -58,6 +58,7 @@ describe('styled', () => {
color: 'rgb(179, 38, 30)',
});
});
+
it('should apply color prop to theme.ref.palette if available', function test() {
if (/jsdom/.test(window.navigator.userAgent)) {
this.skip();
@@ -70,6 +71,7 @@ describe('styled', () => {
color: 'rgb(242, 184, 181)',
});
});
+
it('should apply bgcolor prop to theme.sys.color if available', function test() {
if (/jsdom/.test(window.navigator.userAgent)) {
this.skip();
@@ -82,6 +84,7 @@ describe('styled', () => {
backgroundColor: 'rgb(179, 38, 30)',
});
});
+
it('should apply bgcolor prop to theme.ref.palette if available', function test() {
if (/jsdom/.test(window.navigator.userAgent)) {
this.skip();
@@ -94,6 +97,7 @@ describe('styled', () => {
backgroundColor: 'rgb(242, 184, 181)',
});
});
+
it('should apply backgroundColor prop to theme.sys.color if available', function test() {
if (/jsdom/.test(window.navigator.userAgent)) {
this.skip();
@@ -106,6 +110,7 @@ describe('styled', () => {
backgroundColor: 'rgb(179, 38, 30)',
});
});
+
it('should apply backgroundColor prop to theme.ref.palette if available', function test() {
if (/jsdom/.test(window.navigator.userAgent)) {
this.skip();
@@ -118,6 +123,7 @@ describe('styled', () => {
backgroundColor: 'rgb(242, 184, 181)',
});
});
+
it('should apply border*Color props to theme.sys.color if available', function test() {
if (/jsdom/.test(window.navigator.userAgent)) {
this.skip();
@@ -143,6 +149,7 @@ describe('styled', () => {
borderRightColor: 'rgb(179, 38, 30)',
});
});
+
it('should apply border*Color props to theme.ref.palette if available', function test() {
if (/jsdom/.test(window.navigator.userAgent)) {
this.skip();
@@ -168,6 +175,7 @@ describe('styled', () => {
borderRightColor: 'rgb(242, 184, 181)',
});
});
+
it('should apply borderColor props to theme.sys.color if available', function test() {
if (/jsdom/.test(window.navigator.userAgent)) {
this.skip();
@@ -183,6 +191,7 @@ describe('styled', () => {
borderRightColor: 'rgb(179, 38, 30)',
});
});
+
it('should apply borderColor props to theme.ref.palette if available', function test() {
if (/jsdom/.test(window.navigator.userAgent)) {
this.skip();
diff --git a/packages/mui-material-nextjs/package.json b/packages/mui-material-nextjs/package.json
index 31abc5f6818c76..a52e29c461030d 100644
--- a/packages/mui-material-nextjs/package.json
+++ b/packages/mui-material-nextjs/package.json
@@ -41,7 +41,7 @@
},
"devDependencies": {
"@emotion/cache": "^11.11.0",
- "@emotion/react": "^11.11.3",
+ "@emotion/react": "^11.11.4",
"@emotion/server": "^11.11.0",
"@types/react": "^18.2.55",
"next": "13.5.1",
diff --git a/packages/mui-material/package.json b/packages/mui-material/package.json
index c49f2e526f340c..a99a20c5f2f4e6 100644
--- a/packages/mui-material/package.json
+++ b/packages/mui-material/package.json
@@ -1,6 +1,6 @@
{
"name": "@mui/material",
- "version": "5.15.11",
+ "version": "5.15.12",
"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.",
@@ -56,24 +56,24 @@
"react-transition-group": "^4.4.5"
},
"devDependencies": {
- "@mui/internal-babel-macros": "workspace:^",
"@mui-internal/test-utils": "workspace:^",
+ "@mui/internal-babel-macros": "workspace:^",
"@popperjs/core": "^2.11.8",
"@rollup/plugin-replace": "^5.0.5",
"@testing-library/dom": "^9.3.4",
"@testing-library/user-event": "^14.5.2",
- "@types/chai": "^4.3.11",
+ "@types/chai": "^4.3.12",
"@types/prop-types": "^15.7.11",
"@types/react": "^18.2.55",
"@types/react-dom": "^18.2.19",
"@types/sinon": "^10.0.20",
"chai": "^4.4.1",
"css-mediaquery": "^0.1.2",
- "express": "^4.18.2",
+ "express": "^4.18.3",
"fast-glob": "^3.3.2",
"fs-extra": "^11.2.0",
"lodash": "^4.17.21",
- "playwright": "^1.41.2",
+ "playwright": "^1.42.1",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-router-dom": "^6.21.3",
diff --git a/packages/mui-material/src/Alert/Alert.d.ts b/packages/mui-material/src/Alert/Alert.d.ts
index 70875f28848eea..a267dec3c89f9d 100644
--- a/packages/mui-material/src/Alert/Alert.d.ts
+++ b/packages/mui-material/src/Alert/Alert.d.ts
@@ -33,7 +33,7 @@ export type AlertSlotsAndSlotProps = CreateSlotsAndSlotProps<
}
>;
-export interface AlertProps extends StandardProps {
+export interface AlertProps extends StandardProps, AlertSlotsAndSlotProps {
/**
* The action to display. It renders after the message, at the end of the alert.
*/
@@ -133,4 +133,4 @@ export interface AlertOwnerState extends AlertProps {}
* - [Alert API](https://mui.com/material-ui/api/alert/)
* - inherits [Paper API](https://mui.com/material-ui/api/paper/)
*/
-export default function Alert(props: AlertProps & AlertSlotsAndSlotProps): JSX.Element;
+export default function Alert(props: AlertProps): JSX.Element;
diff --git a/packages/mui-material/src/Alert/Alert.js b/packages/mui-material/src/Alert/Alert.js
index e9d5b3f5a0647b..c908118889da52 100644
--- a/packages/mui-material/src/Alert/Alert.js
+++ b/packages/mui-material/src/Alert/Alert.js
@@ -2,10 +2,9 @@
import * as React from 'react';
import PropTypes from 'prop-types';
import clsx from 'clsx';
-import { unstable_composeClasses as composeClasses } from '@mui/base';
-import { darken, lighten } from '@mui/system';
-import styled from '../styles/styled';
-import useThemeProps from '../styles/useThemeProps';
+import composeClasses from '@mui/utils/composeClasses';
+import { darken, lighten } from '@mui/system/colorManipulator';
+import { styled, createUseThemeProps } from '../zero-styled';
import useSlot from '../utils/useSlot';
import capitalize from '../utils/capitalize';
import Paper from '../Paper';
@@ -17,6 +16,8 @@ import ErrorOutlineIcon from '../internal/svg-icons/ErrorOutline';
import InfoOutlinedIcon from '../internal/svg-icons/InfoOutlined';
import CloseIcon from '../internal/svg-icons/Close';
+const useThemeProps = createUseThemeProps('MuiAlert');
+
const useUtilityClasses = (ownerState) => {
const { variant, color, severity, classes } = ownerState;
@@ -47,58 +48,70 @@ const AlertRoot = styled(Paper, {
styles[`${ownerState.variant}${capitalize(ownerState.color || ownerState.severity)}`],
];
},
-})(({ theme, ownerState }) => {
+})(({ theme }) => {
const getColor = theme.palette.mode === 'light' ? darken : lighten;
const getBackgroundColor = theme.palette.mode === 'light' ? lighten : darken;
- const color = ownerState.color || ownerState.severity;
-
return {
...theme.typography.body2,
backgroundColor: 'transparent',
display: 'flex',
padding: '6px 16px',
- ...(color &&
- ownerState.variant === 'standard' && {
- color: theme.vars
- ? theme.vars.palette.Alert[`${color}Color`]
- : getColor(theme.palette[color].light, 0.6),
- backgroundColor: theme.vars
- ? theme.vars.palette.Alert[`${color}StandardBg`]
- : getBackgroundColor(theme.palette[color].light, 0.9),
- [`& .${alertClasses.icon}`]: theme.vars
- ? { color: theme.vars.palette.Alert[`${color}IconColor`] }
- : {
- color: theme.palette[color].main,
- },
- }),
- ...(color &&
- ownerState.variant === 'outlined' && {
- color: theme.vars
- ? theme.vars.palette.Alert[`${color}Color`]
- : getColor(theme.palette[color].light, 0.6),
- border: `1px solid ${(theme.vars || theme).palette[color].light}`,
- [`& .${alertClasses.icon}`]: theme.vars
- ? { color: theme.vars.palette.Alert[`${color}IconColor`] }
- : {
- color: theme.palette[color].main,
- },
- }),
- ...(color &&
- ownerState.variant === 'filled' && {
- fontWeight: theme.typography.fontWeightMedium,
- ...(theme.vars
- ? {
- color: theme.vars.palette.Alert[`${color}FilledColor`],
- backgroundColor: theme.vars.palette.Alert[`${color}FilledBg`],
- }
- : {
- backgroundColor:
- theme.palette.mode === 'dark'
- ? theme.palette[color].dark
- : theme.palette[color].main,
- color: theme.palette.getContrastText(theme.palette[color].main),
- }),
- }),
+ variants: [
+ ...Object.entries(theme.palette)
+ .filter(([, value]) => value.main && value.light)
+ .map(([color]) => ({
+ props: { colorSeverity: color, variant: 'standard' },
+ style: {
+ color: theme.vars
+ ? theme.vars.palette.Alert[`${color}Color`]
+ : getColor(theme.palette[color].light, 0.6),
+ backgroundColor: theme.vars
+ ? theme.vars.palette.Alert[`${color}StandardBg`]
+ : getBackgroundColor(theme.palette[color].light, 0.9),
+ [`& .${alertClasses.icon}`]: theme.vars
+ ? { color: theme.vars.palette.Alert[`${color}IconColor`] }
+ : {
+ color: theme.palette[color].main,
+ },
+ },
+ })),
+ ...Object.entries(theme.palette)
+ .filter(([, value]) => value.main && value.light)
+ .map(([color]) => ({
+ props: { colorSeverity: color, variant: 'outlined' },
+ style: {
+ color: theme.vars
+ ? theme.vars.palette.Alert[`${color}Color`]
+ : getColor(theme.palette[color].light, 0.6),
+ border: `1px solid ${(theme.vars || theme).palette[color].light}`,
+ [`& .${alertClasses.icon}`]: theme.vars
+ ? { color: theme.vars.palette.Alert[`${color}IconColor`] }
+ : {
+ color: theme.palette[color].main,
+ },
+ },
+ })),
+ ...Object.entries(theme.palette)
+ .filter(([, value]) => value.main && value.dark)
+ .map(([color]) => ({
+ props: { colorSeverity: color, variant: 'filled' },
+ style: {
+ fontWeight: theme.typography.fontWeightMedium,
+ ...(theme.vars
+ ? {
+ color: theme.vars.palette.Alert[`${color}FilledColor`],
+ backgroundColor: theme.vars.palette.Alert[`${color}FilledBg`],
+ }
+ : {
+ backgroundColor:
+ theme.palette.mode === 'dark'
+ ? theme.palette[color].dark
+ : theme.palette[color].main,
+ color: theme.palette.getContrastText(theme.palette[color].main),
+ }),
+ },
+ })),
+ ],
};
});
@@ -169,6 +182,7 @@ const Alert = React.forwardRef(function Alert(inProps, ref) {
color,
severity,
variant,
+ colorSeverity: color || severity,
};
const classes = useUtilityClasses(ownerState);
diff --git a/packages/mui-material/src/Alert/Alert.spec.tsx b/packages/mui-material/src/Alert/Alert.spec.tsx
new file mode 100644
index 00000000000000..349694b19f9ba4
--- /dev/null
+++ b/packages/mui-material/src/Alert/Alert.spec.tsx
@@ -0,0 +1,14 @@
+import CloseRounded from '@mui/icons-material/CloseRounded';
+import { createTheme } from '@mui/material';
+
+createTheme({
+ components: {
+ MuiAlert: {
+ defaultProps: {
+ slots: {
+ closeIcon: CloseRounded,
+ },
+ },
+ },
+ },
+});
diff --git a/packages/mui-material/src/AlertTitle/AlertTitle.js b/packages/mui-material/src/AlertTitle/AlertTitle.js
index 8889812510d73f..01d427e93b9a91 100644
--- a/packages/mui-material/src/AlertTitle/AlertTitle.js
+++ b/packages/mui-material/src/AlertTitle/AlertTitle.js
@@ -3,11 +3,12 @@ import * as React from 'react';
import PropTypes from 'prop-types';
import clsx from 'clsx';
import composeClasses from '@mui/utils/composeClasses';
-import styled from '../styles/styled';
-import useThemeProps from '../styles/useThemeProps';
+import { styled, createUseThemeProps } from '../zero-styled';
import Typography from '../Typography';
import { getAlertTitleUtilityClass } from './alertTitleClasses';
+const useThemeProps = createUseThemeProps('MuiAlertTitle');
+
const useUtilityClasses = (ownerState) => {
const { classes } = ownerState;
diff --git a/packages/mui-material/src/Autocomplete/Autocomplete.js b/packages/mui-material/src/Autocomplete/Autocomplete.js
index 18e0e9d58180c1..3672e8f334d4d6 100644
--- a/packages/mui-material/src/Autocomplete/Autocomplete.js
+++ b/packages/mui-material/src/Autocomplete/Autocomplete.js
@@ -582,6 +582,76 @@ const Autocomplete = React.forwardRef(function Autocomplete(inProps, ref) {
const popperSlotProps = slotProps.popper ?? componentsProps.popper;
const popupIndicatorSlotProps = slotProps.popupIndicator ?? componentsProps.popupIndicator;
+ const renderAutocompletePopperChildren = (children) => (
+
+
+ {children}
+
+
+ );
+
+ let autocompletePopper = null;
+ if (!loading && groupedOptions.length > 0) {
+ autocompletePopper = renderAutocompletePopperChildren(
+
+ {groupedOptions.map((option, index) => {
+ if (groupBy) {
+ return renderGroup({
+ key: option.key,
+ group: option.group,
+ children: option.options.map((option2, index2) =>
+ renderListOption(option2, option.index + index2),
+ ),
+ });
+ }
+ return renderListOption(option, index);
+ })}
+ ,
+ );
+ } else if (loading && groupedOptions.length === 0) {
+ autocompletePopper = renderAutocompletePopperChildren(
+
+ {loadingText}
+ ,
+ );
+ } else if (groupedOptions.length === 0 && !freeSolo && !loading) {
+ autocompletePopper = renderAutocompletePopperChildren(
+ {
+ // Prevent input blur when interacting with the "no options" content
+ event.preventDefault();
+ }}
+ >
+ {noOptionsText}
+ ,
+ );
+ }
+
return (
- {anchorEl ? (
-
-
- {loading && groupedOptions.length === 0 ? (
-
- {loadingText}
-
- ) : null}
- {groupedOptions.length === 0 && !freeSolo && !loading ? (
- {
- // Prevent input blur when interacting with the "no options" content
- event.preventDefault();
- }}
- >
- {noOptionsText}
-
- ) : null}
- {groupedOptions.length > 0 ? (
-
- {groupedOptions.map((option, index) => {
- if (groupBy) {
- return renderGroup({
- key: option.key,
- group: option.group,
- children: option.options.map((option2, index2) =>
- renderListOption(option2, option.index + index2),
- ),
- });
- }
- return renderListOption(option, index);
- })}
-
- ) : null}
-
-
- ) : null}
+ {anchorEl ? autocompletePopper : null}
);
});
diff --git a/packages/mui-material/src/Autocomplete/Autocomplete.test.js b/packages/mui-material/src/Autocomplete/Autocomplete.test.js
index 8ef9849c3a3ccb..c20e977925918e 100644
--- a/packages/mui-material/src/Autocomplete/Autocomplete.test.js
+++ b/packages/mui-material/src/Autocomplete/Autocomplete.test.js
@@ -587,6 +587,7 @@ describe(' ', () => {
expect(handleClose.callCount).to.equal(0);
expect(textbox).to.have.attribute('aria-expanded', 'true');
});
+
it('should close listbox on pressing left or right keys when inputValue is empty', () => {
const handleClose = spy();
const options = ['one', 'two', 'three'];
@@ -2335,6 +2336,22 @@ describe(' ', () => {
expect(container.querySelector(`.${classes.endAdornment}`)).to.equal(null);
});
+
+ it('should not render popper when there are no options', () => {
+ render(
+ }
+ slotProps={{
+ popper: { 'data-testid': 'popperRoot' },
+ }}
+ />,
+ );
+ const popper = screen.queryByTestId('popperRoot');
+ expect(popper).to.equal(null);
+ });
});
describe('prop: onChange', () => {
diff --git a/packages/mui-material/src/Checkbox/Checkbox.d.ts b/packages/mui-material/src/Checkbox/Checkbox.d.ts
index 781be09e65413d..8d3b3529cde81e 100644
--- a/packages/mui-material/src/Checkbox/Checkbox.d.ts
+++ b/packages/mui-material/src/Checkbox/Checkbox.d.ts
@@ -91,7 +91,7 @@ export interface CheckboxProps
* `small` is equivalent to the dense checkbox styling.
* @default 'medium'
*/
- size?: OverridableStringUnion<'small' | 'medium', CheckboxPropsSizeOverrides>;
+ size?: OverridableStringUnion<'small' | 'medium' | 'large', CheckboxPropsSizeOverrides>;
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
diff --git a/packages/mui-material/src/Drawer/Drawer.js b/packages/mui-material/src/Drawer/Drawer.js
index eef70ec528fcd4..1849bd69a9d238 100644
--- a/packages/mui-material/src/Drawer/Drawer.js
+++ b/packages/mui-material/src/Drawer/Drawer.js
@@ -4,6 +4,7 @@ import PropTypes from 'prop-types';
import clsx from 'clsx';
import integerPropType from '@mui/utils/integerPropType';
import composeClasses from '@mui/utils/composeClasses';
+import { useRtl } from '@mui/system/RtlProvider';
import Modal from '../Modal';
import Slide from '../Slide';
import Paper from '../Paper';
@@ -137,8 +138,8 @@ export function isHorizontal(anchor) {
return ['left', 'right'].indexOf(anchor) !== -1;
}
-export function getAnchor(theme, anchor) {
- return theme.direction === 'rtl' && isHorizontal(anchor) ? oppositeDirection[anchor] : anchor;
+export function getAnchor({ direction }, anchor) {
+ return direction === 'rtl' && isHorizontal(anchor) ? oppositeDirection[anchor] : anchor;
}
/**
@@ -148,6 +149,7 @@ export function getAnchor(theme, anchor) {
const Drawer = React.forwardRef(function Drawer(inProps, ref) {
const props = useThemeProps({ props: inProps, name: 'MuiDrawer' });
const theme = useTheme();
+ const isRtl = useRtl();
const defaultTransitionDuration = {
enter: theme.transitions.duration.enteringScreen,
exit: theme.transitions.duration.leavingScreen,
@@ -180,7 +182,7 @@ const Drawer = React.forwardRef(function Drawer(inProps, ref) {
mounted.current = true;
}, []);
- const anchorInvariant = getAnchor(theme, anchorProp);
+ const anchorInvariant = getAnchor({ direction: isRtl ? 'rtl' : 'ltr' }, anchorProp);
const anchor = anchorProp;
const ownerState = {
diff --git a/packages/mui-material/src/FormGroup/FormGroup.test.js b/packages/mui-material/src/FormGroup/FormGroup.test.js
index e1f6b173f23ced..e3e8326cb55c91 100644
--- a/packages/mui-material/src/FormGroup/FormGroup.test.js
+++ b/packages/mui-material/src/FormGroup/FormGroup.test.js
@@ -27,6 +27,7 @@ describe(' ', () => {
expect(queryByTestId('test-children')).not.to.equal(null);
});
+
describe('with FormControl', () => {
describe('error', () => {
it(`should have the error class`, () => {
diff --git a/packages/mui-material/src/Hidden/HiddenCss.test.js b/packages/mui-material/src/Hidden/HiddenCss.test.js
index a77e5ebd557b8c..b86a63c6889b8b 100644
--- a/packages/mui-material/src/Hidden/HiddenCss.test.js
+++ b/packages/mui-material/src/Hidden/HiddenCss.test.js
@@ -71,6 +71,7 @@ describe(' ', () => {
expect(container.firstChild).to.have.class(classes.mdUp);
});
+
it('should handle provided className prop', () => {
const { container } = render(
diff --git a/packages/mui-material/src/IconButton/IconButton.test.js b/packages/mui-material/src/IconButton/IconButton.test.js
index 3b78d1d15d1e8e..b32027f326b020 100644
--- a/packages/mui-material/src/IconButton/IconButton.test.js
+++ b/packages/mui-material/src/IconButton/IconButton.test.js
@@ -70,11 +70,13 @@ describe(' ', () => {
expect(container.firstChild).to.have.class(classes.edgeStart);
});
+
it('edge="end" should render the right class', () => {
const { container } = render(book );
expect(container.firstChild).to.have.class(classes.edgeEnd);
});
+
it('no edge should render the right class', () => {
const { container } = render(book );
diff --git a/packages/mui-material/src/LinearProgress/LinearProgress.js b/packages/mui-material/src/LinearProgress/LinearProgress.js
index 4ca989cf10592e..bb9d8b85cafb3d 100644
--- a/packages/mui-material/src/LinearProgress/LinearProgress.js
+++ b/packages/mui-material/src/LinearProgress/LinearProgress.js
@@ -5,8 +5,8 @@ import clsx from 'clsx';
import composeClasses from '@mui/utils/composeClasses';
import { keyframes, css } from '@mui/system';
import { darken, lighten } from '@mui/system/colorManipulator';
+import { useRtl } from '@mui/system/RtlProvider';
import capitalize from '../utils/capitalize';
-import useTheme from '../styles/useTheme';
import styled from '../styles/styled';
import useThemeProps from '../styles/useThemeProps';
import { getLinearProgressUtilityClass } from './linearProgressClasses';
@@ -283,7 +283,7 @@ const LinearProgress = React.forwardRef(function LinearProgress(inProps, ref) {
};
const classes = useUtilityClasses(ownerState);
- const theme = useTheme();
+ const isRtl = useRtl();
const rootProps = {};
const inlineStyles = { bar1: {}, bar2: {} };
@@ -294,7 +294,7 @@ const LinearProgress = React.forwardRef(function LinearProgress(inProps, ref) {
rootProps['aria-valuemin'] = 0;
rootProps['aria-valuemax'] = 100;
let transform = value - 100;
- if (theme.direction === 'rtl') {
+ if (isRtl) {
transform = -transform;
}
inlineStyles.bar1.transform = `translateX(${transform}%)`;
@@ -308,7 +308,7 @@ const LinearProgress = React.forwardRef(function LinearProgress(inProps, ref) {
if (variant === 'buffer') {
if (valueBuffer !== undefined) {
let transform = (valueBuffer || 0) - 100;
- if (theme.direction === 'rtl') {
+ if (isRtl) {
transform = -transform;
}
inlineStyles.bar2.transform = `translateX(${transform}%)`;
diff --git a/packages/mui-material/src/Link/getTextDecoration.test.js b/packages/mui-material/src/Link/getTextDecoration.test.js
index da9419aad20563..803567fc94fd7b 100644
--- a/packages/mui-material/src/Link/getTextDecoration.test.js
+++ b/packages/mui-material/src/Link/getTextDecoration.test.js
@@ -5,6 +5,7 @@ import getTextDecoration from './getTextDecoration';
describe('getTextDecoration', () => {
describe('without theme.vars', () => {
const theme = createTheme();
+
it('deprecated color', () => {
expect(getTextDecoration({ theme, ownerState: { color: 'primary' } })).to.equal(
'rgba(25, 118, 210, 0.4)',
diff --git a/packages/mui-material/src/Menu/Menu.js b/packages/mui-material/src/Menu/Menu.js
index 0a292d37b0d2cf..8fb919b0fb70da 100644
--- a/packages/mui-material/src/Menu/Menu.js
+++ b/packages/mui-material/src/Menu/Menu.js
@@ -6,10 +6,10 @@ import clsx from 'clsx';
import composeClasses from '@mui/utils/composeClasses';
import { useSlotProps } from '@mui/base/utils';
import HTMLElementType from '@mui/utils/HTMLElementType';
+import { useRtl } from '@mui/system/RtlProvider';
import MenuList from '../MenuList';
import Popover, { PopoverPaper } from '../Popover';
import styled, { rootShouldForwardProp } from '../styles/styled';
-import useTheme from '../styles/useTheme';
import useThemeProps from '../styles/useThemeProps';
import { getMenuUtilityClass } from './menuClasses';
@@ -85,8 +85,7 @@ const Menu = React.forwardRef(function Menu(inProps, ref) {
...other
} = props;
- const theme = useTheme();
- const isRtl = theme.direction === 'rtl';
+ const isRtl = useRtl();
const ownerState = {
...props,
@@ -108,7 +107,9 @@ const Menu = React.forwardRef(function Menu(inProps, ref) {
const handleEntering = (element, isAppearing) => {
if (menuListActionsRef.current) {
- menuListActionsRef.current.adjustStyleForScrollbar(element, theme);
+ menuListActionsRef.current.adjustStyleForScrollbar(element, {
+ direction: isRtl ? 'rtl' : 'ltr',
+ });
}
if (onEntering) {
diff --git a/packages/mui-material/src/MenuList/MenuList.js b/packages/mui-material/src/MenuList/MenuList.js
index c25b1ac6c4bdb6..29b80a6a3ec953 100644
--- a/packages/mui-material/src/MenuList/MenuList.js
+++ b/packages/mui-material/src/MenuList/MenuList.js
@@ -125,13 +125,13 @@ const MenuList = React.forwardRef(function MenuList(props, ref) {
React.useImperativeHandle(
actions,
() => ({
- adjustStyleForScrollbar: (containerElement, theme) => {
+ adjustStyleForScrollbar: (containerElement, { direction }) => {
// Let's ignore that piece of logic if users are already overriding the width
// of the menu.
const noExplicitWidth = !listRef.current.style.width;
if (containerElement.clientHeight < listRef.current.clientHeight && noExplicitWidth) {
const scrollbarSize = `${getScrollbarSize(ownerDocument(containerElement))}px`;
- listRef.current.style[theme.direction === 'rtl' ? 'paddingLeft' : 'paddingRight'] =
+ listRef.current.style[direction === 'rtl' ? 'paddingLeft' : 'paddingRight'] =
scrollbarSize;
listRef.current.style.width = `calc(100% + ${scrollbarSize})`;
}
diff --git a/packages/mui-material/src/OutlinedInput/NotchedOutline.test.js b/packages/mui-material/src/OutlinedInput/NotchedOutline.test.js
index 071166efd9645a..b27d8e928cbe75 100644
--- a/packages/mui-material/src/OutlinedInput/NotchedOutline.test.js
+++ b/packages/mui-material/src/OutlinedInput/NotchedOutline.test.js
@@ -54,6 +54,7 @@ describe(' ', () => {
paddingRight: '8px',
});
});
+
it('should not set padding (notch) for empty, null or undefined label props', function test() {
if (/jsdom/.test(window.navigator.userAgent)) {
this.skip();
diff --git a/packages/mui-material/src/PaginationItem/PaginationItem.js b/packages/mui-material/src/PaginationItem/PaginationItem.js
index 715286a41a4458..3f51141d0587a9 100644
--- a/packages/mui-material/src/PaginationItem/PaginationItem.js
+++ b/packages/mui-material/src/PaginationItem/PaginationItem.js
@@ -4,9 +4,9 @@ import PropTypes from 'prop-types';
import clsx from 'clsx';
import composeClasses from '@mui/utils/composeClasses';
import { alpha } from '@mui/system/colorManipulator';
+import { useRtl } from '@mui/system/RtlProvider';
import useThemeProps from '../styles/useThemeProps';
import paginationItemClasses, { getPaginationItemUtilityClass } from './paginationItemClasses';
-import useTheme from '../styles/useTheme';
import ButtonBase from '../ButtonBase';
import capitalize from '../utils/capitalize';
import FirstPageIcon from '../internal/svg-icons/FirstPage';
@@ -288,23 +288,22 @@ const PaginationItem = React.forwardRef(function PaginationItem(inProps, ref) {
variant,
};
- const theme = useTheme();
+ const isRtl = useRtl();
const classes = useUtilityClasses(ownerState);
- const normalizedIcons =
- theme.direction === 'rtl'
- ? {
- previous: slots.next || components.next || NavigateNextIcon,
- next: slots.previous || components.previous || NavigateBeforeIcon,
- last: slots.first || components.first || FirstPageIcon,
- first: slots.last || components.last || LastPageIcon,
- }
- : {
- previous: slots.previous || components.previous || NavigateBeforeIcon,
- next: slots.next || components.next || NavigateNextIcon,
- first: slots.first || components.first || FirstPageIcon,
- last: slots.last || components.last || LastPageIcon,
- };
+ const normalizedIcons = isRtl
+ ? {
+ previous: slots.next || components.next || NavigateNextIcon,
+ next: slots.previous || components.previous || NavigateBeforeIcon,
+ last: slots.first || components.first || FirstPageIcon,
+ first: slots.last || components.last || LastPageIcon,
+ }
+ : {
+ previous: slots.previous || components.previous || NavigateBeforeIcon,
+ next: slots.next || components.next || NavigateNextIcon,
+ first: slots.first || components.first || FirstPageIcon,
+ last: slots.last || components.last || LastPageIcon,
+ };
const Icon = normalizedIcons[type];
diff --git a/packages/mui-material/src/RadioGroup/RadioGroup.test.js b/packages/mui-material/src/RadioGroup/RadioGroup.test.js
index 9c35240513a67d..1617ea18a89b57 100644
--- a/packages/mui-material/src/RadioGroup/RadioGroup.test.js
+++ b/packages/mui-material/src/RadioGroup/RadioGroup.test.js
@@ -360,6 +360,7 @@ describe(' ', () => {
);
});
+
describe('onChange', () => {
it('should set the value state', () => {
const radioGroupRef = React.createRef();
diff --git a/packages/mui-material/src/Rating/Rating.js b/packages/mui-material/src/Rating/Rating.js
index dcf47bd122362d..882e57bcf04e24 100644
--- a/packages/mui-material/src/Rating/Rating.js
+++ b/packages/mui-material/src/Rating/Rating.js
@@ -6,7 +6,7 @@ import clamp from '@mui/utils/clamp';
import visuallyHidden from '@mui/utils/visuallyHidden';
import chainPropTypes from '@mui/utils/chainPropTypes';
import composeClasses from '@mui/utils/composeClasses';
-import useTheme from '../styles/useTheme';
+import { useRtl } from '@mui/system/RtlProvider';
import {
capitalize,
useForkRef,
@@ -329,7 +329,7 @@ const Rating = React.forwardRef(function Rating(inProps, ref) {
});
const valueRounded = roundValueToPrecision(valueDerived, precision);
- const theme = useTheme();
+ const isRtl = useRtl();
const [{ hover, focus }, setState] = React.useState({
hover: -1,
focus: -1,
@@ -364,7 +364,7 @@ const Rating = React.forwardRef(function Rating(inProps, ref) {
let percent;
- if (theme.direction === 'rtl') {
+ if (isRtl) {
percent = (right - event.clientX) / containerWidth;
} else {
percent = (event.clientX - left) / containerWidth;
diff --git a/packages/mui-material/src/Slider/Slider.js b/packages/mui-material/src/Slider/Slider.js
index 42b1c83a4757cf..096e13f1c25555 100644
--- a/packages/mui-material/src/Slider/Slider.js
+++ b/packages/mui-material/src/Slider/Slider.js
@@ -7,9 +7,9 @@ import { isHostComponent, useSlotProps } from '@mui/base/utils';
import composeClasses from '@mui/utils/composeClasses';
import { useSlider, valueToPercent } from '@mui/base/useSlider';
import { alpha, lighten, darken } from '@mui/system/colorManipulator';
+import { useRtl } from '@mui/system/RtlProvider';
import useThemeProps from '../styles/useThemeProps';
import styled, { slotShouldForwardProp } from '../styles/styled';
-import useTheme from '../styles/useTheme';
import shouldSpreadAdditionalProps from '../utils/shouldSpreadAdditionalProps';
import capitalize from '../utils/capitalize';
import BaseSliderValueLabel from './SliderValueLabel';
@@ -404,8 +404,7 @@ const Forward = ({ children }) => children;
const Slider = React.forwardRef(function Slider(inputProps, ref) {
const props = useThemeProps({ props: inputProps, name: 'MuiSlider' });
- const theme = useTheme();
- const isRtl = theme.direction === 'rtl';
+ const isRtl = useRtl();
const {
'aria-label': ariaLabel,
diff --git a/packages/mui-material/src/Slider/Slider.test.js b/packages/mui-material/src/Slider/Slider.test.js
index 01367520897535..7e3207d337dcbc 100644
--- a/packages/mui-material/src/Slider/Slider.test.js
+++ b/packages/mui-material/src/Slider/Slider.test.js
@@ -737,6 +737,7 @@ describe(' ', () => {
expect(slider).to.have.attribute('aria-valuenow', String(min));
});
});
+
describe('prop: max', () => {
it('should set the max and aria-valuemax on the input', () => {
const max = 750;
diff --git a/packages/mui-material/src/Switch/Switch.js b/packages/mui-material/src/Switch/Switch.js
index 9506a24aa7eb0b..40811807f1c0bf 100644
--- a/packages/mui-material/src/Switch/Switch.js
+++ b/packages/mui-material/src/Switch/Switch.js
@@ -8,10 +8,11 @@ import composeClasses from '@mui/utils/composeClasses';
import { alpha, darken, lighten } from '@mui/system/colorManipulator';
import capitalize from '../utils/capitalize';
import SwitchBase from '../internal/SwitchBase';
-import useThemeProps from '../styles/useThemeProps';
-import styled from '../styles/styled';
+import { styled, createUseThemeProps } from '../zero-styled';
import switchClasses, { getSwitchUtilityClass } from './switchClasses';
+const useThemeProps = createUseThemeProps('MuiSwitch');
+
const useUtilityClasses = (ownerState) => {
const { classes, edge, size, color, checked, disabled } = ownerState;
@@ -48,7 +49,7 @@ const SwitchRoot = styled('span', {
styles[`size${capitalize(ownerState.size)}`],
];
},
-})(({ ownerState }) => ({
+})({
display: 'inline-flex',
width: 34 + 12 * 2,
height: 14 + 12 * 2,
@@ -62,28 +63,35 @@ const SwitchRoot = styled('span', {
'@media print': {
colorAdjust: 'exact',
},
- ...(ownerState.edge === 'start' && {
- marginLeft: -8,
- }),
- ...(ownerState.edge === 'end' && {
- marginRight: -8,
- }),
- ...(ownerState.size === 'small' && {
- width: 40,
- height: 24,
- padding: 7,
- [`& .${switchClasses.thumb}`]: {
- width: 16,
- height: 16,
+ variants: [
+ {
+ props: { edge: 'start' },
+ style: { marginLeft: -8 },
},
- [`& .${switchClasses.switchBase}`]: {
- padding: 4,
- [`&.${switchClasses.checked}`]: {
- transform: 'translateX(16px)',
+ {
+ props: { edge: 'end' },
+ style: { marginRight: -8 },
+ },
+ {
+ props: { size: 'small' },
+ style: {
+ width: 40,
+ height: 24,
+ padding: 7,
+ [`& .${switchClasses.thumb}`]: {
+ width: 16,
+ height: 16,
+ },
+ [`& .${switchClasses.switchBase}`]: {
+ padding: 4,
+ [`&.${switchClasses.checked}`]: {
+ transform: 'translateX(16px)',
+ },
+ },
},
},
- }),
-}));
+ ],
+});
const SwitchSwitchBase = styled(SwitchBase, {
name: 'MuiSwitch',
@@ -130,7 +138,7 @@ const SwitchSwitchBase = styled(SwitchBase, {
width: '300%',
},
}),
- ({ theme, ownerState }) => ({
+ ({ theme }) => ({
'&:hover': {
backgroundColor: theme.vars
? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})`
@@ -140,33 +148,38 @@ const SwitchSwitchBase = styled(SwitchBase, {
backgroundColor: 'transparent',
},
},
- ...(ownerState.color !== 'default' && {
- [`&.${switchClasses.checked}`]: {
- color: (theme.vars || theme).palette[ownerState.color].main,
- '&:hover': {
- backgroundColor: theme.vars
- ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${
- theme.vars.palette.action.hoverOpacity
- })`
- : alpha(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),
- '@media (hover: none)': {
- backgroundColor: 'transparent',
+ variants: [
+ ...Object.entries(theme.palette)
+ .filter(([, value]) => value.main && value.light) // check all the used fields in the style below
+ .map(([color]) => ({
+ props: { color },
+ style: {
+ [`&.${switchClasses.checked}`]: {
+ color: (theme.vars || theme).palette[color].main,
+ '&:hover': {
+ backgroundColor: theme.vars
+ ? `rgba(${theme.vars.palette[color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})`
+ : alpha(theme.palette[color].main, theme.palette.action.hoverOpacity),
+ '@media (hover: none)': {
+ backgroundColor: 'transparent',
+ },
+ },
+ [`&.${switchClasses.disabled}`]: {
+ color: theme.vars
+ ? theme.vars.palette.Switch[`${color}DisabledColor`]
+ : `${
+ theme.palette.mode === 'light'
+ ? lighten(theme.palette[color].main, 0.62)
+ : darken(theme.palette[color].main, 0.55)
+ }`,
+ },
+ },
+ [`&.${switchClasses.checked} + .${switchClasses.track}`]: {
+ backgroundColor: (theme.vars || theme).palette[color].main,
+ },
},
- },
- [`&.${switchClasses.disabled}`]: {
- color: theme.vars
- ? theme.vars.palette.Switch[`${ownerState.color}DisabledColor`]
- : `${
- theme.palette.mode === 'light'
- ? lighten(theme.palette[ownerState.color].main, 0.62)
- : darken(theme.palette[ownerState.color].main, 0.55)
- }`,
- },
- },
- [`&.${switchClasses.checked} + .${switchClasses.track}`]: {
- backgroundColor: (theme.vars || theme).palette[ownerState.color].main,
- },
- }),
+ })),
+ ],
}),
);
diff --git a/packages/mui-material/src/TabScrollButton/TabScrollButton.js b/packages/mui-material/src/TabScrollButton/TabScrollButton.js
index c2fdad8acb5f9e..9dcdd8fe8efbc3 100644
--- a/packages/mui-material/src/TabScrollButton/TabScrollButton.js
+++ b/packages/mui-material/src/TabScrollButton/TabScrollButton.js
@@ -5,10 +5,10 @@ import PropTypes from 'prop-types';
import clsx from 'clsx';
import { useSlotProps } from '@mui/base/utils';
import composeClasses from '@mui/utils/composeClasses';
+import { useRtl } from '@mui/system/RtlProvider';
import KeyboardArrowLeft from '../internal/svg-icons/KeyboardArrowLeft';
import KeyboardArrowRight from '../internal/svg-icons/KeyboardArrowRight';
import ButtonBase from '../ButtonBase';
-import useTheme from '../styles/useTheme';
import useThemeProps from '../styles/useThemeProps';
import styled from '../styles/styled';
import tabScrollButtonClasses, { getTabScrollButtonUtilityClass } from './tabScrollButtonClasses';
@@ -59,8 +59,7 @@ const TabScrollButton = React.forwardRef(function TabScrollButton(inProps, ref)
...other
} = props;
- const theme = useTheme();
- const isRtl = theme.direction === 'rtl';
+ const isRtl = useRtl();
const ownerState = { isRtl, ...props };
diff --git a/packages/mui-material/src/TableCell/TableCell.test.js b/packages/mui-material/src/TableCell/TableCell.test.js
index 1af4df861fac99..427864cf0df7e7 100644
--- a/packages/mui-material/src/TableCell/TableCell.test.js
+++ b/packages/mui-material/src/TableCell/TableCell.test.js
@@ -97,6 +97,7 @@ describe(' ', () => {
const { container } = renderInTable( );
expect(container.querySelector('th')).not.to.have.attribute('role');
});
+
it('should not set scope attribute when TableCell is rendered as within table head', () => {
const { container } = render(
diff --git a/packages/mui-material/src/TablePagination/TablePaginationActions.js b/packages/mui-material/src/TablePagination/TablePaginationActions.js
index 7a792e706e5d36..99f8ffae9f2b4d 100644
--- a/packages/mui-material/src/TablePagination/TablePaginationActions.js
+++ b/packages/mui-material/src/TablePagination/TablePaginationActions.js
@@ -1,9 +1,9 @@
'use client';
import * as React from 'react';
import PropTypes from 'prop-types';
+import { useRtl } from '@mui/system/RtlProvider';
import KeyboardArrowLeft from '../internal/svg-icons/KeyboardArrowLeft';
import KeyboardArrowRight from '../internal/svg-icons/KeyboardArrowRight';
-import useTheme from '../styles/useTheme';
import IconButton from '../IconButton';
import LastPageIconDefault from '../internal/svg-icons/LastPage';
import FirstPageIconDefault from '../internal/svg-icons/FirstPage';
@@ -28,7 +28,7 @@ const TablePaginationActions = React.forwardRef(function TablePaginationActions(
...other
} = props;
- const theme = useTheme();
+ const isRtl = useRtl();
const handleFirstPageButtonClick = (event) => {
onPageChange(event, 0);
@@ -55,19 +55,15 @@ const TablePaginationActions = React.forwardRef(function TablePaginationActions(
const NextButtonIcon = slots.nextButtonIcon ?? KeyboardArrowRight;
const PreviousButtonIcon = slots.previousButtonIcon ?? KeyboardArrowLeft;
- const FirstButtonSlot = theme.direction === 'rtl' ? LastButton : FirstButton;
- const PreviousButtonSlot = theme.direction === 'rtl' ? NextButton : PreviousButton;
- const NextButtonSlot = theme.direction === 'rtl' ? PreviousButton : NextButton;
- const LastButtonSlot = theme.direction === 'rtl' ? FirstButton : LastButton;
+ const FirstButtonSlot = isRtl ? LastButton : FirstButton;
+ const PreviousButtonSlot = isRtl ? NextButton : PreviousButton;
+ const NextButtonSlot = isRtl ? PreviousButton : NextButton;
+ const LastButtonSlot = isRtl ? FirstButton : LastButton;
- const firstButtonSlotProps =
- theme.direction === 'rtl' ? slotProps.lastButton : slotProps.firstButton;
- const previousButtonSlotProps =
- theme.direction === 'rtl' ? slotProps.nextButton : slotProps.previousButton;
- const nextButtonSlotProps =
- theme.direction === 'rtl' ? slotProps.previousButton : slotProps.nextButton;
- const lastButtonSlotProps =
- theme.direction === 'rtl' ? slotProps.firstButton : slotProps.lastButton;
+ const firstButtonSlotProps = isRtl ? slotProps.lastButton : slotProps.firstButton;
+ const previousButtonSlotProps = isRtl ? slotProps.nextButton : slotProps.previousButton;
+ const nextButtonSlotProps = isRtl ? slotProps.previousButton : slotProps.nextButton;
+ const lastButtonSlotProps = isRtl ? slotProps.firstButton : slotProps.lastButton;
return (
@@ -79,7 +75,7 @@ const TablePaginationActions = React.forwardRef(function TablePaginationActions(
title={getItemAriaLabel('first', page)}
{...firstButtonSlotProps}
>
- {theme.direction === 'rtl' ? (
+ {isRtl ? (
) : (
@@ -94,7 +90,7 @@ const TablePaginationActions = React.forwardRef(function TablePaginationActions(
title={getItemAriaLabel('previous', page)}
{...(previousButtonSlotProps ?? backIconButtonProps)}
>
- {theme.direction === 'rtl' ? (
+ {isRtl ? (
) : (
@@ -108,7 +104,7 @@ const TablePaginationActions = React.forwardRef(function TablePaginationActions(
title={getItemAriaLabel('next', page)}
{...(nextButtonSlotProps ?? nextIconButtonProps)}
>
- {theme.direction === 'rtl' ? (
+ {isRtl ? (
) : (
@@ -122,7 +118,7 @@ const TablePaginationActions = React.forwardRef(function TablePaginationActions(
title={getItemAriaLabel('last', page)}
{...lastButtonSlotProps}
>
- {theme.direction === 'rtl' ? (
+ {isRtl ? (
) : (
diff --git a/packages/mui-material/src/Tabs/Tabs.js b/packages/mui-material/src/Tabs/Tabs.js
index 31a26e7f16b83a..dfbcd083803bd0 100644
--- a/packages/mui-material/src/Tabs/Tabs.js
+++ b/packages/mui-material/src/Tabs/Tabs.js
@@ -6,6 +6,7 @@ import clsx from 'clsx';
import refType from '@mui/utils/refType';
import { useSlotProps } from '@mui/base/utils';
import composeClasses from '@mui/utils/composeClasses';
+import { useRtl } from '@mui/system/RtlProvider';
import styled from '../styles/styled';
import useThemeProps from '../styles/useThemeProps';
import useTheme from '../styles/useTheme';
@@ -231,7 +232,7 @@ let warnedOnceTabPresent = false;
const Tabs = React.forwardRef(function Tabs(inProps, ref) {
const props = useThemeProps({ props: inProps, name: 'MuiTabs' });
const theme = useTheme();
- const isRtl = theme.direction === 'rtl';
+ const isRtl = useRtl();
const {
'aria-label': ariaLabel,
'aria-labelledby': ariaLabelledBy,
@@ -333,7 +334,7 @@ const Tabs = React.forwardRef(function Tabs(inProps, ref) {
clientWidth: tabsNode.clientWidth,
scrollLeft: tabsNode.scrollLeft,
scrollTop: tabsNode.scrollTop,
- scrollLeftNormalized: getNormalizedScrollLeft(tabsNode, theme.direction),
+ scrollLeftNormalized: getNormalizedScrollLeft(tabsNode, isRtl ? 'rtl' : 'ltr'),
scrollWidth: tabsNode.scrollWidth,
top: rect.top,
bottom: rect.bottom,
diff --git a/packages/mui-material/src/TextField/TextField.test.js b/packages/mui-material/src/TextField/TextField.test.js
index ee4827320da6df..ee77edc66b116b 100644
--- a/packages/mui-material/src/TextField/TextField.test.js
+++ b/packages/mui-material/src/TextField/TextField.test.js
@@ -123,6 +123,7 @@ describe('
', () => {
outlinedInputClasses.notchedOutline,
);
});
+
it('should render `0` label properly', () => {
const { container } = render(
,
diff --git a/packages/mui-material/src/Tooltip/Tooltip.js b/packages/mui-material/src/Tooltip/Tooltip.js
index 88d6d7e563d55b..fa17187fdbb82d 100644
--- a/packages/mui-material/src/Tooltip/Tooltip.js
+++ b/packages/mui-material/src/Tooltip/Tooltip.js
@@ -7,6 +7,7 @@ import elementAcceptingRef from '@mui/utils/elementAcceptingRef';
import { appendOwnerState } from '@mui/base/utils';
import composeClasses from '@mui/utils/composeClasses';
import { alpha } from '@mui/system/colorManipulator';
+import { useRtl } from '@mui/system/RtlProvider';
import styled from '../styles/styled';
import useTheme from '../styles/useTheme';
import useThemeProps from '../styles/useThemeProps';
@@ -270,7 +271,7 @@ const Tooltip = React.forwardRef(function Tooltip(inProps, ref) {
const children = React.isValidElement(childrenProp) ? childrenProp :
{childrenProp} ;
const theme = useTheme();
- const isRtl = theme.direction === 'rtl';
+ const isRtl = useRtl();
const [childNode, setChildNode] = React.useState();
const [arrowRef, setArrowRef] = React.useState(null);
diff --git a/packages/mui-material/src/Tooltip/Tooltip.test.js b/packages/mui-material/src/Tooltip/Tooltip.test.js
index c47cfcc379085f..83ea7d886991a5 100644
--- a/packages/mui-material/src/Tooltip/Tooltip.test.js
+++ b/packages/mui-material/src/Tooltip/Tooltip.test.js
@@ -17,6 +17,7 @@ import describeConformance from '../../test/describeConformance';
describe('
', () => {
const { clock, render } = createRenderer({ clock: 'fake' });
+
beforeEach(() => {
testReset();
});
@@ -1181,6 +1182,7 @@ describe('
', () => {
describe('user-select state', () => {
let prevWebkitUserSelect;
+
beforeEach(() => {
prevWebkitUserSelect = document.body.style.WebkitUserSelect;
});
diff --git a/packages/mui-material/src/styles/CssVarsProvider.test.js b/packages/mui-material/src/styles/CssVarsProvider.test.js
index bb9c57846fa19d..31c1aa8f733b10 100644
--- a/packages/mui-material/src/styles/CssVarsProvider.test.js
+++ b/packages/mui-material/src/styles/CssVarsProvider.test.js
@@ -8,6 +8,7 @@ describe('[Material UI] CssVarsProvider', () => {
let originalMatchmedia;
const { render } = createRenderer();
const storage = {};
+
beforeEach(() => {
originalMatchmedia = window.matchMedia;
// Create mocks of localStorage getItem and setItem functions
@@ -25,6 +26,7 @@ describe('[Material UI] CssVarsProvider', () => {
removeListener: () => {},
});
});
+
afterEach(() => {
window.matchMedia = originalMatchmedia;
});
diff --git a/packages/mui-material/src/styles/ThemeProvider.test.tsx b/packages/mui-material/src/styles/ThemeProvider.test.tsx
index 48833d7d5e93ce..7393cf0673dcd8 100644
--- a/packages/mui-material/src/styles/ThemeProvider.test.tsx
+++ b/packages/mui-material/src/styles/ThemeProvider.test.tsx
@@ -5,6 +5,7 @@ import { ThemeProvider } from '@mui/material/styles';
describe('ThemeProvider', () => {
const { render } = createRenderer();
+
it('When theme is a function, it should not show warning', () => {
expect(() =>
render(
diff --git a/packages/mui-material/src/styles/createTheme.spec.ts b/packages/mui-material/src/styles/createTheme.spec.ts
index 6230b912ae7c83..7cccf54140adca 100644
--- a/packages/mui-material/src/styles/createTheme.spec.ts
+++ b/packages/mui-material/src/styles/createTheme.spec.ts
@@ -210,6 +210,24 @@ const theme = createTheme();
});
}
+// props callback in variants
+{
+ createTheme({
+ components: {
+ MuiButton: {
+ variants: [
+ {
+ props: (props) => props.color !== 'secondary',
+ style: ({ theme: { palette } }) => ({
+ backgroundColor: palette.grey[500],
+ }),
+ },
+ ],
+ },
+ },
+ });
+}
+
{
createTheme({
shape: {
diff --git a/packages/mui-material/src/styles/experimental_extendTheme.test.js b/packages/mui-material/src/styles/experimental_extendTheme.test.js
index dd0e43920b96a1..c7990a0043b46b 100644
--- a/packages/mui-material/src/styles/experimental_extendTheme.test.js
+++ b/packages/mui-material/src/styles/experimental_extendTheme.test.js
@@ -13,6 +13,7 @@ describe('experimental_extendTheme', () => {
let originalMatchmedia;
const { render } = createRenderer();
const storage = {};
+
beforeEach(() => {
originalMatchmedia = window.matchMedia;
// Create mocks of localStorage getItem and setItem functions
@@ -30,6 +31,7 @@ describe('experimental_extendTheme', () => {
removeListener: () => {},
});
});
+
afterEach(() => {
window.matchMedia = originalMatchmedia;
});
diff --git a/packages/mui-material/src/styles/variants.d.ts b/packages/mui-material/src/styles/variants.d.ts
index 8373d35b145fb1..2d35738efc4c96 100644
--- a/packages/mui-material/src/styles/variants.d.ts
+++ b/packages/mui-material/src/styles/variants.d.ts
@@ -3,7 +3,13 @@ import { ComponentsPropsList } from './props';
export type ComponentsVariants
= {
[Name in keyof ComponentsPropsList]?: Array<{
- props: Partial;
+ props:
+ | Partial
+ | ((
+ props: Partial & {
+ ownerState: Partial;
+ },
+ ) => boolean);
style: Interpolation<{ theme: Theme }>;
}>;
};
diff --git a/packages/mui-material/src/useMediaQuery/useMediaQuery.test.js b/packages/mui-material/src/useMediaQuery/useMediaQuery.test.js
index d2f91a1822ab53..ec3c5d8c8f4d1a 100644
--- a/packages/mui-material/src/useMediaQuery/useMediaQuery.test.js
+++ b/packages/mui-material/src/useMediaQuery/useMediaQuery.test.js
@@ -46,10 +46,12 @@ describe('useMediaQuery', () => {
describe('without window.matchMedia', () => {
let originalMatchmedia;
+
beforeEach(() => {
originalMatchmedia = window.matchMedia;
delete window.matchMedia;
});
+
afterEach(() => {
window.matchMedia = originalMatchmedia;
});
diff --git a/packages/mui-material/test/integration/PopperChildrenLayout.test.js b/packages/mui-material/test/integration/PopperChildrenLayout.test.js
index a9c6bfad6a270c..f5ad0e4ef7fd04 100644
--- a/packages/mui-material/test/integration/PopperChildrenLayout.test.js
+++ b/packages/mui-material/test/integration/PopperChildrenLayout.test.js
@@ -24,10 +24,12 @@ describe(' ', () => {
let originalScrollX;
let originalScrollY;
+
beforeEach(() => {
originalScrollX = window.screenX;
originalScrollY = window.scrollY;
});
+
afterEach(() => {
window.scrollTo(originalScrollX, originalScrollY);
});
diff --git a/packages/mui-private-theming/package.json b/packages/mui-private-theming/package.json
index 38e8e8504c7453..d81038d164a087 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.11",
+ "version": "5.15.12",
"private": false,
"author": "MUI Team",
"description": "Private - The React theme context to be shared between `@mui/styles` and `@mui/material`.",
@@ -45,7 +45,7 @@
"devDependencies": {
"@mui-internal/test-utils": "workspace:^",
"@mui/types": "workspace:^",
- "@types/chai": "^4.3.11",
+ "@types/chai": "^4.3.12",
"@types/react": "^18.2.55",
"chai": "^4.4.1",
"react": "^18.2.0"
diff --git a/packages/mui-styled-engine-sc/package.json b/packages/mui-styled-engine-sc/package.json
index 463f80e82ee9ec..6d26c546fe7b07 100644
--- a/packages/mui-styled-engine-sc/package.json
+++ b/packages/mui-styled-engine-sc/package.json
@@ -46,7 +46,7 @@
"devDependencies": {
"@mui-internal/test-utils": "workspace:^",
"@mui/styled-engine-sc": "workspace:*",
- "@types/chai": "^4.3.11",
+ "@types/chai": "^4.3.12",
"@types/hoist-non-react-statics": "^3.3.5",
"@types/react": "^18.2.55",
"chai": "^4.4.1",
diff --git a/packages/mui-styled-engine/package.json b/packages/mui-styled-engine/package.json
index fa84f01529555c..78ef3bc80309b3 100644
--- a/packages/mui-styled-engine/package.json
+++ b/packages/mui-styled-engine/package.json
@@ -44,11 +44,11 @@
"prop-types": "^15.8.1"
},
"devDependencies": {
- "@emotion/react": "^11.11.3",
+ "@emotion/react": "^11.11.4",
"@emotion/styled": "^11.11.0",
"@mui-internal/test-utils": "workspace:^",
"@mui/styled-engine": "workspace:*",
- "@types/chai": "^4.3.11",
+ "@types/chai": "^4.3.12",
"@types/react": "^18.2.55",
"chai": "^4.4.1",
"react": "^18.2.0"
diff --git a/packages/mui-styles/package.json b/packages/mui-styles/package.json
index ccc727a90e8f4a..915855c36f9ce1 100644
--- a/packages/mui-styles/package.json
+++ b/packages/mui-styles/package.json
@@ -1,6 +1,6 @@
{
"name": "@mui/styles",
- "version": "5.15.11",
+ "version": "5.15.12",
"private": false,
"author": "MUI Team",
"description": "MUI Styles - The legacy JSS-based styling solution of Material UI.",
@@ -59,7 +59,7 @@
"devDependencies": {
"@mui-internal/test-utils": "workspace:^",
"@mui/material": "workspace:^",
- "@types/chai": "^4.3.11",
+ "@types/chai": "^4.3.12",
"@types/react": "^18.2.55",
"@types/react-dom": "^18.2.19",
"@types/sinon": "^10.0.20",
diff --git a/packages/mui-system/package.json b/packages/mui-system/package.json
index 2dfaa1dc08d4ea..8c61f0ca70f2a4 100644
--- a/packages/mui-system/package.json
+++ b/packages/mui-system/package.json
@@ -1,6 +1,6 @@
{
"name": "@mui/system",
- "version": "5.15.11",
+ "version": "5.15.12",
"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.",
@@ -50,12 +50,12 @@
"prop-types": "^15.8.1"
},
"devDependencies": {
- "@emotion/react": "^11.11.3",
+ "@emotion/react": "^11.11.4",
"@emotion/styled": "^11.11.0",
- "@mui/internal-babel-macros": "workspace:^",
"@mui-internal/test-utils": "workspace:^",
+ "@mui/internal-babel-macros": "workspace:^",
"@mui/system": "workspace:*",
- "@types/chai": "^4.3.11",
+ "@types/chai": "^4.3.12",
"@types/prop-types": "^15.7.11",
"@types/react": "^18.2.55",
"@types/sinon": "^10.0.20",
diff --git a/packages/mui-system/src/RtlProvider/index.d.ts b/packages/mui-system/src/RtlProvider/index.d.ts
new file mode 100644
index 00000000000000..2572ebe7c8b259
--- /dev/null
+++ b/packages/mui-system/src/RtlProvider/index.d.ts
@@ -0,0 +1,11 @@
+import * as React from 'react';
+
+interface RtlProviderProps {
+ children?: React.ReactNode;
+ value?: boolean;
+}
+
+declare const RtlProvider: React.FC;
+export const useRtl: () => boolean;
+
+export default RtlProvider;
diff --git a/packages/mui-system/src/RtlProvider/index.js b/packages/mui-system/src/RtlProvider/index.js
new file mode 100644
index 00000000000000..17c01ee6d6b564
--- /dev/null
+++ b/packages/mui-system/src/RtlProvider/index.js
@@ -0,0 +1,20 @@
+import * as React from 'react';
+import PropTypes from 'prop-types';
+
+const RtlContext = React.createContext();
+
+function RtlProvider({ value, ...props }) {
+ return ;
+}
+
+RtlProvider.propTypes = {
+ children: PropTypes.node,
+ value: PropTypes.bool,
+};
+
+export const useRtl = () => {
+ const value = React.useContext(RtlContext);
+ return value ?? false;
+};
+
+export default RtlProvider;
diff --git a/packages/mui-system/src/ThemeProvider/ThemeProvider.js b/packages/mui-system/src/ThemeProvider/ThemeProvider.js
index 48d4e8a3d97dda..760b4c4645ee50 100644
--- a/packages/mui-system/src/ThemeProvider/ThemeProvider.js
+++ b/packages/mui-system/src/ThemeProvider/ThemeProvider.js
@@ -8,6 +8,7 @@ import {
import exactProp from '@mui/utils/exactProp';
import { ThemeContext as StyledEngineThemeContext } from '@mui/styled-engine';
import useThemeWithoutDefault from '../useThemeWithoutDefault';
+import RtlProvider from '../RtlProvider';
const EMPTY_THEME = {};
@@ -61,11 +62,12 @@ function ThemeProvider(props) {
const engineTheme = useThemeScoping(themeId, upperTheme, localTheme);
const privateTheme = useThemeScoping(themeId, upperPrivateTheme, localTheme, true);
+ const rtlValue = engineTheme.direction === 'rtl';
return (
- {children}
+ {children}
);
diff --git a/packages/mui-system/src/ThemeProvider/ThemeProvider.test.js b/packages/mui-system/src/ThemeProvider/ThemeProvider.test.js
index febe6050490f54..f6eccf9e8dd104 100644
--- a/packages/mui-system/src/ThemeProvider/ThemeProvider.test.js
+++ b/packages/mui-system/src/ThemeProvider/ThemeProvider.test.js
@@ -4,6 +4,7 @@ import { createRenderer } from '@mui-internal/test-utils';
import { useTheme as usePrivateTheme } from '@mui/private-theming';
import { ThemeContext } from '@mui/styled-engine';
import { ThemeProvider } from '@mui/system';
+import { useRtl } from '@mui/system/RtlProvider';
const useEngineTheme = () => React.useContext(ThemeContext);
@@ -277,4 +278,25 @@ describe('ThemeProvider', () => {
' outerTheme} />',
]);
});
+
+ it('sets the correct value for the RtlProvider based on the theme.direction', () => {
+ let rtlValue = null;
+ function Test() {
+ rtlValue = useRtl();
+ return null;
+ }
+ render(
+
+
+ ,
+ );
+ expect(rtlValue).to.equal(true);
+
+ render(
+
+
+ ,
+ );
+ expect(rtlValue).to.equal(false);
+ });
});
diff --git a/packages/mui-system/src/breakpoints.test.js b/packages/mui-system/src/breakpoints.test.js
index 6b57a3caa395b1..722327d96f50ed 100644
--- a/packages/mui-system/src/breakpoints.test.js
+++ b/packages/mui-system/src/breakpoints.test.js
@@ -20,6 +20,7 @@ describe('breakpoints', () => {
large: 900,
extraLarge: 1200,
};
+
it('should work', () => {
const palette = breakpoints(textColor);
diff --git a/packages/mui-system/src/createTheme/createSpacing.ts b/packages/mui-system/src/createTheme/createSpacing.ts
index 90387c81ce51a7..3e0db4679233ce 100644
--- a/packages/mui-system/src/createTheme/createSpacing.ts
+++ b/packages/mui-system/src/createTheme/createSpacing.ts
@@ -13,7 +13,7 @@ export type SpacingArgument = number | string;
// We express the difference with variable names.
export interface Spacing {
(): string;
- (value: number): string;
+ (value: SpacingArgument): string;
(topBottom: SpacingArgument, rightLeft: SpacingArgument): string;
(top: SpacingArgument, rightLeft: SpacingArgument, bottom: SpacingArgument): string;
(
diff --git a/packages/mui-system/src/cssVars/createCssVarsProvider.test.js b/packages/mui-system/src/cssVars/createCssVarsProvider.test.js
index 85f2c04d76b637..36728bfe69e0b2 100644
--- a/packages/mui-system/src/cssVars/createCssVarsProvider.test.js
+++ b/packages/mui-system/src/cssVars/createCssVarsProvider.test.js
@@ -35,6 +35,7 @@ describe('createCssVarsProvider', () => {
storage = {};
window.matchMedia = createMatchMedia(false);
});
+
afterEach(() => {
window.matchMedia = originalMatchmedia;
});
@@ -246,6 +247,7 @@ describe('createCssVarsProvider', () => {
describe('[option]: `disableTransitionOnChange`', () => {
clock.withFakeTimers();
+
it('disable all css transitions when switching between modes, given `disableTransitionOnChange` is true', () => {
const { CssVarsProvider, useColorScheme } = createCssVarsProvider({
theme: createCssVarsTheme({
@@ -462,6 +464,7 @@ describe('createCssVarsProvider', () => {
);
}
+
it('should save mode to localStorage', () => {
render(
@@ -550,6 +553,7 @@ describe('createCssVarsProvider', () => {
const theme = useTheme();
return {theme.vars.color}
;
}
+
it('use default color scheme if the storage value does not exist', () => {
storage[DEFAULT_MODE_STORAGE_KEY] = 'unknown';
diff --git a/packages/mui-system/src/cssVars/createGetCssVar.test.ts b/packages/mui-system/src/cssVars/createGetCssVar.test.ts
index 4d3ca46fdda0e1..ee11a204c27e53 100644
--- a/packages/mui-system/src/cssVars/createGetCssVar.test.ts
+++ b/packages/mui-system/src/cssVars/createGetCssVar.test.ts
@@ -4,6 +4,7 @@ import createGetCssVar from './createGetCssVar';
describe('createGetCssVar', () => {
describe('default without prefix', () => {
const getThemeVar = createGetCssVar();
+
it('should return correct CSS var with default prefix', () => {
expect(getThemeVar('palette-primary-500')).to.equal('var(--palette-primary-500)');
});
diff --git a/packages/mui-system/src/cssVars/cssVarsParser.test.ts b/packages/mui-system/src/cssVars/cssVarsParser.test.ts
index 076e8c7a4b5a85..25c4672c5da9a2 100644
--- a/packages/mui-system/src/cssVars/cssVarsParser.test.ts
+++ b/packages/mui-system/src/cssVars/cssVarsParser.test.ts
@@ -58,6 +58,7 @@ describe('cssVarsParser', () => {
});
});
});
+
describe('walkObjectDeep', () => {
it('run callback at each key', () => {
const result: Record = {};
diff --git a/packages/mui-system/src/cssVars/getInitColorSchemeScript.test.js b/packages/mui-system/src/cssVars/getInitColorSchemeScript.test.js
index 8340db5c31bbda..9bc4c50d8c306f 100644
--- a/packages/mui-system/src/cssVars/getInitColorSchemeScript.test.js
+++ b/packages/mui-system/src/cssVars/getInitColorSchemeScript.test.js
@@ -31,6 +31,7 @@ describe('getInitColorSchemeScript', () => {
document.documentElement.removeAttribute(DEFAULT_ATTRIBUTE);
window.matchMedia = createMatchMedia(false);
});
+
afterEach(() => {
window.matchMedia = originalMatchmedia;
});
diff --git a/packages/mui-system/src/cssVars/useCurrentColorScheme.test.js b/packages/mui-system/src/cssVars/useCurrentColorScheme.test.js
index ee1e91e56188d0..0c0fedd5f7e6ed 100644
--- a/packages/mui-system/src/cssVars/useCurrentColorScheme.test.js
+++ b/packages/mui-system/src/cssVars/useCurrentColorScheme.test.js
@@ -23,12 +23,14 @@ describe('useCurrentColorScheme', () => {
},
removeListener: () => {},
});
+
before(() => {
originalAddEventListener = window.addEventListener;
window.addEventListener = (key, handler) => {
storageHandler[key] = handler;
};
});
+
after(() => {
window.addEventListener = originalAddEventListener;
});
@@ -51,6 +53,7 @@ describe('useCurrentColorScheme', () => {
storageHandler = {};
window.matchMedia = createMatchMedia(false);
});
+
afterEach(() => {
window.matchMedia = originalMatchmedia;
});
diff --git a/packages/mui-system/src/index.js b/packages/mui-system/src/index.js
index d44e83fc65a04d..b7215ef8dee1b4 100644
--- a/packages/mui-system/src/index.js
+++ b/packages/mui-system/src/index.js
@@ -64,6 +64,8 @@ export { default as unstable_cssVarsParser } from './cssVars/cssVarsParser';
export { default as unstable_prepareCssVars } from './cssVars/prepareCssVars';
export { default as unstable_createCssVarsTheme } from './cssVars/createCssVarsTheme';
export { default as responsivePropType } from './responsivePropType';
+export { default as RtlProvider } from './RtlProvider';
+export * from './RtlProvider';
/** ----------------- */
/** Layout components */
diff --git a/packages/mui-utils/package.json b/packages/mui-utils/package.json
index 71f66306009ad1..a7c8d9f1d1becc 100644
--- a/packages/mui-utils/package.json
+++ b/packages/mui-utils/package.json
@@ -1,6 +1,6 @@
{
"name": "@mui/utils",
- "version": "5.15.11",
+ "version": "5.15.12",
"private": false,
"author": "MUI Team",
"description": "Utility functions for React components.",
@@ -45,12 +45,12 @@
"react-is": "^18.2.0"
},
"devDependencies": {
- "@mui/internal-babel-macros": "workspace:^",
"@mui-internal/test-utils": "workspace:^",
+ "@mui/internal-babel-macros": "workspace:^",
"@mui/types": "workspace:^",
- "@types/chai": "^4.3.11",
+ "@types/chai": "^4.3.12",
"@types/mocha": "^10.0.6",
- "@types/node": "^18.19.15",
+ "@types/node": "^18.19.21",
"@types/react": "^18.2.55",
"@types/react-dom": "^18.2.19",
"@types/react-is": "^18.2.4",
diff --git a/packages/mui-utils/src/requirePropFactory/requirePropFactory.test.js b/packages/mui-utils/src/requirePropFactory/requirePropFactory.test.js
index b36466f49047dc..e0651ee376ce02 100644
--- a/packages/mui-utils/src/requirePropFactory/requirePropFactory.test.js
+++ b/packages/mui-utils/src/requirePropFactory/requirePropFactory.test.js
@@ -98,6 +98,7 @@ describe('requirePropFactory', () => {
describe('propFullName given to validator', () => {
let propFullName;
+
before(() => {
propFullName = 'propFullName';
result = requirePropValidator(props, propName, undefined, undefined, propFullName);
diff --git a/packages/zero-next-plugin/.eslintrc b/packages/pigment-nextjs-plugin/.eslintrc
similarity index 100%
rename from packages/zero-next-plugin/.eslintrc
rename to packages/pigment-nextjs-plugin/.eslintrc
diff --git a/packages/zero-next-plugin/.gitignore b/packages/pigment-nextjs-plugin/.gitignore
similarity index 100%
rename from packages/zero-next-plugin/.gitignore
rename to packages/pigment-nextjs-plugin/.gitignore
diff --git a/packages/zero-next-plugin/loader.js b/packages/pigment-nextjs-plugin/loader.js
similarity index 100%
rename from packages/zero-next-plugin/loader.js
rename to packages/pigment-nextjs-plugin/loader.js
diff --git a/packages/zero-next-plugin/next-font.js b/packages/pigment-nextjs-plugin/next-font.js
similarity index 100%
rename from packages/zero-next-plugin/next-font.js
rename to packages/pigment-nextjs-plugin/next-font.js
diff --git a/packages/zero-next-plugin/next-image.js b/packages/pigment-nextjs-plugin/next-image.js
similarity index 100%
rename from packages/zero-next-plugin/next-image.js
rename to packages/pigment-nextjs-plugin/next-image.js
diff --git a/packages/zero-next-plugin/package.json b/packages/pigment-nextjs-plugin/package.json
similarity index 78%
rename from packages/zero-next-plugin/package.json
rename to packages/pigment-nextjs-plugin/package.json
index e1fd2188767bd7..bf6f89b61f5204 100644
--- a/packages/zero-next-plugin/package.json
+++ b/packages/pigment-nextjs-plugin/package.json
@@ -1,21 +1,21 @@
{
- "name": "@mui/zero-next-plugin",
+ "name": "@pigment-css/nextjs-plugin",
"version": "0.0.1",
"main": "build/index.js",
"module": "build/index.mjs",
"types": "build/index.d.ts",
"author": "MUI Team",
- "description": "Next.js integration for @mui/zero-runtime CSS-in-JS library.",
+ "description": "Next.js integration for Pigment CSS.",
"repository": {
"type": "git",
"url": "https://github.com/mui/material-ui.git",
- "directory": "packages/zero-next-plugin"
+ "directory": "packages/pigment-nextjs-plugin"
},
"license": "MIT",
"bugs": {
"url": "https://github.com/mui/material-ui/issues"
},
- "homepage": "https://github.com/mui/material-ui/tree/master/packages/zero-runtime",
+ "homepage": "https://github.com/mui/material-ui/tree/master/packages/pigment-react",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/mui-org"
@@ -23,12 +23,12 @@
"scripts": {
"clean": "rimraf build types",
"watch": "tsup --watch --tsconfig tsconfig.build.json",
- "copy-license": "node ../../scripts/zero-runtime-license.mjs",
+ "copy-license": "node ../../scripts/pigment-license.mjs",
"build": "tsup --tsconfig tsconfig.build.json",
"typecheck": "tsc --noEmit -p ."
},
"dependencies": {
- "@mui/zero-unplugin": "workspace:^"
+ "@pigment-css/unplugin": "workspace:^"
},
"devDependencies": {
"next": "^13.5.1"
diff --git a/packages/zero-next-plugin/src/index.ts b/packages/pigment-nextjs-plugin/src/index.ts
similarity index 86%
rename from packages/zero-next-plugin/src/index.ts
rename to packages/pigment-nextjs-plugin/src/index.ts
index 661e0d0b2fe045..7950f160799981 100644
--- a/packages/zero-next-plugin/src/index.ts
+++ b/packages/pigment-nextjs-plugin/src/index.ts
@@ -2,12 +2,12 @@ import * as path from 'node:path';
import type { NextConfig } from 'next';
import { findPagesDir } from 'next/dist/lib/find-pages-dir';
import {
- webpack as zeroWebpackPlugin,
+ webpack as webpackPlugin,
extendTheme,
- type PluginOptions as BaseZeroPluginConfig,
-} from '@mui/zero-unplugin';
+ type PigmentOptions as BasePigmentOptions,
+} from '@pigment-css/unplugin';
-export type ZeroPluginConfig = BaseZeroPluginConfig & {
+export type PigmentOptions = BasePigmentOptions & {
asyncResolve?: (what: string) => string | null;
};
@@ -16,8 +16,8 @@ const extractionFile = path.join(
'zero-virtual.css',
);
-export function withZeroPlugin(nextConfig: NextConfig, zeroConfig: ZeroPluginConfig) {
- const { babelOptions, asyncResolve, ...rest } = zeroConfig;
+export function withPigment(nextConfig: NextConfig, pigmentConfig: PigmentOptions) {
+ const { babelOptions, asyncResolve, ...rest } = pigmentConfig;
const webpack: Exclude = (config, context) => {
const { dir, dev, isServer, config: resolvedNextConfig } = context;
@@ -43,7 +43,7 @@ export function withZeroPlugin(nextConfig: NextConfig, zeroConfig: ZeroPluginCon
use: require.resolve('../loader'),
});
config.plugins.push(
- zeroWebpackPlugin({
+ webpackPlugin({
...rest,
meta: {
type: 'next',
diff --git a/packages/zero-next-plugin/src/virtual-css-loader.js b/packages/pigment-nextjs-plugin/src/virtual-css-loader.js
similarity index 100%
rename from packages/zero-next-plugin/src/virtual-css-loader.js
rename to packages/pigment-nextjs-plugin/src/virtual-css-loader.js
diff --git a/packages/zero-next-plugin/tsconfig.build.json b/packages/pigment-nextjs-plugin/tsconfig.build.json
similarity index 100%
rename from packages/zero-next-plugin/tsconfig.build.json
rename to packages/pigment-nextjs-plugin/tsconfig.build.json
diff --git a/packages/zero-next-plugin/tsconfig.json b/packages/pigment-nextjs-plugin/tsconfig.json
similarity index 100%
rename from packages/zero-next-plugin/tsconfig.json
rename to packages/pigment-nextjs-plugin/tsconfig.json
diff --git a/packages/zero-next-plugin/tsup.config.ts b/packages/pigment-nextjs-plugin/tsup.config.ts
similarity index 100%
rename from packages/zero-next-plugin/tsup.config.ts
rename to packages/pigment-nextjs-plugin/tsup.config.ts
diff --git a/packages/zero-next-plugin/zero-virtual.css b/packages/pigment-nextjs-plugin/zero-virtual.css
similarity index 100%
rename from packages/zero-next-plugin/zero-virtual.css
rename to packages/pigment-nextjs-plugin/zero-virtual.css
diff --git a/packages/zero-runtime/.eslintignore b/packages/pigment-react/.eslintignore
similarity index 100%
rename from packages/zero-runtime/.eslintignore
rename to packages/pigment-react/.eslintignore
diff --git a/packages/zero-runtime/.eslintrc b/packages/pigment-react/.eslintrc
similarity index 100%
rename from packages/zero-runtime/.eslintrc
rename to packages/pigment-react/.eslintrc
diff --git a/packages/zero-runtime/.gitignore b/packages/pigment-react/.gitignore
similarity index 100%
rename from packages/zero-runtime/.gitignore
rename to packages/pigment-react/.gitignore
diff --git a/packages/pigment-react/README.md b/packages/pigment-react/README.md
new file mode 100644
index 00000000000000..baf514ec870234
--- /dev/null
+++ b/packages/pigment-react/README.md
@@ -0,0 +1,717 @@
+# Pigment CSS
+
+Pigment CSS is a zero-runtime CSS-in-JS library that extracts the colocated styles to their own CSS files at build time.
+
+- [Getting started](#getting-started)
+ - [Why this project exists?](#why-choose-pigment-css)
+ - [Next.js](#nextjs-starter-template)
+ - [Vite](#vite-starter-template)
+- [Basic usage](#basic-usage)
+ - [Creating styles](#creating-styles)
+ - [Creating components](#creating-components)
+ - [Styling based on props](#styling-based-on-props)
+ - [Styling based on runtime values](#styling-based-on-runtime-values)
+ - [Styled component as a CSS selector](#styled-component-as-a-css-selector)
+ - [Typing props](#typing-props)
+- [Theming](#theming)
+ - [Accesing theme values](#accesing-theme-values)
+ - [CSS variables support](#css-variables-support)
+ - [Color schemes](#color-schemes)
+ - [Switching color schemes](#switching-color-schemes)
+ - [TypeScript](#typescript)
+- [How-to guides](#how-to-guides)
+ - [Coming from Emotion or styled-components](#coming-from-emotion-or-styled-components)
+
+## Getting started
+
+Pigment CSS supports Next.js and Vite with support for more bundlers in future. You must install the corresponding plugin, as shown below.
+
+### Why choose Pigment CSS
+
+Thanks to recent advancements in CSS (like CSS variables and `color-mix()`), "traditional" CSS-in-JS solutions that process styles at runtime are no longer required for unlocking features like color transformations and theme variables which are necessary for maintaining a sophisticated design system.
+
+Pigment CSS addresses the needs of the modern React developer by providing a zero-runtime CSS-in-JS styling solution as a successor to tools like Emotion and styled-components.
+
+Compared to its predecessors, Pigment CSS offers improved DX and runtime performance (though at the cost of increased build time) while also being compatible with React Server Components.
+Pigment CSS is built on top of [WyW-in-JS](https://wyw-in-js.dev/), enabling us to provide the smoothest possible experience for Material UI users when migrating from Emotion in v5 to Pigment in v6.
+
+### Next.js - Starter template
+
+Use the following commands to create a new Next.js project with Pigment CSS set up:
+
+```bash
+curl https://codeload.github.com/mui/material-ui/tar.gz/master | tar -xz --strip=2 material-ui-master/examples/pigment-css-nextjs-ts
+cd pigment-css-nextjs-ts
+```
+
+#### Manual installation
+
+```bash
+npm install @pigment-css/react
+npm install --save-dev @pigment-css/nextjs-plugin
+```
+
+Then, in your `next.config.js` file, import the plugin and wrap the exported config object:
+
+```js
+const { withPigment } = require('@pigment-css/nextjs-plugin');
+
+module.exports = withPigment({
+ // ... Your nextjs config.
+});
+```
+
+Finally, import the stylesheet in the root `layout.tsx` file:
+
+```diff
+ import type { Metadata } from 'next';
++import '@mui/zero-runtime/styles.css';
+
+ export const metadata: Metadata = {
+ title: 'Create Next App',
+ description: 'Generated by create next app',
+ };
+
+ export default function RootLayout(props: { children: React.ReactNode }) {
+ return (
+
+ {props.children}
+
+ );
+ }
+```
+
+### Vite - Starter template
+
+Use the following commands to create a new Vite project with Pigment CSS set up:
+
+```bash
+curl https://codeload.github.com/mui/material-ui/tar.gz/master | tar -xz --strip=2 material-ui-master/examples/pigment-css-vite-ts
+cd pigment-css-vite-ts
+```
+
+#### Manual installation
+
+```bash
+npm install @pigment-css/react
+npm install --save-dev @pigment-css/vite-plugin
+```
+
+Then, in your Vite config file, import the plugin and pass it to the `plugins` array as shown:
+
+```js
+import { pigment } from '@pigment-css/vite-plugin';
+
+export default defineConfig({
+ plugins: [
+ pigment(),
+ // ... Your other plugins.
+ ],
+});
+```
+
+Finally, import the stylesheet in the root `main.tsx` file:
+
+```diff
+ import * as React from 'react';
+ import { createRoot } from 'react-dom/client';
++import '@mui/zero-runtime/styles.css';
+ import App from './App';
+
+ const rootElement = document.getElementById('root');
+ const root = createRoot(rootElement);
+
+ root.render(
+
+
+ ,
+ );
+```
+
+## Basic usage
+
+**You must configure Pigment CSS with [Next.js](#nextjs) or [Vite](#vite) first.**
+
+### Creating styles
+
+Use the `css` API to create reusable styles:
+
+```js
+import { css } from '@pigment-css/react';
+
+const visuallyHidden = css({
+ border: 0,
+ clip: 'rect(0 0 0 0)',
+ height: '1px',
+ margin: -1,
+ overflow: 'hidden',
+ padding: 0,
+ position: 'absolute',
+ whiteSpace: 'nowrap',
+ width: '1px',
+});
+
+function App() {
+ return I am invisible
;
+}
+```
+
+The call to the `css` function will be replaced with a unique string that represents the CSS class name for the generated styles.
+
+Use a callback function to get access to the [theme](#theming) values:
+
+```js
+const title = css(({ theme }) => ({
+ color: theme.colors.primary,
+ fontSize: theme.spacing.unit * 4,
+ fontFamily: theme.typography.fontFamily,
+}));
+```
+
+### Creating components
+
+Use the `styled` API to create a component by passing styles at the end. The usage should be familiar if you've worked with Emotion or styled-components:
+
+```js
+import { styled } from '@pigment-css/react';
+
+const Heading = styled('div')({
+ fontSize: '4rem',
+ fontWeight: 'bold',
+ padding: '10px 0px',
+});
+
+function App() {
+ return Hello ;
+}
+```
+
+The Pigment CSS library differs from "standard" runtime CSS-in-JS libraries in a few ways:
+
+1. You never get direct access to props in your styled declarations. This is because prop values are only available at runtime, but the CSS is extracted at build time. See [Styling based on runtime values](#styling-based-on-runtime-values) for a workaround.
+2. Your styles must be declarative, and must account for all combinations of props that you want to style.
+3. The theme lets you declare CSS tokens that become part of the CSS bundle after the build. Any other values and methods that it might have are only available during build time—not at runtime. This leads to smaller bundle sizes.
+
+#### Styling based on props
+
+> 💡 This approach is recommended when the value of the prop is known at build time (finite values).
+
+Use the `variants` key to define styles for a combination of the component's props.
+
+Each variant is an object with `props` and `style` keys. The styles are applied when the component's props match the `props` object.
+
+**Example 1** — A button component with `small` and `large` sizes:
+
+```jsx
+const Button = styled('button')({
+ border: 'none',
+ padding: '0.75rem',
+ // ...other base styles
+ variants: [
+ {
+ props: { size: 'large' },
+ style: { padding: '1rem' },
+ },
+ {
+ props: { size: 'small' },
+ style: { padding: '0.5rem' },
+ },
+ ],
+});
+
+Normal button ; // padding: 0.75rem
+Large button ; // padding: 1rem
+Small button ; // padding: 0.5rem
+```
+
+**Example 2** — A button component with variants and colors:
+
+```jsx
+const Button = styled('button')({
+ border: 'none',
+ padding: '0.75rem',
+ // ...other base styles
+ variants: [
+ {
+ props: { variant: 'contained', color: 'primary' },
+ style: { backgroundColor: 'tomato', color: 'white' },
+ },
+ ],
+});
+
+// `backgroundColor: 'tomato', color: 'white'`
+
+ Submit
+ ;
+```
+
+**Example 3** — Apply styles based on a condition:
+
+The value of the `props` can be a function that returns a boolean. If the function returns `true`, the styles are applied.
+
+```jsx
+const Button = styled('button')({
+ border: 'none',
+ padding: '0.75rem',
+ // ...other base styles
+ variants: [
+ {
+ props: (props) => props.variant !== 'contained',
+ style: { backgroundColor: 'transparent' },
+ },
+ ],
+});
+```
+
+Note that the `props` function will not work if it is inside another closure, for example, inside an `array.map`:
+
+```jsx
+const Button = styled('button')({
+ border: 'none',
+ padding: '0.75rem',
+ // ...other base styles
+ variants: ['red', 'blue', 'green'].map((item) => ({
+ props: (props) => {
+ // ❌ Cannot access `item` in this closure
+ return props.color === item && !props.disabled;
+ },
+ style: { backgroundColor: 'tomato' },
+ })),
+});
+```
+
+Instead, use plain objects to define the variants:
+
+```jsx
+const Button = styled('button')({
+ border: 'none',
+ padding: '0.75rem',
+ // ...other base styles
+ variants: ['red', 'blue', 'green'].map((item) => ({
+ props: { color: item, disabled: false },
+ style: { backgroundColor: 'tomato' },
+ })),
+});
+```
+
+#### Styling based on runtime values
+
+> 💡 This approach is recommended when the value of a prop is **unknown** ahead of time or possibly unlimited values, e.g. styling based on the user's input.
+
+Use a callback function as a value to create a dynamic style for the specific CSS property:
+
+```jsx
+const Heading = styled('h1')({
+ color: ({ isError }) => (isError ? 'red' : 'black'),
+});
+```
+
+Pigment CSS will replace the callback with a CSS variable and inject the value through inline style. This makes it possible to create a static CSS file while still allowing dynamic styles.
+
+```css
+.Heading_class_akjsdfb {
+ color: var(--Heading_class_akjsdfb-0);
+}
+```
+
+```jsx
+ (isError ? 'red' : 'black'),
+ }}
+>
+ Hello
+
+```
+
+#### Styled component as a CSS selector
+
+All of the components that you create are also available as CSS selectors. For example, for the `Heading` component described in the previous section, you can target that component inside another styled component like this:
+
+```jsx
+const Wrapper = styled.div({
+ [`& .${Heading}`]: {
+ color: 'blue',
+ },
+});
+```
+
+This enables you to override the default `color` of the Heading component rendered inside the Wrapper:
+
+```tsx
+
+ Hello
+
+```
+
+You can also export any styled component you create and use it as the base for additional components:
+
+```tsx
+const ExtraHeading = styled(Heading)({
+ // ... overridden styled
+});
+```
+
+#### Typing props
+
+If you use TypeScript, add the props typing before the styles to get the type checking:
+
+```tsx
+const Heading = styled('h1')<{ isError?: boolean }>({
+ color: ({ isError }) => (isError ? 'red' : 'black'),
+});
+```
+
+### Creating animation keyframes
+
+Use the `keyframes` API to create reusable [animation keyframes](https://developer.mozilla.org/en-US/docs/Web/CSS/@keyframes):
+
+```js
+import { keyframes } from '@pigment-css/react';
+
+const fadeIn = keyframes`
+ from {
+ opacity: 0;
+ }
+ to {
+ opacity: 1;
+ }
+`;
+
+function Example1() {
+ return I am invisible
;
+}
+```
+
+The call to the `keyframes` function will be replaced with a unique string that represents the CSS animation name. It can be used with `css` or `styled` too.
+
+```js
+import { css, styled, keyframes } from '@pigment-css/react';
+
+const fadeIn = keyframes(...);
+
+const Example2 = styled('div')({
+ animation: `${fadeIn} 0.5s`,
+});
+
+function App() {
+ return (
+ <>
+
+
+ >
+ )
+}
+```
+
+### Theming
+
+Theming is an **optional** feature that lets you reuse the same values, such as colors, spacing, and typography, across your application. It is a plain object of any structure that you can define in your config file.
+
+> **💡 Good to know**:
+>
+> The **theme** object is used at build time and does not exist in the final JS bundle. This means that components created using Pigment's `styled` can be used with React Server Components by default while still getting the benefits of theming.
+
+For example, in Next.js, you can define a theme in the `next.config.js` file like this:
+
+```js
+const { withPigment } = require('@pigment-css/nextjs-plugin');
+
+module.exports = withPigment(
+ {
+ // ...other nextConfig
+ },
+ {
+ theme: {
+ colors: {
+ primary: 'tomato',
+ secondary: 'cyan',
+ },
+ spacing: {
+ unit: 8,
+ },
+ typography: {
+ fontFamily: 'Inter, sans-serif',
+ },
+ // ...more keys and values, it's free style!
+ },
+ },
+);
+```
+
+#### Accessing theme values
+
+A callback can be used with **styled** and **css** APIs to access the theme values:
+
+```js
+const Heading = styled('h1')(({ theme }) => ({
+ color: theme.colors.primary,
+ fontSize: theme.spacing.unit * 4,
+ fontFamily: theme.typography.fontFamily,
+}));
+```
+
+#### CSS variables support
+
+Pigment CSS can generate CSS variables from the theme values when you wrap your theme with `extendTheme` utility. For example, in a `next.config.js` file:
+
+```js
+const { withPigment, extendTheme } = require('@pigment-css/nextjs-plugin');
+
+module.exports = withPigment(
+ {
+ // ...nextConfig
+ },
+ {
+ theme: extendTheme({
+ colors: {
+ primary: 'tomato',
+ secondary: 'cyan',
+ },
+ spacing: {
+ unit: 8,
+ },
+ typography: {
+ fontFamily: 'Inter, sans-serif',
+ },
+ }),
+ },
+);
+```
+
+The `extendTheme` utility will go through the theme and create a `vars` object which represents the tokens that refer to CSS variables.
+
+```jsx
+const theme = extendTheme({
+ colors: {
+ primary: 'tomato',
+ secondary: 'cyan',
+ },
+});
+
+console.log(theme.colors.primary); // 'tomato'
+console.log(theme.vars.colors.primary); // 'var(--colors-primary)'
+```
+
+#### Color schemes
+
+Some tokens, especially color-related tokens, can have different values for different scenarios. For example in a daylight condition, the background color might be white, but in a dark condition, it might be black.
+
+The `extendTheme` utility lets you define theme with a special `colorSchemes` key:
+
+```jsx
+extendTheme({
+ colorSchemes: {
+ light: {
+ colors: {
+ background: '#f9f9f9',
+ foreground: '#121212',
+ },
+ },
+ dark: {
+ colors: {
+ background: '#212121',
+ foreground: '#fff',
+ },
+ },
+ },
+});
+```
+
+In the above example, `light` (default) and `dark` color schemes are defined. The structure of each color scheme must be a plain object with keys and values.
+
+#### Switching color schemes
+
+By default, when `colorSchemes` is defined, Pigment uses the [`prefers-color-scheme`](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme) media query to switch between color schemes based on user's system settings.
+
+However, if you want to control the color scheme based on application logic, for example, using a button to switch between light and dark mode, you can customize the behavior by providing a `getSelector` function:
+
+```diff
+ extendTheme({
+ colorSchemes: {
+ light: { ... },
+ dark: { ... },
+ },
++ getSelector: (colorScheme) => colorScheme ? `.theme-${colorScheme}` : ':root',
+ });
+```
+
+Note that you need to add the logic to a button by yourself. Here is an example of how to do it:
+
+```jsx
+function App() {
+ return (
+ {
+ document.documentElement.classList.toggle('theme-dark');
+ }}
+ >
+ Toggle color scheme
+
+ );
+}
+```
+
+#### Styling based on color scheme
+
+The `extendTheme` utility attach a function called `applyStyles` to the theme object. It receives a color scheme as the first argument followed by a style object. It will return a proper CSS selector based on the theme configuration.
+
+```jsx
+const Heading = styled('h1')(({ theme }) => ({
+ color: theme.colors.primary,
+ fontSize: theme.spacing.unit * 4,
+ fontFamily: theme.typography.fontFamily,
+ ...theme.applyStyles('dark', {
+ color: theme.colors.primaryLight,
+ }),
+}));
+```
+
+#### CSS variables prefix
+
+You can add a prefix to the generated CSS variables by providing a `cssVarPrefix` option to the `extendTheme` utility:
+
+```jsx
+extendTheme({
+ cssVarPrefix: 'pigment',
+});
+```
+
+The generated CSS variables will have the `pigment` prefix:
+
+```css
+:root {
+ --pigment-colors-background: #f9f9f9;
+ --pigment-colors-foreground: #121212;
+}
+```
+
+#### TypeScript
+
+To get the type checking for the theme, you need to augment the theme type:
+
+```ts
+// any file that is included in your tsconfig.json
+import type { ExtendTheme } from '@pigment-css/react';
+
+declare module '@pigment-css/react/theme' {
+ interface ThemeTokens {
+ // the structure of your theme
+ }
+
+ interface ThemeArgs {
+ theme: ExtendTheme<{
+ colorScheme: 'light' | 'dark';
+ tokens: ThemeTokens;
+ }>;
+ }
+}
+```
+
+## How-to guides
+
+### Coming from Emotion or styled-components
+
+Emotion and styled-components are runtime CSS-in-JS libraries. What you write in your styles is what you get in the final bundle, which means the styles can be as dynamic as you want with bundle size and performance overhead trade-offs.
+
+On the other hand, Pigment CSS extracts CSS at build time and replaces the JS code with hashed class names and some CSS variables. This means that it has to know all of the styles to be extracted ahead of time, so there are rules and limitations that you need to be aware of when using JavaScript callbacks or variables in Pigment CSS's APIs.
+
+Here are some common patterns and how to achieve them with Pigment CSS:
+
+1. **Fixed set of styles**
+
+In Emotion or styled-components, you can use props to create styles conditionally:
+
+```js
+const Flex = styled('div')((props) => ({
+ display: 'flex',
+ ...(props.vertical // ❌ Pigment CSS will throw an error
+ ? {
+ flexDirection: 'column',
+ paddingBlock: '1rem',
+ }
+ : {
+ paddingInline: '1rem',
+ }),
+}));
+```
+
+But in Pigment CSS, you need to define all of the styles ahead of time using the `variants` key:
+
+```js
+const Flex = styled('div')((props) => ({
+ display: 'flex',
+ variants: [
+ {
+ props: { vertical: true },
+ style: {
+ flexDirection: 'column',
+ paddingBlock: '1rem',
+ },
+ },
+ {
+ props: { vertical: false },
+ style: {
+ paddingInline: '1rem',
+ },
+ },
+ ],
+}));
+```
+
+> 💡 Keep in mind that the `variants` key is for fixed values of props, for example, a component's colors, sizes, and states.
+
+2. **Programatically generated styles**
+
+For Emotion and styled-components, the styles will be different on each render and instance because the styles are generated at runtime:
+
+```js
+function randomBetween(min: number, max: number) {
+ return Math.floor(Math.random() * (max - min + 1) + min);
+}
+function generateBubbleVars() {
+ return `
+ --x: ${randomBetween(10, 90)}%;
+ --y: ${randomBetween(15, 85)}%;
+ `;
+}
+
+function App() {
+ return (
+
+ {[...Array(10)].map((_, index) => (
+
+ ))}
+
+ )
+}
+```
+
+However, in Pigment CSS with the same code as above, all instances will have the same styles and won't change between renders because the styles are extracted at build time.
+
+To achieve the same result, you need to move the dynamic logic to props and pass the value to CSS variables instead:
+
+```js
+function randomBetween(min: number, max: number) {
+ return Math.floor(Math.random() * (max - min + 1) + min);
+}
+
+const Bubble = styled('div')({
+ '--x': props => props.x,
+ '--y': props => props.y,
+});
+
+function App() {
+ return (
+
+ {[...Array(10)].map((_, index) => (
+
+ ))}
+
+ )
+}
+```
diff --git a/packages/zero-runtime/exports/createUseThemeProps.js b/packages/pigment-react/exports/createUseThemeProps.js
similarity index 100%
rename from packages/zero-runtime/exports/createUseThemeProps.js
rename to packages/pigment-react/exports/createUseThemeProps.js
diff --git a/packages/zero-runtime/exports/css.js b/packages/pigment-react/exports/css.js
similarity index 100%
rename from packages/zero-runtime/exports/css.js
rename to packages/pigment-react/exports/css.js
diff --git a/packages/zero-runtime/exports/generateAtomics.js b/packages/pigment-react/exports/generateAtomics.js
similarity index 100%
rename from packages/zero-runtime/exports/generateAtomics.js
rename to packages/pigment-react/exports/generateAtomics.js
diff --git a/packages/zero-runtime/exports/keyframes.js b/packages/pigment-react/exports/keyframes.js
similarity index 100%
rename from packages/zero-runtime/exports/keyframes.js
rename to packages/pigment-react/exports/keyframes.js
diff --git a/packages/zero-runtime/exports/styled.js b/packages/pigment-react/exports/styled.js
similarity index 100%
rename from packages/zero-runtime/exports/styled.js
rename to packages/pigment-react/exports/styled.js
diff --git a/packages/zero-runtime/exports/sx-plugin.js b/packages/pigment-react/exports/sx-plugin.js
similarity index 100%
rename from packages/zero-runtime/exports/sx-plugin.js
rename to packages/pigment-react/exports/sx-plugin.js
diff --git a/packages/zero-runtime/exports/sx.js b/packages/pigment-react/exports/sx.js
similarity index 100%
rename from packages/zero-runtime/exports/sx.js
rename to packages/pigment-react/exports/sx.js
diff --git a/packages/zero-runtime/package.json b/packages/pigment-react/package.json
similarity index 84%
rename from packages/zero-runtime/package.json
rename to packages/pigment-react/package.json
index d427fcdde858b6..f82fe99d7c1855 100644
--- a/packages/zero-runtime/package.json
+++ b/packages/pigment-react/package.json
@@ -1,5 +1,5 @@
{
- "name": "@mui/zero-runtime",
+ "name": "@pigment-css/react",
"version": "0.0.1",
"main": "build/index.js",
"module": "build/index.mjs",
@@ -9,13 +9,13 @@
"repository": {
"type": "git",
"url": "https://github.com/mui/material-ui.git",
- "directory": "packages/zero-runtime"
+ "directory": "packages/pigment-react"
},
"license": "MIT",
"bugs": {
"url": "https://github.com/mui/material-ui/issues"
},
- "homepage": "https://github.com/mui/material-ui/tree/master/packages/zero-runtime",
+ "homepage": "https://github.com/mui/material-ui/tree/master/packages/pigment-react",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/mui-org"
@@ -23,10 +23,11 @@
"scripts": {
"clean": "rimraf build types processors utils",
"watch": "tsup --watch --clean false",
- "copy-license": "node ../../scripts/zero-runtime-license.mjs",
+ "copy-license": "node ../../scripts/pigment-license.mjs",
"build": "tsup",
- "test": "cd ../../ && cross-env NODE_ENV=test mocha 'packages/zero-runtime/**/*.test.{js,ts,tsx}'",
- "test:ci": "cd ../../ && cross-env NODE_ENV=test BABEL_ENV=coverage nyc --reporter=lcov --report-dir=./coverage/zero mocha 'packages/zero-runtime/**/*.test.{js,ts,tsx}'",
+ "test": "cd ../../ && cross-env NODE_ENV=test mocha 'packages/pigment-react/**/*.test.{js,ts,tsx}'",
+ "test:update": "cd ../../ && cross-env NODE_ENV=test UPDATE_FIXTURES=true mocha 'packages/pigment-react/**/*.test.{js,ts,tsx}'",
+ "test:ci": "cd ../../ && cross-env NODE_ENV=test BABEL_ENV=coverage nyc --reporter=lcov --report-dir=./coverage/pigment-react mocha 'packages/pigment-react/**/*.test.{js,ts,tsx}'",
"typecheck": "tsc --noEmit -p ."
},
"dependencies": {
@@ -36,13 +37,13 @@
"@babel/parser": "^7.23.9",
"@babel/types": "^7.23.9",
"@emotion/css": "^11.11.2",
+ "@emotion/react": "^11.11.4",
"@emotion/serialize": "^1.1.3",
"@emotion/styled": "^11.11.0",
- "@emotion/react": "^11.11.3",
"@mui/system": "workspace:^",
- "@wyw-in-js/processor-utils": "^0.4.1",
- "@wyw-in-js/shared": "^0.4.1",
- "@wyw-in-js/transform": "^0.4.1",
+ "@wyw-in-js/processor-utils": "^0.5.0",
+ "@wyw-in-js/shared": "^0.5.0",
+ "@wyw-in-js/transform": "^0.5.0",
"clsx": "^2.1.0",
"cssesc": "^3.0.0",
"csstype": "^3.1.3",
@@ -53,12 +54,14 @@
"@types/babel__core": "^7.20.5",
"@types/babel__helper-module-imports": "^7.18.3",
"@types/babel__helper-plugin-utils": "^7.10.3",
+ "@types/chai": "^4.3.12",
"@types/cssesc": "^3.0.2",
"@types/lodash": "^4.14.202",
- "@types/node": "^18.19.15",
+ "@types/node": "^18.19.21",
"@types/react": "^18.2.55",
"@types/stylis": "^4.2.5",
"chai": "^4.4.1",
+ "prettier": "^3.2.5",
"react": "^18.2.0"
},
"peerDependencies": {
diff --git a/packages/zero-runtime/src/base.d.ts b/packages/pigment-react/src/base.d.ts
similarity index 100%
rename from packages/zero-runtime/src/base.d.ts
rename to packages/pigment-react/src/base.d.ts
diff --git a/packages/zero-runtime/src/createUseThemeProps.d.ts b/packages/pigment-react/src/createUseThemeProps.d.ts
similarity index 100%
rename from packages/zero-runtime/src/createUseThemeProps.d.ts
rename to packages/pigment-react/src/createUseThemeProps.d.ts
diff --git a/packages/zero-runtime/src/createUseThemeProps.js b/packages/pigment-react/src/createUseThemeProps.js
similarity index 100%
rename from packages/zero-runtime/src/createUseThemeProps.js
rename to packages/pigment-react/src/createUseThemeProps.js
diff --git a/packages/zero-runtime/src/css.d.ts b/packages/pigment-react/src/css.d.ts
similarity index 100%
rename from packages/zero-runtime/src/css.d.ts
rename to packages/pigment-react/src/css.d.ts
diff --git a/packages/pigment-react/src/css.js b/packages/pigment-react/src/css.js
new file mode 100644
index 00000000000000..39cdb04db50bf4
--- /dev/null
+++ b/packages/pigment-react/src/css.js
@@ -0,0 +1,5 @@
+export default function css() {
+ throw new Error(
+ `${process.env.PACKAGE_NAME}: You were trying to call "css" function without configuring your bundler. Make sure to install the bundler specific plugin and use it. @pigment-css/vite-plugin for Vite integration or @pigment-css/nextjs-plugin for Next.js integration.`,
+ );
+}
diff --git a/packages/zero-runtime/src/generateAtomics.d.ts b/packages/pigment-react/src/generateAtomics.d.ts
similarity index 100%
rename from packages/zero-runtime/src/generateAtomics.d.ts
rename to packages/pigment-react/src/generateAtomics.d.ts
diff --git a/packages/zero-runtime/src/generateAtomics.js b/packages/pigment-react/src/generateAtomics.js
similarity index 85%
rename from packages/zero-runtime/src/generateAtomics.js
rename to packages/pigment-react/src/generateAtomics.js
index f9b1820217270e..442e1f6711ee5c 100644
--- a/packages/zero-runtime/src/generateAtomics.js
+++ b/packages/pigment-react/src/generateAtomics.js
@@ -2,7 +2,7 @@ import cx from 'clsx';
export function generateAtomics() {
throw new Error(
- 'MUI: You were trying to call "generateAtomics" function directly without configuring your bundler. Make sure to install the bundler specific plugin and use it.',
+ `${process.env.PACKAGE_NAME}: You were trying to call "generateAtomics" function without configuring your bundler. Make sure to install the bundler specific plugin and use it. @pigment-css/vite-plugin for Vite integration or @pigment-css/nextjs-plugin for Next.js integration.`,
);
}
diff --git a/packages/zero-runtime/src/index.ts b/packages/pigment-react/src/index.ts
similarity index 100%
rename from packages/zero-runtime/src/index.ts
rename to packages/pigment-react/src/index.ts
diff --git a/packages/zero-runtime/src/keyframes.d.ts b/packages/pigment-react/src/keyframes.d.ts
similarity index 90%
rename from packages/zero-runtime/src/keyframes.d.ts
rename to packages/pigment-react/src/keyframes.d.ts
index 29355d64674fb8..5c65aa2aee9c73 100644
--- a/packages/zero-runtime/src/keyframes.d.ts
+++ b/packages/pigment-react/src/keyframes.d.ts
@@ -1,7 +1,7 @@
import type { CSSProperties } from './base';
import type { ThemeArgs } from './theme';
-type Primitve = string | null | undefined | boolean | number;
+export type Primitve = string | null | undefined | boolean | number;
interface KeyframesObject {
[key: string]: {
diff --git a/packages/pigment-react/src/keyframes.js b/packages/pigment-react/src/keyframes.js
new file mode 100644
index 00000000000000..197d509e941068
--- /dev/null
+++ b/packages/pigment-react/src/keyframes.js
@@ -0,0 +1,5 @@
+export default function keyframes() {
+ throw new Error(
+ `${process.env.PACKAGE_NAME}: You were trying to call "keyframes" function without configuring your bundler. Make sure to install the bundler specific plugin and use it. @pigment-css/vite-plugin for Vite integration or @pigment-css/nextjs-plugin for Next.js integration.`,
+ );
+}
diff --git a/packages/zero-runtime/src/processors/base-processor.ts b/packages/pigment-react/src/processors/base-processor.ts
similarity index 100%
rename from packages/zero-runtime/src/processors/base-processor.ts
rename to packages/pigment-react/src/processors/base-processor.ts
diff --git a/packages/zero-runtime/src/processors/createUseThemeProps.ts b/packages/pigment-react/src/processors/createUseThemeProps.ts
similarity index 100%
rename from packages/zero-runtime/src/processors/createUseThemeProps.ts
rename to packages/pigment-react/src/processors/createUseThemeProps.ts
diff --git a/packages/zero-runtime/src/processors/css.ts b/packages/pigment-react/src/processors/css.ts
similarity index 99%
rename from packages/zero-runtime/src/processors/css.ts
rename to packages/pigment-react/src/processors/css.ts
index 7cc910f56f82ca..7511c7a39cf925 100644
--- a/packages/zero-runtime/src/processors/css.ts
+++ b/packages/pigment-react/src/processors/css.ts
@@ -21,7 +21,7 @@ import type { Primitive, TemplateCallback } from './keyframes';
*
* @example
* ```ts
- * import { css } from '@mui/zero-runtime';
+ * import { css } from '@pigment-css/react';
*
* const class1 = css(({theme}) => ({
* color: (theme.vars || theme).palette.primary.main,
diff --git a/packages/zero-runtime/src/processors/generateAtomics.ts b/packages/pigment-react/src/processors/generateAtomics.ts
similarity index 100%
rename from packages/zero-runtime/src/processors/generateAtomics.ts
rename to packages/pigment-react/src/processors/generateAtomics.ts
diff --git a/packages/zero-runtime/src/processors/keyframes.ts b/packages/pigment-react/src/processors/keyframes.ts
similarity index 100%
rename from packages/zero-runtime/src/processors/keyframes.ts
rename to packages/pigment-react/src/processors/keyframes.ts
diff --git a/packages/zero-runtime/src/processors/styled.ts b/packages/pigment-react/src/processors/styled.ts
similarity index 79%
rename from packages/zero-runtime/src/processors/styled.ts
rename to packages/pigment-react/src/processors/styled.ts
index 44f6f435e33bc8..82f91f9775e47f 100644
--- a/packages/zero-runtime/src/processors/styled.ts
+++ b/packages/pigment-react/src/processors/styled.ts
@@ -1,5 +1,11 @@
import { parseExpression } from '@babel/parser';
-import type { ObjectExpression, SourceLocation, Identifier, Expression } from '@babel/types';
+import type {
+ ObjectExpression,
+ SourceLocation,
+ Identifier,
+ Expression,
+ TemplateElement,
+} from '@babel/types';
import {
Params,
TailProcessorParams,
@@ -21,6 +27,8 @@ import { cssFnValueToVariable } from '../utils/cssFnValueToVariable';
import { processCssObject } from '../utils/processCssObject';
import { valueToLiteral } from '../utils/valueToLiteral';
import BaseProcessor from './base-processor';
+import { Primitive, TemplateCallback } from './keyframes';
+import { cache, css } from '../utils/emotion';
type Theme = { [key: 'unstable_sxConfig' | string]: string | number | Theme };
@@ -91,7 +99,7 @@ type ComponentMeta = {
* }
* ```
*
- * For linaria tag processors, we need to implement 3 methods of BaseProcessor -
+ * For Wyw-in-JS tag processors, we need to implement 3 methods of BaseProcessor -
* 1. doEvaltimeReplacement
* 2. build
* 3. doRuntimeReplacement
@@ -103,7 +111,7 @@ export class StyledProcessor extends BaseProcessor {
componentMetaArg?: LazyValue;
- styleArgs: ExpressionValue[];
+ styleArgs: ExpressionValue[] | (TemplateElement | ExpressionValue)[];
finalVariants: {
props: Record;
@@ -124,6 +132,8 @@ export class StyledProcessor extends BaseProcessor {
originalLocation: SourceLocation | null = null;
+ isTemplateTag: boolean;
+
constructor(params: Params, ...args: TailProcessorParams) {
if (params.length <= 2) {
// no need to do any processing if it is an already transformed call or just a reference.
@@ -135,9 +145,10 @@ export class StyledProcessor extends BaseProcessor {
['callee', ['call', 'member'], ['call', 'template']],
`Invalid use of ${this.tagSource.imported} tag.`,
);
- const [callee, memberOrCall, styleCall] = params;
+ const [callee, memberOrCall, styleCallOrTemplate] = params;
const [callType, componentArg, componentMetaArg] = memberOrCall;
- const [, ...styleArgs] = styleCall;
+ const [, ...styleArgs] = styleCallOrTemplate;
+ this.isTemplateTag = styleCallOrTemplate[0] === 'template';
this.componentMetaArg =
componentMetaArg && componentMetaArg.kind === ValueType.LAZY ? componentMetaArg : undefined;
this.styleArgs = styleArgs as ExpressionValue[];
@@ -167,12 +178,11 @@ export class StyledProcessor extends BaseProcessor {
if (!this.component) {
throw new Error('Invalid usage of `styled` tag');
}
- styleArgs.forEach((item) => {
- if (!Array.isArray(item)) {
- if ('kind' in item) {
- // push item in dependencies so that they get evaluated and we receive its value in build call.
- this.dependencies.push(item);
- }
+
+ styleArgs.flat().forEach((item) => {
+ if ('kind' in item) {
+ // push item in dependencies so that they get evaluated and we receive its value in build call.
+ this.dependencies.push(item);
}
});
if (callee[0] === 'callee') {
@@ -192,8 +202,93 @@ export class StyledProcessor extends BaseProcessor {
}`;
}
+ private generateArtifacts() {
+ const artifacts: [Rules, Replacements][] = this.collectedStyles.map(([className, cssText]) => {
+ const rules: Rules = {
+ [`.${className}`]: {
+ className,
+ cssText,
+ displayName: this.displayName,
+ start: this.location?.start ?? null,
+ },
+ };
+ // @TODO - Refactor for finer location tracking in original code.
+ const replacements: Replacements = [
+ {
+ length: cssText.length,
+ original: {
+ start: {
+ column: this.location?.start.column ?? 0,
+ line: this.location?.start.line ?? 0,
+ },
+ end: {
+ column: this.location?.end.column ?? 0,
+ line: this.location?.end.line ?? 0,
+ },
+ },
+ },
+ ];
+ return [rules, replacements];
+ });
+ artifacts.forEach((artifact) => {
+ // Wyw-in-JS accesses artifacts array to get the final
+ // css definitions which are then exposed to the bundler.
+ this.artifacts.push(['css', artifact]);
+ });
+ }
+
+ private buildForTemplateTag(values: ValueCache): void {
+ const templateStrs: string[] = [];
+ // @ts-ignore @TODO - Fix this. No idea how to initialize a Tagged String array.
+ templateStrs.raw = [];
+ const templateExpressions: Primitive[] = [];
+ const { themeArgs } = this.options as IOptions;
+
+ this.styleArgs.flat().forEach((item) => {
+ if ('kind' in item) {
+ switch (item.kind) {
+ case ValueType.FUNCTION: {
+ const value = values.get(item.ex.name) as TemplateCallback;
+ templateExpressions.push(value(themeArgs));
+ break;
+ }
+ case ValueType.CONST:
+ templateExpressions.push(item.value);
+ break;
+ case ValueType.LAZY: {
+ const evaluatedValue = values.get(item.ex.name);
+ if (typeof evaluatedValue === 'function') {
+ templateExpressions.push(evaluatedValue(themeArgs));
+ } else {
+ templateExpressions.push(evaluatedValue as Primitive);
+ }
+ break;
+ }
+ default:
+ break;
+ }
+ } else if (item.type === 'TemplateElement') {
+ templateStrs.push(item.value.cooked as string);
+ // @ts-ignore
+ templateStrs.raw.push(item.value.raw);
+ }
+ });
+ const cssClassName = css(templateStrs, ...templateExpressions);
+ const cssText = cache.registered[cssClassName] as string;
+
+ const baseClass = this.getClassName();
+ this.baseClasses.push(baseClass);
+ this.collectedStyles.push([baseClass, cssText, null]);
+ const variantsAccumulator: VariantData[] = [];
+ this.processOverrides(values, variantsAccumulator);
+ variantsAccumulator.forEach((variant) => {
+ this.processVariant(variant);
+ });
+ this.generateArtifacts();
+ }
+
/**
- * There are 2 main phases in Linaria's processing, Evaltime and Runtime. During Evaltime, Linaria prepares minimal code that gets evaluated to get the actual values of the styled arguments. Here, we mostly want to replace the styled calls with a simple string/object of its classname. This is necessary for class composition. For ex, you could potentially do this -
+ * There are 2 main phases in Wyw-in-JS's processing, Evaltime and Runtime. During Evaltime, Wyw-in-JS prepares minimal code that gets evaluated to get the actual values of the styled arguments. Here, we mostly want to replace the styled calls with a simple string/object of its classname. This is necessary for class composition. For ex, you could potentially do this -
* ```js
* const Component = styled(...)(...)
* const Component2 = styled()({
@@ -209,7 +304,7 @@ export class StyledProcessor extends BaseProcessor {
}
/**
- * This is called by linaria after evaluating the code. Here, we
+ * This is called by Wyw-in-JS after evaluating the code. Here, we
* get access to the actual values of the `styled` arguments
* which we can use to generate our styles.
* Order of processing styles -
@@ -219,6 +314,10 @@ export class StyledProcessor extends BaseProcessor {
* 3. Variants declared in theme object
*/
build(values: ValueCache): void {
+ if (this.isTemplateTag) {
+ this.buildForTemplateTag(values);
+ return;
+ }
const themeImportIdentifier = this.astService.addDefaultImport(
`${process.env.PACKAGE_NAME}/theme`,
'theme',
@@ -226,45 +325,14 @@ export class StyledProcessor extends BaseProcessor {
// all the variant definitions are collected here so that we can
// apply variant styles after base styles for more specific targetting.
const variantsAccumulator: VariantData[] = [];
- this.styleArgs.forEach((styleArg) => {
+ (this.styleArgs as ExpressionValue[]).forEach((styleArg) => {
this.processStyle(values, styleArg, variantsAccumulator, themeImportIdentifier.name);
});
this.processOverrides(values, variantsAccumulator);
variantsAccumulator.forEach((variant) => {
this.processVariant(variant);
});
- const artifacts: [Rules, Replacements][] = this.collectedStyles.map(([className, cssText]) => {
- const rules: Rules = {
- [`.${className}`]: {
- className,
- cssText,
- displayName: this.displayName,
- start: this.location?.start ?? null,
- },
- };
- // @TODO - Refactor for finer location tracking in original code.
- const replacements: Replacements = [
- {
- length: cssText.length,
- original: {
- start: {
- column: this.location?.start.column ?? 0,
- line: this.location?.start.line ?? 0,
- },
- end: {
- column: this.location?.end.column ?? 0,
- line: this.location?.end.line ?? 0,
- },
- },
- },
- ];
- return [rules, replacements];
- });
- artifacts.forEach((artifact) => {
- // linaria accesses artifacts array to get the final
- // css definitions which are then exposed to the bundler.
- this.artifacts.push(['css', artifact]);
- });
+ this.generateArtifacts();
}
/**
@@ -306,15 +374,15 @@ export class StyledProcessor extends BaseProcessor {
typeof t.objectProperty | typeof t.spreadElement | typeof t.objectMethod
>[] = [];
- if (this.baseClasses.length) {
- const classNames = Array.from(new Set([this.className, ...this.baseClasses]));
- argProperties.push(
- t.objectProperty(
- t.identifier('classes'),
- t.arrayExpression(classNames.map((cls) => t.stringLiteral(cls))),
- ),
- );
- }
+ const classNames = Array.from(
+ new Set([this.className, ...(this.baseClasses.length ? this.baseClasses : [])]),
+ );
+ argProperties.push(
+ t.objectProperty(
+ t.identifier('classes'),
+ t.arrayExpression(classNames.map((cls) => t.stringLiteral(cls))),
+ ),
+ );
const varProperties: ReturnType[] = this.collectedVariables.map(
([variableId, expression, isUnitLess]) =>
@@ -350,7 +418,6 @@ export class StyledProcessor extends BaseProcessor {
componentMetaExpression ? [componentName, componentMetaExpression] : [componentName],
);
const mainCall = t.callExpression(styledCall, [t.objectExpression(argProperties)]);
-
this.replacer(mainCall, true);
}
diff --git a/packages/zero-runtime/src/processors/sx.ts b/packages/pigment-react/src/processors/sx.ts
similarity index 100%
rename from packages/zero-runtime/src/processors/sx.ts
rename to packages/pigment-react/src/processors/sx.ts
diff --git a/packages/zero-runtime/src/styled.d.ts b/packages/pigment-react/src/styled.d.ts
similarity index 92%
rename from packages/zero-runtime/src/styled.d.ts
rename to packages/pigment-react/src/styled.d.ts
index f9f2bbd05fccfb..b518a903161460 100644
--- a/packages/zero-runtime/src/styled.d.ts
+++ b/packages/pigment-react/src/styled.d.ts
@@ -2,6 +2,7 @@ import type * as React from 'react';
import type { CSSObject } from './base';
import type { ThemeArgs } from './theme';
import type { SxProp } from './sx';
+import { Primitve } from './keyframes';
type Falsy = false | 0 | '' | null | undefined;
@@ -58,6 +59,11 @@ export interface CreateStyledComponent<
Component extends React.ElementType,
OuterProps extends object,
> {
+ (
+ styles: TemplateStringsArray,
+ ...args: Array<(options: ThemeArgs) => Primitve | Primitve | React.ComponentClass>
+ ): StyledComponent & (Component extends string ? BaseDefaultProps : Component);
+
/**
* @typeparam Props: Additional props to add to the styled component
*/
diff --git a/packages/zero-runtime/src/styled.jsx b/packages/pigment-react/src/styled.jsx
similarity index 100%
rename from packages/zero-runtime/src/styled.jsx
rename to packages/pigment-react/src/styled.jsx
diff --git a/packages/zero-runtime/src/sx.d.ts b/packages/pigment-react/src/sx.d.ts
similarity index 100%
rename from packages/zero-runtime/src/sx.d.ts
rename to packages/pigment-react/src/sx.d.ts
diff --git a/packages/zero-runtime/src/sx.js b/packages/pigment-react/src/sx.js
similarity index 100%
rename from packages/zero-runtime/src/sx.js
rename to packages/pigment-react/src/sx.js
diff --git a/packages/zero-runtime/src/theme.ts b/packages/pigment-react/src/theme.ts
similarity index 100%
rename from packages/zero-runtime/src/theme.ts
rename to packages/pigment-react/src/theme.ts
diff --git a/packages/zero-runtime/src/utils/checkStaticObjectOrArray.ts b/packages/pigment-react/src/utils/checkStaticObjectOrArray.ts
similarity index 100%
rename from packages/zero-runtime/src/utils/checkStaticObjectOrArray.ts
rename to packages/pigment-react/src/utils/checkStaticObjectOrArray.ts
diff --git a/packages/zero-runtime/src/utils/convertAtomicsToCss.ts b/packages/pigment-react/src/utils/convertAtomicsToCss.ts
similarity index 100%
rename from packages/zero-runtime/src/utils/convertAtomicsToCss.ts
rename to packages/pigment-react/src/utils/convertAtomicsToCss.ts
diff --git a/packages/zero-runtime/src/utils/cssFnValueToVariable.ts b/packages/pigment-react/src/utils/cssFnValueToVariable.ts
similarity index 100%
rename from packages/zero-runtime/src/utils/cssFnValueToVariable.ts
rename to packages/pigment-react/src/utils/cssFnValueToVariable.ts
diff --git a/packages/zero-runtime/src/utils/cssFunctionTransformerPlugin.ts b/packages/pigment-react/src/utils/cssFunctionTransformerPlugin.ts
similarity index 96%
rename from packages/zero-runtime/src/utils/cssFunctionTransformerPlugin.ts
rename to packages/pigment-react/src/utils/cssFunctionTransformerPlugin.ts
index b5d5d4b8db2d2a..1a4985c50f0625 100644
--- a/packages/zero-runtime/src/utils/cssFunctionTransformerPlugin.ts
+++ b/packages/pigment-react/src/utils/cssFunctionTransformerPlugin.ts
@@ -31,7 +31,7 @@ const cssFunctionTransformerPlugin = declare((api, pluginOpt
const finalPrefix = theme?.cssVarPrefix || '';
return {
- name: '@mui/zero-internal/cssFunctionTransformerPlugin',
+ name: '@pigmentcss/zero-internal/cssFunctionTransformerPlugin',
visitor: {
// @TODO - Maybe add support for plain strings in template
// literals as well.
diff --git a/packages/zero-runtime/src/utils/emotion.ts b/packages/pigment-react/src/utils/emotion.ts
similarity index 100%
rename from packages/zero-runtime/src/utils/emotion.ts
rename to packages/pigment-react/src/utils/emotion.ts
diff --git a/packages/zero-runtime/src/utils/extendTheme.ts b/packages/pigment-react/src/utils/extendTheme.ts
similarity index 100%
rename from packages/zero-runtime/src/utils/extendTheme.ts
rename to packages/pigment-react/src/utils/extendTheme.ts
diff --git a/packages/zero-runtime/src/utils/generateCss.ts b/packages/pigment-react/src/utils/generateCss.ts
similarity index 100%
rename from packages/zero-runtime/src/utils/generateCss.ts
rename to packages/pigment-react/src/utils/generateCss.ts
diff --git a/packages/zero-runtime/src/utils/index.ts b/packages/pigment-react/src/utils/index.ts
similarity index 100%
rename from packages/zero-runtime/src/utils/index.ts
rename to packages/pigment-react/src/utils/index.ts
diff --git a/packages/zero-runtime/src/utils/isUnitLess.ts b/packages/pigment-react/src/utils/isUnitLess.ts
similarity index 100%
rename from packages/zero-runtime/src/utils/isUnitLess.ts
rename to packages/pigment-react/src/utils/isUnitLess.ts
diff --git a/packages/zero-runtime/src/utils/pre-linaria-plugin.ts b/packages/pigment-react/src/utils/pre-linaria-plugin.ts
similarity index 98%
rename from packages/zero-runtime/src/utils/pre-linaria-plugin.ts
rename to packages/pigment-react/src/utils/pre-linaria-plugin.ts
index d107175ef37f2f..17a41372362750 100644
--- a/packages/zero-runtime/src/utils/pre-linaria-plugin.ts
+++ b/packages/pigment-react/src/utils/pre-linaria-plugin.ts
@@ -6,7 +6,7 @@ export const babelPlugin = declare((api) => {
api.assertVersion(7);
const { types: t } = api;
return {
- name: '@mui/zero-babel-plugin',
+ name: '@pigmentcss/zero-babel-plugin',
visitor: {
JSXAttribute(path) {
const namePath = path.get('name');
diff --git a/packages/zero-runtime/src/utils/preprocessor.ts b/packages/pigment-react/src/utils/preprocessor.ts
similarity index 100%
rename from packages/zero-runtime/src/utils/preprocessor.ts
rename to packages/pigment-react/src/utils/preprocessor.ts
diff --git a/packages/zero-runtime/src/utils/processCssObject.ts b/packages/pigment-react/src/utils/processCssObject.ts
similarity index 100%
rename from packages/zero-runtime/src/utils/processCssObject.ts
rename to packages/pigment-react/src/utils/processCssObject.ts
diff --git a/packages/zero-runtime/src/utils/sxObjectExtractor.ts b/packages/pigment-react/src/utils/sxObjectExtractor.ts
similarity index 100%
rename from packages/zero-runtime/src/utils/sxObjectExtractor.ts
rename to packages/pigment-react/src/utils/sxObjectExtractor.ts
diff --git a/packages/zero-runtime/src/utils/valueToLiteral.ts b/packages/pigment-react/src/utils/valueToLiteral.ts
similarity index 100%
rename from packages/zero-runtime/src/utils/valueToLiteral.ts
rename to packages/pigment-react/src/utils/valueToLiteral.ts
diff --git a/packages/zero-runtime/styles.css b/packages/pigment-react/styles.css
similarity index 100%
rename from packages/zero-runtime/styles.css
rename to packages/pigment-react/styles.css
diff --git a/packages/pigment-react/tests/README.md b/packages/pigment-react/tests/README.md
new file mode 100644
index 00000000000000..5da4275ebf7d59
--- /dev/null
+++ b/packages/pigment-react/tests/README.md
@@ -0,0 +1,35 @@
+# Pigment CSS testing
+
+## Folder structure
+
+- `tests` is the root folder for all tests
+ - `fixtures` contains all the fixtures for the tests
+ - `*.input.js` are the input files created manually
+ - `*.output.*` are the expected output files created by running the tests
+ - `*.test.js` are the test files that run the fixtures
+
+## Running tests
+
+At the root project terminal:
+
+```bash
+pnpm nx run @pigment-css/react:test
+```
+
+To update the output fixtures:
+
+```bash
+pnpm nx run @pigment-css/react:test:update
+```
+
+## Adding new tests
+
+Each folder inside `tests` is a Pigment CSS feature. To add a new test, create a new folder with the feature name and add a new test file with the `.test.js` extension. Inside the test file, import the fixtures and run the tests.
+
+## Adding new fixtures
+
+Create a new file name with `[name].input.js` and add `styled`, `css` or other Pigment CSS calls into the file.
+
+The first time you run the tests, the output files will be created automatically. Then check the output files to make sure they are correct.
+
+For any implementation changes after that, if you want to update the output files, run the tests with the `test:update` script.
diff --git a/packages/pigment-react/tests/css/css.test.ts b/packages/pigment-react/tests/css/css.test.ts
new file mode 100644
index 00000000000000..d926f6de9a4162
--- /dev/null
+++ b/packages/pigment-react/tests/css/css.test.ts
@@ -0,0 +1,40 @@
+import path from 'node:path';
+import { runTransformation, expect } from '../testUtils';
+
+const theme = {
+ palette: {
+ primary: {
+ main: 'red',
+ },
+ },
+ size: {
+ font: {
+ h1: '3rem',
+ },
+ },
+ components: {
+ MuiSlider: {
+ styleOverrides: {
+ rail: {
+ fontSize: '3rem',
+ },
+ },
+ },
+ },
+};
+
+describe('Pigment CSS - css', () => {
+ it('basics', async () => {
+ const { output, fixture } = await runTransformation(
+ path.join(__dirname, 'fixtures/css.input.js'),
+ {
+ themeArgs: {
+ theme,
+ },
+ },
+ );
+
+ expect(output.js).to.equal(fixture.js);
+ expect(output.css).to.equal(fixture.css);
+ });
+});
diff --git a/packages/pigment-react/tests/css/fixtures/css.input.js b/packages/pigment-react/tests/css/fixtures/css.input.js
new file mode 100644
index 00000000000000..24519d991b09ac
--- /dev/null
+++ b/packages/pigment-react/tests/css/fixtures/css.input.js
@@ -0,0 +1,6 @@
+import { css } from '@pigment-css/react';
+
+const cls1 = css`
+ color: ${({ theme }) => theme.palette.primary.main};
+ font-size: ${({ theme }) => theme.size.font.h1};
+`;
diff --git a/packages/pigment-react/tests/css/fixtures/css.output.css b/packages/pigment-react/tests/css/fixtures/css.output.css
new file mode 100644
index 00000000000000..e34d404861da6d
--- /dev/null
+++ b/packages/pigment-react/tests/css/fixtures/css.output.css
@@ -0,0 +1,4 @@
+.c1wr0t7p {
+ color: red;
+ font-size: 3rem;
+}
diff --git a/packages/pigment-react/tests/css/fixtures/css.output.js b/packages/pigment-react/tests/css/fixtures/css.output.js
new file mode 100644
index 00000000000000..afbe5dcc772db6
--- /dev/null
+++ b/packages/pigment-react/tests/css/fixtures/css.output.js
@@ -0,0 +1 @@
+const cls1 = 'c1wr0t7p';
diff --git a/packages/pigment-react/tests/keyframes/fixtures/keyframes.input.js b/packages/pigment-react/tests/keyframes/fixtures/keyframes.input.js
new file mode 100644
index 00000000000000..8ff26f9d247b2b
--- /dev/null
+++ b/packages/pigment-react/tests/keyframes/fixtures/keyframes.input.js
@@ -0,0 +1,10 @@
+import { keyframes } from '@pigment-css/react';
+
+const rotateKeyframe = keyframes({
+ from: {
+ transform: 'rotate(360deg)',
+ },
+ to: {
+ transform: 'rotate(0deg)',
+ },
+});
diff --git a/packages/pigment-react/tests/keyframes/fixtures/keyframes.output.css b/packages/pigment-react/tests/keyframes/fixtures/keyframes.output.css
new file mode 100644
index 00000000000000..43ac2b3341e9fb
--- /dev/null
+++ b/packages/pigment-react/tests/keyframes/fixtures/keyframes.output.css
@@ -0,0 +1,8 @@
+@keyframes r14c1bqo {
+ from {
+ transform: rotate(360deg);
+ }
+ to {
+ transform: rotate(0deg);
+ }
+}
diff --git a/packages/pigment-react/tests/keyframes/fixtures/keyframes.output.js b/packages/pigment-react/tests/keyframes/fixtures/keyframes.output.js
new file mode 100644
index 00000000000000..2df1df78892cc8
--- /dev/null
+++ b/packages/pigment-react/tests/keyframes/fixtures/keyframes.output.js
@@ -0,0 +1 @@
+const rotateKeyframe = 'r14c1bqo';
diff --git a/packages/pigment-react/tests/keyframes/keyframes.test.ts b/packages/pigment-react/tests/keyframes/keyframes.test.ts
new file mode 100644
index 00000000000000..337dedbaf76fdb
--- /dev/null
+++ b/packages/pigment-react/tests/keyframes/keyframes.test.ts
@@ -0,0 +1,13 @@
+import path from 'node:path';
+import { runTransformation, expect } from '../testUtils';
+
+describe('Pigment CSS - keyframes', () => {
+ it('basics', async () => {
+ const { output, fixture } = await runTransformation(
+ path.join(__dirname, 'fixtures/keyframes.input.js'),
+ );
+
+ expect(output.js).to.equal(fixture.js);
+ expect(output.css).to.equal(fixture.css);
+ });
+});
diff --git a/packages/pigment-react/tests/styled/fixtures/styled.input.js b/packages/pigment-react/tests/styled/fixtures/styled.input.js
new file mode 100644
index 00000000000000..8e2c133a04dacd
--- /dev/null
+++ b/packages/pigment-react/tests/styled/fixtures/styled.input.js
@@ -0,0 +1,33 @@
+import { styled, keyframes } from '@pigment-css/react';
+
+const rotateKeyframe = keyframes({
+ from: {
+ transform: 'rotate(360deg)',
+ },
+ to: {
+ transform: 'rotate(0deg)',
+ },
+});
+
+const Component = styled.div(({ theme }) => ({
+ color: theme.palette.primary.main,
+ animation: `${rotateKeyframe} 2s ease-out 0s infinite`,
+}));
+
+const SliderRail = styled('span', {
+ name: 'MuiSlider',
+ slot: 'Rail',
+})`
+ display: none;
+ position: absolute;
+ border-radius: inherit;
+ background-color: currentColor;
+ opacity: 0.38;
+ font-size: ${({ theme }) => theme.size.font.h1};
+`;
+
+const SliderRail2 = styled.span`
+ display: block;
+ opacity: 0.38;
+ font-size: ${({ theme }) => theme.size.font.h1};
+`;
diff --git a/packages/pigment-react/tests/styled/fixtures/styled.output.css b/packages/pigment-react/tests/styled/fixtures/styled.output.css
new file mode 100644
index 00000000000000..79471464008abb
--- /dev/null
+++ b/packages/pigment-react/tests/styled/fixtures/styled.output.css
@@ -0,0 +1,28 @@
+@keyframes r1419f2q {
+ from {
+ transform: rotate(360deg);
+ }
+ to {
+ transform: rotate(0deg);
+ }
+}
+.c1vtarpi {
+ color: red;
+ animation: r1419f2q 2s ease-out 0s infinite;
+}
+.s1sjy0ja {
+ display: none;
+ position: absolute;
+ border-radius: inherit;
+ background-color: currentColor;
+ opacity: 0.38;
+ font-size: 3rem;
+}
+.s1sjy0ja-1 {
+ font-size: 3rem;
+}
+.s6hrafw {
+ display: block;
+ opacity: 0.38;
+ font-size: 3rem;
+}
diff --git a/packages/pigment-react/tests/styled/fixtures/styled.output.js b/packages/pigment-react/tests/styled/fixtures/styled.output.js
new file mode 100644
index 00000000000000..d5519e6a7a196b
--- /dev/null
+++ b/packages/pigment-react/tests/styled/fixtures/styled.output.js
@@ -0,0 +1,16 @@
+import { styled as _styled3 } from '@pigment-css/react';
+import { styled as _styled2 } from '@pigment-css/react';
+import { styled as _styled } from '@pigment-css/react';
+import _theme from '@pigment-css/react/theme';
+const Component = /*#__PURE__*/ _styled('div')({
+ classes: ['c1vtarpi'],
+});
+const SliderRail = /*#__PURE__*/ _styled2('span', {
+ name: 'MuiSlider',
+ slot: 'Rail',
+})({
+ classes: ['s1sjy0ja', 's1sjy0ja-1'],
+});
+const SliderRail2 = /*#__PURE__*/ _styled3('span')({
+ classes: ['s6hrafw'],
+});
diff --git a/packages/pigment-react/tests/styled/styled.test.ts b/packages/pigment-react/tests/styled/styled.test.ts
new file mode 100644
index 00000000000000..4827244fa29ca9
--- /dev/null
+++ b/packages/pigment-react/tests/styled/styled.test.ts
@@ -0,0 +1,40 @@
+import path from 'node:path';
+import { runTransformation, expect } from '../testUtils';
+
+const theme = {
+ palette: {
+ primary: {
+ main: 'red',
+ },
+ },
+ size: {
+ font: {
+ h1: '3rem',
+ },
+ },
+ components: {
+ MuiSlider: {
+ styleOverrides: {
+ rail: {
+ fontSize: '3rem',
+ },
+ },
+ },
+ },
+};
+
+describe('Pigment CSS - styled', () => {
+ it('basics', async () => {
+ const { output, fixture } = await runTransformation(
+ path.join(__dirname, 'fixtures/styled.input.js'),
+ {
+ themeArgs: {
+ theme,
+ },
+ },
+ );
+
+ expect(output.js).to.equal(fixture.js);
+ expect(output.css).to.equal(fixture.css);
+ });
+});
diff --git a/packages/pigment-react/tests/testUtils.ts b/packages/pigment-react/tests/testUtils.ts
new file mode 100644
index 00000000000000..88ff6ab98a3c38
--- /dev/null
+++ b/packages/pigment-react/tests/testUtils.ts
@@ -0,0 +1,91 @@
+import * as fs from 'node:fs';
+import * as path from 'node:path';
+import { expect as chaiExpect } from 'chai';
+import { asyncResolveFallback } from '@wyw-in-js/shared';
+import { TransformCacheCollection, transform, createFileReporter } from '@wyw-in-js/transform';
+import { preprocessor } from '@pigment-css/react/utils';
+import * as prettier from 'prettier';
+
+const shouldUpdateOutput = process.env.UPDATE_FIXTURES === 'true';
+
+export async function runTransformation(
+ absolutePath: string,
+ options?: { themeArgs?: { theme?: any } },
+) {
+ const cache = new TransformCacheCollection();
+ const { emitter: eventEmitter } = createFileReporter(false);
+ const inputFilePath = absolutePath;
+ const outputFilePath = absolutePath.replace('.input.', '.output.');
+ const outputCssFilePath = absolutePath.replace('.input.js', '.output.css');
+
+ const inputContent = fs.readFileSync(inputFilePath, 'utf8');
+ let outputContent = fs.existsSync(outputFilePath) ? fs.readFileSync(outputFilePath, 'utf8') : '';
+ let outputCssContent = fs.existsSync(outputCssFilePath)
+ ? fs.readFileSync(outputCssFilePath, 'utf8')
+ : '';
+
+ const pluginOptions = {
+ themeArgs: {
+ theme: options?.themeArgs?.theme,
+ },
+ babelOptions: {
+ configFile: false,
+ babelrc: false,
+ },
+ tagResolver(_source: string, tag: string) {
+ return require.resolve(`../exports/${tag}`);
+ },
+ };
+ const result = await transform(
+ {
+ options: {
+ filename: inputFilePath,
+ preprocessor,
+ pluginOptions,
+ },
+ cache,
+ eventEmitter,
+ },
+ inputContent,
+ asyncResolveFallback,
+ );
+
+ const prettierConfig = await prettier.resolveConfig(
+ path.join(process.cwd(), 'prettier.config.js'),
+ );
+ const formattedJs = await prettier.format(result.code, {
+ ...prettierConfig,
+ parser: 'babel',
+ });
+ const formattedCss = await prettier.format(result.cssText ?? '', {
+ ...prettierConfig,
+ parser: 'css',
+ });
+
+ if (!outputContent || shouldUpdateOutput) {
+ fs.writeFileSync(outputFilePath, formattedJs, 'utf-8');
+ outputContent = formattedJs;
+ }
+
+ if (!outputCssContent || shouldUpdateOutput) {
+ fs.writeFileSync(outputCssFilePath, formattedCss, 'utf-8');
+ outputCssContent = formattedCss;
+ }
+
+ return {
+ output: {
+ js: formattedJs,
+ css: formattedCss,
+ },
+ fixture: {
+ js: outputContent,
+ css: outputCssContent,
+ },
+ };
+}
+
+export function expect(val: any): ReturnType {
+ const CUSTOM_ERROR =
+ 'The file contents have changed. Run "test:update" command to update the file if this is expected.';
+ return chaiExpect(val, CUSTOM_ERROR);
+}
diff --git a/packages/zero-runtime/theme/index.d.ts b/packages/pigment-react/theme/index.d.ts
similarity index 100%
rename from packages/zero-runtime/theme/index.d.ts
rename to packages/pigment-react/theme/index.d.ts
diff --git a/packages/zero-runtime/theme/index.js b/packages/pigment-react/theme/index.js
similarity index 100%
rename from packages/zero-runtime/theme/index.js
rename to packages/pigment-react/theme/index.js
diff --git a/packages/zero-runtime/theme/index.mjs b/packages/pigment-react/theme/index.mjs
similarity index 100%
rename from packages/zero-runtime/theme/index.mjs
rename to packages/pigment-react/theme/index.mjs
diff --git a/packages/zero-runtime/tsconfig.build.json b/packages/pigment-react/tsconfig.build.json
similarity index 100%
rename from packages/zero-runtime/tsconfig.build.json
rename to packages/pigment-react/tsconfig.build.json
diff --git a/packages/zero-runtime/tsconfig.json b/packages/pigment-react/tsconfig.json
similarity index 93%
rename from packages/zero-runtime/tsconfig.json
rename to packages/pigment-react/tsconfig.json
index 1e4e9fefe33535..55ad292e876743 100644
--- a/packages/zero-runtime/tsconfig.json
+++ b/packages/pigment-react/tsconfig.json
@@ -12,7 +12,8 @@
"@mui/system/*": ["./packages/mui-system/src/*"],
"@mui/utils": ["./packages/mui-utils/src"],
"@mui/utils/*": ["./packages/mui-utils/src/*"]
- }
+ },
+ "types": ["node", "mocha"]
},
"include": ["src/**/*.ts"],
"exclude": ["./tsup.config.ts"]
diff --git a/packages/zero-runtime/tsup.config.ts b/packages/pigment-react/tsup.config.ts
similarity index 100%
rename from packages/zero-runtime/tsup.config.ts
rename to packages/pigment-react/tsup.config.ts
diff --git a/packages/zero-unplugin/.gitignore b/packages/pigment-unplugin/.gitignore
similarity index 100%
rename from packages/zero-unplugin/.gitignore
rename to packages/pigment-unplugin/.gitignore
diff --git a/packages/zero-unplugin/package.json b/packages/pigment-unplugin/package.json
similarity index 70%
rename from packages/zero-unplugin/package.json
rename to packages/pigment-unplugin/package.json
index 852dd3eff11908..b42ca85edcb7e1 100644
--- a/packages/zero-unplugin/package.json
+++ b/packages/pigment-unplugin/package.json
@@ -1,21 +1,21 @@
{
- "name": "@mui/zero-unplugin",
+ "name": "@pigment-css/unplugin",
"version": "0.0.1",
"main": "build/index.js",
"module": "build/index.mjs",
"types": "build/index.d.ts",
"author": "MUI Team",
- "description": "Webpack integration for @mui/zero-runtime CSS-in-JS library.",
+ "description": "Webpack integration for Pigment CSS.",
"repository": {
"type": "git",
"url": "https://github.com/mui/material-ui.git",
- "directory": "packages/zero-unplugin"
+ "directory": "packages/pigment-unplugin"
},
"license": "MIT",
"bugs": {
"url": "https://github.com/mui/material-ui/issues"
},
- "homepage": "https://github.com/mui/material-ui/tree/master/packages/zero-runtime",
+ "homepage": "https://github.com/mui/material-ui/tree/master/packages/pigment-react",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/mui-org"
@@ -23,24 +23,21 @@
"scripts": {
"clean": "rimraf build types",
"watch": "tsup --watch --tsconfig tsconfig.build.json",
- "copy-license": "node ../../scripts/zero-runtime-license.mjs",
+ "copy-license": "node ../../scripts/pigment-license.mjs",
"build": "tsup --tsconfig tsconfig.build.json",
"typecheck": "tsc --noEmit -p ."
},
"dependencies": {
"@babel/core": "^7.23.9",
- "@mui/zero-runtime": "workspace:^",
- "@wyw-in-js/shared": "^0.4.1",
- "@wyw-in-js/transform": "^0.4.1",
+ "@pigment-css/react": "workspace:^",
+ "@wyw-in-js/shared": "^0.5.0",
+ "@wyw-in-js/transform": "^0.5.0",
"babel-plugin-transform-react-remove-prop-types": "^0.4.24",
"unplugin": "^1.7.1"
},
"devDependencies": {
"@types/babel__core": "^7.20.5"
},
- "peerDependencies": {
- "@mui/zero-runtime": "workspace:^"
- },
"sideEffects": false,
"publishConfig": {
"access": "public"
diff --git a/packages/zero-unplugin/src/index.ts b/packages/pigment-unplugin/src/index.ts
similarity index 92%
rename from packages/zero-unplugin/src/index.ts
rename to packages/pigment-unplugin/src/index.ts
index 4bcabc01f3cd75..e4c11e4c4b2c72 100644
--- a/packages/zero-unplugin/src/index.ts
+++ b/packages/pigment-unplugin/src/index.ts
@@ -1,7 +1,7 @@
import { transformAsync } from '@babel/core';
import {
type Preprocessor,
- type PluginOptions as LinariaPluginOptions,
+ type PluginOptions as WywInJsPluginOptions,
type IFileReporterOptions,
TransformCacheCollection,
transform,
@@ -20,7 +20,7 @@ import {
generateThemeTokens,
extendTheme,
type Theme as BaseTheme,
-} from '@mui/zero-runtime/utils';
+} from '@pigment-css/react/utils';
type NextMeta = {
type: 'next';
@@ -40,7 +40,7 @@ type WebpackMeta = {
type Meta = NextMeta | ViteMeta | WebpackMeta;
-export type PluginOptions = {
+export type PigmentOptions = {
theme?: Theme;
transformLibraries?: string[];
preprocessor?: Preprocessor;
@@ -49,7 +49,7 @@ export type PluginOptions = {
meta?: Meta;
asyncResolve?: (what: string) => string | null;
transformSx?: boolean;
-} & Partial;
+} & Partial;
const extensions = ['.js', '.jsx', '.mjs', '.cjs', '.ts', '.tsx', '.mts', '.cts'];
@@ -82,7 +82,7 @@ function isZeroRuntimeProcessableFile(fileName: string, transformLibraries: stri
const globalCssFileLookup = new Map();
const globalCssLookup = new Map();
-const pluginName = 'ZeroWebpackPlugin';
+const pluginName = 'PigmentCSSWebpackPlugin';
function innerNoop() {
return null;
@@ -92,7 +92,7 @@ function outerNoop() {
return innerNoop;
}
-export const plugin = createUnplugin((options) => {
+export const plugin = createUnplugin((options) => {
const {
theme,
meta,
@@ -268,17 +268,17 @@ export const plugin = createUnplugin((options) => {
transformInclude(id) {
return (
// this file should exist in the package
- id.endsWith('@mui/zero-runtime/styles.css') ||
- id.endsWith('/zero-runtime/styles.css') ||
- id.includes('@mui/zero-runtime/theme') ||
- id.includes('/zero-runtime/theme')
+ id.endsWith(`${process.env.RUNTIME_PACKAGE_NAME}/styles.css`) ||
+ id.endsWith('/pigment-react/styles.css') ||
+ id.includes(`${process.env.RUNTIME_PACKAGE_NAME}/theme`) ||
+ id.includes('/pigment-react/theme')
);
},
transform(_code, id) {
if (id.endsWith('styles.css')) {
return theme ? generateTokenCss(theme) : _code;
}
- if (id.includes('zero-runtime/theme')) {
+ if (id.includes('pigment-react/theme')) {
return `export default ${
theme ? JSON.stringify(generateThemeTokens(theme)) : '{}'
};`;
@@ -288,10 +288,10 @@ export const plugin = createUnplugin((options) => {
}
: {
resolveId(source: string) {
- if (source === '@mui/zero-runtime/styles.css') {
+ if (source === `${process.env.RUNTIME_PACKAGE_NAME}/styles.css`) {
return VIRTUAL_CSS_FILE;
}
- if (source === '@mui/zero-runtime/theme') {
+ if (source === `${process.env.RUNTIME_PACKAGE_NAME}/theme`) {
return VIRTUAL_THEME_FILE;
}
return null;
@@ -339,7 +339,7 @@ export const plugin = createUnplugin((options) => {
});
export const webpack = plugin.webpack as unknown as UnpluginFactoryOutput<
- PluginOptions,
+ PigmentOptions,
WebpackPluginInstance
>;
diff --git a/packages/zero-unplugin/tsconfig.build.json b/packages/pigment-unplugin/tsconfig.build.json
similarity index 100%
rename from packages/zero-unplugin/tsconfig.build.json
rename to packages/pigment-unplugin/tsconfig.build.json
diff --git a/packages/zero-unplugin/tsconfig.json b/packages/pigment-unplugin/tsconfig.json
similarity index 78%
rename from packages/zero-unplugin/tsconfig.json
rename to packages/pigment-unplugin/tsconfig.json
index b0083e731e2538..1a850071c7483e 100644
--- a/packages/zero-unplugin/tsconfig.json
+++ b/packages/pigment-unplugin/tsconfig.json
@@ -9,8 +9,8 @@
"@mui/system/*": ["./packages/mui-system/src/*"],
"@mui/utils": ["./packages/mui-utils/src"],
"@mui/utils/*": ["./packages/mui-utils/src/*"],
- "@mui/zero-runtime": ["./packages/zero-runtime/src"],
- "@mui/zero-runtime/*": ["./packages/zero-runtime/src/*"]
+ "@pigment-css/react": ["./packages/pigment-react/src"],
+ "@pigment-css/react/*": ["./packages/pigment-react/src/*"]
}
},
"include": ["src/**/*.ts"],
diff --git a/packages/zero-unplugin/tsup.config.ts b/packages/pigment-unplugin/tsup.config.ts
similarity index 81%
rename from packages/zero-unplugin/tsup.config.ts
rename to packages/pigment-unplugin/tsup.config.ts
index 44c71e50b1ec5b..ee75314ee863c4 100644
--- a/packages/zero-unplugin/tsup.config.ts
+++ b/packages/pigment-unplugin/tsup.config.ts
@@ -1,6 +1,6 @@
import { Options, defineConfig } from 'tsup';
import config from '../../tsup.config';
-import runtimePackageJson from '../zero-runtime/package.json';
+import runtimePackageJson from '../pigment-react/package.json';
const baseConfig: Options = {
...(config as Options),
diff --git a/packages/zero-vite-plugin/.gitignore b/packages/pigment-vite-plugin/.gitignore
similarity index 100%
rename from packages/zero-vite-plugin/.gitignore
rename to packages/pigment-vite-plugin/.gitignore
diff --git a/packages/zero-vite-plugin/package.json b/packages/pigment-vite-plugin/package.json
similarity index 74%
rename from packages/zero-vite-plugin/package.json
rename to packages/pigment-vite-plugin/package.json
index 15e561fcca0f1b..d91e7618636110 100644
--- a/packages/zero-vite-plugin/package.json
+++ b/packages/pigment-vite-plugin/package.json
@@ -1,21 +1,21 @@
{
- "name": "@mui/zero-vite-plugin",
+ "name": "@pigment-css/vite-plugin",
"version": "0.0.1",
"main": "build/index.js",
"module": "build/index.mjs",
"types": "build/index.d.ts",
"author": "MUI Team",
- "description": "Vite integration for @mui/zero-runtime CSS-in-JS library.",
+ "description": "Vite integration for Pigment CSS.",
"repository": {
"type": "git",
"url": "https://github.com/mui/material-ui.git",
- "directory": "packages/zero-vite-plugin"
+ "directory": "packages/pigment-vite-plugin"
},
"license": "MIT",
"bugs": {
"url": "https://github.com/mui/material-ui/issues"
},
- "homepage": "https://github.com/mui/material-ui/tree/master/packages/zero-runtime",
+ "homepage": "https://github.com/mui/material-ui/tree/master/packages/pigment-react",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/mui-org"
@@ -23,16 +23,16 @@
"scripts": {
"clean": "rimraf build",
"watch": "tsup --watch",
- "copy-license": "node ../../scripts/zero-runtime-license.mjs",
+ "copy-license": "node ../../scripts/pigment-license.mjs",
"build": "tsup",
"typecheck": "tsc --noEmit -p ."
},
"dependencies": {
"@babel/core": "^7.23.9",
"@babel/preset-typescript": "^7.23.3",
- "@mui/zero-runtime": "workspace:^",
- "@wyw-in-js/shared": "^0.4.1",
- "@wyw-in-js/transform": "^0.4.1",
+ "@pigment-css/react": "workspace:^",
+ "@wyw-in-js/shared": "^0.5.0",
+ "@wyw-in-js/transform": "^0.5.0",
"babel-plugin-transform-react-remove-prop-types": "^0.4.24"
},
"devDependencies": {
diff --git a/packages/zero-vite-plugin/src/index.ts b/packages/pigment-vite-plugin/src/index.ts
similarity index 85%
rename from packages/zero-vite-plugin/src/index.ts
rename to packages/pigment-vite-plugin/src/index.ts
index 98296aba22a0d0..e665c4ca25ee26 100644
--- a/packages/zero-vite-plugin/src/index.ts
+++ b/packages/pigment-vite-plugin/src/index.ts
@@ -5,11 +5,11 @@ import {
generateThemeTokens,
type Theme,
extendTheme,
-} from '@mui/zero-runtime/utils';
+} from '@pigment-css/react/utils';
import { transformAsync } from '@babel/core';
-import baseZeroVitePlugin, { type VitePluginOptions } from './zero-vite-plugin';
+import baseWywPluginPlugin, { type VitePluginOptions } from './vite-plugin';
-export interface ZeroVitePluginOptions extends VitePluginOptions {
+export interface PigmentOptions extends VitePluginOptions {
/**
* The theme object that you want to be passed to the `styled` function
*/
@@ -41,7 +41,7 @@ function isZeroRuntimeProcessableFile(fileName: string, transformLibraries: stri
);
}
-export function zeroVitePlugin(options: ZeroVitePluginOptions) {
+export function pigment(options: PigmentOptions) {
const {
theme,
babelOptions = {},
@@ -56,10 +56,10 @@ export function zeroVitePlugin(options: ZeroVitePluginOptions) {
name: 'vite-mui-theme-injection-plugin',
enforce: 'pre',
resolveId(source) {
- if (source === '@mui/zero-runtime/styles.css') {
+ if (source === `${process.env.RUNTIME_PACKAGE_NAME}/styles.css`) {
return VIRTUAL_CSS_FILE;
}
- if (source === '@mui/zero-runtime/theme') {
+ if (source === `${process.env.RUNTIME_PACKAGE_NAME}/theme`) {
return VIRTUAL_THEME_FILE;
}
return null;
@@ -90,7 +90,7 @@ export function zeroVitePlugin(options: ZeroVitePluginOptions) {
filename,
babelrc: false,
configFile: false,
- plugins: [['@mui/zero-runtime/exports/sx-plugin']],
+ plugins: [[`${process.env.RUNTIME_PACKAGE_NAME}/exports/sx-plugin`]],
});
return {
code: result?.code ?? code,
@@ -104,7 +104,7 @@ export function zeroVitePlugin(options: ZeroVitePluginOptions) {
};
}
- const zeroPlugin = baseZeroVitePlugin({
+ const zeroPlugin = baseWywPluginPlugin({
themeArgs: {
theme,
},
diff --git a/packages/zero-vite-plugin/src/zero-vite-plugin.ts b/packages/pigment-vite-plugin/src/vite-plugin.ts
similarity index 97%
rename from packages/zero-vite-plugin/src/zero-vite-plugin.ts
rename to packages/pigment-vite-plugin/src/vite-plugin.ts
index 7f38bbd4630f1a..fb17108d1e810a 100644
--- a/packages/zero-vite-plugin/src/zero-vite-plugin.ts
+++ b/packages/pigment-vite-plugin/src/vite-plugin.ts
@@ -20,7 +20,7 @@ import {
type PluginOptions,
type IFileReporterOptions,
} from '@wyw-in-js/transform';
-import { type PluginCustomOptions } from '@mui/zero-runtime/utils';
+import { type PluginCustomOptions } from '@pigment-css/react/utils';
export type VitePluginOptions = {
debug?: IFileReporterOptions | false | null | undefined;
@@ -41,7 +41,7 @@ function outerNoop() {
return innerNoop;
}
-export default function zeroVitePlugin({
+export default function wywVitePlugin({
debug,
include,
exclude,
@@ -211,7 +211,7 @@ export default function zeroVitePlugin({
if (tagResult) {
return tagResult;
}
- if (source.endsWith('/zero-styled') || source.endsWith('/zero-useThemeProps')) {
+ if (source.endsWith('/zero-styled')) {
return `${process.env.RUNTIME_PACKAGE_NAME}/exports/${tag}`;
}
return null;
diff --git a/packages/zero-vite-plugin/tsconfig.build.json b/packages/pigment-vite-plugin/tsconfig.build.json
similarity index 100%
rename from packages/zero-vite-plugin/tsconfig.build.json
rename to packages/pigment-vite-plugin/tsconfig.build.json
diff --git a/packages/zero-vite-plugin/tsconfig.json b/packages/pigment-vite-plugin/tsconfig.json
similarity index 77%
rename from packages/zero-vite-plugin/tsconfig.json
rename to packages/pigment-vite-plugin/tsconfig.json
index 72c0ce02c10646..33f1d4469a3274 100644
--- a/packages/zero-vite-plugin/tsconfig.json
+++ b/packages/pigment-vite-plugin/tsconfig.json
@@ -8,8 +8,8 @@
"@mui/system/*": ["./packages/mui-system/src/*"],
"@mui/utils": ["./packages/mui-utils/src"],
"@mui/utils/*": ["./packages/mui-utils/src/*"],
- "@mui/zero-runtime": ["./packages/zero-runtime/src"],
- "@mui/zero-runtime/*": ["./packages/zero-runtime/src/*"]
+ "@pigment-css/react": ["./packages/pigment-react/src"],
+ "@pigment-css/react/*": ["./packages/pigment-react/src/*"]
}
},
"include": ["src/**/*"],
diff --git a/packages/zero-vite-plugin/tsup.config.ts b/packages/pigment-vite-plugin/tsup.config.ts
similarity index 76%
rename from packages/zero-vite-plugin/tsup.config.ts
rename to packages/pigment-vite-plugin/tsup.config.ts
index 16d0001d076fe1..df6f5ec24d6e7f 100644
--- a/packages/zero-vite-plugin/tsup.config.ts
+++ b/packages/pigment-vite-plugin/tsup.config.ts
@@ -1,8 +1,8 @@
import { Options, defineConfig } from 'tsup';
import config from '../../tsup.config';
-import zeroPkgJson from '../zero-runtime/package.json';
+import zeroPkgJson from '../pigment-react/package.json';
-const external = ['@mui/zero-runtime/utils'];
+const external = [`${zeroPkgJson.name}/utils`];
const baseConfig: Options = {
...(config as Options),
diff --git a/packages/rsc-builder/package.json b/packages/rsc-builder/package.json
index 02b0454a62e0e1..0a9e852f449bb6 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.15"
+ "@types/node": "^18.19.21"
}
}
diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json
index 00329f31b2ecb8..39de1ce77852ff 100644
--- a/packages/test-utils/package.json
+++ b/packages/test-utils/package.json
@@ -23,7 +23,7 @@
"@babel/register": "^7.23.7",
"@babel/runtime": "^7.23.9",
"@emotion/cache": "^11.11.0",
- "@emotion/react": "^11.11.3",
+ "@emotion/react": "^11.11.4",
"@mnajdova/enzyme-adapter-react-18": "^0.2.0",
"@testing-library/dom": "^9.3.4",
"@testing-library/react": "^14.2.1",
@@ -35,14 +35,14 @@
"fs-extra": "^11.2.0",
"jsdom": "^24.0.0",
"lodash": "^4.17.21",
- "mocha": "^10.2.0",
- "playwright": "^1.41.2",
+ "mocha": "^10.3.0",
+ "playwright": "^1.42.1",
"prop-types": "^15.8.1",
"react-test-renderer": "^18.2.0",
"sinon": "^15.2.0"
},
"devDependencies": {
- "@types/chai": "^4.3.11",
+ "@types/chai": "^4.3.12",
"@types/chai-dom": "^1.11.3",
"@types/enzyme": "^3.10.18",
"@types/format-util": "^1.0.4",
diff --git a/packages/test-utils/src/describeConformance.tsx b/packages/test-utils/src/describeConformance.tsx
index 09297cd1ffad00..3063749ac0d095 100644
--- a/packages/test-utils/src/describeConformance.tsx
+++ b/packages/test-utils/src/describeConformance.tsx
@@ -978,6 +978,31 @@ function testThemeVariants(element: React.ReactElement, getOptions: () => Confor
});
}
+/**
+ * MUI theme supports custom palettes.
+ * The components that iterate over the palette via `variants` should be able to render with or without applying the custom palette styles.
+ */
+function testThemeCustomPalette(element: React.ReactElement, getOptions: () => ConformanceOptions) {
+ describe('theme extended palette:', () => {
+ it('should render without errors', function test() {
+ const { render, ThemeProvider, createTheme } = getOptions();
+ if (!/jsdom/.test(window.navigator.userAgent) || !render || !ThemeProvider || !createTheme) {
+ this.skip();
+ }
+
+ const theme = createTheme({
+ palette: {
+ custom: {
+ main: '#ff5252',
+ },
+ },
+ });
+
+ expect(() => render({element} )).not.to.throw();
+ });
+ });
+}
+
const fullSuite = {
componentProp: testComponentProp,
componentsProp: testComponentsProp,
@@ -992,6 +1017,7 @@ const fullSuite = {
themeDefaultProps: testThemeDefaultProps,
themeStyleOverrides: testThemeStyleOverrides,
themeVariants: testThemeVariants,
+ themeCustomPalette: testThemeCustomPalette,
};
/**
diff --git a/packages/zero-runtime/README.md b/packages/zero-runtime/README.md
deleted file mode 100644
index 1024a9d8078e94..00000000000000
--- a/packages/zero-runtime/README.md
+++ /dev/null
@@ -1,453 +0,0 @@
-# zero-runtime
-
-A zero-runtime CSS-in-JS library that extracts the colocated styles to their own CSS files at build-time.
-
-- [Getting started](#getting-started)
- - [Next.js](#nextjs)
- - [Vite](#vite)
-- [Basic usage](#basic-usage)
- - [Creating styles](#creating-styles)
- - [Creating components](#creating-components)
- - [Styling based on props](#styling-based-on-props)
- - [Styling based on runtime values](#styling-based-on-runtime-values)
- - [Styled component as a CSS selector](#styled-component-as-a-css-selector)
- - [Typing props](#typing-props)
-- [Theming](#theming)
- - [Accesing theme values](#accesing-theme-values)
- - [CSS variables support](#css-variables-support)
- - [Color schemes](#color-schemes)
- - [Switching color schemes](#switching-color-schemes)
- - [TypeScript](#typescript)
-
-## Getting started
-
-Zero-runtime supports Next.js and Vite with future support for more bundlers. You must install the corresponding plugin, as shown below.
-
-### Next.js
-
-```bash
-npm install @mui/zero-runtime
-npm install --save-dev @mui/zero-next-plugin
-```
-
-Then, in your `next.config.js` file, import the plugin and wrap the exported config object:
-
-```js
-const { withZeroPlugin } = require('@mui/zero-next-plugin');
-
-module.exports = withZeroPlugin({
- // ... Your nextjs config.
-});
-```
-
-### Vite
-
-```bash
-npm install @mui/zero-runtime
-npm install --save-dev @mui/zero-vite-plugin
-```
-
-Then, in your Vite config file, import the plugin and pass it to the `plugins` array as shown:
-
-```js
-import { zeroVitePlugin } from '@mui/zero-vite-plugin';
-
-export default defineConfig({
- plugins: [
- zeroVitePlugin(),
- // ... Your other plugins.
- ],
-});
-```
-
-## Basic usage
-
-> You must configure zero-runtime with [Next.js](#nextjs) or [Vite](#vite) first.
-
-### Creating styles
-
-Use the `css` API to create reusable styles:
-
-```js
-import { css } from '@mui/zero-runtime';
-
-const visuallyHidden = css({
- border: 0,
- clip: 'rect(0 0 0 0)',
- height: '1px',
- margin: -1,
- overflow: 'hidden',
- padding: 0,
- position: 'absolute',
- whiteSpace: 'nowrap',
- width: '1px',
-});
-
-function App() {
- return I am invisible
;
-}
-```
-
-The call to the `css` function will be replaced with a unique string that represents the CSS class name for the generated styles.
-
-Use a callback function to get access to the [theme](#theming) values:
-
-```js
-const title = css(({ theme }) => ({
- color: theme.colors.primary,
- fontSize: theme.spacing.unit * 4,
- fontFamily: theme.typography.fontFamily,
-}));
-```
-
-### Creating components
-
-Use the `styled` API to create a component by passing styles at the end. The usage should be familiar if you've worked with Emotion or styled-components:
-
-```js
-import { styled } from '@mui/zero-runtime';
-
-const Heading = styled('div')({
- fontSize: '4rem',
- fontWeight: 'bold',
- padding: '10px 0px',
-});
-
-function App() {
- return Hello ;
-}
-```
-
-The zero-runtime package differs from "standard" runtime CSS-in-JS libraries in a few ways:
-
-1. You never get direct access to props in your styled declarations. This is because prop values are only available at runtime, but the CSS is extracted at build time. See [Styling based on runtime values](#styling-based-on-runtime-values) for a workaround.
-2. Your styles must be declarative, and must account for all combinations of props that you want to style.
-3. The theme lets you declare CSS tokens that become part of the CSS bundle after the build. Any other values and methods that it might have are only available during build time—not at runtime. This leads to smaller bundle sizes.
-
-#### Styling based on props
-
-> 💡 This approach is recommended when the value of the prop is known at build time (finite values).
-
-Use the `variants` key to define styles for a combination of the component's props.
-
-Each variant is an object with `props` and `style` keys. The styles are applied when the component's props match the `props` object.
-
-**Example 1**: A button component with `small` and `large` sizes:
-
-```jsx
-const Button = styled('button')({
- border: 'none',
- padding: '0.75rem',
- // ...other base styles
- variants: [
- {
- props: { size: 'large' },
- style: { padding: '1rem' },
- },
- {
- props: { size: 'small' },
- style: { padding: '0.5rem' },
- },
- ],
-});
-
-Normal button ; // padding: 0.75rem
-Large button ; // padding: 1rem
-Small button ; // padding: 0.5rem
-```
-
-**Example 2**: A button component with variants and colors:
-
-```jsx
-const Button = styled('button')({
- border: 'none',
- padding: '0.75rem',
- // ...other base styles
- variants: [
- {
- props: { variant: 'contained', color: 'primary' },
- style: { backgroundColor: 'tomato', color: 'white' },
- },
- ],
-});
-
-// `backgroundColor: 'tomato', color: 'white'`
-
- Submit
- ;
-```
-
-**Example 3**: Apply styles based on a condition:
-
-The value of the `props` can be a function that returns a boolean. If the function returns `true`, the styles are applied.
-
-```jsx
-const Button = styled('button')({
- border: 'none',
- padding: '0.75rem',
- // ...other base styles
- variants: [
- {
- props: (props) => props.variant !== 'contained',
- style: { backgroundColor: 'transparent' },
- },
- ],
-});
-```
-
-#### Styling based on runtime values
-
-> 💡 This approach is recommended when the value of a prop is **unknown** ahead of time or possibly unlimited values, e.g. styling based on the user's input.
-
-Use a callback function as a value to create a dynamic style for the specific CSS property:
-
-```jsx
-const Heading = styled('h1')({
- color: ({ isError }) => (isError ? 'red' : 'black'),
-});
-```
-
-Zero-runtime will replace the callback with a CSS variable and inject the value through inline style. This makes it possible to create a static CSS file while still allowing dynamic styles.
-
-```css
-.Heading_class_akjsdfb {
- color: var(--Heading_class_akjsdfb-0);
-}
-```
-
-```jsx
- (isError ? 'red' : 'black'),
- }}
->
- Hello
-
-```
-
-#### Styled component as a CSS selector
-
-All of the components that you create are also available as CSS selectors. For example, for the `Heading` component described in the previous section, you can target that component inside another styled component like this:
-
-```jsx
-const Wrapper = styled.div({
- [`& .${Heading}`]: {
- color: 'blue',
- },
-});
-```
-
-This enables you to override the default `color` of the Heading component rendered inside the Wrapper:
-
-```tsx
-
- Hello
-
-```
-
-You can also export any styled component you create and use it as the base for additional components:
-
-```tsx
-const ExtraHeading = styled(Heading)({
- // ... overridden styled
-});
-```
-
-#### Typing props
-
-If you use TypeScript, add the props typing before the styles to get the type checking:
-
-```tsx
-const Heading = styled('h1')<{ isError?: boolean }>({
- color: ({ isError }) => (isError ? 'red' : 'black'),
-});
-```
-
-### Theming
-
-Theming is an **optional** feature that lets you reuse the same values, such as colors, spacing, and typography, across your application. It is a plain object of any structure that you can define in your config file.
-
-> **💡 Good to know**:
->
-> The **theme** object is used at build time and does not exist in the final JS bundle. This means that components created using zero-runtime's `styled` can be used with React Server Components by default while still getting the benefits of theming.
-
-For example, in Next.js, you can define a theme in the `next.config.js` file like this:
-
-```js
-const { withZeroPlugin } = require('@mui/zero-next-plugin');
-
-module.exports = withZeroPlugin(
- {
- // ...other nextConfig
- },
- {
- theme: {
- colors: {
- primary: 'tomato',
- secondary: 'cyan',
- },
- spacing: {
- unit: 8,
- },
- typography: {
- fontFamily: 'Inter, sans-serif',
- },
- // ...more keys and values, it's free style!
- },
- },
-);
-```
-
-#### Accessing theme values
-
-A callback can be used with **styled** and **css** APIs to access the theme values:
-
-```js
-const Heading = styled('h1')(({ theme }) => ({
- color: theme.colors.primary,
- fontSize: theme.spacing.unit * 4,
- fontFamily: theme.typography.fontFamily,
-}));
-```
-
-#### CSS variables support
-
-Zero-runtime can generate CSS variables from the theme values when you wrap your theme with `extendTheme` utility. For example, in a `next.config.js` file:
-
-```js
-const { withZeroPlugin, extendTheme } = require('@mui/zero-next-plugin');
-
-module.exports = withZeroPlugin(
- {
- // ...nextConfig
- },
- {
- theme: extendTheme({
- colors: {
- primary: 'tomato',
- secondary: 'cyan',
- },
- spacing: {
- unit: 8,
- },
- typography: {
- fontFamily: 'Inter, sans-serif',
- },
- }),
- },
-);
-```
-
-The `extendTheme` utility will go through the theme and create a `vars` object which represents the tokens that refer to CSS variables.
-
-```jsx
-const theme = extendTheme({
- colors: {
- primary: 'tomato',
- secondary: 'cyan',
- },
-});
-
-console.log(theme.colors.primary); // 'tomato'
-console.log(theme.vars.colors.primary); // 'var(--colors-primary)'
-```
-
-#### Color schemes
-
-Some tokens, especially color-related tokens, can have different values for different scenarios. For example in a daylight condition, the background color might be white, but in a dark condition, it might be black.
-
-The `extendTheme` utility lets you define theme with a special `colorSchemes` key:
-
-```jsx
-extendTheme({
- colorSchemes: {
- light: {
- colors: {
- background: '#f9f9f9',
- foreground: '#121212',
- },
- },
- dark: {
- colors: {
- background: '#212121',
- foreground: '#fff',
- },
- },
- },
-});
-```
-
-In the above example, `light` (default) and `dark` color schemes are defined. The structure of each color scheme must be a plain object with keys and values.
-
-#### Switching color schemes
-
-By default, when `colorSchemes` is defined, zero-runtime uses the [`prefers-color-scheme`](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme) media query to switch between color schemes based on user's system settings.
-
-However, if you want to control the color scheme based on application logic, for example, using a button to switch between light and dark mode, you can customize the behavior by providing a `getSelector` function:
-
-```diff
- extendTheme({
- colorSchemes: {
- light: { ... },
- dark: { ... },
- },
-+ getSelector: (colorScheme) => colorScheme ? `.theme-${colorScheme}` : ':root',
- });
-```
-
-Note that you need to add the logic to a button by yourself. Here is an example of how to do it:
-
-```jsx
-function App() {
- return (
- {
- document.documentElement.classList.toggle('theme-dark');
- }}
- >
- Toggle color scheme
-
- );
-}
-```
-
-#### CSS variables prefix
-
-You can add a prefix to the generated CSS variables by providing a `cssVarPrefix` option to the `extendTheme` utility:
-
-```jsx
-extendTheme({
- cssVarPrefix: 'zero',
-});
-```
-
-The generated CSS variables will have the `zero` prefix:
-
-```css
-:root {
- --zero-colors-background: #f9f9f9;
- --zero-colors-foreground: #121212;
-}
-```
-
-#### TypeScript
-
-To get the type checking for the theme, you need to augment the theme type:
-
-```ts
-// any file that is included in your tsconfig.json
-import type { ExtendTheme } from '@mui/zero-runtime';
-
-declare module '@mui/zero-runtime/theme' {
- interface ThemeTokens {
- // the structure of your theme
- }
-
- interface ThemeArgs {
- theme: ExtendTheme<{
- colorScheme: 'light' | 'dark';
- tokens: ThemeTokens;
- }>;
- }
-}
-```
diff --git a/packages/zero-runtime/src/RtlProvider/index.ts b/packages/zero-runtime/src/RtlProvider/index.ts
new file mode 100644
index 00000000000000..811b0c2c514f04
--- /dev/null
+++ b/packages/zero-runtime/src/RtlProvider/index.ts
@@ -0,0 +1 @@
+export { default as RtlProvider, useRtl } from '@mui/system/RtlProvider';
diff --git a/packages/zero-runtime/src/css.js b/packages/zero-runtime/src/css.js
deleted file mode 100644
index ac7121318de31a..00000000000000
--- a/packages/zero-runtime/src/css.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default function css() {
- throw new Error(
- 'MUI: You were trying to call "css" function without configuring your bundler. Make sure to install the bundler specific plugin and use it. @mui/zero-vite-plugin for Vite integration or @mui/zero-next-plugin for Next.js integration.',
- );
-}
diff --git a/packages/zero-runtime/src/keyframes.js b/packages/zero-runtime/src/keyframes.js
deleted file mode 100644
index 46b3d31275da1f..00000000000000
--- a/packages/zero-runtime/src/keyframes.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default function keyframes() {
- throw new Error(
- 'MUI: You were trying to call "keyframes" function without configuring your bundler. Make sure to install the bundler specific plugin and use it. @mui/zero-vite-plugin for Vite integration or @mui/zero-next-plugin for Next.js integration.',
- );
-}
diff --git a/packages/zero-runtime/tests/README.md b/packages/zero-runtime/tests/README.md
deleted file mode 100644
index 3508b94a7ac824..00000000000000
--- a/packages/zero-runtime/tests/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Adding new fixtures
-
-Create a new file name with `[name].input.js` and add `styled`, `css` or other zero-runtime calls into the file. Also add equivalent `[name].output.js` and `[name].output.css` and run the test. After the new test fails, get the results from the received output and add it to the equivalent js and css files. This is equivalent to snapshot testing and will make sure any change in internal css generation logic does not fail any other existing tests.
diff --git a/packages/zero-runtime/tests/fixtures/styled.input.js b/packages/zero-runtime/tests/fixtures/styled.input.js
deleted file mode 100644
index d0849e8e4d64a6..00000000000000
--- a/packages/zero-runtime/tests/fixtures/styled.input.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import { styled, keyframes } from '@mui/zero-runtime';
-
-const rotateKeyframe = keyframes({
- from: {
- transform: 'rotate(360deg)',
- },
- to: {
- transform: 'rotate(0deg)',
- },
-});
-
-const Component = styled.div(({ theme }) => ({
- color: theme.palette.primary.main,
- animation: `${rotateKeyframe} 2s ease-out 0s infinite`,
-}));
diff --git a/packages/zero-runtime/tests/fixtures/styled.output.css b/packages/zero-runtime/tests/fixtures/styled.output.css
deleted file mode 100644
index f7c1a587102afb..00000000000000
--- a/packages/zero-runtime/tests/fixtures/styled.output.css
+++ /dev/null
@@ -1,2 +0,0 @@
-@keyframes r1yjyf7p{from{transform:rotate(360deg);}to{transform:rotate(0deg);}}
-.cir471u{color:red;animation:r1yjyf7p 2s ease-out 0s infinite;}
diff --git a/packages/zero-runtime/tests/fixtures/styled.output.js b/packages/zero-runtime/tests/fixtures/styled.output.js
deleted file mode 100644
index 5fe9eb6f5f6cdd..00000000000000
--- a/packages/zero-runtime/tests/fixtures/styled.output.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import { styled as _styled } from "@mui/zero-runtime";
-import _theme from "@mui/zero-runtime/theme";
-const Component = /*#__PURE__*/_styled("div")({
- classes: ["cir471u"]
-});
diff --git a/packages/zero-runtime/tests/zero-runtime.test.js b/packages/zero-runtime/tests/zero-runtime.test.js
deleted file mode 100644
index 7c54072d9efe31..00000000000000
--- a/packages/zero-runtime/tests/zero-runtime.test.js
+++ /dev/null
@@ -1,66 +0,0 @@
-import * as fs from 'node:fs';
-import * as path from 'node:path';
-import { expect } from 'chai';
-import { asyncResolveFallback } from '@wyw-in-js/shared';
-import { TransformCacheCollection, transform, createFileReporter } from '@wyw-in-js/transform';
-import { preprocessor } from '@mui/zero-runtime/utils';
-
-const files = fs.readdirSync(path.join(__dirname, 'fixtures'));
-
-const theme = {
- palette: {
- primary: {
- main: 'red',
- },
- },
-};
-
-describe('zero-runtime', () => {
- files.forEach((file) => {
- it(`test input file ${file}`, async () => {
- if (file.includes('.output.')) {
- return;
- }
- const cache = new TransformCacheCollection();
- const { emitter: eventEmitter } = createFileReporter(false);
- const inputFilePath = path.join(__dirname, 'fixtures', file);
- const outputFilePath = path.join(__dirname, 'fixtures', file.replace('.input.', '.output.'));
- const outputCssFilePath = path.join(
- __dirname,
- 'fixtures',
- file.replace('.input.js', '.output.css'),
- );
- const inputContent = fs.readFileSync(inputFilePath, 'utf8');
- const outputContent = fs.readFileSync(outputFilePath, 'utf8');
- const outputCssContent = fs.readFileSync(outputCssFilePath, 'utf8');
-
- const result = await transform(
- {
- options: {
- filename: inputFilePath,
- preprocessor,
- pluginOptions: {
- themeArgs: {
- theme,
- },
- babelOptions: {
- configFile: false,
- babelrc: false,
- },
- tagResolver(_source, tag) {
- return require.resolve(`../exports/${tag}`);
- },
- },
- },
- cache,
- eventEmitter,
- },
- inputContent,
- asyncResolveFallback,
- );
-
- expect(result.code.trim()).to.equal(outputContent.trim());
- expect(result.cssText).to.equal(outputCssContent);
- });
- });
-});
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index c76d26c11e90e1..a12a5fec79085a 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -19,10 +19,10 @@ overrides:
'@babel/preset-typescript': ^7.23.3
'@babel/runtime': ^7.23.9
'@babel/types': ^7.23.9
- '@definitelytyped/header-parser': ^0.2.3
+ '@definitelytyped/header-parser': ^0.2.6
'@definitelytyped/typescript-versions': ^0.1.0
- '@definitelytyped/utils': ^0.1.2
- '@types/node': ^18.19.15
+ '@definitelytyped/utils': ^0.1.5
+ '@types/node': ^18.19.21
'@types/react': ^18.2.55
'@types/react-dom': 18.2.19
cross-fetch: ^4.0.0
@@ -41,12 +41,12 @@ importers:
specifier: ^8.0.1
version: 8.0.1
google-auth-library:
- specifier: ^9.5.0
- version: 9.5.0
+ specifier: ^9.6.3
+ version: 9.6.3
devDependencies:
'@argos-ci/core':
- specifier: ^1.5.3
- version: 1.5.3
+ specifier: ^1.5.4
+ version: 1.5.4
'@babel/cli':
specifier: ^7.23.9
version: 7.23.9(@babel/core@7.23.9)
@@ -117,14 +117,17 @@ importers:
specifier: workspace:^
version: link:packages/mui-utils/build
'@next/eslint-plugin-next':
- specifier: ^14.1.0
- version: 14.1.0
+ specifier: ^14.1.1
+ version: 14.1.1
'@octokit/rest':
specifier: ^20.0.2
version: 20.0.2
+ '@pigment-css/react':
+ specifier: workspace:^
+ version: link:packages/pigment-react
'@playwright/test':
- specifier: 1.41.2
- version: 1.41.2
+ specifier: 1.42.1
+ version: 1.42.1
'@types/enzyme':
specifier: ^3.10.18
version: 3.10.18
@@ -138,8 +141,8 @@ importers:
specifier: ^10.0.6
version: 10.0.6
'@types/node':
- specifier: ^18.19.15
- version: 18.19.15
+ specifier: ^18.19.21
+ version: 18.19.21
'@types/prettier':
specifier: ^2.7.3
version: 2.7.3
@@ -157,7 +160,7 @@ importers:
version: 6.19.1(eslint@8.56.0)(typescript@5.3.3)
babel-loader:
specifier: ^9.1.3
- version: 9.1.3(@babel/core@7.23.9)(webpack@5.90.1)
+ version: 9.1.3(@babel/core@7.23.9)(webpack@5.90.3)
babel-plugin-istanbul:
specifier: ^6.1.1
version: 6.1.1
@@ -181,7 +184,7 @@ importers:
version: 5.3.0
compression-webpack-plugin:
specifier: ^11.0.0
- version: 11.0.0(webpack@5.90.1)
+ version: 11.0.0(webpack@5.90.3)
concurrently:
specifier: ^8.2.2
version: 8.2.2
@@ -214,7 +217,7 @@ importers:
version: 9.1.0(eslint@8.56.0)
eslint-import-resolver-webpack:
specifier: ^0.13.8
- version: 0.13.8(eslint-plugin-import@2.29.1)(webpack@5.90.1)
+ version: 0.13.8(eslint-plugin-import@2.29.1)(webpack@5.90.3)
eslint-plugin-babel:
specifier: ^5.3.1
version: 5.3.1(eslint@8.56.0)
@@ -231,8 +234,8 @@ importers:
specifier: workspace:^
version: link:packages/eslint-plugin-material-ui
eslint-plugin-mocha:
- specifier: ^10.2.0
- version: 10.2.0(eslint@8.56.0)
+ specifier: ^10.3.0
+ version: 10.3.0(eslint@8.56.0)
eslint-plugin-react:
specifier: ^7.33.2
version: 7.33.2(eslint@8.56.0)
@@ -246,14 +249,14 @@ importers:
specifier: ^11.2.0
version: 11.2.0
globby:
- specifier: ^14.0.0
- version: 14.0.0
+ specifier: ^14.0.1
+ version: 14.0.1
karma:
- specifier: ^6.4.2
- version: 6.4.2
+ specifier: ^6.4.3
+ version: 6.4.3
karma-browserstack-launcher:
specifier: ~1.6.0
- version: 1.6.0(karma@6.4.2)
+ version: 1.6.0(karma@6.4.3)
karma-chrome-launcher:
specifier: ^3.2.0
version: 3.2.0
@@ -271,10 +274,10 @@ importers:
version: 0.4.0
karma-webpack:
specifier: ^5.0.0
- version: 5.0.0(webpack@5.90.1)
+ version: 5.0.0(webpack@5.90.3)
lerna:
- specifier: ^8.0.2
- version: 8.0.2
+ specifier: ^8.1.2
+ version: 8.1.2
lodash:
specifier: ^4.17.21
version: 4.17.21
@@ -282,8 +285,8 @@ importers:
specifier: ^0.12.1
version: 0.12.1
mocha:
- specifier: ^10.2.0
- version: 10.2.0
+ specifier: ^10.3.0
+ version: 10.3.0
nx:
specifier: ^17.2.8
version: 17.2.8
@@ -291,8 +294,8 @@ importers:
specifier: ^15.1.0
version: 15.1.0
piscina:
- specifier: ^4.3.1
- version: 4.3.1
+ specifier: ^4.4.0
+ version: 4.4.0
postcss-styled-syntax:
specifier: ^0.6.4
version: 0.6.4(postcss@8.4.35)
@@ -307,7 +310,7 @@ importers:
version: 0.11.10
raw-loader:
specifier: 4.0.2
- version: 4.0.2(webpack@5.90.1)
+ version: 4.0.2(webpack@5.90.3)
rimraf:
specifier: ^5.0.5
version: 5.0.5
@@ -325,7 +328,7 @@ importers:
version: 1.10.0
terser-webpack-plugin:
specifier: ^5.3.10
- version: 5.3.10(esbuild@0.19.11)(webpack@5.90.1)
+ version: 5.3.10(esbuild@0.19.11)(webpack@5.90.3)
tsup:
specifier: ^8.0.2
version: 8.0.2(postcss@8.4.35)(typescript@5.3.3)
@@ -336,14 +339,14 @@ importers:
specifier: ^5.3.3
version: 5.3.3
webpack:
- specifier: ^5.90.1
- version: 5.90.1(esbuild@0.19.11)(webpack-cli@5.1.4)
+ specifier: ^5.90.3
+ version: 5.90.3(esbuild@0.19.11)(webpack-cli@5.1.4)
webpack-bundle-analyzer:
specifier: ^4.10.1
version: 4.10.1
webpack-cli:
specifier: ^5.1.4
- version: 5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.90.1)
+ version: 5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.90.3)
yargs:
specifier: ^17.7.2
version: 17.7.2
@@ -352,16 +355,16 @@ importers:
dependencies:
'@chakra-ui/system':
specifier: ^2.6.2
- version: 2.6.2(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(react@18.2.0)
+ version: 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0)
'@emotion/react':
- specifier: ^11.11.3
- version: 11.11.3(@types/react@18.2.55)(react@18.2.0)
+ specifier: ^11.11.4
+ version: 11.11.4(@types/react@18.2.55)(react@18.2.0)
'@emotion/server':
specifier: ^11.11.0
version: 11.11.0
'@emotion/styled':
specifier: ^11.11.0
- version: 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0)
+ version: 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.55)(react@18.2.0)
'@mui/material':
specifier: workspace:^
version: link:../packages/mui-material/build
@@ -381,8 +384,8 @@ importers:
specifier: workspace:^
version: link:../docs
express:
- specifier: ^4.18.2
- version: 4.18.2
+ specifier: ^4.18.3
+ version: 4.18.3
fs-extra:
specifier: ^11.2.0
version: 11.2.0
@@ -390,8 +393,8 @@ importers:
specifier: ^10.10.0
version: 10.10.0
playwright:
- specifier: ^1.41.2
- version: 1.41.2
+ specifier: ^1.42.1
+ version: 1.42.1
prop-types:
specifier: ^15.8.1
version: 15.8.1
@@ -423,11 +426,11 @@ importers:
specifier: ^5.1.5
version: 5.1.5
theme-ui:
- specifier: ^0.16.1
- version: 0.16.1(@emotion/react@11.11.3)(react@18.2.0)
+ specifier: ^0.16.2
+ version: 0.16.2(@emotion/react@11.11.4)(react@18.2.0)
webpack:
- specifier: ^5.90.1
- version: 5.90.1(esbuild@0.19.11)(webpack-cli@5.1.4)
+ specifier: ^5.90.3
+ version: 5.90.3(esbuild@0.19.11)(webpack-cli@5.1.4)
docs:
dependencies:
@@ -450,14 +453,14 @@ importers:
specifier: ^11.11.0
version: 11.11.0
'@emotion/react':
- specifier: ^11.11.3
- version: 11.11.3(@types/react@18.2.55)(react@18.2.0)
+ specifier: ^11.11.4
+ version: 11.11.4(@types/react@18.2.55)(react@18.2.0)
'@emotion/server':
specifier: ^11.11.0
version: 11.11.0
'@emotion/styled':
specifier: ^11.11.0
- version: 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0)
+ version: 11.11.0(@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
@@ -510,32 +513,32 @@ importers:
specifier: workspace:^
version: link:../packages/mui-utils/build
'@mui/x-charts':
- specifier: 6.19.4
- version: 6.19.4(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@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)
+ specifier: 6.19.5
+ version: 6.19.5(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@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: 6.19.4
- version: 6.19.4(@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)
+ specifier: 6.19.6
+ version: 6.19.6(@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-generator':
- specifier: 6.19.4
- version: 6.19.4(@mui/icons-material@packages+mui-icons-material+build)(@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)
+ specifier: 6.19.6
+ version: 6.19.6(@mui/icons-material@packages+mui-icons-material+build)(@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-premium':
- specifier: 6.19.4
- version: 6.19.4(@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)
+ specifier: 6.19.6
+ version: 6.19.6(@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-pro':
- specifier: 6.19.4
- version: 6.19.4(@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)
+ specifier: 6.19.6
+ version: 6.19.6(@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-date-pickers':
- specifier: 6.19.4
- version: 6.19.4(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@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.6
+ version: 6.19.6(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@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.4
- version: 6.19.4(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@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.6
+ version: 6.19.6(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@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)
'@mui/x-tree-view':
specifier: 6.17.0
- version: 6.17.0(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@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)
+ version: 6.17.0(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@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)
'@popperjs/core':
specifier: ^2.11.8
version: 2.11.8
@@ -543,8 +546,8 @@ importers:
specifier: ^9.7.3
version: 9.7.3(react-dom@18.2.0)(react@18.2.0)
autoprefixer:
- specifier: ^10.4.17
- version: 10.4.17(postcss@8.4.35)
+ specifier: ^10.4.18
+ version: 10.4.18(postcss@8.4.35)
autosuggest-highlight:
specifier: ^3.3.4
version: 3.3.4
@@ -622,7 +625,7 @@ importers:
version: 7.4.1(react@18.2.0)
material-ui-popup-state:
specifier: ^5.0.10
- version: 5.0.10(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
+ version: 5.0.10(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
next:
specifier: ^13.5.1
version: 13.5.1(@babel/core@7.23.9)(babel-plugin-macros@3.1.0)(react-dom@18.2.0)(react@18.2.0)
@@ -663,8 +666,8 @@ importers:
specifier: ^18.2.0
version: 18.2.0
react-number-format:
- specifier: ^5.3.1
- version: 5.3.1(react-dom@18.2.0)(react@18.2.0)
+ specifier: ^5.3.3
+ version: 5.3.3(react-dom@18.2.0)(react@18.2.0)
react-router-dom:
specifier: ^6.21.3
version: 6.22.1(react-dom@18.2.0)(react@18.2.0)
@@ -730,8 +733,8 @@ importers:
specifier: ^3.2.3
version: 3.2.3
'@types/chai':
- specifier: ^4.3.11
- version: 4.3.11
+ specifier: ^4.3.12
+ version: 4.3.12
'@types/css-mediaquery':
specifier: ^0.1.4
version: 0.1.4
@@ -739,8 +742,8 @@ importers:
specifier: ^0.2.2
version: 0.2.2
'@types/node':
- specifier: ^18.19.15
- version: 18.19.15
+ specifier: ^18.19.21
+ version: 18.19.21
'@types/prop-types':
specifier: ^15.7.11
version: 15.7.11
@@ -778,8 +781,8 @@ importers:
specifier: ^5.1.2
version: 5.1.2
playwright:
- specifier: ^1.41.2
- version: 1.41.2
+ specifier: ^1.42.1
+ version: 1.42.1
prettier:
specifier: ^3.2.5
version: 3.2.5
@@ -830,8 +833,8 @@ importers:
specifier: ^7.20.5
version: 7.20.5
'@types/chai':
- specifier: ^4.3.11
- version: 4.3.11
+ specifier: ^4.3.12
+ version: 4.3.12
'@types/doctrine':
specifier: ^0.0.9
version: 0.0.9
@@ -839,8 +842,8 @@ importers:
specifier: ^4.14.202
version: 4.14.202
'@types/node':
- specifier: ^18.19.15
- version: 18.19.15
+ specifier: ^18.19.21
+ version: 18.19.21
'@types/prettier':
specifier: ^2.7.3
version: 2.7.3
@@ -902,8 +905,8 @@ importers:
specifier: ^5.4.3
version: 5.4.3
recast:
- specifier: ^0.23.4
- version: 0.23.4
+ specifier: ^0.23.5
+ version: 0.23.5
remark:
specifier: ^13.0.0
version: 13.0.0
@@ -921,8 +924,8 @@ importers:
specifier: ^7.20.5
version: 7.20.5
'@types/chai':
- specifier: ^4.3.11
- version: 4.3.11
+ specifier: ^4.3.12
+ version: 4.3.12
'@types/doctrine':
specifier: ^0.0.9
version: 0.0.9
@@ -933,8 +936,8 @@ importers:
specifier: ^10.0.6
version: 10.0.6
'@types/node':
- specifier: ^18.19.15
- version: 18.19.15
+ specifier: ^18.19.21
+ version: 18.19.21
'@types/react-docgen':
specifier: workspace:*
version: link:../react-docgen-types
@@ -964,14 +967,14 @@ importers:
version: 4.17.21
devDependencies:
'@types/chai':
- specifier: ^4.3.11
- version: 4.3.11
+ specifier: ^4.3.12
+ version: 4.3.12
'@types/mocha':
specifier: ^10.0.6
version: 10.0.6
'@types/node':
- specifier: ^18.19.15
- version: 18.19.15
+ specifier: ^18.19.21
+ version: 18.19.21
'@types/sinon':
specifier: ^10.0.20
version: 10.0.20
@@ -1020,8 +1023,8 @@ importers:
version: 9.0.1
optionalDependencies:
aws-sdk:
- specifier: ^2.1545.0
- version: 2.1552.0
+ specifier: ^2.1569.0
+ version: 2.1569.0
devDependencies:
claudia:
specifier: ^5.14.1
@@ -1043,8 +1046,8 @@ importers:
version: 1.29.0
devDependencies:
'@types/chai':
- specifier: ^4.3.11
- version: 4.3.11
+ specifier: ^4.3.12
+ version: 4.3.12
chai:
specifier: ^4.4.1
version: 4.4.1
@@ -1071,14 +1074,14 @@ importers:
specifier: ^3.1.3
version: 3.1.3
'@types/chai':
- specifier: ^4.3.11
- version: 4.3.11
+ specifier: ^4.3.12
+ version: 4.3.12
'@types/mocha':
specifier: ^10.0.6
version: 10.0.6
'@types/node':
- specifier: ^18.19.15
- version: 18.19.15
+ specifier: ^18.19.21
+ version: 18.19.21
babel-plugin-tester:
specifier: ^11.0.4
version: 11.0.4(@babel/core@7.23.9)
@@ -1123,8 +1126,8 @@ importers:
specifier: ^14.5.2
version: 14.5.2(@testing-library/dom@9.3.4)
'@types/chai':
- specifier: ^4.3.11
- version: 4.3.11
+ specifier: ^4.3.12
+ version: 4.3.12
'@types/prop-types':
specifier: ^15.7.11
version: 15.7.11
@@ -1175,18 +1178,18 @@ importers:
specifier: ^1.0.10
version: 1.0.10(jscodeshift@0.13.1)
postcss:
- specifier: ^8.4.33
+ specifier: ^8.4.35
version: 8.4.35
postcss-cli:
- specifier: ^8.0.0
+ specifier: ^8.3.1
version: 8.3.1(postcss@8.4.35)
yargs:
specifier: ^17.7.2
version: 17.7.2
devDependencies:
'@types/chai':
- specifier: ^4.3.11
- version: 4.3.11
+ specifier: ^4.3.12
+ version: 4.3.12
'@types/jscodeshift':
specifier: 0.11.5
version: 0.11.5
@@ -1223,8 +1226,8 @@ importers:
version: 15.8.1
devDependencies:
'@types/node':
- specifier: ^18.19.15
- version: 18.19.15
+ specifier: ^18.19.21
+ version: 18.19.21
'@types/prop-types':
specifier: ^15.7.11
version: 15.7.11
@@ -1246,8 +1249,8 @@ importers:
version: 7.11.1
devDependencies:
'@types/chai':
- specifier: ^4.3.11
- version: 4.3.11
+ specifier: ^4.3.12
+ version: 4.3.12
chai:
specifier: ^4.4.1
version: 4.4.1
@@ -1258,20 +1261,20 @@ importers:
packages/mui-envinfo/test:
dependencies:
'@emotion/react':
- specifier: ^11.11.3
- version: 11.11.3(@types/react@18.2.55)(react@18.2.0)
+ specifier: ^11.11.4
+ version: 11.11.4(@types/react@18.2.55)(react@18.2.0)
'@emotion/styled':
specifier: ^11.11.0
- version: 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0)
+ version: 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.55)(react@18.2.0)
'@mui/base':
specifier: 5.0.0-beta.30
version: 5.0.0-beta.30(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
'@mui/joy':
specifier: 5.0.0-beta.22
- version: 5.0.0-beta.22(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
+ version: 5.0.0-beta.22(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
'@mui/material':
specifier: 5.15.4
- version: 5.15.4(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
+ version: 5.15.4(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
react:
specifier: ^18.2.0
version: 18.2.0
@@ -1299,8 +1302,8 @@ importers:
specifier: workspace:^
version: link:../mui-material/build
'@types/chai':
- specifier: ^4.3.11
- version: 4.3.11
+ specifier: ^4.3.12
+ version: 4.3.12
'@types/react':
specifier: ^18.2.55
version: 18.2.55
@@ -1349,10 +1352,10 @@ importers:
version: 7.23.9
'@emotion/react':
specifier: ^11.5.0
- version: 11.11.3(@types/react@18.2.55)(react@18.2.0)
+ version: 11.11.4(@types/react@18.2.55)(react@18.2.0)
'@emotion/styled':
specifier: ^11.3.0
- version: 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0)
+ version: 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.55)(react@18.2.0)
'@mui/base':
specifier: workspace:*
version: link:../mui-base/build
@@ -1382,8 +1385,8 @@ importers:
specifier: workspace:^
version: link:../mui-material/build
'@types/chai':
- specifier: ^4.3.11
- version: 4.3.11
+ specifier: ^4.3.12
+ version: 4.3.12
'@types/prop-types':
specifier: ^15.7.11
version: 15.7.11
@@ -1426,10 +1429,10 @@ importers:
version: 7.23.9
'@emotion/react':
specifier: ^11.5.0
- version: 11.11.3(@types/react@18.2.55)(react@18.2.0)
+ version: 11.11.4(@types/react@18.2.55)(react@18.2.0)
'@emotion/styled':
specifier: ^11.3.0
- version: 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0)
+ version: 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.55)(react@18.2.0)
'@mui/base':
specifier: workspace:*
version: link:../mui-base/build
@@ -1456,8 +1459,8 @@ importers:
specifier: workspace:^
version: link:../test-utils
'@types/chai':
- specifier: ^4.3.11
- version: 4.3.11
+ specifier: ^4.3.12
+ version: 4.3.12
'@types/prop-types':
specifier: ^15.7.11
version: 15.7.11
@@ -1491,10 +1494,10 @@ importers:
version: 7.23.9
'@emotion/react':
specifier: ^11.5.0
- version: 11.11.3(@types/react@18.2.55)(react@18.2.0)
+ version: 11.11.4(@types/react@18.2.55)(react@18.2.0)
'@emotion/styled':
specifier: ^11.3.0
- version: 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0)
+ version: 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.55)(react@18.2.0)
'@mui/base':
specifier: workspace:*
version: link:../mui-base/build
@@ -1548,8 +1551,8 @@ importers:
specifier: ^14.5.2
version: 14.5.2(@testing-library/dom@9.3.4)
'@types/chai':
- specifier: ^4.3.11
- version: 4.3.11
+ specifier: ^4.3.12
+ version: 4.3.12
'@types/prop-types':
specifier: ^15.7.11
version: 15.7.11
@@ -1569,8 +1572,8 @@ importers:
specifier: ^0.1.2
version: 0.1.2
express:
- specifier: ^4.18.2
- version: 4.18.2
+ specifier: ^4.18.3
+ version: 4.18.3
fast-glob:
specifier: ^3.3.2
version: 3.3.2
@@ -1581,8 +1584,8 @@ importers:
specifier: ^4.17.21
version: 4.17.21
playwright:
- specifier: ^1.41.2
- version: 1.41.2
+ specifier: ^1.42.1
+ version: 1.42.1
react:
specifier: ^18.2.0
version: 18.2.0
@@ -1622,7 +1625,7 @@ importers:
version: 7.23.9
'@emotion/styled':
specifier: ^11.3.0
- version: 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0)
+ version: 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.55)(react@18.2.0)
'@mui/base':
specifier: workspace:*
version: link:../mui-base/build
@@ -1655,8 +1658,8 @@ importers:
version: 4.4.5(react-dom@18.2.0)(react@18.2.0)
devDependencies:
'@emotion/react':
- specifier: ^11.11.3
- version: 11.11.3(@types/react@18.2.55)(react@18.2.0)
+ specifier: ^11.11.4
+ version: 11.11.4(@types/react@18.2.55)(react@18.2.0)
'@mui-internal/test-utils':
specifier: workspace:^
version: link:../test-utils
@@ -1667,8 +1670,8 @@ importers:
specifier: ^14.5.2
version: 14.5.2(@testing-library/dom@9.3.4)
'@types/chai':
- specifier: ^4.3.11
- version: 4.3.11
+ specifier: ^4.3.12
+ version: 4.3.12
'@types/prop-types':
specifier: ^15.7.11
version: 15.7.11
@@ -1717,8 +1720,8 @@ importers:
specifier: ^11.11.0
version: 11.11.0
'@emotion/react':
- specifier: ^11.11.3
- version: 11.11.3(@types/react@18.2.55)(react@18.2.0)
+ specifier: ^11.11.4
+ version: 11.11.4(@types/react@18.2.55)(react@18.2.0)
'@emotion/server':
specifier: ^11.11.0
version: 11.11.0
@@ -1752,8 +1755,8 @@ importers:
specifier: workspace:^
version: link:../mui-types/build
'@types/chai':
- specifier: ^4.3.11
- version: 4.3.11
+ specifier: ^4.3.12
+ version: 4.3.12
'@types/react':
specifier: ^18.2.55
version: 18.2.55
@@ -1781,11 +1784,11 @@ importers:
version: 15.8.1
devDependencies:
'@emotion/react':
- specifier: ^11.11.3
- version: 11.11.3(@types/react@18.2.55)(react@18.2.0)
+ specifier: ^11.11.4
+ version: 11.11.4(@types/react@18.2.55)(react@18.2.0)
'@emotion/styled':
specifier: ^11.11.0
- version: 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0)
+ version: 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.55)(react@18.2.0)
'@mui-internal/test-utils':
specifier: workspace:^
version: link:../test-utils
@@ -1793,8 +1796,8 @@ importers:
specifier: workspace:*
version: link:build
'@types/chai':
- specifier: ^4.3.11
- version: 4.3.11
+ specifier: ^4.3.12
+ version: 4.3.12
'@types/react':
specifier: ^18.2.55
version: 18.2.55
@@ -1828,8 +1831,8 @@ importers:
specifier: workspace:*
version: link:build
'@types/chai':
- specifier: ^4.3.11
- version: 4.3.11
+ specifier: ^4.3.12
+ version: 4.3.12
'@types/hoist-non-react-statics':
specifier: ^3.3.5
version: 3.3.5
@@ -1908,8 +1911,8 @@ importers:
specifier: workspace:^
version: link:../mui-material/build
'@types/chai':
- specifier: ^4.3.11
- version: 4.3.11
+ specifier: ^4.3.12
+ version: 4.3.12
'@types/react':
specifier: ^18.2.55
version: 18.2.55
@@ -1961,11 +1964,11 @@ importers:
version: 15.8.1
devDependencies:
'@emotion/react':
- specifier: ^11.11.3
- version: 11.11.3(@types/react@18.2.55)(react@18.2.0)
+ specifier: ^11.11.4
+ version: 11.11.4(@types/react@18.2.55)(react@18.2.0)
'@emotion/styled':
specifier: ^11.11.0
- version: 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0)
+ version: 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.55)(react@18.2.0)
'@mui-internal/test-utils':
specifier: workspace:^
version: link:../test-utils
@@ -1976,8 +1979,8 @@ importers:
specifier: workspace:*
version: link:build
'@types/chai':
- specifier: ^4.3.11
- version: 4.3.11
+ specifier: ^4.3.12
+ version: 4.3.12
'@types/prop-types':
specifier: ^15.7.11
version: 15.7.11
@@ -2042,14 +2045,14 @@ importers:
specifier: workspace:^
version: link:../mui-types/build
'@types/chai':
- specifier: ^4.3.11
- version: 4.3.11
+ specifier: ^4.3.12
+ version: 4.3.12
'@types/mocha':
specifier: ^10.0.6
version: 10.0.6
'@types/node':
- specifier: ^18.19.15
- version: 18.19.15
+ specifier: ^18.19.21
+ version: 18.19.21
'@types/react':
specifier: ^18.2.55
version: 18.2.55
@@ -2082,147 +2085,17 @@ importers:
specifier: ^11.2.0
version: 11.2.0
- packages/react-docgen-types:
- devDependencies:
- ast-types:
- specifier: 0.14.2
- version: 0.14.2
-
- packages/rsc-builder:
- dependencies:
- fs-extra:
- specifier: ^11.2.0
- version: 11.2.0
- yargs:
- specifier: ^17.7.2
- version: 17.7.2
- devDependencies:
- '@types/mocha':
- specifier: ^10.0.6
- version: 10.0.6
- '@types/node':
- specifier: ^18.19.15
- version: 18.19.15
-
- packages/test-utils:
- dependencies:
- '@babel/plugin-transform-modules-commonjs':
- specifier: ^7.23.3
- version: 7.23.3(@babel/core@7.23.9)
- '@babel/preset-typescript':
- specifier: ^7.23.3
- version: 7.23.3(@babel/core@7.23.9)
- '@babel/register':
- specifier: ^7.23.7
- version: 7.23.7(@babel/core@7.23.9)
- '@babel/runtime':
- specifier: ^7.23.9
- version: 7.23.9
- '@emotion/cache':
- specifier: ^11.11.0
- version: 11.11.0
- '@emotion/react':
- specifier: ^11.11.3
- version: 11.11.3(@types/react@18.2.55)(react@18.2.0)
- '@mnajdova/enzyme-adapter-react-18':
- specifier: ^0.2.0
- version: 0.2.0(enzyme@3.11.0)(react-dom@18.2.0)(react@18.2.0)
- '@testing-library/dom':
- specifier: ^9.3.4
- version: 9.3.4
- '@testing-library/react':
- specifier: ^14.2.1
- version: 14.2.1(react-dom@18.2.0)(react@18.2.0)
- chai:
- specifier: ^4.4.1
- version: 4.4.1
- chai-dom:
- specifier: ^1.12.0
- version: 1.12.0(chai@4.4.1)
- dom-accessibility-api:
- specifier: ^0.6.3
- version: 0.6.3
- enzyme:
- specifier: ^3.11.0
- version: 3.11.0
- format-util:
- specifier: ^1.0.5
- version: 1.0.5
- fs-extra:
- specifier: ^11.2.0
- version: 11.2.0
- jsdom:
- specifier: ^24.0.0
- version: 24.0.0
- lodash:
- specifier: ^4.17.21
- version: 4.17.21
- mocha:
- specifier: ^10.2.0
- version: 10.2.0
- playwright:
- specifier: ^1.41.2
- version: 1.41.2
- prop-types:
- specifier: ^15.8.1
- version: 15.8.1
- react:
- specifier: ^18.2.0
- version: 18.2.0
- react-dom:
- specifier: ^18.2.0
- version: 18.2.0(react@18.2.0)
- react-test-renderer:
- specifier: ^18.2.0
- version: 18.2.0(react@18.2.0)
- sinon:
- specifier: ^15.2.0
- version: 15.2.0
- devDependencies:
- '@types/chai':
- specifier: ^4.3.11
- version: 4.3.11
- '@types/chai-dom':
- specifier: ^1.11.3
- version: 1.11.3
- '@types/enzyme':
- specifier: ^3.10.18
- version: 3.10.18
- '@types/format-util':
- specifier: ^1.0.4
- version: 1.0.4
- '@types/prop-types':
- specifier: ^15.7.11
- version: 15.7.11
- '@types/react':
- specifier: ^18.2.55
- version: 18.2.55
- '@types/react-dom':
- specifier: 18.2.19
- version: 18.2.19
- '@types/react-test-renderer':
- specifier: ^18.0.7
- version: 18.0.7
- '@types/sinon':
- specifier: ^10.0.20
- version: 10.0.20
- typescript:
- specifier: ^5.3.3
- version: 5.3.3
-
- packages/waterfall: {}
-
- packages/zero-next-plugin:
+ packages/pigment-nextjs-plugin:
dependencies:
- '@mui/zero-unplugin':
+ '@pigment-css/unplugin':
specifier: workspace:^
- version: link:../zero-unplugin
+ version: link:../pigment-unplugin
devDependencies:
next:
specifier: ^13.5.1
version: 13.5.1(@babel/core@7.23.9)(babel-plugin-macros@3.1.0)(react-dom@18.2.0)(react@18.2.0)
- packages/zero-runtime:
+ packages/pigment-react:
dependencies:
'@babel/core':
specifier: ^7.23.9
@@ -2243,26 +2116,26 @@ importers:
specifier: ^11.11.2
version: 11.11.2
'@emotion/react':
- specifier: ^11.11.3
- version: 11.11.3(@types/react@18.2.55)(react@18.2.0)
+ specifier: ^11.11.4
+ version: 11.11.4(@types/react@18.2.55)(react@18.2.0)
'@emotion/serialize':
specifier: ^1.1.3
version: 1.1.3
'@emotion/styled':
specifier: ^11.11.0
- version: 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0)
+ version: 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.55)(react@18.2.0)
'@mui/system':
specifier: workspace:^
version: link:../mui-system/build
'@wyw-in-js/processor-utils':
- specifier: ^0.4.1
- version: 0.4.1
+ specifier: ^0.5.0
+ version: 0.5.0
'@wyw-in-js/shared':
- specifier: ^0.4.1
- version: 0.4.1
+ specifier: ^0.5.0
+ version: 0.5.0
'@wyw-in-js/transform':
- specifier: ^0.4.1
- version: 0.4.1
+ specifier: ^0.5.0
+ version: 0.5.0
clsx:
specifier: ^2.1.0
version: 2.1.0
@@ -2288,6 +2161,9 @@ importers:
'@types/babel__helper-plugin-utils':
specifier: ^7.10.3
version: 7.10.3
+ '@types/chai':
+ specifier: ^4.3.12
+ version: 4.3.12
'@types/cssesc':
specifier: ^3.0.2
version: 3.0.2
@@ -2295,8 +2171,8 @@ importers:
specifier: ^4.14.202
version: 4.14.202
'@types/node':
- specifier: ^18.19.15
- version: 18.19.15
+ specifier: ^18.19.21
+ version: 18.19.21
'@types/react':
specifier: ^18.2.55
version: 18.2.55
@@ -2306,24 +2182,27 @@ importers:
chai:
specifier: ^4.4.1
version: 4.4.1
+ prettier:
+ specifier: ^3.2.5
+ version: 3.2.5
react:
specifier: ^18.2.0
version: 18.2.0
- packages/zero-unplugin:
+ packages/pigment-unplugin:
dependencies:
'@babel/core':
specifier: ^7.23.9
version: 7.23.9
- '@mui/zero-runtime':
+ '@pigment-css/react':
specifier: workspace:^
- version: link:../zero-runtime
+ version: link:../pigment-react
'@wyw-in-js/shared':
- specifier: ^0.4.1
- version: 0.4.1
+ specifier: ^0.5.0
+ version: 0.5.0
'@wyw-in-js/transform':
- specifier: ^0.4.1
- version: 0.4.1
+ specifier: ^0.5.0
+ version: 0.5.0
babel-plugin-transform-react-remove-prop-types:
specifier: ^0.4.24
version: 0.4.24
@@ -2335,7 +2214,7 @@ importers:
specifier: ^7.20.5
version: 7.20.5
- packages/zero-vite-plugin:
+ packages/pigment-vite-plugin:
dependencies:
'@babel/core':
specifier: ^7.23.9
@@ -2343,15 +2222,15 @@ importers:
'@babel/preset-typescript':
specifier: ^7.23.3
version: 7.23.3(@babel/core@7.23.9)
- '@mui/zero-runtime':
+ '@pigment-css/react':
specifier: workspace:^
- version: link:../zero-runtime
+ version: link:../pigment-react
'@wyw-in-js/shared':
- specifier: ^0.4.1
- version: 0.4.1
+ specifier: ^0.5.0
+ version: 0.5.0
'@wyw-in-js/transform':
- specifier: ^0.4.1
- version: 0.4.1
+ specifier: ^0.5.0
+ version: 0.5.0
babel-plugin-transform-react-remove-prop-types:
specifier: ^0.4.24
version: 0.4.24
@@ -2361,7 +2240,137 @@ importers:
version: 7.20.5
vite:
specifier: ^5.0.12
- version: 5.0.12(@types/node@18.19.15)
+ version: 5.0.12(@types/node@18.19.21)
+
+ packages/react-docgen-types:
+ devDependencies:
+ ast-types:
+ specifier: 0.14.2
+ version: 0.14.2
+
+ packages/rsc-builder:
+ dependencies:
+ fs-extra:
+ specifier: ^11.2.0
+ version: 11.2.0
+ yargs:
+ specifier: ^17.7.2
+ version: 17.7.2
+ devDependencies:
+ '@types/mocha':
+ specifier: ^10.0.6
+ version: 10.0.6
+ '@types/node':
+ specifier: ^18.19.21
+ version: 18.19.21
+
+ packages/test-utils:
+ dependencies:
+ '@babel/plugin-transform-modules-commonjs':
+ specifier: ^7.23.3
+ version: 7.23.3(@babel/core@7.23.9)
+ '@babel/preset-typescript':
+ specifier: ^7.23.3
+ version: 7.23.3(@babel/core@7.23.9)
+ '@babel/register':
+ specifier: ^7.23.7
+ version: 7.23.7(@babel/core@7.23.9)
+ '@babel/runtime':
+ specifier: ^7.23.9
+ version: 7.23.9
+ '@emotion/cache':
+ specifier: ^11.11.0
+ version: 11.11.0
+ '@emotion/react':
+ specifier: ^11.11.4
+ version: 11.11.4(@types/react@18.2.55)(react@18.2.0)
+ '@mnajdova/enzyme-adapter-react-18':
+ specifier: ^0.2.0
+ version: 0.2.0(enzyme@3.11.0)(react-dom@18.2.0)(react@18.2.0)
+ '@testing-library/dom':
+ specifier: ^9.3.4
+ version: 9.3.4
+ '@testing-library/react':
+ specifier: ^14.2.1
+ version: 14.2.1(react-dom@18.2.0)(react@18.2.0)
+ chai:
+ specifier: ^4.4.1
+ version: 4.4.1
+ chai-dom:
+ specifier: ^1.12.0
+ version: 1.12.0(chai@4.4.1)
+ dom-accessibility-api:
+ specifier: ^0.6.3
+ version: 0.6.3
+ enzyme:
+ specifier: ^3.11.0
+ version: 3.11.0
+ format-util:
+ specifier: ^1.0.5
+ version: 1.0.5
+ fs-extra:
+ specifier: ^11.2.0
+ version: 11.2.0
+ jsdom:
+ specifier: ^24.0.0
+ version: 24.0.0
+ lodash:
+ specifier: ^4.17.21
+ version: 4.17.21
+ mocha:
+ specifier: ^10.3.0
+ version: 10.3.0
+ playwright:
+ specifier: ^1.42.1
+ version: 1.42.1
+ prop-types:
+ specifier: ^15.8.1
+ version: 15.8.1
+ react:
+ specifier: ^18.2.0
+ version: 18.2.0
+ react-dom:
+ specifier: ^18.2.0
+ version: 18.2.0(react@18.2.0)
+ react-test-renderer:
+ specifier: ^18.2.0
+ version: 18.2.0(react@18.2.0)
+ sinon:
+ specifier: ^15.2.0
+ version: 15.2.0
+ devDependencies:
+ '@types/chai':
+ specifier: ^4.3.12
+ version: 4.3.12
+ '@types/chai-dom':
+ specifier: ^1.11.3
+ version: 1.11.3
+ '@types/enzyme':
+ specifier: ^3.10.18
+ version: 3.10.18
+ '@types/format-util':
+ specifier: ^1.0.4
+ version: 1.0.4
+ '@types/prop-types':
+ specifier: ^15.7.11
+ version: 15.7.11
+ '@types/react':
+ specifier: ^18.2.55
+ version: 18.2.55
+ '@types/react-dom':
+ specifier: 18.2.19
+ version: 18.2.19
+ '@types/react-test-renderer':
+ specifier: ^18.0.7
+ version: 18.0.7
+ '@types/sinon':
+ specifier: ^10.0.20
+ version: 10.0.20
+ typescript:
+ specifier: ^5.3.3
+ version: 5.3.3
+
+ packages/waterfall: {}
test:
devDependencies:
@@ -2372,8 +2381,8 @@ importers:
specifier: ^11.11.0
version: 11.11.0
'@emotion/react':
- specifier: ^11.11.3
- version: 11.11.3(@types/react@18.2.55)(react@18.2.0)
+ specifier: ^11.11.4
+ version: 11.11.4(@types/react@18.2.55)(react@18.2.0)
'@mui-internal/test-utils':
specifier: workspace:^
version: link:../packages/test-utils
@@ -2402,14 +2411,14 @@ importers:
specifier: workspace:^
version: link:../packages/mui-utils/build
'@playwright/test':
- specifier: 1.41.2
- version: 1.41.2
+ specifier: 1.42.1
+ version: 1.42.1
'@testing-library/dom':
specifier: ^9.3.4
version: 9.3.4
'@types/chai':
- specifier: ^4.3.11
- version: 4.3.11
+ specifier: ^4.3.12
+ version: 4.3.12
'@types/react':
specifier: ^18.2.55
version: 18.2.55
@@ -2433,13 +2442,13 @@ importers:
version: 11.2.0
html-webpack-plugin:
specifier: ^5.6.0
- version: 5.6.0(webpack@5.90.1)
+ version: 5.6.0(webpack@5.90.3)
lodash:
specifier: ^4.17.21
version: 4.17.21
playwright:
- specifier: ^1.41.2
- version: 1.41.2
+ specifier: ^1.42.1
+ version: 1.42.1
prop-types:
specifier: ^15.8.1
version: 15.8.1
@@ -2474,8 +2483,8 @@ importers:
specifier: ^1.6.28
version: 1.6.28
webpack:
- specifier: ^5.90.1
- version: 5.90.1(esbuild@0.19.11)(webpack-cli@5.1.4)
+ specifier: ^5.90.3
+ version: 5.90.3(esbuild@0.19.11)(webpack-cli@5.1.4)
yargs:
specifier: ^17.7.2
version: 17.7.2
@@ -2668,11 +2677,11 @@ packages:
'@jridgewell/gen-mapping': 0.1.1
'@jridgewell/trace-mapping': 0.3.20
- /@argos-ci/core@1.5.3:
- resolution: {integrity: sha512-qODX23ou3CwagOFwtYZyvXPAd2fXOu5ntnH5MbQcSzP3TdK8H2wkacNaLwvLEVpOeT3jdrfoQvROInewMfbHxQ==}
+ /@argos-ci/core@1.5.4:
+ resolution: {integrity: sha512-XgRJSJYfauCbqOGNLFFiVri70TAp0TORfKrK/6yXyt7k9NgZD6vD10hUhSMeJP7REwYrqD3wxY7l85K+wwoo3Q==}
engines: {node: '>=16.0.0'}
dependencies:
- '@argos-ci/util': 1.2.0
+ '@argos-ci/util': 1.2.1
axios: 1.6.5(debug@4.3.4)
convict: 6.2.4
debug: 4.3.4(supports-color@8.1.1)
@@ -2683,8 +2692,8 @@ packages:
- supports-color
dev: true
- /@argos-ci/util@1.2.0:
- resolution: {integrity: sha512-e/sAEECDzUr02v5sXPcd1Ky3WqNOMDWkutfBC8RBizj3Z+CUp6uwV+bzyTZaE9Zms9WekqXAfKe1rZkEie+DrA==}
+ /@argos-ci/util@1.2.1:
+ resolution: {integrity: sha512-/o7t0TcSED3BsBnnPrvXdmT+reThGMoGC9Lk+TTghrEE9GFlSKhjBmfYt4fUgXj5hQIe5tcdO01BVB2TsjjYSw==}
engines: {node: '>=16.0.0'}
dev: true
@@ -2768,7 +2777,7 @@ packages:
dependencies:
'@babel/compat-data': 7.23.5
'@babel/helper-validator-option': 7.23.5
- browserslist: 4.22.2
+ browserslist: 4.23.0
lru-cache: 5.1.1
semver: 6.3.1
@@ -4176,7 +4185,7 @@ packages:
lodash.mergewith: 4.6.2
dev: false
- /@chakra-ui/system@2.6.2(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(react@18.2.0):
+ /@chakra-ui/system@2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0):
resolution: {integrity: sha512-EGtpoEjLrUu4W1fHD+a62XR+hzC5YfsWm+6lO0Kybcga3yYEij9beegO0jZgug27V+Rf7vns95VPVP6mFd/DEQ==}
peerDependencies:
'@emotion/react': ^11.0.0
@@ -4189,8 +4198,8 @@ packages:
'@chakra-ui/styled-system': 2.9.2
'@chakra-ui/theme-utils': 2.0.21
'@chakra-ui/utils': 2.0.15
- '@emotion/react': 11.11.3(@types/react@18.2.55)(react@18.2.0)
- '@emotion/styled': 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0)
+ '@emotion/react': 11.11.4(@types/react@18.2.55)(react@18.2.0)
+ '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.55)(react@18.2.0)
react: 18.2.0
react-fast-compare: 3.2.2
dev: false
@@ -4380,8 +4389,8 @@ packages:
/@emotion/memoize@0.8.1:
resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==}
- /@emotion/react@11.11.3(@types/react@18.2.55)(react@18.2.0):
- resolution: {integrity: sha512-Cnn0kuq4DoONOMcnoVsTOR8E+AdnKFf//6kUWc4LCdnxj31pZWn7rIULd6Y7/Js1PiPHzn7SKCM9vB/jBni8eA==}
+ /@emotion/react@11.11.4(@types/react@18.2.55)(react@18.2.0):
+ resolution: {integrity: sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==}
peerDependencies:
'@types/react': '*'
react: '>=16.8.0'
@@ -4425,7 +4434,7 @@ packages:
/@emotion/sheet@1.2.2:
resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==}
- /@emotion/styled@11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0):
+ /@emotion/styled@11.11.0(@emotion/react@11.11.4)(@types/react@18.2.55)(react@18.2.0):
resolution: {integrity: sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==}
peerDependencies:
'@emotion/react': ^11.0.0-rc.0
@@ -4438,7 +4447,7 @@ packages:
'@babel/runtime': 7.23.9
'@emotion/babel-plugin': 11.11.0
'@emotion/is-prop-valid': 1.2.1
- '@emotion/react': 11.11.3(@types/react@18.2.55)(react@18.2.0)
+ '@emotion/react': 11.11.4(@types/react@18.2.55)(react@18.2.0)
'@emotion/serialize': 1.1.3
'@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0)
'@emotion/utils': 1.2.1
@@ -4688,7 +4697,7 @@ packages:
/@fast-csv/format@4.3.5:
resolution: {integrity: sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A==}
dependencies:
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
lodash.escaperegexp: 4.1.2
lodash.isboolean: 3.0.3
lodash.isequal: 4.5.0
@@ -4699,7 +4708,7 @@ packages:
/@fast-csv/parse@4.3.6:
resolution: {integrity: sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA==}
dependencies:
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
lodash.escaperegexp: 4.1.2
lodash.groupby: 4.6.0
lodash.isfunction: 3.0.9
@@ -4891,7 +4900,7 @@ packages:
dependencies:
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
jest-mock: 29.7.0
dev: false
@@ -4901,7 +4910,7 @@ packages:
dependencies:
'@jest/types': 29.6.3
'@sinonjs/fake-timers': 10.3.0
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
jest-message-util: 29.7.0
jest-mock: 29.7.0
jest-util: 29.7.0
@@ -4919,7 +4928,7 @@ packages:
dependencies:
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
'@types/yargs': 15.0.19
chalk: 4.1.2
dev: false
@@ -4931,7 +4940,7 @@ packages:
'@jest/schemas': 29.6.3
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
'@types/yargs': 17.0.32
chalk: 4.1.2
dev: false
@@ -4974,8 +4983,8 @@ packages:
'@jridgewell/resolve-uri': 3.1.0
'@jridgewell/sourcemap-codec': 1.4.15
- /@lerna/create@8.0.2:
- resolution: {integrity: sha512-AueSlfiYXqEmy9/EIc17mjlaHFuv734dfgVBegyoefIA7hdeoExtsXnACWf8Tw5af6gwyTL3KAp6QQyc1sTuZQ==}
+ /@lerna/create@8.1.2:
+ resolution: {integrity: sha512-GzScCIkAW3tg3+Yn/MKCH9963bzG+zpjGz2NdfYDlYWI7p0f/SH46v1dqpPpYmZ2E/m3JK8HjTNNNL8eIm8/YQ==}
engines: {node: '>=18.0.0'}
dependencies:
'@npmcli/run-script': 7.0.2
@@ -5136,7 +5145,7 @@ packages:
resolution: {integrity: sha512-W6R1dZJgbYfLmQKf7Es2WUw0pkDkEVUf2jA22DYu0JOa9M3pjvOqoC9HgOPGNNJTu6SCWLSWh3euv1Jn2NmeQA==}
dev: false
- /@mui/joy@5.0.0-beta.22(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0):
+ /@mui/joy@5.0.0-beta.22(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-XFJd/cWXqt9MMlaUh10QQH893YaRw2CORYRhQovXvaJk7mmt/Sc4q3Fb7ANCXf4xMUPdwqdnvawLkAOAKVHuXg==}
engines: {node: '>=12.0.0'}
peerDependencies:
@@ -5154,11 +5163,11 @@ packages:
optional: true
dependencies:
'@babel/runtime': 7.23.9
- '@emotion/react': 11.11.3(@types/react@18.2.55)(react@18.2.0)
- '@emotion/styled': 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0)
+ '@emotion/react': 11.11.4(@types/react@18.2.55)(react@18.2.0)
+ '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.55)(react@18.2.0)
'@mui/base': 5.0.0-beta.31(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
'@mui/core-downloads-tracker': 5.15.8
- '@mui/system': 5.15.8(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react@18.2.0)
+ '@mui/system': 5.15.8(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react@18.2.0)
'@mui/types': 7.2.13(@types/react@18.2.55)
'@mui/utils': 5.15.8(@types/react@18.2.55)(react@18.2.0)
'@types/react': 18.2.55
@@ -5168,7 +5177,7 @@ packages:
react-dom: 18.2.0(react@18.2.0)
dev: false
- /@mui/material@5.15.4(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0):
+ /@mui/material@5.15.4(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-T/LGRAC+M0c+D3+y67eHwIN5bSje0TxbcJCWR0esNvU11T0QwrX3jedXItPNBwMupF2F5VWCDHBVLlFnN3+ABA==}
engines: {node: '>=12.0.0'}
peerDependencies:
@@ -5186,11 +5195,11 @@ packages:
optional: true
dependencies:
'@babel/runtime': 7.23.9
- '@emotion/react': 11.11.3(@types/react@18.2.55)(react@18.2.0)
- '@emotion/styled': 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0)
+ '@emotion/react': 11.11.4(@types/react@18.2.55)(react@18.2.0)
+ '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.55)(react@18.2.0)
'@mui/base': 5.0.0-beta.31(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
'@mui/core-downloads-tracker': 5.15.8
- '@mui/system': 5.15.8(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react@18.2.0)
+ '@mui/system': 5.15.8(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react@18.2.0)
'@mui/types': 7.2.13(@types/react@18.2.55)
'@mui/utils': 5.15.8(@types/react@18.2.55)(react@18.2.0)
'@types/react': 18.2.55
@@ -5221,7 +5230,7 @@ packages:
react: 18.2.0
dev: false
- /@mui/styled-engine@5.15.8(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(react@18.2.0):
+ /@mui/styled-engine@5.15.8(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0):
resolution: {integrity: sha512-31ZKPGsS0OiSwuzi8RWoTiWRdUWXPRiOQkyG9bRYX/zvoYeBXEdbsLEgbryug5mVRsPpvwbH5q/i/t6MkjQ71g==}
engines: {node: '>=12.0.0'}
peerDependencies:
@@ -5236,14 +5245,14 @@ packages:
dependencies:
'@babel/runtime': 7.23.9
'@emotion/cache': 11.11.0
- '@emotion/react': 11.11.3(@types/react@18.2.55)(react@18.2.0)
- '@emotion/styled': 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0)
+ '@emotion/react': 11.11.4(@types/react@18.2.55)(react@18.2.0)
+ '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.55)(react@18.2.0)
csstype: 3.1.3
prop-types: 15.8.1
react: 18.2.0
dev: false
- /@mui/system@5.15.8(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react@18.2.0):
+ /@mui/system@5.15.8(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react@18.2.0):
resolution: {integrity: sha512-BUMJvlz1UqIqDPyrvc+MwjOUkWKskUPAOUuRh2KMAworiXuuUmtIivxSfdGll2ex6RHSylu4yc5dJZByOI8EcQ==}
engines: {node: '>=12.0.0'}
peerDependencies:
@@ -5260,10 +5269,10 @@ packages:
optional: true
dependencies:
'@babel/runtime': 7.23.9
- '@emotion/react': 11.11.3(@types/react@18.2.55)(react@18.2.0)
- '@emotion/styled': 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0)
+ '@emotion/react': 11.11.4(@types/react@18.2.55)(react@18.2.0)
+ '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.55)(react@18.2.0)
'@mui/private-theming': 5.15.8(@types/react@18.2.55)(react@18.2.0)
- '@mui/styled-engine': 5.15.8(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(react@18.2.0)
+ '@mui/styled-engine': 5.15.8(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0)
'@mui/types': 7.2.13(@types/react@18.2.55)
'@mui/utils': 5.15.8(@types/react@18.2.55)(react@18.2.0)
'@types/react': 18.2.55
@@ -5302,8 +5311,8 @@ packages:
react-is: 18.2.0
dev: false
- /@mui/x-charts@6.19.4(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@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):
- resolution: {integrity: sha512-0kNg/6jVuG4GoZbV6qb9pYmL8Bhor1m55VIuVlu3p9WdsZFLUyksS4r08viII3YMxosl6MJdFnEfMjWJDAswXw==}
+ /@mui/x-charts@6.19.5(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@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):
+ resolution: {integrity: sha512-BBRGLup5gpaLkhECv+J2ahFbDDgqK4BgLyLXLHKUASoWSU3YRCyDt9ifBREspEPfTZXgrcqNkybAl5b+l6baFQ==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@emotion/react': ^11.9.0
@@ -5319,8 +5328,8 @@ packages:
optional: true
dependencies:
'@babel/runtime': 7.23.9
- '@emotion/react': 11.11.3(@types/react@18.2.55)(react@18.2.0)
- '@emotion/styled': 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0)
+ '@emotion/react': 11.11.4(@types/react@18.2.55)(react@18.2.0)
+ '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.55)(react@18.2.0)
'@mui/base': 5.0.0-beta.30(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
'@mui/material': link:packages/mui-material/build
'@mui/system': link:packages/mui-system/build
@@ -5337,8 +5346,8 @@ packages:
- '@types/react'
dev: false
- /@mui/x-data-grid-generator@6.19.4(@mui/icons-material@packages+mui-icons-material+build)(@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):
- resolution: {integrity: sha512-NFopdNFmpiN0L+rgfsXuS2g5nsMdEnBA7OpCqz7I+iF3XU3bKkvWMCc7DfSNqGLQfz4YT8UkGF8BvyChL/gC3g==}
+ /@mui/x-data-grid-generator@6.19.6(@mui/icons-material@packages+mui-icons-material+build)(@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):
+ resolution: {integrity: sha512-NULYBJgJQpTcQlp6uPPGIzWfYEagi+rdsxKCpTDQLuWQ8sCCgTA/f9NLC0cmev8DQSb0utvIBTdWq3sTT1rzAQ==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@mui/icons-material': ^5.4.1
@@ -5349,7 +5358,7 @@ packages:
'@mui/base': 5.0.0-beta.30(@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': 6.19.4(@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-premium': 6.19.6(@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)
chance: 1.1.11
clsx: 2.1.0
lru-cache: 7.18.3
@@ -5360,8 +5369,8 @@ packages:
- react-dom
dev: false
- /@mui/x-data-grid-premium@6.19.4(@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):
- resolution: {integrity: sha512-s1XzFQy1o/zG4WxL2XUEHh/ec4WucKPyYC44tBqCv+xcbxYhgFgeA2/zmRkQQI13E5LYNehK0J9EsVIVU8pIiw==}
+ /@mui/x-data-grid-premium@6.19.6(@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):
+ resolution: {integrity: sha512-G0wQeagVcq2Sl8yDWVXolJk6JJwVIzeW9wUU55niF9a+i1VN0r8Wipp858liIA3A+sS++H/Ai6CDyx7KwqylhQ==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@mui/material': ^5.4.1
@@ -5373,8 +5382,8 @@ packages:
'@mui/material': link:packages/mui-material/build
'@mui/system': link:packages/mui-system/build
'@mui/utils': 5.15.8(@types/react@18.2.55)(react@18.2.0)
- '@mui/x-data-grid': 6.19.4(@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-pro': 6.19.4(@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': 6.19.6(@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-pro': 6.19.6(@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-license-pro': 6.10.2(@types/react@18.2.55)(react@18.2.0)
'@types/format-util': 1.0.4
clsx: 2.1.0
@@ -5387,8 +5396,8 @@ packages:
- '@types/react'
dev: false
- /@mui/x-data-grid-pro@6.19.4(@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):
- resolution: {integrity: sha512-4/atHPlOpWMcKoOQ24HR3EOeBI1NDhx/Ahfmpwui+YgR7ZEy7AZdaTmOxjQNV5DZJ6r96WeI/l9BKj9JvsMDBg==}
+ /@mui/x-data-grid-pro@6.19.6(@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):
+ resolution: {integrity: sha512-Bh2qvRHoHxgrUHKMeu46VRzl2lOSvxjtPAhJncRUJuYE6hVu2VZxvqrdmdxdIWkom2ygpFwq6YP6xMJsDFX+QQ==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@mui/material': ^5.4.1
@@ -5400,7 +5409,7 @@ packages:
'@mui/material': link:packages/mui-material/build
'@mui/system': link:packages/mui-system/build
'@mui/utils': 5.15.8(@types/react@18.2.55)(react@18.2.0)
- '@mui/x-data-grid': 6.19.4(@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': 6.19.6(@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-license-pro': 6.10.2(@types/react@18.2.55)(react@18.2.0)
'@types/format-util': 1.0.4
clsx: 2.1.0
@@ -5412,8 +5421,8 @@ packages:
- '@types/react'
dev: false
- /@mui/x-data-grid@6.19.4(@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):
- resolution: {integrity: sha512-qXBe2mSetdsl3ZPqB/1LpKNkEiaYUiFXIaMHTIjuzLyusXgt+w7UsHYO7R+aJYUU7c3FeHla0R1nwRMY3kZ5ng==}
+ /@mui/x-data-grid@6.19.6(@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):
+ resolution: {integrity: sha512-jpZkX1Gnlo87gKcD10mKMY8YoAzUD8Cv3/IvedH3FINDKO3hnraMeOciKDeUk0tYSj8RUDB02kpTHCM8ojLVBA==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@mui/material': ^5.4.1
@@ -5434,8 +5443,8 @@ packages:
- '@types/react'
dev: false
- /@mui/x-date-pickers-pro@6.19.4(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@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-iNSDDJ+d/7t2mRp9ewRU3wcdAyX4e59gtI7eUS/TK1Syx1IYsD7FwGCv5yz09oa1Rik/ZcTGlLAh8CNWy8pXmg==}
+ /@mui/x-date-pickers-pro@6.19.6(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@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-6TwlGgAGE0TMIrfYaOrGhh79YyHDKt9ze22irPBOwz7IQeJ6vnGLzE1KJ+ddklQjaGtN9X7O++55r8mfs3mLSA==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@emotion/react': ^11.9.0
@@ -5472,13 +5481,13 @@ packages:
optional: true
dependencies:
'@babel/runtime': 7.23.9
- '@emotion/react': 11.11.3(@types/react@18.2.55)(react@18.2.0)
- '@emotion/styled': 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0)
+ '@emotion/react': 11.11.4(@types/react@18.2.55)(react@18.2.0)
+ '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.55)(react@18.2.0)
'@mui/base': 5.0.0-beta.30(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
'@mui/material': link:packages/mui-material/build
'@mui/system': link:packages/mui-system/build
'@mui/utils': 5.15.8(@types/react@18.2.55)(react@18.2.0)
- '@mui/x-date-pickers': 6.19.4(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@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.6(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@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
@@ -5491,8 +5500,8 @@ packages:
- '@types/react'
dev: false
- /@mui/x-date-pickers@6.19.4(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@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-LekaacLGnoQNN5hD6iXeHFL4LbZPnr1BM57hnUKy5UgKDHqzHzZSdPGc2p7Ktv/Z2NDbpPaLEAgrLwISKIYcow==}
+ /@mui/x-date-pickers@6.19.6(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@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-QW9AFcPi0vLpkUhmquhhyhLaBvB0AZJuu3NTrE173qNKx3Z3n51aCLY9bc7c6i4ltZMMsVRHlvzQjsve04TC8A==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@emotion/react': ^11.9.0
@@ -5529,8 +5538,8 @@ packages:
optional: true
dependencies:
'@babel/runtime': 7.23.9
- '@emotion/react': 11.11.3(@types/react@18.2.55)(react@18.2.0)
- '@emotion/styled': 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0)
+ '@emotion/react': 11.11.4(@types/react@18.2.55)(react@18.2.0)
+ '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.55)(react@18.2.0)
'@mui/base': 5.0.0-beta.30(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
'@mui/material': link:packages/mui-material/build
'@mui/system': link:packages/mui-system/build
@@ -5560,7 +5569,7 @@ packages:
- '@types/react'
dev: false
- /@mui/x-tree-view@6.17.0(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@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-tree-view@6.17.0(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@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):
resolution: {integrity: sha512-09dc2D+Rjg2z8KOaxbUXyPi0aw7fm2jurEtV8Xw48xJ00joLWd5QJm1/v4CarEvaiyhTQzHImNqdgeJW8ZQB6g==}
engines: {node: '>=14.0.0'}
peerDependencies:
@@ -5572,8 +5581,8 @@ packages:
react-dom: ^17.0.0 || ^18.0.0
dependencies:
'@babel/runtime': 7.23.9
- '@emotion/react': 11.11.3(@types/react@18.2.55)(react@18.2.0)
- '@emotion/styled': 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0)
+ '@emotion/react': 11.11.4(@types/react@18.2.55)(react@18.2.0)
+ '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.55)(react@18.2.0)
'@mui/base': 5.0.0-beta.30(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
'@mui/material': link:packages/mui-material/build
'@mui/system': link:packages/mui-system/build
@@ -5591,8 +5600,8 @@ packages:
/@next/env@13.5.1:
resolution: {integrity: sha512-CIMWiOTyflFn/GFx33iYXkgLSQsMQZV4jB91qaj/TfxGaGOXxn8C1j72TaUSPIyN7ziS/AYG46kGmnvuk1oOpg==}
- /@next/eslint-plugin-next@14.1.0:
- resolution: {integrity: sha512-x4FavbNEeXx/baD/zC/SdrvkjSby8nBn8KcCREqk6UuwvwoAPZmaV8TFCAuo/cpovBRTIY67mHhe86MQQm/68Q==}
+ /@next/eslint-plugin-next@14.1.1:
+ resolution: {integrity: sha512-NP1WoGFnFLpqqCWgGFjnn/sTwUExdPyjeFKRdQP1X/bL/tjAQ/TXDmYqw6vzGaP5NaZ2u6xzg+N/0nd7fOPOGQ==}
dependencies:
glob: 10.3.10
dev: true
@@ -6252,12 +6261,12 @@ packages:
requiresBuild: true
optional: true
- /@playwright/test@1.41.2:
- resolution: {integrity: sha512-qQB9h7KbibJzrDpkXkYvsmiDJK14FULCCZgEcoe2AvFAS64oCirWTwzTlAYEbKaRxWs5TFesE1Na6izMv3HfGg==}
+ /@playwright/test@1.42.1:
+ resolution: {integrity: sha512-Gq9rmS54mjBL/7/MvBaNOBwbfnh7beHvS6oS4srqXFcQHpQCV1+c8JXWE8VLPyRDhgS3H8x8A7hztqI9VnwrAQ==}
engines: {node: '>=16'}
hasBin: true
dependencies:
- playwright: 1.41.2
+ playwright: 1.42.1
dev: true
/@polka/url@1.0.0-next.21:
@@ -6981,6 +6990,11 @@ packages:
engines: {node: '>=18'}
dev: true
+ /@sindresorhus/merge-streams@2.2.1:
+ resolution: {integrity: sha512-255V7MMIKw6aQ43Wbqp9HZ+VHn6acddERTLiiLnlcPLU9PdTq9Aijl12oklAgUEblLWye+vHLzmqBx6f2TGcZw==}
+ engines: {node: '>=18'}
+ dev: true
+
/@sinonjs/commons@2.0.0:
resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==}
dependencies:
@@ -7019,11 +7033,11 @@ packages:
'@types/promise.allsettled': 1.0.3
'@types/tsscmp': 1.0.0
axios: 1.6.5(debug@4.3.4)
- express: 4.18.2
+ express: 4.18.3
path-to-regexp: 6.2.1
please-upgrade-node: 3.2.0
promise.allsettled: 1.0.6
- raw-body: 2.5.1
+ raw-body: 2.5.2
tsscmp: 1.0.6
transitivePeerDependencies:
- bufferutil
@@ -7036,14 +7050,14 @@ packages:
resolution: {integrity: sha512-DTuBFbqu4gGfajREEMrkq5jBhcnskinhr4+AnfJEk48zhVeEv3XnUKGIX98B74kxhYsIMfApGGySTn7V3b5yBA==}
engines: {node: '>= 12.13.0', npm: '>= 6.12.0'}
dependencies:
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
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.15
+ '@types/node': 18.19.21
dev: false
/@slack/oauth@2.6.2:
@@ -7053,7 +7067,7 @@ packages:
'@slack/logger': 3.0.0
'@slack/web-api': 6.12.0
'@types/jsonwebtoken': 8.5.9
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
jsonwebtoken: 9.0.0
lodash.isstring: 4.0.1
transitivePeerDependencies:
@@ -7066,7 +7080,7 @@ packages:
dependencies:
'@slack/logger': 3.0.0
'@slack/web-api': 6.12.0
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
'@types/p-queue': 2.3.2
'@types/ws': 7.4.7
eventemitter3: 3.1.2
@@ -7092,7 +7106,7 @@ packages:
'@slack/logger': 3.0.0
'@slack/types': 2.11.0
'@types/is-stream': 1.1.0
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
axios: 1.6.5(debug@4.3.4)
eventemitter3: 3.1.2
form-data: 2.5.1
@@ -7240,80 +7254,80 @@ packages:
'@testing-library/dom': 9.3.4
dev: true
- /@theme-ui/color-modes@0.16.1(@emotion/react@11.11.3)(react@18.2.0):
- resolution: {integrity: sha512-G2YoNEMwZroRS0DcftUG+E/8WM5/Osf8TRrQLLK+L43HJ4BmaWuBmVeyoNOaPBDlAuqMBx2203VRgoPmUaMqOg==}
+ /@theme-ui/color-modes@0.16.2(@emotion/react@11.11.4)(react@18.2.0):
+ resolution: {integrity: sha512-jWEWx53lxNgWCT38i/kwLV2rsvJz8lVZgi5oImnVwYba9VejXD23q1ckbNFJHosQ8KKXY87ht0KPC6BQFIiHtQ==}
peerDependencies:
'@emotion/react': ^11.11.1
react: '>=18'
dependencies:
- '@emotion/react': 11.11.3(@types/react@18.2.55)(react@18.2.0)
- '@theme-ui/core': 0.16.1(@emotion/react@11.11.3)(react@18.2.0)
- '@theme-ui/css': 0.16.1(@emotion/react@11.11.3)
+ '@emotion/react': 11.11.4(@types/react@18.2.55)(react@18.2.0)
+ '@theme-ui/core': 0.16.2(@emotion/react@11.11.4)(react@18.2.0)
+ '@theme-ui/css': 0.16.2(@emotion/react@11.11.4)
deepmerge: 4.3.1
react: 18.2.0
dev: false
- /@theme-ui/components@0.16.1(@emotion/react@11.11.3)(@theme-ui/theme-provider@0.16.1)(react@18.2.0):
- resolution: {integrity: sha512-3v56xR8Rn9LgLzknt4TXLSvnxmAZ//lN8lW87J5yKqp+reJUPDWqItLCOv899sMRcOMpihyMfHUpBRhSG/Aeng==}
+ /@theme-ui/components@0.16.2(@emotion/react@11.11.4)(@theme-ui/theme-provider@0.16.2)(react@18.2.0):
+ resolution: {integrity: sha512-d9HDxLTZzVHSiNNQUJrs4k0FU9kTFZhM3KjR+lVuztoWSGhkZEjf1KrWK8OWWXPH2LxEC5okcvggx177tnfejg==}
peerDependencies:
'@emotion/react': ^11.11.1
- '@theme-ui/theme-provider': ^0.16.1
+ '@theme-ui/theme-provider': ^0.16.2
react: '>=18'
dependencies:
- '@emotion/react': 11.11.3(@types/react@18.2.55)(react@18.2.0)
+ '@emotion/react': 11.11.4(@types/react@18.2.55)(react@18.2.0)
'@styled-system/color': 5.1.2
'@styled-system/should-forward-prop': 5.1.5
'@styled-system/space': 5.1.2
- '@theme-ui/core': 0.16.1(@emotion/react@11.11.3)(react@18.2.0)
- '@theme-ui/css': 0.16.1(@emotion/react@11.11.3)
- '@theme-ui/theme-provider': 0.16.1(@emotion/react@11.11.3)(react@18.2.0)
+ '@theme-ui/core': 0.16.2(@emotion/react@11.11.4)(react@18.2.0)
+ '@theme-ui/css': 0.16.2(@emotion/react@11.11.4)
+ '@theme-ui/theme-provider': 0.16.2(@emotion/react@11.11.4)(react@18.2.0)
'@types/styled-system': 5.1.15
react: 18.2.0
dev: false
- /@theme-ui/core@0.16.1(@emotion/react@11.11.3)(react@18.2.0):
- resolution: {integrity: sha512-9Z0Fn50zdIWre0Apz3ObwfHXZ/zjw7NUhgRrSLYn/gdkJSPZZ8fcaY7Q2rnjfcrMt9DRCg5CPfQGLJqL1NY8xw==}
+ /@theme-ui/core@0.16.2(@emotion/react@11.11.4)(react@18.2.0):
+ resolution: {integrity: sha512-bBd/ltbwO9vIUjF1jtlOX6XN0IIOdf1vzBp2JCKsSOqdfn84m+XL8OogIe/zOhQ+aM94Nrq4+32tFJc8sFav4Q==}
peerDependencies:
'@emotion/react': ^11.11.1
react: '>=18'
dependencies:
- '@emotion/react': 11.11.3(@types/react@18.2.55)(react@18.2.0)
- '@theme-ui/css': 0.16.1(@emotion/react@11.11.3)
+ '@emotion/react': 11.11.4(@types/react@18.2.55)(react@18.2.0)
+ '@theme-ui/css': 0.16.2(@emotion/react@11.11.4)
deepmerge: 4.3.1
react: 18.2.0
dev: false
- /@theme-ui/css@0.16.1(@emotion/react@11.11.3):
- resolution: {integrity: sha512-8TO2DbiqPrRyTlGRIElDak/p0M4ykyd8LkeavyOF/sTE9s93AwyFcle6KYYMEULrJP49SyYiEvTif7J7Z50DhA==}
+ /@theme-ui/css@0.16.2(@emotion/react@11.11.4):
+ resolution: {integrity: sha512-fNe+FhwKC5+7jQfxCRnm3oqYNhMFuiWiLA9OoLBEkt3b4egot29UK1+fqemwiNVjl206e2fPT5Z7uXRdb6LC2A==}
peerDependencies:
'@emotion/react': ^11.11.1
dependencies:
- '@emotion/react': 11.11.3(@types/react@18.2.55)(react@18.2.0)
+ '@emotion/react': 11.11.4(@types/react@18.2.55)(react@18.2.0)
csstype: 3.1.3
dev: false
- /@theme-ui/global@0.16.1(@emotion/react@11.11.3)(react@18.2.0):
- resolution: {integrity: sha512-2GHRYAz4meF5sn3XxwdFSJMENICSJNj6ZEfQyHaioIXt3t46wXdPpZNjCStxdElQ3QVQgYxY6jR+ILUFORaR0w==}
+ /@theme-ui/global@0.16.2(@emotion/react@11.11.4)(react@18.2.0):
+ resolution: {integrity: sha512-Y2CtNblERWJDxZpckR1TA0+UTH762VA82v/xTMMbufcEmJjzPasEOSZxJYH3qUOuCaJpbX5eFT49MEAujvLCzg==}
peerDependencies:
'@emotion/react': ^11.11.1
react: '>=18'
dependencies:
- '@emotion/react': 11.11.3(@types/react@18.2.55)(react@18.2.0)
- '@theme-ui/core': 0.16.1(@emotion/react@11.11.3)(react@18.2.0)
- '@theme-ui/css': 0.16.1(@emotion/react@11.11.3)
+ '@emotion/react': 11.11.4(@types/react@18.2.55)(react@18.2.0)
+ '@theme-ui/core': 0.16.2(@emotion/react@11.11.4)(react@18.2.0)
+ '@theme-ui/css': 0.16.2(@emotion/react@11.11.4)
react: 18.2.0
dev: false
- /@theme-ui/theme-provider@0.16.1(@emotion/react@11.11.3)(react@18.2.0):
- resolution: {integrity: sha512-+/3BJYLIOC2DwTS76cqNhigRQJJ+qOT845DYF7t3TaG2fXDfgh16/DGZSnVjGOGc9dYE3C/ZFAYcVDVwO94Guw==}
+ /@theme-ui/theme-provider@0.16.2(@emotion/react@11.11.4)(react@18.2.0):
+ resolution: {integrity: sha512-LRnVevODcGqO0JyLJ3wht+PV3ZoZcJ7XXLJAJWDoGeII4vZcPQKwVy4Lpz/juHsZppQxKcB3U+sQDGBnP25irQ==}
peerDependencies:
'@emotion/react': ^11.11.1
react: '>=18'
dependencies:
- '@emotion/react': 11.11.3(@types/react@18.2.55)(react@18.2.0)
- '@theme-ui/color-modes': 0.16.1(@emotion/react@11.11.3)(react@18.2.0)
- '@theme-ui/core': 0.16.1(@emotion/react@11.11.3)(react@18.2.0)
- '@theme-ui/css': 0.16.1(@emotion/react@11.11.3)
+ '@emotion/react': 11.11.4(@types/react@18.2.55)(react@18.2.0)
+ '@theme-ui/color-modes': 0.16.2(@emotion/react@11.11.4)(react@18.2.0)
+ '@theme-ui/core': 0.16.2(@emotion/react@11.11.4)(react@18.2.0)
+ '@theme-ui/css': 0.16.2(@emotion/react@11.11.4)
react: 18.2.0
dev: false
@@ -7412,7 +7426,7 @@ packages:
resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==}
dependencies:
'@types/connect': 3.4.35
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
dev: false
/@types/cacheable-request@6.0.2:
@@ -7420,30 +7434,30 @@ packages:
dependencies:
'@types/http-cache-semantics': 4.0.1
'@types/keyv': 3.1.4
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
'@types/responselike': 1.0.0
dev: true
/@types/chai-dom@1.11.3:
resolution: {integrity: sha512-EUEZI7uID4ewzxnU7DJXtyvykhQuwe+etJ1wwOiJyQRTH/ifMWKX+ghiXkxCUvNJ6IQDodf0JXhuP6zZcy2qXQ==}
dependencies:
- '@types/chai': 4.3.11
+ '@types/chai': 4.3.12
dev: true
- /@types/chai@4.3.11:
- resolution: {integrity: sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==}
+ /@types/chai@4.3.12:
+ resolution: {integrity: sha512-zNKDHG/1yxm8Il6uCCVsm+dRdEsJlFoDu73X17y09bId6UwoYww+vFBsAcRzl8knM1sab3Dp1VRikFQwDOtDDw==}
dev: true
/@types/cheerio@0.22.31:
resolution: {integrity: sha512-Kt7Cdjjdi2XWSfrZ53v4Of0wG3ZcmaegFXjMmz9tfNrZSkzzo36G0AL1YqSdcIA78Etjt6E609pt5h1xnQkPUw==}
dependencies:
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
dev: true
/@types/connect@3.4.35:
resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==}
dependencies:
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
dev: false
/@types/cookie@0.4.1:
@@ -7491,7 +7505,7 @@ packages:
/@types/express-serve-static-core@4.17.35:
resolution: {integrity: sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==}
dependencies:
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
'@types/qs': 6.9.7
'@types/range-parser': 1.2.4
'@types/send': 0.17.1
@@ -7513,7 +7527,7 @@ packages:
resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==}
dependencies:
'@types/jsonfile': 6.1.1
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
dev: true
/@types/hoist-non-react-statics@3.3.5:
@@ -7537,7 +7551,7 @@ packages:
/@types/is-stream@1.1.0:
resolution: {integrity: sha512-jkZatu4QVbR60mpIzjINmtS1ZF4a/FqdTUTBeQDVOQ2PYyidtwFKr0B5G6ERukKwliq+7mIXvxyppwzG5EgRYg==}
dependencies:
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
dev: false
/@types/istanbul-lib-coverage@2.0.6:
@@ -7577,19 +7591,19 @@ packages:
/@types/jsonfile@6.1.1:
resolution: {integrity: sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==}
dependencies:
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
dev: true
/@types/jsonwebtoken@8.5.9:
resolution: {integrity: sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==}
dependencies:
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
dev: false
/@types/keyv@3.1.4:
resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==}
dependencies:
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
dev: true
/@types/lodash.mergewith@4.6.7:
@@ -7633,8 +7647,8 @@ packages:
resolution: {integrity: sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==}
dev: true
- /@types/node@18.19.15:
- resolution: {integrity: sha512-AMZ2UWx+woHNfM11PyAEQmfSxi05jm9OlkxczuHeEqmvwPkYj6MWv44gbzDPefYOLysTOFyI3ziiy2ONmUZfpA==}
+ /@types/node@18.19.21:
+ resolution: {integrity: sha512-2Q2NeB6BmiTFQi4DHBzncSoq/cJMLDdhPaAoJFnFCyD9a8VPZRf7a1GAwp1Edb7ROaZc5Jz/tnZyL6EsWMRaqw==}
dependencies:
undici-types: 5.26.5
@@ -7732,13 +7746,13 @@ packages:
/@types/resolve@0.0.8:
resolution: {integrity: sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==}
dependencies:
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
dev: true
/@types/responselike@1.0.0:
resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==}
dependencies:
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
dev: true
/@types/retry@0.12.0:
@@ -7756,7 +7770,7 @@ packages:
resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==}
dependencies:
'@types/mime': 1.3.2
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
dev: false
/@types/serve-static@1.15.2:
@@ -7764,7 +7778,7 @@ packages:
dependencies:
'@types/http-errors': 2.0.1
'@types/mime': 3.0.1
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
dev: false
/@types/sinon@10.0.20:
@@ -7820,7 +7834,7 @@ packages:
/@types/ws@7.4.7:
resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==}
dependencies:
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
dev: false
/@types/yargs-parser@21.0.3:
@@ -8064,27 +8078,27 @@ packages:
'@webassemblyjs/ast': 1.11.6
'@xtuc/long': 4.2.2
- /@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.90.1):
+ /@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.90.3):
resolution: {integrity: sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==}
engines: {node: '>=14.15.0'}
peerDependencies:
webpack: 5.x.x
webpack-cli: 5.x.x
dependencies:
- webpack: 5.90.1(esbuild@0.19.11)(webpack-cli@5.1.4)
- webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.90.1)
+ webpack: 5.90.3(esbuild@0.19.11)(webpack-cli@5.1.4)
+ webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.90.3)
- /@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.90.1):
+ /@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.90.3):
resolution: {integrity: sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==}
engines: {node: '>=14.15.0'}
peerDependencies:
webpack: 5.x.x
webpack-cli: 5.x.x
dependencies:
- webpack: 5.90.1(esbuild@0.19.11)(webpack-cli@5.1.4)
- webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.90.1)
+ webpack: 5.90.3(esbuild@0.19.11)(webpack-cli@5.1.4)
+ webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.90.3)
- /@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack@5.90.1):
+ /@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack@5.90.3):
resolution: {integrity: sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==}
engines: {node: '>=14.15.0'}
peerDependencies:
@@ -8095,21 +8109,21 @@ packages:
webpack-dev-server:
optional: true
dependencies:
- webpack: 5.90.1(esbuild@0.19.11)(webpack-cli@5.1.4)
- webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.90.1)
+ webpack: 5.90.3(esbuild@0.19.11)(webpack-cli@5.1.4)
+ webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.90.3)
- /@wyw-in-js/processor-utils@0.4.1:
- resolution: {integrity: sha512-0MVgPC3Svplm2WB4G4eSLLfx8n1EaIpClMXqNcTmfyrFcpLjYYcSXDP7aVgQVvy5wQCqqq+EmPbnU6yXq8X19w==}
+ /@wyw-in-js/processor-utils@0.5.0:
+ resolution: {integrity: sha512-3sRwuDTMy2GmD+44bhCTcBasCrjBexzYRzhxkmMrX49cpVDmQOH+4O7kX5OMRbmzMXe6Z5MsnxIlDlm3bJlcww==}
engines: {node: '>=16.0.0'}
dependencies:
'@babel/generator': 7.23.6
- '@wyw-in-js/shared': 0.4.1
+ '@wyw-in-js/shared': 0.5.0
transitivePeerDependencies:
- supports-color
dev: false
- /@wyw-in-js/shared@0.4.1:
- resolution: {integrity: sha512-luKAAP6augn+j7EE9bcVP1chs5RdtmJx1PbRIqT8j12oP2YV32fvhHFX/99XxPujYLxFIexZrhJkNKHnL5uyKA==}
+ /@wyw-in-js/shared@0.5.0:
+ resolution: {integrity: sha512-W6Uic3cqRs75XZfXGOYH/0fADbl3Wz/kqnNaowgyNTdTN7/9vdlqk/D/gMT5WGolj4t418+rYe2FHHs0LdlmvA==}
engines: {node: '>=16.0.0'}
dependencies:
debug: 4.3.4(supports-color@8.1.1)
@@ -8119,8 +8133,8 @@ packages:
- supports-color
dev: false
- /@wyw-in-js/transform@0.4.1:
- resolution: {integrity: sha512-MhU/A58QJ7SkAjVNgvmoa5kbg7h28u4RkwGxm0/qt49sPMSlY8AsIW4wXX2k0rX5GTKHASVcNKrSywE2acjzxQ==}
+ /@wyw-in-js/transform@0.5.0:
+ resolution: {integrity: sha512-tpa2/FsB30fdXB1E+9MmfxQYbRgLv/+VMKzpBKNraDH39zwnA2eGGAEho5gpqK40cEV7NH6zhVbaBcEnV0HQyw==}
engines: {node: '>=16.0.0'}
dependencies:
'@babel/core': 7.23.9
@@ -8130,8 +8144,8 @@ packages:
'@babel/template': 7.23.9
'@babel/traverse': 7.23.9
'@babel/types': 7.23.9
- '@wyw-in-js/processor-utils': 0.4.1
- '@wyw-in-js/shared': 0.4.1
+ '@wyw-in-js/processor-utils': 0.5.0
+ '@wyw-in-js/shared': 0.5.0
babel-merge: 3.0.0(@babel/core@7.23.9)
cosmiconfig: 8.2.0
happy-dom: 12.10.3
@@ -8705,15 +8719,6 @@ packages:
resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==}
dev: false
- /assert@2.0.0:
- resolution: {integrity: sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==}
- dependencies:
- es6-object-assign: 1.1.0
- is-nan: 1.3.2
- object-is: 1.1.5
- util: 0.12.5
- dev: false
-
/assertion-error@1.1.0:
resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
@@ -8795,15 +8800,15 @@ packages:
hasBin: true
dev: false
- /autoprefixer@10.4.17(postcss@8.4.35):
- resolution: {integrity: sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==}
+ /autoprefixer@10.4.18(postcss@8.4.35):
+ resolution: {integrity: sha512-1DKbDfsr6KUElM6wg+0zRNkB/Q7WcKYAaK+pzXn+Xqmszm/5Xa9coeNdtP88Vi+dPzZnMjhge8GIV49ZQkDa+g==}
engines: {node: ^10 || ^12 || >=14}
hasBin: true
peerDependencies:
postcss: ^8.1.0
dependencies:
- browserslist: 4.22.2
- caniuse-lite: 1.0.30001579
+ browserslist: 4.23.0
+ caniuse-lite: 1.0.30001593
fraction.js: 4.3.7
normalize-range: 0.1.2
picocolors: 1.0.0
@@ -8823,8 +8828,8 @@ packages:
dependencies:
possible-typed-array-names: 1.0.0
- /aws-sdk@2.1552.0:
- resolution: {integrity: sha512-sRuzlCeSHXUsdLqsV/E+nPrgBn1EI3BoA38D5qfNMRcPTd9j4G8M4AyMymKyNxLoWOKLqz7xFBa801MHflGwEg==}
+ /aws-sdk@2.1569.0:
+ resolution: {integrity: sha512-9puKjesHKOjAYPqFurW/9nv3qhQ+STu3bVa5PN158SCeZPE6NsxZIWnHLglJvKU7N8UXJo1aJHmKDUGrsS7rXw==}
engines: {node: '>= 10.0.0'}
dependencies:
buffer: 4.9.2
@@ -8870,7 +8875,7 @@ packages:
'@babel/core': 7.23.9
dev: false
- /babel-loader@9.1.3(@babel/core@7.23.9)(webpack@5.90.1):
+ /babel-loader@9.1.3(@babel/core@7.23.9)(webpack@5.90.3):
resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==}
engines: {node: '>= 14.15.0'}
peerDependencies:
@@ -8880,7 +8885,7 @@ packages:
'@babel/core': 7.23.9
find-cache-dir: 4.0.0
schema-utils: 4.2.0
- webpack: 5.90.1(esbuild@0.19.11)(webpack-cli@5.1.4)
+ webpack: 5.90.3(esbuild@0.19.11)(webpack-cli@5.1.4)
dev: true
/babel-merge@3.0.0(@babel/core@7.23.9):
@@ -8920,7 +8925,7 @@ packages:
engines: {node: '>= 16'}
dependencies:
find-babel-config: 2.0.0
- glob: 8.0.3
+ glob: 8.1.0
pkg-up: 3.1.0
reselect: 4.1.8
resolve: 1.22.4
@@ -9077,12 +9082,12 @@ packages:
resolution: {integrity: sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==}
dev: false
- /body-parser@1.20.1:
- resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==}
+ /body-parser@1.20.2:
+ resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==}
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
dependencies:
bytes: 3.1.2
- content-type: 1.0.4
+ content-type: 1.0.5
debug: 2.6.9
depd: 2.0.0
destroy: 1.2.0
@@ -9090,7 +9095,7 @@ packages:
iconv-lite: 0.4.24
on-finished: 2.4.1
qs: 6.11.0
- raw-body: 2.5.1
+ raw-body: 2.5.2
type-is: 1.6.18
unpipe: 1.0.0
transitivePeerDependencies:
@@ -9157,15 +9162,15 @@ packages:
pako: 0.2.9
dev: true
- /browserslist@4.22.2:
- resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==}
+ /browserslist@4.23.0:
+ resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
dependencies:
- caniuse-lite: 1.0.30001579
- electron-to-chromium: 1.4.613
+ caniuse-lite: 1.0.30001593
+ electron-to-chromium: 1.4.690
node-releases: 2.0.14
- update-browserslist-db: 1.0.13(browserslist@4.22.2)
+ update-browserslist-db: 1.0.13(browserslist@4.23.0)
/browserstack-local@1.5.1:
resolution: {integrity: sha512-T/wxyWDzvBHbDvl7fZKpFU7mYze6nrUkBhNy+d+8bXBqgQX10HTYvajIGO0wb49oGSLCPM0CMZTV/s7e6LF0sA==}
@@ -9467,8 +9472,8 @@ packages:
/camelize@1.0.0:
resolution: {integrity: sha512-W2lPwkBkMZwFlPCXhIlYgxu+7gC/NUlCtdK652DAJ1JdgV0sTrvuPFshNPrFa1TY2JOkLhgdeEBplB4ezEa+xg==}
- /caniuse-lite@1.0.30001579:
- resolution: {integrity: sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA==}
+ /caniuse-lite@1.0.30001593:
+ resolution: {integrity: sha512-UWM1zlo3cZfkpBysd7AS+z+v007q9G1+fLTUU42rQnY6t2axoogPW/xol6T7juU5EUoOhML4WgBIdG+9yYqAjQ==}
/chai-dom@1.12.0(chai@4.4.1):
resolution: {integrity: sha512-pLP8h6IBR8z1AdeQ+EMcJ7dXPdsax/1Q7gdGZjsnAmSBl3/gItQUYSCo32br1qOy4SlcBjvqId7ilAf3uJ2K1w==}
@@ -9627,7 +9632,7 @@ packages:
engines: {node: '>=12.13.0'}
hasBin: true
dependencies:
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
escape-string-regexp: 4.0.0
is-wsl: 2.2.0
lighthouse-logger: 1.4.2
@@ -9642,7 +9647,7 @@ packages:
/chromium-edge-launcher@1.0.0:
resolution: {integrity: sha512-pgtgjNKZ7i5U++1g1PWv75umkHvhVTDOQIZ+sjeUX9483S7Y6MUvO0lrd7ShGlQlFHMN4SwKTCq/X8hWrbv2KA==}
dependencies:
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
escape-string-regexp: 4.0.0
is-wsl: 2.2.0
lighthouse-logger: 1.4.2
@@ -9684,7 +9689,7 @@ packages:
hasBin: true
dependencies:
archiver: 3.1.1
- aws-sdk: 2.1552.0
+ aws-sdk: 2.1569.0
fs-extra: 6.0.1
glob: 7.2.3
gunzip-maybe: 1.4.2
@@ -9966,7 +9971,7 @@ packages:
dependencies:
mime-db: 1.52.0
- /compression-webpack-plugin@11.0.0(webpack@5.90.1):
+ /compression-webpack-plugin@11.0.0(webpack@5.90.3):
resolution: {integrity: sha512-Nz9dMiu0sag+mgJ5QTkRx0+vwrDZPU/gps7IdrkFE+oRSkgyoX4wbMol7QnXjI5/TEWx8yEwew9MiMjZgdLtjg==}
engines: {node: '>= 18.12.0'}
peerDependencies:
@@ -9974,7 +9979,7 @@ packages:
dependencies:
schema-utils: 4.2.0
serialize-javascript: 6.0.2
- webpack: 5.90.1(esbuild@0.19.11)(webpack-cli@5.1.4)
+ webpack: 5.90.3(esbuild@0.19.11)(webpack-cli@5.1.4)
dev: true
/compression@1.7.4:
@@ -10049,8 +10054,8 @@ packages:
dependencies:
safe-buffer: 5.2.1
- /content-type@1.0.4:
- resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==}
+ /content-type@1.0.5:
+ resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
engines: {node: '>= 0.6'}
/conventional-changelog-angular@7.0.0:
@@ -10165,7 +10170,7 @@ packages:
/core-js-compat@3.35.1:
resolution: {integrity: sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw==}
dependencies:
- browserslist: 4.22.2
+ browserslist: 4.23.0
/core-js-pure@3.32.1:
resolution: {integrity: sha512-f52QZwkFVDPf7UEQZGHKx6NYxsxmVGJe5DIvbzOdRMJlmT6yv0KDjR8rmy3ngr/t5wU54c7Sp/qIJH0ppbhVpQ==}
@@ -10316,7 +10321,7 @@ packages:
/css-box-model@1.2.1:
resolution: {integrity: sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==}
dependencies:
- tiny-invariant: 1.3.1
+ tiny-invariant: 1.3.3
dev: false
/css-color-keywords@1.0.0:
@@ -11023,8 +11028,8 @@ packages:
jake: 10.8.5
dev: true
- /electron-to-chromium@1.4.613:
- resolution: {integrity: sha512-r4x5+FowKG6q+/Wj0W9nidx7QO31BJwmR2uEo+Qh3YLGQ8SbBAFuDFpTxzly/I2gsbrFwBuIjrMp423L3O5U3w==}
+ /electron-to-chromium@1.4.690:
+ resolution: {integrity: sha512-+2OAGjUx68xElQhydpcbqH50hE8Vs2K6TkAeLhICYfndb67CVH0UsZaijmRUE3rHlIxU1u0jxwhgVe6fK3YANA==}
/emoji-regex@10.3.0:
resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==}
@@ -11058,25 +11063,25 @@ packages:
dependencies:
once: 1.4.0
- /engine.io-parser@5.0.4:
- resolution: {integrity: sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==}
+ /engine.io-parser@5.2.2:
+ resolution: {integrity: sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==}
engines: {node: '>=10.0.0'}
dev: true
- /engine.io@6.2.1:
- resolution: {integrity: sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==}
- engines: {node: '>=10.0.0'}
+ /engine.io@6.5.4:
+ resolution: {integrity: sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==}
+ engines: {node: '>=10.2.0'}
dependencies:
'@types/cookie': 0.4.1
'@types/cors': 2.8.12
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
accepts: 1.3.8
base64id: 2.0.0
cookie: 0.4.2
cors: 2.8.5
debug: 4.3.4(supports-color@8.1.1)
- engine.io-parser: 5.0.4
- ws: 8.2.3
+ engine.io-parser: 5.2.2
+ ws: 8.11.0
transitivePeerDependencies:
- bufferutil
- supports-color
@@ -11320,10 +11325,6 @@ packages:
resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==}
dev: true
- /es6-object-assign@1.1.0:
- resolution: {integrity: sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==}
- dev: false
-
/es6-promise@4.2.8:
resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==}
dev: true
@@ -11458,7 +11459,7 @@ packages:
- supports-color
dev: true
- /eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.29.1)(webpack@5.90.1):
+ /eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.29.1)(webpack@5.90.3):
resolution: {integrity: sha512-Y7WIaXWV+Q21Rz/PJgUxiW/FTBOWmU8NTLdz+nz9mMoiz5vAev/fOaQxwD7qRzTfE3HSm1qsxZ5uRd7eX+VEtA==}
engines: {node: '>= 6'}
peerDependencies:
@@ -11477,7 +11478,7 @@ packages:
lodash: 4.17.21
resolve: 2.0.0-next.5
semver: 5.7.2
- webpack: 5.90.1(esbuild@0.19.11)(webpack-cli@5.1.4)
+ webpack: 5.90.3(esbuild@0.19.11)(webpack-cli@5.1.4)
transitivePeerDependencies:
- supports-color
dev: true
@@ -11507,7 +11508,7 @@ packages:
debug: 3.2.7
eslint: 8.56.0
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-webpack: 0.13.8(eslint-plugin-import@2.29.1)(webpack@5.90.1)
+ eslint-import-resolver-webpack: 0.13.8(eslint-plugin-import@2.29.1)(webpack@5.90.3)
transitivePeerDependencies:
- supports-color
dev: true
@@ -11594,8 +11595,8 @@ packages:
semver: 6.3.1
dev: true
- /eslint-plugin-mocha@10.2.0(eslint@8.56.0):
- resolution: {integrity: sha512-ZhdxzSZnd1P9LqDPF0DBcFLpRIGdh1zkF2JHnQklKQOvrQtT73kdP5K9V2mzvbLR+cCAO9OI48NXK/Ax9/ciCQ==}
+ /eslint-plugin-mocha@10.3.0(eslint@8.56.0):
+ resolution: {integrity: sha512-IWzbg2K6B1Q7h37Ih4zMyW+nhmw1JvUlHlbCUUUu6PfOOAUGCB0gxmvv7/U+TQQ6e8yHUv+q7KMdIIum4bx+PA==}
engines: {node: '>=14.0.0'}
peerDependencies:
eslint: '>=7.0.0'
@@ -11915,15 +11916,15 @@ packages:
resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==}
dev: true
- /express@4.18.2:
- resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==}
+ /express@4.18.3:
+ resolution: {integrity: sha512-6VyCijWQ+9O7WuVMTRBTl+cjNNIzD5cY5mQ1WM8r/LEkI2u8EYpOotESNwzNlyCn3g+dmjKYI6BmNneSr/FSRw==}
engines: {node: '>= 0.10.0'}
dependencies:
accepts: 1.3.8
array-flatten: 1.1.1
- body-parser: 1.20.1
+ body-parser: 1.20.2
content-disposition: 0.5.4
- content-type: 1.0.4
+ content-type: 1.0.5
cookie: 0.5.0
cookie-signature: 1.0.6
debug: 2.6.9
@@ -12683,16 +12684,6 @@ packages:
once: 1.4.0
path-is-absolute: 1.0.1
- /glob@7.2.0:
- resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==}
- dependencies:
- fs.realpath: 1.0.0
- inflight: 1.0.6
- inherits: 2.0.4
- minimatch: 3.1.2
- once: 1.4.0
- path-is-absolute: 1.0.1
-
/glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
dependencies:
@@ -12703,8 +12694,8 @@ packages:
once: 1.4.0
path-is-absolute: 1.0.1
- /glob@8.0.3:
- resolution: {integrity: sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==}
+ /glob@8.1.0:
+ resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==}
engines: {node: '>=12'}
dependencies:
fs.realpath: 1.0.0
@@ -12790,6 +12781,18 @@ packages:
unicorn-magic: 0.1.0
dev: true
+ /globby@14.0.1:
+ resolution: {integrity: sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==}
+ engines: {node: '>=18'}
+ dependencies:
+ '@sindresorhus/merge-streams': 2.2.1
+ fast-glob: 3.3.2
+ ignore: 5.3.1
+ path-type: 5.0.0
+ slash: 5.1.0
+ unicorn-magic: 0.1.0
+ dev: true
+
/globjoin@0.1.4:
resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==}
dev: true
@@ -12814,8 +12817,8 @@ packages:
csstype: 3.1.3
dev: false
- /google-auth-library@9.5.0:
- resolution: {integrity: sha512-OUbP509lWVlZxuMY+Cgomw49VzZFP9myIcVeYEpeBlbXJbPC4R+K4BmO9hd3ciYM5QIwm5W1PODcKjqxtkye9Q==}
+ /google-auth-library@9.6.3:
+ resolution: {integrity: sha512-4CacM29MLC2eT9Cey5GDVK4Q8t+MMp8+OEdOaqD9MG6b0dOyLORaaeJMPQ7EESVgm/+z5EKYyFLxgzBJlJgyHQ==}
engines: {node: '>=14'}
dependencies:
base64-js: 1.5.1
@@ -12835,7 +12838,7 @@ packages:
dependencies:
extend: 3.0.2
gaxios: 6.1.1
- google-auth-library: 9.5.0
+ google-auth-library: 9.6.3
qs: 6.11.0
url-template: 2.0.8
uuid: 9.0.1
@@ -13141,7 +13144,7 @@ packages:
readable-stream: 1.0.34
through2: 0.4.2
- /html-webpack-plugin@5.6.0(webpack@5.90.1):
+ /html-webpack-plugin@5.6.0(webpack@5.90.3):
resolution: {integrity: sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==}
engines: {node: '>=10.13.0'}
peerDependencies:
@@ -13158,7 +13161,7 @@ packages:
lodash: 4.17.21
pretty-error: 4.0.0
tapable: 2.2.1
- webpack: 5.90.1(esbuild@0.19.11)(webpack-cli@5.1.4)
+ webpack: 5.90.3(esbuild@0.19.11)(webpack-cli@5.1.4)
dev: true
/htmlparser2@6.1.0:
@@ -13701,14 +13704,6 @@ packages:
resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==}
dev: true
- /is-nan@1.3.2:
- resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- dev: false
-
/is-negative-zero@2.0.2:
resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==}
engines: {node: '>= 0.4'}
@@ -14074,7 +14069,7 @@ packages:
'@jest/environment': 29.7.0
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
jest-mock: 29.7.0
jest-util: 29.7.0
dev: false
@@ -14103,7 +14098,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@jest/types': 29.6.3
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
jest-util: 29.7.0
dev: false
@@ -14112,7 +14107,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@jest/types': 29.6.3
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
chalk: 4.1.2
ci-info: 3.9.0
graceful-fs: 4.2.11
@@ -14135,7 +14130,7 @@ packages:
resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==}
engines: {node: '>= 10.13.0'}
dependencies:
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
merge-stream: 2.0.0
supports-color: 7.2.0
dev: true
@@ -14144,7 +14139,7 @@ packages:
resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
engines: {node: '>= 10.13.0'}
dependencies:
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
merge-stream: 2.0.0
supports-color: 8.1.1
@@ -14152,7 +14147,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.15
+ '@types/node': 18.19.21
jest-util: 29.7.0
merge-stream: 2.0.0
supports-color: 8.1.1
@@ -14603,14 +14598,14 @@ packages:
safe-buffer: 5.2.1
dev: false
- /karma-browserstack-launcher@1.6.0(karma@6.4.2):
+ /karma-browserstack-launcher@1.6.0(karma@6.4.3):
resolution: {integrity: sha512-Y/UWPdHZkHIVH2To4GWHCTzmrsB6H7PBWy6pw+TWz5sr4HW2mcE+Uj6qWgoVNxvQU1Pfn5LQQzI6EQ65p8QbiQ==}
peerDependencies:
karma: '>=0.9'
dependencies:
browserstack: 1.5.3
browserstack-local: 1.5.1
- karma: 6.4.2
+ karma: 6.4.3
q: 1.5.1
transitivePeerDependencies:
- supports-color
@@ -14653,7 +14648,7 @@ packages:
graceful-fs: 4.2.11
dev: true
- /karma-webpack@5.0.0(webpack@5.90.1):
+ /karma-webpack@5.0.0(webpack@5.90.3):
resolution: {integrity: sha512-+54i/cd3/piZuP3dr54+NcFeKOPnys5QeM1IY+0SPASwrtHsliXUiCL50iW+K9WWA7RvamC4macvvQ86l3KtaA==}
engines: {node: '>= 6'}
peerDependencies:
@@ -14661,17 +14656,17 @@ packages:
dependencies:
glob: 7.2.3
minimatch: 3.1.2
- webpack: 5.90.1(esbuild@0.19.11)(webpack-cli@5.1.4)
+ webpack: 5.90.3(esbuild@0.19.11)(webpack-cli@5.1.4)
webpack-merge: 4.2.2
dev: true
- /karma@6.4.2:
- resolution: {integrity: sha512-C6SU/53LB31BEgRg+omznBEMY4SjHU3ricV6zBcAe1EeILKkeScr+fZXtaI5WyDbkVowJxxAI6h73NcFPmXolQ==}
+ /karma@6.4.3:
+ resolution: {integrity: sha512-LuucC/RE92tJ8mlCwqEoRWXP38UMAqpnq98vktmS9SznSoUPPUJQbc91dHcxcunROvfQjdORVA/YFviH+Xci9Q==}
engines: {node: '>= 10'}
hasBin: true
dependencies:
'@colors/colors': 1.5.0
- body-parser: 1.20.1
+ body-parser: 1.20.2
braces: 3.0.2
chokidar: 3.6.0
connect: 3.7.0
@@ -14689,7 +14684,7 @@ packages:
qjobs: 1.2.0
range-parser: 1.2.1
rimraf: 3.0.2
- socket.io: 4.5.2
+ socket.io: 4.7.4
source-map: 0.6.1
tmp: 0.2.1
ua-parser-js: 0.7.33
@@ -14763,12 +14758,12 @@ packages:
dependencies:
readable-stream: 2.3.7
- /lerna@8.0.2:
- resolution: {integrity: sha512-nnOIGI5V5Af9gfraNcMVoV1Fry/y7/h3nCQYk0/CMzBYDD+xbNL3DH8+c82AJkNR5ABslmpXjW4DLJ11/1b3CQ==}
+ /lerna@8.1.2:
+ resolution: {integrity: sha512-RCyBAn3XsqqvHbz3TxLfD7ylqzCi1A2UJnFEZmhURgx589vM3qYWQa/uOMeEEf565q6cAdtmulITciX1wgkAtw==}
engines: {node: '>=18.0.0'}
hasBin: true
dependencies:
- '@lerna/create': 8.0.2
+ '@lerna/create': 8.1.2
'@npmcli/run-script': 7.0.2
'@nx/devkit': 17.2.8(nx@17.2.8)
'@octokit/plugin-enterprise-rest': 6.0.1
@@ -15397,13 +15392,13 @@ packages:
resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==}
dev: false
- /material-ui-popup-state@5.0.10(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0):
+ /material-ui-popup-state@5.0.10(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-gd0DI8skwCSdth/j/yndoIwNkS2eDusosTe5hyPZ3jbrMzDkbQBs+tBbwapQ9hLfgiVLwICd1mwyerUV9Y5Elw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0
dependencies:
'@babel/runtime': 7.23.9
- '@mui/material': 5.15.4(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
+ '@mui/material': 5.15.4(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
classnames: 2.3.2
prop-types: 15.8.1
react: 18.2.0
@@ -15995,8 +15990,8 @@ packages:
engines: {node: '>=10'}
hasBin: true
- /mocha@10.2.0:
- resolution: {integrity: sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==}
+ /mocha@10.3.0:
+ resolution: {integrity: sha512-uF2XJs+7xSLsrmIvn37i/wnc91nw7XjOQB8ccyx5aEgdnohr7n+rEiZP23WkCYHjilR6+EboEnbq/ZQDz4LSbg==}
engines: {node: '>= 14.0.0'}
hasBin: true
dependencies:
@@ -16007,13 +16002,12 @@ packages:
diff: 5.0.0
escape-string-regexp: 4.0.0
find-up: 5.0.0
- glob: 7.2.0
+ glob: 8.1.0
he: 1.2.0
js-yaml: 4.1.0
log-symbols: 4.1.0
minimatch: 5.0.1
ms: 2.1.3
- nanoid: 3.3.3
serialize-javascript: 6.0.0
strip-json-comments: 3.1.1
supports-color: 8.1.1
@@ -16086,11 +16080,6 @@ packages:
object-assign: 4.1.1
thenify-all: 1.6.0
- /nanoid@3.3.3:
- resolution: {integrity: sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==}
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
- hasBin: true
-
/nanoid@3.3.7:
resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
@@ -16161,7 +16150,7 @@ packages:
'@next/env': 13.5.1
'@swc/helpers': 0.5.2
busboy: 1.6.0
- caniuse-lite: 1.0.30001579
+ caniuse-lite: 1.0.30001593
postcss: 8.4.14
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
@@ -16463,7 +16452,7 @@ packages:
engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
hasBin: true
dependencies:
- glob: 8.0.3
+ glob: 8.1.0
ignore-walk: 5.0.1
npm-bundled: 1.1.2
npm-normalize-package-bin: 1.0.1
@@ -17340,8 +17329,8 @@ packages:
resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
engines: {node: '>= 6'}
- /piscina@4.3.1:
- resolution: {integrity: sha512-MBj0QYm3hJQ/C/wIXTN1OCYC8uQ4BBJ4LVele2P4ZwVQAH04vkk8E1SpDbuemLAL1dZorbuOob9rYqJeWCcCRg==}
+ /piscina@4.4.0:
+ resolution: {integrity: sha512-+AQduEJefrOApE4bV7KRmp3N2JnnyErlVqq4P/jmko4FPz9Z877BCccl/iB3FdrWSUkvbGV9Kan/KllJgat3Vg==}
optionalDependencies:
nice-napi: 1.0.2
dev: true
@@ -17375,17 +17364,17 @@ packages:
resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==}
dev: false
- /playwright-core@1.41.2:
- resolution: {integrity: sha512-VaTvwCA4Y8kxEe+kfm2+uUUw5Lubf38RxF7FpBxLPmGe5sdNkSg5e3ChEigaGrX7qdqT3pt2m/98LiyvU2x6CA==}
+ /playwright-core@1.42.1:
+ resolution: {integrity: sha512-mxz6zclokgrke9p1vtdy/COWBH+eOZgYUVVU34C73M+4j4HLlQJHtfcqiqqxpP0o8HhMkflvfbquLX5dg6wlfA==}
engines: {node: '>=16'}
hasBin: true
- /playwright@1.41.2:
- resolution: {integrity: sha512-v0bOa6H2GJChDL8pAeLa/LZC4feoAMbSQm1/jF/ySsWWoaNItvrMP7GEkvEEFyCTUYKMxjQKaTSg5up7nR6/8A==}
+ /playwright@1.42.1:
+ resolution: {integrity: sha512-PgwB03s2DZBcNRoW+1w9E+VkLBxweib6KTXM0M3tkiT4jVxKSi6PmVJ591J+0u10LUrgxB7dLRbiJqO5s2QPMg==}
engines: {node: '>=16'}
hasBin: true
dependencies:
- playwright-core: 1.41.2
+ playwright-core: 1.42.1
optionalDependencies:
fsevents: 2.3.2
@@ -17921,8 +17910,8 @@ packages:
resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
engines: {node: '>= 0.6'}
- /raw-body@2.5.1:
- resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==}
+ /raw-body@2.5.2:
+ resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==}
engines: {node: '>= 0.8'}
dependencies:
bytes: 3.1.2
@@ -17930,7 +17919,7 @@ packages:
iconv-lite: 0.4.24
unpipe: 1.0.0
- /raw-loader@4.0.2(webpack@5.90.1):
+ /raw-loader@4.0.2(webpack@5.90.3):
resolution: {integrity: sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==}
engines: {node: '>= 10.13.0'}
peerDependencies:
@@ -17938,7 +17927,7 @@ packages:
dependencies:
loader-utils: 2.0.4
schema-utils: 3.3.0
- webpack: 5.90.1(esbuild@0.19.11)(webpack-cli@5.1.4)
+ webpack: 5.90.3(esbuild@0.19.11)(webpack-cli@5.1.4)
dev: true
/rc@1.2.8:
@@ -18149,8 +18138,8 @@ packages:
- utf-8-validate
dev: false
- /react-number-format@5.3.1(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-qpYcQLauIeEhCZUZY9jXZnnroOtdy3jYaS1zQ3M1Sr6r/KMOBEIGNIb7eKT19g2N1wbYgFgvDzs19hw5TrB8XQ==}
+ /react-number-format@5.3.3(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-maGHWmOvwYzyeRIpL0YC6drWqYaX6iFqjisdJXpZ+HzEtSEJsL6nqw4azTpF5Sm6SAvwUeAr7JY924Ebqq8EdA==}
peerDependencies:
react: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0
react-dom: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0
@@ -18571,14 +18560,14 @@ packages:
tslib: 2.6.2
dev: false
- /recast@0.23.4:
- resolution: {integrity: sha512-qtEDqIZGVcSZCHniWwZWbRy79Dc6Wp3kT/UmDA2RJKBPg7+7k51aQBZirHmUGn5uvHf2rg8DkjizrN26k61ATw==}
+ /recast@0.23.5:
+ resolution: {integrity: sha512-M67zIddJiwXdfPQRYKJ0qZO1SLdH1I0hYeb0wzxA+pNOvAZiQHulWzuk+fYsEWRQ8VfZrgjyucqsCOtCyM01/A==}
engines: {node: '>= 4'}
dependencies:
- assert: 2.0.0
ast-types: 0.16.1
esprima: 4.0.1
source-map: 0.6.1
+ tiny-invariant: 1.3.3
tslib: 2.6.2
dev: false
@@ -19498,12 +19487,19 @@ packages:
- supports-color
dev: false
- /socket.io-adapter@2.4.0:
- resolution: {integrity: sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==}
+ /socket.io-adapter@2.5.4:
+ resolution: {integrity: sha512-wDNHGXGewWAjQPt3pyeYBtpWSq9cLE5UW1ZUPL/2eGK9jtse/FpXib7epSTsz0Q0m+6sg6Y4KtcFTlah1bdOVg==}
+ dependencies:
+ debug: 4.3.4(supports-color@8.1.1)
+ ws: 8.11.0
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
dev: true
- /socket.io-parser@4.2.1:
- resolution: {integrity: sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==}
+ /socket.io-parser@4.2.4:
+ resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==}
engines: {node: '>=10.0.0'}
dependencies:
'@socket.io/component-emitter': 3.1.0
@@ -19512,16 +19508,17 @@ packages:
- supports-color
dev: true
- /socket.io@4.5.2:
- resolution: {integrity: sha512-6fCnk4ARMPZN448+SQcnn1u8OHUC72puJcNtSgg2xS34Cu7br1gQ09YKkO1PFfDn/wyUE9ZgMAwosJed003+NQ==}
- engines: {node: '>=10.0.0'}
+ /socket.io@4.7.4:
+ resolution: {integrity: sha512-DcotgfP1Zg9iP/dH9zvAQcWrE0TtbMVwXmlV4T4mqsvY+gw+LqUGPfx2AoVyRk0FLME+GQhufDMyacFmw7ksqw==}
+ engines: {node: '>=10.2.0'}
dependencies:
accepts: 1.3.8
base64id: 2.0.0
+ cors: 2.8.5
debug: 4.3.4(supports-color@8.1.1)
- engine.io: 6.2.1
- socket.io-adapter: 2.4.0
- socket.io-parser: 4.2.1
+ engine.io: 6.5.4
+ socket.io-adapter: 2.5.4
+ socket.io-parser: 4.2.4
transitivePeerDependencies:
- bufferutil
- supports-color
@@ -20294,7 +20291,7 @@ packages:
rimraf: 2.6.3
dev: false
- /terser-webpack-plugin@5.3.10(esbuild@0.19.11)(webpack@5.90.1):
+ /terser-webpack-plugin@5.3.10(esbuild@0.19.11)(webpack@5.90.3):
resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==}
engines: {node: '>= 10.13.0'}
peerDependencies:
@@ -20316,7 +20313,7 @@ packages:
schema-utils: 3.3.0
serialize-javascript: 6.0.2
terser: 5.27.0
- webpack: 5.90.1(esbuild@0.19.11)(webpack-cli@5.1.4)
+ webpack: 5.90.3(esbuild@0.19.11)(webpack-cli@5.1.4)
/terser@5.27.0:
resolution: {integrity: sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==}
@@ -20345,19 +20342,19 @@ packages:
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
dev: true
- /theme-ui@0.16.1(@emotion/react@11.11.3)(react@18.2.0):
- resolution: {integrity: sha512-QozvNUorEbrFBZUwO5RaaHA+YU/aJLIpeB9vplJERW+vcauldilxhnAjr8KeTv8LY2QMU4iyWWreamJ8/5KzEQ==}
+ /theme-ui@0.16.2(@emotion/react@11.11.4)(react@18.2.0):
+ resolution: {integrity: sha512-6+/D9ZMKlwWWLQ3idoESxcDUNPkNuGPiixKWGrTD1Fo1yAS3wSb9Je4Xt9Zu3a8f1kbrAyy4vnTVcomFZ1Meig==}
peerDependencies:
'@emotion/react': '>=11.1.1'
react: '>=18'
dependencies:
- '@emotion/react': 11.11.3(@types/react@18.2.55)(react@18.2.0)
- '@theme-ui/color-modes': 0.16.1(@emotion/react@11.11.3)(react@18.2.0)
- '@theme-ui/components': 0.16.1(@emotion/react@11.11.3)(@theme-ui/theme-provider@0.16.1)(react@18.2.0)
- '@theme-ui/core': 0.16.1(@emotion/react@11.11.3)(react@18.2.0)
- '@theme-ui/css': 0.16.1(@emotion/react@11.11.3)
- '@theme-ui/global': 0.16.1(@emotion/react@11.11.3)(react@18.2.0)
- '@theme-ui/theme-provider': 0.16.1(@emotion/react@11.11.3)(react@18.2.0)
+ '@emotion/react': 11.11.4(@types/react@18.2.55)(react@18.2.0)
+ '@theme-ui/color-modes': 0.16.2(@emotion/react@11.11.4)(react@18.2.0)
+ '@theme-ui/components': 0.16.2(@emotion/react@11.11.4)(@theme-ui/theme-provider@0.16.2)(react@18.2.0)
+ '@theme-ui/core': 0.16.2(@emotion/react@11.11.4)(react@18.2.0)
+ '@theme-ui/css': 0.16.2(@emotion/react@11.11.4)
+ '@theme-ui/global': 0.16.2(@emotion/react@11.11.4)(react@18.2.0)
+ '@theme-ui/theme-provider': 0.16.2(@emotion/react@11.11.4)(react@18.2.0)
react: 18.2.0
dev: false
@@ -20412,8 +20409,8 @@ packages:
/through@2.3.8:
resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
- /tiny-invariant@1.3.1:
- resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==}
+ /tiny-invariant@1.3.3:
+ resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==}
dev: false
/tiny-warning@1.0.3:
@@ -20942,13 +20939,13 @@ packages:
engines: {node: '>=4'}
dev: true
- /update-browserslist-db@1.0.13(browserslist@4.22.2):
+ /update-browserslist-db@1.0.13(browserslist@4.23.0):
resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
hasBin: true
peerDependencies:
browserslist: '>= 4.21.0'
dependencies:
- browserslist: 4.22.2
+ browserslist: 4.23.0
escalade: 3.1.1
picocolors: 1.0.0
@@ -21022,6 +21019,7 @@ packages:
/util@0.12.5:
resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==}
+ requiresBuild: true
dependencies:
inherits: 2.0.4
is-arguments: 1.1.1
@@ -21106,12 +21104,12 @@ packages:
vfile-message: 2.0.4
dev: false
- /vite@5.0.12(@types/node@18.19.15):
+ /vite@5.0.12(@types/node@18.19.21):
resolution: {integrity: sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
- '@types/node': ^18.19.15
+ '@types/node': ^18.19.21
less: '*'
lightningcss: ^1.21.0
sass: '*'
@@ -21134,7 +21132,7 @@ packages:
terser:
optional: true
dependencies:
- '@types/node': 18.19.15
+ '@types/node': 18.19.21
esbuild: 0.19.11
postcss: 8.4.35
rollup: 4.9.2
@@ -21224,7 +21222,7 @@ packages:
- bufferutil
- utf-8-validate
- /webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.90.1):
+ /webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.90.3):
resolution: {integrity: sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==}
engines: {node: '>=14.15.0'}
hasBin: true
@@ -21242,9 +21240,9 @@ packages:
optional: true
dependencies:
'@discoveryjs/json-ext': 0.5.7
- '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.90.1)
- '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.90.1)
- '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack@5.90.1)
+ '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.90.3)
+ '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.90.3)
+ '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack@5.90.3)
colorette: 2.0.20
commander: 10.0.1
cross-spawn: 7.0.3
@@ -21253,7 +21251,7 @@ packages:
import-local: 3.1.0
interpret: 3.1.1
rechoir: 0.8.0
- webpack: 5.90.1(esbuild@0.19.11)(webpack-cli@5.1.4)
+ webpack: 5.90.3(esbuild@0.19.11)(webpack-cli@5.1.4)
webpack-bundle-analyzer: 4.10.1
webpack-merge: 5.9.0
@@ -21278,8 +21276,8 @@ packages:
resolution: {integrity: sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==}
dev: false
- /webpack@5.90.1(esbuild@0.19.11)(webpack-cli@5.1.4):
- resolution: {integrity: sha512-SstPdlAC5IvgFnhiRok8hqJo/+ArAbNv7rhU4fnWGHNVfN59HSQFaxZDSAL3IFG2YmqxuRs+IU33milSxbPlog==}
+ /webpack@5.90.3(esbuild@0.19.11)(webpack-cli@5.1.4):
+ resolution: {integrity: sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==}
engines: {node: '>=10.13.0'}
hasBin: true
peerDependencies:
@@ -21295,7 +21293,7 @@ packages:
'@webassemblyjs/wasm-parser': 1.11.6
acorn: 8.11.3
acorn-import-assertions: 1.9.0(acorn@8.11.3)
- browserslist: 4.22.2
+ browserslist: 4.23.0
chrome-trace-event: 1.0.3
enhanced-resolve: 5.15.0
es-module-lexer: 1.3.0
@@ -21309,9 +21307,9 @@ packages:
neo-async: 2.6.2
schema-utils: 3.3.0
tapable: 2.2.1
- terser-webpack-plugin: 5.3.10(esbuild@0.19.11)(webpack@5.90.1)
+ terser-webpack-plugin: 5.3.10(esbuild@0.19.11)(webpack@5.90.3)
watchpack: 2.4.0
- webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.90.1)
+ webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.90.3)
webpack-sources: 3.2.3
transitivePeerDependencies:
- '@swc/core'
@@ -21559,31 +21557,31 @@ packages:
utf-8-validate:
optional: true
- /ws@8.16.0:
- resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==}
+ /ws@8.11.0:
+ resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==}
engines: {node: '>=10.0.0'}
peerDependencies:
bufferutil: ^4.0.1
- utf-8-validate: '>=5.0.2'
+ utf-8-validate: ^5.0.2
peerDependenciesMeta:
bufferutil:
optional: true
utf-8-validate:
optional: true
- dev: false
+ dev: true
- /ws@8.2.3:
- resolution: {integrity: sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==}
+ /ws@8.16.0:
+ resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==}
engines: {node: '>=10.0.0'}
peerDependencies:
bufferutil: ^4.0.1
- utf-8-validate: ^5.0.2
+ utf-8-validate: '>=5.0.2'
peerDependenciesMeta:
bufferutil:
optional: true
utf-8-validate:
optional: true
- dev: true
+ dev: false
/xcase@2.0.1:
resolution: {integrity: sha512-UmFXIPU+9Eg3E9m/728Bii0lAIuoc+6nbrNUKaRPJOFp91ih44qqGlWtxMB6kXFrRD6po+86ksHM5XHCfk6iPw==}
diff --git a/renovate.json b/renovate.json
index a6e41949546972..b5d4f9f892d666 100644
--- a/renovate.json
+++ b/renovate.json
@@ -25,6 +25,10 @@
"groupName": "Emotion",
"matchPackagePatterns": "@emotion/*"
},
+ {
+ "groupName": "WyW-in-JS",
+ "matchPackagePatterns": ["@wyw-in-js/*"]
+ },
{
"groupName": "Font awesome SVG icons",
"matchPackagePatterns": "@fortawesome/*"
diff --git a/scripts/zero-runtime-license.mjs b/scripts/pigment-license.mjs
similarity index 100%
rename from scripts/zero-runtime-license.mjs
rename to scripts/pigment-license.mjs
diff --git a/scripts/zero-render-mui-demos.mjs b/scripts/pigmentcss-render-mui-demos.mjs
similarity index 67%
rename from scripts/zero-render-mui-demos.mjs
rename to scripts/pigmentcss-render-mui-demos.mjs
index 6954ca0bcc359f..0dbb457ef40ea4 100644
--- a/scripts/zero-render-mui-demos.mjs
+++ b/scripts/pigmentcss-render-mui-demos.mjs
@@ -1,5 +1,6 @@
import path from 'path';
import fse from 'fs-extra';
+import * as prettier from 'prettier';
function capitalize(string) {
if (typeof string !== 'string') {
@@ -22,6 +23,9 @@ async function run() {
'Please provide a string of `react-` from the `docs/pages/material-ui/*` directory.',
);
}
+ const prettierConfig = await prettier.resolveConfig(process.cwd(), {
+ config: path.join(process.cwd(), 'prettier.config.js'),
+ });
// Find the demos of the component
const docSource = await fse.readFile(
@@ -39,11 +43,11 @@ async function run() {
const renders = tsFiles.map((filename) => {
const componentName = filename.replace('.tsx', '');
return `
- ${titleCase(componentName)}
-
- <${componentName} />
-
- `;
+ ${titleCase(componentName)}
+
+ <${componentName} />
+
+ `;
});
/**
* Zero-Runtime Next.js App
@@ -66,12 +70,17 @@ ${renders.join('\n')}
}
`;
- // Create the page in zero-runtime apps
- await fse.mkdirp(`apps/zero-runtime-next-app/src/app/material-ui/${args[0]}`);
- await fse.writeFile(
- path.join(process.cwd(), `apps/zero-runtime-next-app/src/app/material-ui/${args[0]}/page.tsx`),
- nextFileContent,
+ // Create the page in pigment apps
+ const nextFilepath = path.join(
+ process.cwd(),
+ `apps/pigment-next-app/src/app/material-ui/${args[0]}/page.tsx`,
);
+ const prettiedNextFileContent = await prettier.format(nextFileContent, {
+ ...prettierConfig,
+ filepath: nextFilepath,
+ });
+ await fse.mkdirp(`apps/pigment-next-app/src/app/material-ui/${args[0]}`);
+ await fse.writeFile(nextFilepath, prettiedNextFileContent);
/**
* Zero-Runtime Vite App
@@ -93,12 +102,17 @@ ${renders.join('\n')}
);
}
`;
- // Create the page in zero-runtime apps
- await fse.mkdirp(`apps/zero-runtime-vite-app/src/pages/material-ui`);
- await fse.writeFile(
- path.join(process.cwd(), `apps/zero-runtime-vite-app/src/pages/material-ui/${args[0]}.tsx`),
- viteFileContent,
+ // Create the page in pigment apps
+ const viteFilepath = path.join(
+ process.cwd(),
+ `apps/pigment-vite-app/src/pages/material-ui/${args[0]}.tsx`,
);
+ const prettiedViteFileContent = await prettier.format(viteFileContent, {
+ ...prettierConfig,
+ filepath: viteFilepath,
+ });
+ await fse.mkdirp(`apps/pigment-vite-app/src/pages/material-ui`);
+ await fse.writeFile(viteFilepath, prettiedViteFileContent);
}
run();
diff --git a/test/bundling/fixtures/create-react-app/package.json b/test/bundling/fixtures/create-react-app/package.json
index 126b6ca76c0743..c5cfabb1f6c3ae 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.41.2",
+ "playwright": "1.42.1",
"serve": "14.0.1"
},
"browserslist": {
diff --git a/test/bundling/fixtures/esbuild/package.json b/test/bundling/fixtures/esbuild/package.json
index 8e4c6c913b2023..b4d19f0ee05829 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.41.2",
+ "playwright": "1.42.1",
"serve": "14.0.1"
}
}
diff --git a/test/bundling/fixtures/gatsby/package.json b/test/bundling/fixtures/gatsby/package.json
index 29cca6f642eb07..712e24e04d31d7 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.41.2"
+ "playwright": "1.42.1"
}
}
diff --git a/test/bundling/fixtures/next-webpack4/package.json b/test/bundling/fixtures/next-webpack4/package.json
index b1c1be582cc3d1..f6d4ab868517b3 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.41.2"
+ "playwright": "1.42.1"
}
}
diff --git a/test/bundling/fixtures/next-webpack5/package.json b/test/bundling/fixtures/next-webpack5/package.json
index 1fe53a131e4707..65f197ec50f422 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.41.2"
+ "playwright": "1.42.1"
}
}
diff --git a/test/bundling/fixtures/snowpack/package.json b/test/bundling/fixtures/snowpack/package.json
index 329cf842af4242..697bea33ec61a5 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.41.2",
+ "playwright": "1.42.1",
"serve": "14.0.1"
}
}
diff --git a/test/bundling/fixtures/vite/package.json b/test/bundling/fixtures/vite/package.json
index 65f6dc59c135b0..40b4108a0151b6 100644
--- a/test/bundling/fixtures/vite/package.json
+++ b/test/bundling/fixtures/vite/package.json
@@ -24,7 +24,7 @@
},
"devDependencies": {
"concurrently": "7.4.0",
- "playwright": "1.41.2",
+ "playwright": "1.42.1",
"serve": "14.0.1"
}
}
diff --git a/test/integration/mui-system/theme-scoping.test.tsx b/test/integration/mui-system/theme-scoping.test.tsx
index bc3e1d3a69295d..1d1f97c9ad7304 100644
--- a/test/integration/mui-system/theme-scoping.test.tsx
+++ b/test/integration/mui-system/theme-scoping.test.tsx
@@ -106,6 +106,7 @@ describe('Multiple nested theme providers', () => {
storage = {};
window.matchMedia = createMatchMedia(false) as unknown as typeof window.matchMedia;
});
+
afterEach(() => {
window.matchMedia = originalMatchmedia;
});
diff --git a/test/package.json b/test/package.json
index af928509f9058e..8e57a12ac6aa65 100644
--- a/test/package.json
+++ b/test/package.json
@@ -8,7 +8,7 @@
"devDependencies": {
"@babel/runtime": "^7.23.9",
"@emotion/cache": "^11.11.0",
- "@emotion/react": "^11.11.3",
+ "@emotion/react": "^11.11.4",
"@mui-internal/test-utils": "workspace:^",
"@mui/base": "workspace:*",
"@mui/icons-material": "workspace:^",
@@ -18,9 +18,9 @@
"@mui/material-next": "workspace:*",
"@mui/system": "workspace:^",
"@mui/utils": "workspace:^",
- "@playwright/test": "1.41.2",
+ "@playwright/test": "1.42.1",
"@testing-library/dom": "^9.3.4",
- "@types/chai": "^4.3.11",
+ "@types/chai": "^4.3.12",
"@types/react": "^18.2.55",
"@types/react-is": "^18.2.4",
"@types/sinon": "^10.0.20",
@@ -30,7 +30,7 @@
"fs-extra": "^11.2.0",
"html-webpack-plugin": "^5.6.0",
"lodash": "^4.17.21",
- "playwright": "^1.41.2",
+ "playwright": "^1.42.1",
"prop-types": "^15.8.1",
"react": "^18.2.0",
"react-dom": "^18.2.0",
@@ -42,7 +42,7 @@
"stylis-plugin-rtl": "^2.1.1",
"stylis-plugin-rtl-sc": "npm:stylis-plugin-rtl@^1.1.0",
"webfontloader": "^1.6.28",
- "webpack": "^5.90.1",
+ "webpack": "^5.90.3",
"yargs": "^17.7.2"
}
}
diff --git a/tsconfig.json b/tsconfig.json
index 1dcf1925a54a49..94f8dff28f53c3 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -43,16 +43,13 @@
"@mui/material-nextjs/*": ["./packages/mui-material-nextjs/src/*"],
"@mui/joy": ["./packages/mui-joy/src"],
"@mui/joy/*": ["./packages/mui-joy/src/*"],
- "@mui/icons-material": ["./packages/mui-icons-material/lib"],
- "@mui/icons-material/*": ["./packages/mui-icons-material/lib/*"],
- "@mui/zero-next-plugin": ["./packages/zero-next-plugin/src"],
- "@mui/zero-next-plugin/*": ["./packages/zero-next-plugin/src/*"],
- "@mui/zero-runtime": ["./packages/zero-runtime/src"],
- "@mui/zero-runtime/*": ["./packages/zero-runtime/src/*"],
- "@mui/zero-tag-processor": ["./packages/zero-tag-processor/src"],
- "@mui/zero-tag-processor/*": ["./packages/zero-tag-processor/src/*"],
- "@mui/zero-vite-plugin": ["./packages/zero-vite-plugin/src"],
- "@mui/zero-vite-plugin/*": ["./packages/zero-vite-plugin/src/*"],
+ "@mui/icons-material/*": ["./packages/mui-icons-material/src/icon.d.ts"],
+ "@pigment-css/nextjs-plugin": ["./packages/pigment-nextjs-plugin/src"],
+ "@pigment-css/nextjs-plugin/*": ["./packages/pigment-nextjs-plugin/src/*"],
+ "@pigment-css/react": ["./packages/pigment-react/src"],
+ "@pigment-css/react/*": ["./packages/pigment-react/src/*"],
+ "@pigment-css/vite-plugin": ["./packages/pigment-vite-plugin/src"],
+ "@pigment-css/vite-plugin/*": ["./packages/pigment-vite-plugin/src/*"],
"@mui-internal/docs-utils": ["./packages/docs-utils/src"],
"@mui/internal-scripts/typescript-to-proptypes": [
"./packages-internal/scripts/typescript-to-proptypes/src"
diff --git a/webpackBaseConfig.js b/webpackBaseConfig.js
index c9530cd25ee3bf..66f7f8121b5e6f 100644
--- a/webpackBaseConfig.js
+++ b/webpackBaseConfig.js
@@ -24,7 +24,7 @@ module.exports = {
'@mui/material-next': path.resolve(__dirname, './packages/mui-material-next/src'),
'@mui/material-nextjs': path.resolve(__dirname, './packages/mui-material-nextjs/src'),
'@mui/joy': path.resolve(__dirname, './packages/mui-joy/src'),
- '@mui/zero-runtime': path.resolve(__dirname, './packages/zero-runtime/src'),
+ '@pigment-css/react': path.resolve(__dirname, './packages/pigment-react/src'),
'@mui-internal/docs-utils': path.resolve(__dirname, './packages/docs-utils/src'),
'@mui/internal-scripts/typescript-to-proptypes': path.resolve(
__dirname,