diff --git a/docs/data/toolpad/core/all-components/all-components.md b/docs/data/toolpad/core/all-components/all-components.md
index 7eaa57ef8ec..7d4652725bb 100644
--- a/docs/data/toolpad/core/all-components/all-components.md
+++ b/docs/data/toolpad/core/all-components/all-components.md
@@ -2,8 +2,9 @@
This page contains an index to the components included in Toolpad Core.
+- [Account](/toolpad/core/react-account/)
- [App Provider](/toolpad/core/react-app-provider/)
+- [CRUD](/toolpad/core/react-crud/)
- [Dashboard Layout](/toolpad/core/react-dashboard-layout/)
- [Page Container](/toolpad/core/react-page-container/)
- [Sign-in Page](/toolpad/core/react-sign-in-page/)
-- [Account](/toolpad/core/react-account/)
diff --git a/docs/data/toolpad/core/components/crud-page/crud-page.md b/docs/data/toolpad/core/components/crud/crud.md
similarity index 87%
rename from docs/data/toolpad/core/components/crud-page/crud-page.md
rename to docs/data/toolpad/core/components/crud/crud.md
index bb03fc56aa5..14be9dbba17 100644
--- a/docs/data/toolpad/core/components/crud-page/crud-page.md
+++ b/docs/data/toolpad/core/components/crud/crud.md
@@ -1,9 +1,10 @@
---
productId: toolpad-core
-title: CRUD Page
+title: CRUD
+components: CRUD, CRUDProvider, List, Show, Create, Edit
---
-# CRUD Page 🚧
+# CRUD
The CRUD component provides a UI for editable data sources. With deep-linkable, form-based pages.
diff --git a/docs/data/toolpad/core/pages.ts b/docs/data/toolpad/core/pages.ts
index 4e8d6831433..3b5e5819163 100644
--- a/docs/data/toolpad/core/pages.ts
+++ b/docs/data/toolpad/core/pages.ts
@@ -120,9 +120,8 @@ const pages: MuiPage[] = [
subheader: 'Data',
children: [
{
- pathname: '/toolpad/core/react-crud-page',
+ pathname: '/toolpad/core/react-crud',
title: 'CRUD',
- planned: true,
},
{
pathname: '/toolpad/core/react-stat-card',
diff --git a/docs/data/toolpad/core/pagesApi.js b/docs/data/toolpad/core/pagesApi.js
index c36b8e189db..c3af5f794e1 100644
--- a/docs/data/toolpad/core/pagesApi.js
+++ b/docs/data/toolpad/core/pagesApi.js
@@ -4,12 +4,18 @@ module.exports = [
{ pathname: '/toolpad/core/api/account-popover-header' },
{ pathname: '/toolpad/core/api/account-preview' },
{ pathname: '/toolpad/core/api/app-provider' },
+ { pathname: '/toolpad/core/api/create' },
+ { pathname: '/toolpad/core/api/crud' },
+ { pathname: '/toolpad/core/api/crud-provider' },
{ pathname: '/toolpad/core/api/dashboard-layout' },
{ pathname: '/toolpad/core/api/dialogs-provider' },
+ { pathname: '/toolpad/core/api/edit' },
+ { pathname: '/toolpad/core/api/list' },
{ pathname: '/toolpad/core/api/notifications-provider' },
{ pathname: '/toolpad/core/api/page-container' },
{ pathname: '/toolpad/core/api/page-header' },
{ pathname: '/toolpad/core/api/page-header-toolbar' },
+ { pathname: '/toolpad/core/api/show' },
{ pathname: '/toolpad/core/api/sign-in-button' },
{ pathname: '/toolpad/core/api/sign-in-page' },
{ pathname: '/toolpad/core/api/sign-out-button' },
diff --git a/docs/package.json b/docs/package.json
index 5edd0261568..97847e1a898 100644
--- a/docs/package.json
+++ b/docs/package.json
@@ -25,16 +25,16 @@
"@emotion/server": "11.11.0",
"@emotion/styled": "11.14.0",
"@mui/base": "5.0.0-beta.68",
- "@mui/docs": "6.3.1",
- "@mui/icons-material": "6.3.1",
+ "@mui/docs": "6.4.1",
+ "@mui/icons-material": "6.4.1",
"@mui/internal-markdown": "1.0.24",
"@mui/joy": "5.0.0-beta.51",
"@mui/lab": "6.0.0-beta.22",
- "@mui/material": "6.3.1",
+ "@mui/material": "6.4.1",
"@mui/material-nextjs": "6.3.1",
- "@mui/styles": "6.3.1",
- "@mui/system": "6.3.1",
- "@mui/utils": "6.3.1",
+ "@mui/styles": "6.4.1",
+ "@mui/system": "6.4.1",
+ "@mui/utils": "6.4.1",
"@mui/x-date-pickers": "7.25.0",
"@mui/x-date-pickers-pro": "7.25.0",
"@mui/x-license": "7.25.0",
diff --git a/docs/pages/toolpad/core/api/create.js b/docs/pages/toolpad/core/api/create.js
new file mode 100644
index 00000000000..a8a898ff62f
--- /dev/null
+++ b/docs/pages/toolpad/core/api/create.js
@@ -0,0 +1,23 @@
+import * as React from 'react';
+import ApiPage from 'docs/src/modules/components/ApiPage';
+import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations';
+import jsonPageContent from './create.json';
+
+export default function Page(props) {
+ const { descriptions, pageContent } = props;
+ return ;
+}
+
+Page.getInitialProps = () => {
+ const req = require.context(
+ 'docs-toolpad/translations/api-docs/create',
+ false,
+ /\.\/create.*.json$/,
+ );
+ const descriptions = mapApiPageTranslations(req);
+
+ return {
+ descriptions,
+ pageContent: jsonPageContent,
+ };
+};
diff --git a/docs/pages/toolpad/core/api/create.json b/docs/pages/toolpad/core/api/create.json
new file mode 100644
index 00000000000..9ba3b07a3ea
--- /dev/null
+++ b/docs/pages/toolpad/core/api/create.json
@@ -0,0 +1,15 @@
+{
+ "props": {
+ "dataSource": { "type": { "name": "object" } },
+ "initialValues": { "type": { "name": "object" }, "default": "{}" },
+ "onSubmitSuccess": { "type": { "name": "func" } }
+ },
+ "name": "Create",
+ "imports": ["import { Create } from '@toolpad/core/CRUD';"],
+ "classes": [],
+ "muiName": "Create",
+ "filename": "/packages/toolpad-core/src/CRUD/Create.tsx",
+ "inheritance": null,
+ "demos": "",
+ "cssComponent": false
+}
diff --git a/docs/pages/toolpad/core/api/crud-provider.js b/docs/pages/toolpad/core/api/crud-provider.js
new file mode 100644
index 00000000000..8ec0f555a3c
--- /dev/null
+++ b/docs/pages/toolpad/core/api/crud-provider.js
@@ -0,0 +1,23 @@
+import * as React from 'react';
+import ApiPage from 'docs/src/modules/components/ApiPage';
+import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations';
+import jsonPageContent from './crud-provider.json';
+
+export default function Page(props) {
+ const { descriptions, pageContent } = props;
+ return ;
+}
+
+Page.getInitialProps = () => {
+ const req = require.context(
+ 'docs-toolpad/translations/api-docs/crud-provider',
+ false,
+ /\.\/crud-provider.*.json$/,
+ );
+ const descriptions = mapApiPageTranslations(req);
+
+ return {
+ descriptions,
+ pageContent: jsonPageContent,
+ };
+};
diff --git a/docs/pages/toolpad/core/api/crud-provider.json b/docs/pages/toolpad/core/api/crud-provider.json
new file mode 100644
index 00000000000..805a3e7fcbc
--- /dev/null
+++ b/docs/pages/toolpad/core/api/crud-provider.json
@@ -0,0 +1,11 @@
+{
+ "props": { "dataSource": { "type": { "name": "object" }, "required": true } },
+ "name": "CRUDProvider",
+ "imports": ["import { CRUDProvider } from '@toolpad/core/CRUD';"],
+ "classes": [],
+ "muiName": "CRUDProvider",
+ "filename": "/packages/toolpad-core/src/CRUD/CRUDProvider.tsx",
+ "inheritance": null,
+ "demos": "",
+ "cssComponent": false
+}
diff --git a/docs/pages/toolpad/core/api/crud.js b/docs/pages/toolpad/core/api/crud.js
new file mode 100644
index 00000000000..1a1ef4f4de2
--- /dev/null
+++ b/docs/pages/toolpad/core/api/crud.js
@@ -0,0 +1,19 @@
+import * as React from 'react';
+import ApiPage from 'docs/src/modules/components/ApiPage';
+import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations';
+import jsonPageContent from './crud.json';
+
+export default function Page(props) {
+ const { descriptions, pageContent } = props;
+ return ;
+}
+
+Page.getInitialProps = () => {
+ const req = require.context('docs-toolpad/translations/api-docs/crud', false, /\.\/crud.*.json$/);
+ const descriptions = mapApiPageTranslations(req);
+
+ return {
+ descriptions,
+ pageContent: jsonPageContent,
+ };
+};
diff --git a/docs/pages/toolpad/core/api/crud.json b/docs/pages/toolpad/core/api/crud.json
new file mode 100644
index 00000000000..c12b1978236
--- /dev/null
+++ b/docs/pages/toolpad/core/api/crud.json
@@ -0,0 +1,19 @@
+{
+ "props": {
+ "dataSource": { "type": { "name": "object" }, "required": true },
+ "rootPath": { "type": { "name": "string" }, "required": true },
+ "defaultValues": { "type": { "name": "object" }, "default": "{}" },
+ "initialPageSize": { "type": { "name": "number" }, "default": "100" }
+ },
+ "name": "CRUD",
+ "imports": [
+ "import { CRUD } from '@toolpad/core/CRUD';",
+ "import { CRUD } from '@toolpad/core';"
+ ],
+ "classes": [],
+ "muiName": "CRUD",
+ "filename": "/packages/toolpad-core/src/CRUD/CRUD.tsx",
+ "inheritance": null,
+ "demos": "",
+ "cssComponent": false
+}
diff --git a/docs/pages/toolpad/core/api/edit.js b/docs/pages/toolpad/core/api/edit.js
new file mode 100644
index 00000000000..1017e66e4ef
--- /dev/null
+++ b/docs/pages/toolpad/core/api/edit.js
@@ -0,0 +1,19 @@
+import * as React from 'react';
+import ApiPage from 'docs/src/modules/components/ApiPage';
+import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations';
+import jsonPageContent from './edit.json';
+
+export default function Page(props) {
+ const { descriptions, pageContent } = props;
+ return ;
+}
+
+Page.getInitialProps = () => {
+ const req = require.context('docs-toolpad/translations/api-docs/edit', false, /\.\/edit.*.json$/);
+ const descriptions = mapApiPageTranslations(req);
+
+ return {
+ descriptions,
+ pageContent: jsonPageContent,
+ };
+};
diff --git a/docs/pages/toolpad/core/api/edit.json b/docs/pages/toolpad/core/api/edit.json
new file mode 100644
index 00000000000..4b43177a75c
--- /dev/null
+++ b/docs/pages/toolpad/core/api/edit.json
@@ -0,0 +1,14 @@
+{
+ "props": {
+ "dataSource": { "type": { "name": "object" } },
+ "onSubmitSuccess": { "type": { "name": "func" } }
+ },
+ "name": "Edit",
+ "imports": ["import { Edit } from '@toolpad/core/CRUD';"],
+ "classes": [],
+ "muiName": "Edit",
+ "filename": "/packages/toolpad-core/src/CRUD/Edit.tsx",
+ "inheritance": null,
+ "demos": "",
+ "cssComponent": false
+}
diff --git a/docs/pages/toolpad/core/api/list.js b/docs/pages/toolpad/core/api/list.js
new file mode 100644
index 00000000000..dfef6360481
--- /dev/null
+++ b/docs/pages/toolpad/core/api/list.js
@@ -0,0 +1,19 @@
+import * as React from 'react';
+import ApiPage from 'docs/src/modules/components/ApiPage';
+import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations';
+import jsonPageContent from './list.json';
+
+export default function Page(props) {
+ const { descriptions, pageContent } = props;
+ return ;
+}
+
+Page.getInitialProps = () => {
+ const req = require.context('docs-toolpad/translations/api-docs/list', false, /\.\/list.*.json$/);
+ const descriptions = mapApiPageTranslations(req);
+
+ return {
+ descriptions,
+ pageContent: jsonPageContent,
+ };
+};
diff --git a/docs/pages/toolpad/core/api/list.json b/docs/pages/toolpad/core/api/list.json
new file mode 100644
index 00000000000..51480761b97
--- /dev/null
+++ b/docs/pages/toolpad/core/api/list.json
@@ -0,0 +1,34 @@
+{
+ "props": {
+ "dataSource": { "type": { "name": "object" } },
+ "initialPageSize": { "type": { "name": "number" }, "default": "100" },
+ "onCreateClick": { "type": { "name": "func" } },
+ "onEditClick": { "type": { "name": "func" } },
+ "onRowClick": { "type": { "name": "func" } },
+ "slotProps": {
+ "type": { "name": "shape", "description": "{ dataGrid?: object }" },
+ "default": "{}"
+ },
+ "slots": {
+ "type": { "name": "shape", "description": "{ dataGrid?: elementType }" },
+ "default": "{}",
+ "additionalInfo": { "slotsApi": true }
+ }
+ },
+ "name": "List",
+ "imports": ["import { List } from '@toolpad/core/CRUD';"],
+ "slots": [
+ {
+ "name": "dataGrid",
+ "description": "The DataGrid component used to list the items.",
+ "default": "DataGrid",
+ "class": null
+ }
+ ],
+ "classes": [],
+ "muiName": "List",
+ "filename": "/packages/toolpad-core/src/CRUD/List.tsx",
+ "inheritance": null,
+ "demos": "",
+ "cssComponent": false
+}
diff --git a/docs/pages/toolpad/core/api/show.js b/docs/pages/toolpad/core/api/show.js
new file mode 100644
index 00000000000..1c06550d12e
--- /dev/null
+++ b/docs/pages/toolpad/core/api/show.js
@@ -0,0 +1,19 @@
+import * as React from 'react';
+import ApiPage from 'docs/src/modules/components/ApiPage';
+import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations';
+import jsonPageContent from './show.json';
+
+export default function Page(props) {
+ const { descriptions, pageContent } = props;
+ return ;
+}
+
+Page.getInitialProps = () => {
+ const req = require.context('docs-toolpad/translations/api-docs/show', false, /\.\/show.*.json$/);
+ const descriptions = mapApiPageTranslations(req);
+
+ return {
+ descriptions,
+ pageContent: jsonPageContent,
+ };
+};
diff --git a/docs/pages/toolpad/core/api/show.json b/docs/pages/toolpad/core/api/show.json
new file mode 100644
index 00000000000..548cd3ad675
--- /dev/null
+++ b/docs/pages/toolpad/core/api/show.json
@@ -0,0 +1,15 @@
+{
+ "props": {
+ "dataSource": { "type": { "name": "object" } },
+ "onDelete": { "type": { "name": "func" } },
+ "onEditClick": { "type": { "name": "func" } }
+ },
+ "name": "Show",
+ "imports": ["import { Show } from '@toolpad/core/CRUD';"],
+ "classes": [],
+ "muiName": "Show",
+ "filename": "/packages/toolpad-core/src/CRUD/Show.tsx",
+ "inheritance": null,
+ "demos": "",
+ "cssComponent": false
+}
diff --git a/docs/pages/toolpad/core/api/sign-in-button.json b/docs/pages/toolpad/core/api/sign-in-button.json
index 0d34a3b5cf4..e5736fcfade 100644
--- a/docs/pages/toolpad/core/api/sign-in-button.json
+++ b/docs/pages/toolpad/core/api/sign-in-button.json
@@ -178,6 +178,48 @@
"isGlobal": false,
"isDeprecated": true
},
+ {
+ "key": "loading",
+ "className": "",
+ "description": "Styles applied to the root element if `loading={true}`.",
+ "isGlobal": false
+ },
+ {
+ "key": "loadingIconPlaceholder",
+ "className": "",
+ "description": "Styles applied to the loadingIconPlaceholder element.",
+ "isGlobal": false
+ },
+ {
+ "key": "loadingIndicator",
+ "className": "",
+ "description": "Styles applied to the loadingIndicator element.",
+ "isGlobal": false
+ },
+ {
+ "key": "loadingPositionCenter",
+ "className": "",
+ "description": "Styles applied to the root element if `loadingPosition=\"center\"`.",
+ "isGlobal": false
+ },
+ {
+ "key": "loadingPositionEnd",
+ "className": "",
+ "description": "Styles applied to the root element if `loadingPosition=\"end\"`.",
+ "isGlobal": false
+ },
+ {
+ "key": "loadingPositionStart",
+ "className": "",
+ "description": "Styles applied to the root element if `loadingPosition=\"start\"`.",
+ "isGlobal": false
+ },
+ {
+ "key": "loadingWrapper",
+ "className": "",
+ "description": "Styles applied to the loadingWrapper element.",
+ "isGlobal": false
+ },
{
"key": "outlined",
"className": "",
diff --git a/docs/pages/toolpad/core/api/sign-out-button.json b/docs/pages/toolpad/core/api/sign-out-button.json
index 66fd2b0b73d..b60e2997524 100644
--- a/docs/pages/toolpad/core/api/sign-out-button.json
+++ b/docs/pages/toolpad/core/api/sign-out-button.json
@@ -178,6 +178,48 @@
"isGlobal": false,
"isDeprecated": true
},
+ {
+ "key": "loading",
+ "className": "",
+ "description": "Styles applied to the root element if `loading={true}`.",
+ "isGlobal": false
+ },
+ {
+ "key": "loadingIconPlaceholder",
+ "className": "",
+ "description": "Styles applied to the loadingIconPlaceholder element.",
+ "isGlobal": false
+ },
+ {
+ "key": "loadingIndicator",
+ "className": "",
+ "description": "Styles applied to the loadingIndicator element.",
+ "isGlobal": false
+ },
+ {
+ "key": "loadingPositionCenter",
+ "className": "",
+ "description": "Styles applied to the root element if `loadingPosition=\"center\"`.",
+ "isGlobal": false
+ },
+ {
+ "key": "loadingPositionEnd",
+ "className": "",
+ "description": "Styles applied to the root element if `loadingPosition=\"end\"`.",
+ "isGlobal": false
+ },
+ {
+ "key": "loadingPositionStart",
+ "className": "",
+ "description": "Styles applied to the root element if `loadingPosition=\"start\"`.",
+ "isGlobal": false
+ },
+ {
+ "key": "loadingWrapper",
+ "className": "",
+ "description": "Styles applied to the loadingWrapper element.",
+ "isGlobal": false
+ },
{
"key": "outlined",
"className": "",
diff --git a/docs/pages/toolpad/core/react-crud-page/index.js b/docs/pages/toolpad/core/react-crud/index.js
similarity index 85%
rename from docs/pages/toolpad/core/react-crud-page/index.js
rename to docs/pages/toolpad/core/react-crud/index.js
index 120aa8bca68..6548998c158 100644
--- a/docs/pages/toolpad/core/react-crud-page/index.js
+++ b/docs/pages/toolpad/core/react-crud/index.js
@@ -1,6 +1,6 @@
import * as React from 'react';
import MarkdownDocs from 'docs/src/modules/components/MarkdownDocs';
-import * as pageProps from '../../../../data/toolpad/core/components/crud-page/crud-page.md?muiMarkdown';
+import * as pageProps from '../../../../data/toolpad/core/components/crud/crud.md?muiMarkdown';
export default function Page() {
return ;
diff --git a/docs/translations/api-docs/create/create.json b/docs/translations/api-docs/create/create.json
new file mode 100644
index 00000000000..519f72e5463
--- /dev/null
+++ b/docs/translations/api-docs/create/create.json
@@ -0,0 +1,9 @@
+{
+ "componentDescription": "",
+ "propDescriptions": {
+ "dataSource": { "description": "Server-side data source." },
+ "initialValues": { "description": "Initial form values." },
+ "onSubmitSuccess": { "description": "Callback fired when the form is successfully submitted." }
+ },
+ "classDescriptions": {}
+}
diff --git a/docs/translations/api-docs/crud-provider/crud-provider.json b/docs/translations/api-docs/crud-provider/crud-provider.json
new file mode 100644
index 00000000000..71d2afa0b9e
--- /dev/null
+++ b/docs/translations/api-docs/crud-provider/crud-provider.json
@@ -0,0 +1,5 @@
+{
+ "componentDescription": "",
+ "propDescriptions": { "dataSource": { "description": "Server-side data source." } },
+ "classDescriptions": {}
+}
diff --git a/docs/translations/api-docs/crud/crud.json b/docs/translations/api-docs/crud/crud.json
new file mode 100644
index 00000000000..d540498a047
--- /dev/null
+++ b/docs/translations/api-docs/crud/crud.json
@@ -0,0 +1,10 @@
+{
+ "componentDescription": "",
+ "propDescriptions": {
+ "dataSource": { "description": "Server-side data source." },
+ "defaultValues": { "description": "Default form values for a new item." },
+ "initialPageSize": { "description": "Initial number of rows to show per page." },
+ "rootPath": { "description": "Root path to CRUD pages." }
+ },
+ "classDescriptions": {}
+}
diff --git a/docs/translations/api-docs/edit/edit.json b/docs/translations/api-docs/edit/edit.json
new file mode 100644
index 00000000000..68bbcc0ea73
--- /dev/null
+++ b/docs/translations/api-docs/edit/edit.json
@@ -0,0 +1,8 @@
+{
+ "componentDescription": "",
+ "propDescriptions": {
+ "dataSource": { "description": "Server-side data source." },
+ "onSubmitSuccess": { "description": "Callback fired when the form is successfully submitted." }
+ },
+ "classDescriptions": {}
+}
diff --git a/docs/translations/api-docs/list/list.json b/docs/translations/api-docs/list/list.json
new file mode 100644
index 00000000000..be6aad9e5cf
--- /dev/null
+++ b/docs/translations/api-docs/list/list.json
@@ -0,0 +1,18 @@
+{
+ "componentDescription": "",
+ "propDescriptions": {
+ "dataSource": { "description": "Server-side data source." },
+ "initialPageSize": { "description": "Initial number of rows to show per page." },
+ "onCreateClick": {
+ "description": "Callback fired when the "Create" button is clicked."
+ },
+ "onEditClick": { "description": "Callback fired when the "Edit" button is clicked." },
+ "onRowClick": {
+ "description": "Callback fired when a row is clicked. Not called if the target clicked is an interactive element added by the built-in columns."
+ },
+ "slotProps": { "description": "The props used for each slot inside." },
+ "slots": { "description": "The components used for each slot inside." }
+ },
+ "classDescriptions": {},
+ "slotDescriptions": { "dataGrid": "The DataGrid component used to list the items." }
+}
diff --git a/docs/translations/api-docs/show/show.json b/docs/translations/api-docs/show/show.json
new file mode 100644
index 00000000000..364fc913276
--- /dev/null
+++ b/docs/translations/api-docs/show/show.json
@@ -0,0 +1,9 @@
+{
+ "componentDescription": "",
+ "propDescriptions": {
+ "dataSource": { "description": "Server-side data source." },
+ "onDelete": { "description": "Callback fired when the item is successfully deleted." },
+ "onEditClick": { "description": "Callback fired when the "Edit" button is clicked." }
+ },
+ "classDescriptions": {}
+}
diff --git a/docs/translations/api-docs/sign-in-button/sign-in-button.json b/docs/translations/api-docs/sign-in-button/sign-in-button.json
index 77a6eff5224..93b0e4506a6 100644
--- a/docs/translations/api-docs/sign-in-button/sign-in-button.json
+++ b/docs/translations/api-docs/sign-in-button/sign-in-button.json
@@ -146,6 +146,38 @@
"conditions": "supplied and size=\"small\"
",
"deprecationInfo": "Combine the .MuiButton-icon and .MuiButtonSizeSmall classes instead. See Migrating from deprecated APIs for more details."
},
+ "loading": {
+ "description": "Styles applied to {{nodeName}} if {{conditions}}.",
+ "nodeName": "the root element",
+ "conditions": "loading={true}
"
+ },
+ "loadingIconPlaceholder": {
+ "description": "Styles applied to {{nodeName}}.",
+ "nodeName": "the loadingIconPlaceholder element"
+ },
+ "loadingIndicator": {
+ "description": "Styles applied to {{nodeName}}.",
+ "nodeName": "the loadingIndicator element"
+ },
+ "loadingPositionCenter": {
+ "description": "Styles applied to {{nodeName}} if {{conditions}}.",
+ "nodeName": "the root element",
+ "conditions": "loadingPosition=\"center\"
"
+ },
+ "loadingPositionEnd": {
+ "description": "Styles applied to {{nodeName}} if {{conditions}}.",
+ "nodeName": "the root element",
+ "conditions": "loadingPosition=\"end\"
"
+ },
+ "loadingPositionStart": {
+ "description": "Styles applied to {{nodeName}} if {{conditions}}.",
+ "nodeName": "the root element",
+ "conditions": "loadingPosition=\"start\"
"
+ },
+ "loadingWrapper": {
+ "description": "Styles applied to {{nodeName}}.",
+ "nodeName": "the loadingWrapper element"
+ },
"outlined": {
"description": "Styles applied to {{nodeName}} if {{conditions}}.",
"nodeName": "the root element",
diff --git a/docs/translations/api-docs/sign-out-button/sign-out-button.json b/docs/translations/api-docs/sign-out-button/sign-out-button.json
index 77a6eff5224..93b0e4506a6 100644
--- a/docs/translations/api-docs/sign-out-button/sign-out-button.json
+++ b/docs/translations/api-docs/sign-out-button/sign-out-button.json
@@ -146,6 +146,38 @@
"conditions": "supplied and size=\"small\"
",
"deprecationInfo": "Combine the .MuiButton-icon and .MuiButtonSizeSmall classes instead. See Migrating from deprecated APIs for more details."
},
+ "loading": {
+ "description": "Styles applied to {{nodeName}} if {{conditions}}.",
+ "nodeName": "the root element",
+ "conditions": "loading={true}
"
+ },
+ "loadingIconPlaceholder": {
+ "description": "Styles applied to {{nodeName}}.",
+ "nodeName": "the loadingIconPlaceholder element"
+ },
+ "loadingIndicator": {
+ "description": "Styles applied to {{nodeName}}.",
+ "nodeName": "the loadingIndicator element"
+ },
+ "loadingPositionCenter": {
+ "description": "Styles applied to {{nodeName}} if {{conditions}}.",
+ "nodeName": "the root element",
+ "conditions": "loadingPosition=\"center\"
"
+ },
+ "loadingPositionEnd": {
+ "description": "Styles applied to {{nodeName}} if {{conditions}}.",
+ "nodeName": "the root element",
+ "conditions": "loadingPosition=\"end\"
"
+ },
+ "loadingPositionStart": {
+ "description": "Styles applied to {{nodeName}} if {{conditions}}.",
+ "nodeName": "the root element",
+ "conditions": "loadingPosition=\"start\"
"
+ },
+ "loadingWrapper": {
+ "description": "Styles applied to {{nodeName}}.",
+ "nodeName": "the loadingWrapper element"
+ },
"outlined": {
"description": "Styles applied to {{nodeName}} if {{conditions}}.",
"nodeName": "the root element",
diff --git a/packages/toolpad-core/package.json b/packages/toolpad-core/package.json
index 61ec421e3aa..d2208ab564e 100644
--- a/packages/toolpad-core/package.json
+++ b/packages/toolpad-core/package.json
@@ -56,17 +56,20 @@
"dependencies": {
"@babel/runtime": "^7.26.0",
"@mui/lab": "6.0.0-beta.22",
- "@mui/utils": "6.3.1",
+ "@mui/utils": "6.4.1",
"@toolpad/utils": "workspace:*",
"@vitejs/plugin-react": "4.3.4",
"client-only": "^0.0.1",
+ "dayjs": "1.11.13",
"invariant": "2.2.4",
"path-to-regexp": "6.3.0",
"prop-types": "15.8.1"
},
"devDependencies": {
- "@mui/icons-material": "6.3.1",
- "@mui/material": "6.3.1",
+ "@mui/icons-material": "6.4.1",
+ "@mui/material": "6.4.1",
+ "@mui/x-data-grid": "7.22.2",
+ "@mui/x-date-pickers": "7.23.6",
"@types/invariant": "2.2.37",
"@types/prop-types": "15.7.14",
"@types/react": "^19.0.8",
@@ -83,6 +86,8 @@
"peerDependencies": {
"@mui/icons-material": "5 - 6",
"@mui/material": "5 - 6",
+ "@mui/x-data-grid": "^7",
+ "@mui/x-date-pickers": "^7",
"next": "^14 || ^15",
"react": "^18 || ^19",
"react-router": "^7"
diff --git a/packages/toolpad-core/src/CRUD/CRUD.tsx b/packages/toolpad-core/src/CRUD/CRUD.tsx
new file mode 100644
index 00000000000..270491a0ed3
--- /dev/null
+++ b/packages/toolpad-core/src/CRUD/CRUD.tsx
@@ -0,0 +1,157 @@
+'use client';
+import * as React from 'react';
+import PropTypes from 'prop-types';
+import { match } from 'path-to-regexp';
+import invariant from 'invariant';
+import { DataModel, DataModelId, DataSource } from './shared';
+import { CRUDProvider } from './CRUDProvider';
+import { RouterContext } from '../shared/context';
+import { List } from './List';
+import { Show } from './Show';
+import { Create } from './Create';
+import { Edit } from './Edit';
+
+export interface CRUDProps {
+ /**
+ * Server-side data source.
+ */
+ dataSource: DataSource;
+ /**
+ * Root path to CRUD pages.
+ */
+ rootPath: string;
+ /**
+ * Initial number of rows to show per page.
+ * @default 100
+ */
+ initialPageSize?: number;
+ /**
+ * Default form values for a new item.
+ * @default {}
+ */
+ defaultValues?: Omit;
+}
+/**
+ *
+ * Demos:
+ *
+ * - [CRUD](https://mui.com/toolpad/core/react-crud/)
+ *
+ * API:
+ *
+ * - [CRUD API](https://mui.com/toolpad/core/api/crud)
+ */
+function CRUD(props: CRUDProps) {
+ const { dataSource, rootPath, initialPageSize, defaultValues } = props;
+
+ const listPath = rootPath;
+ const showPath = `${rootPath}/:id`;
+ const createPath = `${rootPath}/new`;
+ const editPath = `${rootPath}/:id/edit`;
+
+ const routerContext = React.useContext(RouterContext);
+
+ const handleRowClick = React.useCallback(
+ (id: string | number) => {
+ routerContext?.navigate(`/orders/${String(id)}`);
+ },
+ [routerContext],
+ );
+
+ const handleCreateClick = React.useCallback(() => {
+ routerContext?.navigate('/orders/new');
+ }, [routerContext]);
+
+ const handleEditClick = React.useCallback(
+ (id: string | number) => {
+ routerContext?.navigate(`/orders/${String(id)}/edit`);
+ },
+ [routerContext],
+ );
+
+ const handleCreate = React.useCallback(() => {
+ routerContext?.navigate('/orders');
+ }, [routerContext]);
+
+ const handleEdit = React.useCallback(() => {
+ routerContext?.navigate('/orders');
+ }, [routerContext]);
+
+ const handleDelete = React.useCallback(() => {
+ routerContext?.navigate('/orders');
+ }, [routerContext]);
+
+ const renderedRoute = React.useMemo(() => {
+ const pathname = routerContext?.pathname ?? '';
+
+ if (match(listPath)(pathname)) {
+ return (
+
+ initialPageSize={initialPageSize}
+ onRowClick={handleRowClick}
+ onCreateClick={handleCreateClick}
+ onEditClick={handleEditClick}
+ />
+ );
+ }
+ if (match(createPath)(pathname)) {
+ return initialValues={defaultValues} onSubmitSuccess={handleCreate} />;
+ }
+ const showMatch = match<{ id: DataModelId }>(showPath)(pathname);
+ if (showMatch) {
+ const resourceId = showMatch.params.id;
+ invariant(resourceId, 'No resource ID present in URL.');
+ return id={resourceId} onEditClick={handleEditClick} onDelete={handleDelete} />;
+ }
+ const editMatch = match<{ id: DataModelId }>(editPath)(pathname);
+ if (editMatch) {
+ const resourceId = editMatch.params.id;
+ invariant(resourceId, 'No resource ID present in URL.');
+ return id={resourceId} onSubmitSuccess={handleEdit} />;
+ }
+ return null;
+ }, [
+ createPath,
+ editPath,
+ handleCreate,
+ handleCreateClick,
+ handleDelete,
+ handleEdit,
+ handleEditClick,
+ handleRowClick,
+ initialPageSize,
+ defaultValues,
+ listPath,
+ routerContext?.pathname,
+ showPath,
+ ]);
+
+ return dataSource={dataSource}>{renderedRoute};
+}
+
+CRUD.propTypes /* remove-proptypes */ = {
+ // ┌────────────────────────────── Warning ──────────────────────────────┐
+ // │ These PropTypes are generated from the TypeScript type definitions. │
+ // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
+ // └─────────────────────────────────────────────────────────────────────┘
+ /**
+ * Server-side data source.
+ */
+ dataSource: PropTypes.object.isRequired,
+ /**
+ * Default form values for a new item.
+ * @default {}
+ */
+ defaultValues: PropTypes.object,
+ /**
+ * Initial number of rows to show per page.
+ * @default 100
+ */
+ initialPageSize: PropTypes.number,
+ /**
+ * Root path to CRUD pages.
+ */
+ rootPath: PropTypes.string.isRequired,
+} as any;
+
+export { CRUD };
diff --git a/packages/toolpad-core/src/CRUD/CRUDProvider.tsx b/packages/toolpad-core/src/CRUD/CRUDProvider.tsx
new file mode 100644
index 00000000000..ef0a6ee6fc0
--- /dev/null
+++ b/packages/toolpad-core/src/CRUD/CRUDProvider.tsx
@@ -0,0 +1,47 @@
+'use client';
+import * as React from 'react';
+import PropTypes from 'prop-types';
+import { DataModel, DataSource } from './shared';
+import { CRUDContext } from '../shared/context';
+
+export interface CRUDProviderProps {
+ /**
+ * Server-side data source.
+ */
+ dataSource: DataSource;
+ children?: React.ReactNode;
+}
+/**
+ *
+ * Demos:
+ *
+ * - [CRUD](https://mui.com/toolpad/core/react-crud/)
+ *
+ * API:
+ *
+ * - [CRUDProvider API](https://mui.com/toolpad/core/api/crud-provider)
+ */
+function CRUDProvider(props: CRUDProviderProps) {
+ const { dataSource, children } = props;
+
+ return (
+ }>{children}
+ );
+}
+
+CRUDProvider.propTypes /* remove-proptypes */ = {
+ // ┌────────────────────────────── Warning ──────────────────────────────┐
+ // │ These PropTypes are generated from the TypeScript type definitions. │
+ // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
+ // └─────────────────────────────────────────────────────────────────────┘
+ /**
+ * @ignore
+ */
+ children: PropTypes.node,
+ /**
+ * Server-side data source.
+ */
+ dataSource: PropTypes.object.isRequired,
+} as any;
+
+export { CRUDProvider };
diff --git a/packages/toolpad-core/src/CRUD/Create.tsx b/packages/toolpad-core/src/CRUD/Create.tsx
new file mode 100644
index 00000000000..f42cfd30cc6
--- /dev/null
+++ b/packages/toolpad-core/src/CRUD/Create.tsx
@@ -0,0 +1,80 @@
+'use client';
+import * as React from 'react';
+import PropTypes from 'prop-types';
+import invariant from 'invariant';
+import { FormPage } from './FormPage';
+import { DataModel, DataSource } from './shared';
+import { CRUDContext } from '../shared/context';
+
+export interface CreateProps {
+ /**
+ * Server-side data source.
+ */
+ dataSource?: DataSource & Required, 'createOne'>>;
+ /**
+ * Initial form values.
+ * @default {}
+ */
+ initialValues?: Omit;
+ /**
+ * Callback fired when the form is successfully submitted.
+ */
+ onSubmitSuccess?: () => void;
+}
+/**
+ *
+ * Demos:
+ *
+ * - [CRUD](https://mui.com/toolpad/core/react-crud/)
+ *
+ * API:
+ *
+ * - [Create API](https://mui.com/toolpad/core/api/create)
+ */
+function Create(props: CreateProps) {
+ const { initialValues, onSubmitSuccess } = props;
+
+ const crudContext = React.useContext(CRUDContext);
+ const dataSource = (props.dataSource ?? crudContext.dataSource) as Exclude<
+ typeof props.dataSource,
+ undefined
+ >;
+
+ invariant(dataSource, 'No data source found.');
+
+ return (
+
+ );
+}
+
+Create.propTypes /* remove-proptypes */ = {
+ // ┌────────────────────────────── Warning ──────────────────────────────┐
+ // │ These PropTypes are generated from the TypeScript type definitions. │
+ // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
+ // └─────────────────────────────────────────────────────────────────────┘
+ /**
+ * Server-side data source.
+ */
+ dataSource: PropTypes.object,
+ /**
+ * Initial form values.
+ * @default {}
+ */
+ initialValues: PropTypes.object,
+ /**
+ * Callback fired when the form is successfully submitted.
+ */
+ onSubmitSuccess: PropTypes.func,
+} as any;
+
+export { Create };
diff --git a/packages/toolpad-core/src/CRUD/Edit.tsx b/packages/toolpad-core/src/CRUD/Edit.tsx
new file mode 100644
index 00000000000..178a3b3baed
--- /dev/null
+++ b/packages/toolpad-core/src/CRUD/Edit.tsx
@@ -0,0 +1,130 @@
+'use client';
+import * as React from 'react';
+import PropTypes from 'prop-types';
+import Alert from '@mui/material/Alert';
+import Box from '@mui/material/Box';
+import CircularProgress from '@mui/material/CircularProgress';
+import invariant from 'invariant';
+import { FormPage } from './FormPage';
+import { DataModel, DataModelId, DataSource } from './shared';
+import { CRUDContext } from '../shared/context';
+
+export interface EditProps {
+ id: DataModelId;
+ /**
+ * Server-side data source.
+ */
+ dataSource?: DataSource & Required, 'getOne' | 'updateOne'>>;
+ /**
+ * Callback fired when the form is successfully submitted.
+ */
+ onSubmitSuccess?: () => void;
+}
+/**
+ *
+ * Demos:
+ *
+ * - [CRUD](https://mui.com/toolpad/core/react-crud/)
+ *
+ * API:
+ *
+ * - [Edit API](https://mui.com/toolpad/core/api/edit)
+ */
+function Edit(props: EditProps) {
+ const { id, onSubmitSuccess } = props;
+
+ const crudContext = React.useContext(CRUDContext);
+ const dataSource = (props.dataSource ?? crudContext.dataSource) as Exclude<
+ typeof props.dataSource,
+ undefined
+ >;
+
+ invariant(dataSource, 'No data source found.');
+
+ const { fields, ...methods } = dataSource;
+ const { getOne } = methods;
+
+ const [data, setData] = React.useState(null);
+ const [isLoading, setIsLoading] = React.useState(false);
+ const [error, setError] = React.useState(null);
+
+ const loadData = React.useCallback(async () => {
+ setError(null);
+ setIsLoading(true);
+ try {
+ const showData = await getOne(id);
+ setData(showData);
+ } catch (showDataError) {
+ setError(showDataError as Error);
+ }
+ setIsLoading(false);
+ }, [getOne, id]);
+
+ React.useEffect(() => {
+ loadData();
+ }, [loadData]);
+
+ const renderEdit = React.useMemo(() => {
+ if (isLoading) {
+ return (
+
+
+
+ );
+ }
+ if (error) {
+ return (
+
+ {error.message}
+
+ );
+ }
+
+ return data ? (
+
+ ) : null;
+ }, [data, dataSource, error, isLoading, onSubmitSuccess]);
+
+ return {renderEdit};
+}
+
+Edit.propTypes /* remove-proptypes */ = {
+ // ┌────────────────────────────── Warning ──────────────────────────────┐
+ // │ These PropTypes are generated from the TypeScript type definitions. │
+ // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
+ // └─────────────────────────────────────────────────────────────────────┘
+ /**
+ * Server-side data source.
+ */
+ dataSource: PropTypes.object,
+ /**
+ * @ignore
+ */
+ id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,
+ /**
+ * Callback fired when the form is successfully submitted.
+ */
+ onSubmitSuccess: PropTypes.func,
+} as any;
+
+export { Edit };
diff --git a/packages/toolpad-core/src/CRUD/FormPage.tsx b/packages/toolpad-core/src/CRUD/FormPage.tsx
new file mode 100644
index 00000000000..b12cc141f2a
--- /dev/null
+++ b/packages/toolpad-core/src/CRUD/FormPage.tsx
@@ -0,0 +1,340 @@
+'use client';
+import * as React from 'react';
+import PropTypes from 'prop-types';
+import Box from '@mui/material/Box';
+import Button from '@mui/material/Button';
+import Checkbox from '@mui/material/Checkbox';
+import FormControl from '@mui/material/FormControl';
+import FormControlLabel from '@mui/material/FormControlLabel';
+import FormGroup from '@mui/material/FormGroup';
+import FormHelperText from '@mui/material/FormHelperText';
+import Grid from '@mui/material/Grid2';
+import InputLabel from '@mui/material/InputLabel';
+import MenuItem from '@mui/material/MenuItem';
+import Select, { SelectChangeEvent } from '@mui/material/Select';
+import TextField from '@mui/material/TextField';
+import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
+import { DatePicker } from '@mui/x-date-pickers/DatePicker';
+import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker';
+import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
+import type { GridColDef, GridSingleSelectColDef } from '@mui/x-data-grid';
+import dayjs, { Dayjs } from 'dayjs';
+import { useNotifications } from '../useNotifications';
+import { DataModel, DataSource } from './shared';
+
+interface FormPageLocaleText {
+ submitButtonLabel: string;
+ submitSuccessMessage: string;
+ submitErrorMessage: string;
+}
+
+export interface FormPageProps {
+ dataSource:
+ | (DataSource & Required, 'createOne'>>)
+ | (DataSource & Required, 'updateOne'>>);
+ initialValues?: Omit;
+ submitMethodName: 'createOne' | 'updateOne';
+ onSubmitSuccess?: () => void;
+ localeText: FormPageLocaleText;
+}
+
+/**
+ * @ignore - internal component.
+ */
+function FormPage(props: FormPageProps) {
+ const {
+ dataSource,
+ initialValues = {} as Omit,
+ submitMethodName,
+ onSubmitSuccess,
+ localeText,
+ } = props;
+ const { fields, validate, ...methods } = dataSource;
+
+ const submitMethod = methods[submitMethodName] as (data: Omit) => Promise;
+
+ const notifications = useNotifications();
+
+ const [formState, setFormState] = React.useState<{
+ values: Omit;
+ errors: Partial>;
+ }>({
+ values: initialValues,
+ errors: {},
+ });
+ const formValues = formState.values;
+ const formErrors = formState.errors;
+
+ const setFormValues = React.useCallback((newFormValues: Omit) => {
+ setFormState((previousState) => ({
+ ...previousState,
+ values: newFormValues,
+ }));
+ }, []);
+
+ const setFormErrors = React.useCallback((newFormErrors: Partial>) => {
+ setFormState((previousState) => ({
+ ...previousState,
+ errors: newFormErrors,
+ }));
+ }, []);
+
+ const handleFormFieldChange = React.useCallback(
+ (name: keyof D, value: string | number | boolean | File | null) => {
+ const validateField = async (values: Omit) => {
+ const errors = await validate(values);
+ setFormErrors({ ...formErrors, [name]: errors[name] });
+ };
+
+ const newFormValues = { ...formValues, [name]: value };
+
+ setFormValues(newFormValues);
+ validateField(newFormValues);
+ },
+ [formErrors, formValues, setFormErrors, setFormValues, validate],
+ );
+
+ const handleFormReset = React.useCallback(() => {
+ setFormValues(initialValues);
+ }, [initialValues, setFormValues]);
+
+ const [, submitAction, isSubmitting] = React.useActionState(async () => {
+ const errors = await validate(formValues);
+ if (Object.keys(errors).length > 0) {
+ setFormErrors(errors);
+ return new Error('Form validation failed');
+ }
+ setFormErrors({});
+
+ try {
+ await submitMethod(formValues);
+ notifications.show(localeText.submitSuccessMessage, {
+ severity: 'success',
+ autoHideDuration: 3000,
+ });
+
+ if (onSubmitSuccess) {
+ onSubmitSuccess();
+ }
+
+ handleFormReset();
+ } catch (createError) {
+ notifications.show(`${localeText.submitErrorMessage}\n${(createError as Error).message}`, {
+ severity: 'error',
+ autoHideDuration: 3000,
+ });
+ return createError as Error;
+ }
+
+ return null;
+ }, null);
+
+ const handleTextFieldChange = React.useCallback(
+ (event: React.ChangeEvent) => {
+ handleFormFieldChange(event.target.name, event.target.value);
+ },
+ [handleFormFieldChange],
+ );
+
+ const handleNumberFieldChange = React.useCallback(
+ (event: React.ChangeEvent) => {
+ handleFormFieldChange(event.target.name, Number(event.target.value));
+ },
+ [handleFormFieldChange],
+ );
+
+ const handleCheckboxFieldChange = React.useCallback(
+ (event: React.ChangeEvent, checked: boolean) => {
+ handleFormFieldChange(event.target.name, checked);
+ },
+ [handleFormFieldChange],
+ );
+
+ const handleDateFieldChange = React.useCallback(
+ (name: string) => (value: Dayjs | null) => {
+ handleFormFieldChange(name, value?.toISOString() ?? null);
+ },
+ [handleFormFieldChange],
+ );
+
+ const handleSelectFieldChange = React.useCallback(
+ (event: SelectChangeEvent) => {
+ handleFormFieldChange(event.target.name, event.target.value);
+ },
+ [handleFormFieldChange],
+ );
+
+ const renderField = React.useCallback(
+ (formField: GridColDef) => {
+ const { field, type, headerName } = formField;
+
+ const fieldValue = formValues[field];
+ const fieldError = formErrors[field];
+
+ let fieldElement = (
+
+ );
+ if (type === 'number') {
+ fieldElement = (
+
+ );
+ }
+ if (type === 'boolean') {
+ fieldElement = (
+
+
+ }
+ label={headerName}
+ />
+ {fieldError ?? ' '}
+
+ );
+ }
+ if (type === 'date') {
+ fieldElement = (
+
+
+
+ );
+ }
+ if (type === 'dateTime') {
+ fieldElement = (
+
+
+
+ );
+ }
+ if (type === 'singleSelect') {
+ const { getOptionValue, getOptionLabel, valueOptions } =
+ formField as GridSingleSelectColDef;
+
+ if (valueOptions && Array.isArray(valueOptions)) {
+ const labelId = `${field}-label`;
+
+ fieldElement = (
+
+ {headerName}
+
+ {fieldError ?? ' '}
+
+ );
+ }
+ }
+
+ return (
+
+ {fieldElement}
+
+ );
+ },
+ [
+ formErrors,
+ formValues,
+ handleCheckboxFieldChange,
+ handleDateFieldChange,
+ handleNumberFieldChange,
+ handleSelectFieldChange,
+ handleTextFieldChange,
+ ],
+ );
+
+ return (
+
+
+
+ {fields.filter(({ field }) => field !== 'id').map(renderField)}
+
+
+
+
+
+
+ );
+}
+
+FormPage.propTypes /* remove-proptypes */ = {
+ // ┌────────────────────────────── Warning ──────────────────────────────┐
+ // │ These PropTypes are generated from the TypeScript type definitions. │
+ // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
+ // └─────────────────────────────────────────────────────────────────────┘
+ /**
+ * Server-side data source.
+ */
+ dataSource: PropTypes.object.isRequired,
+} as any;
+
+export { FormPage };
diff --git a/packages/toolpad-core/src/CRUD/List.tsx b/packages/toolpad-core/src/CRUD/List.tsx
new file mode 100644
index 00000000000..a1881c1d6e3
--- /dev/null
+++ b/packages/toolpad-core/src/CRUD/List.tsx
@@ -0,0 +1,390 @@
+'use client';
+import * as React from 'react';
+import PropTypes from 'prop-types';
+import { styled } from '@mui/material';
+import Box from '@mui/material/Box';
+import Button from '@mui/material/Button';
+import IconButton from '@mui/material/IconButton';
+import Stack from '@mui/material/Stack';
+import Tooltip from '@mui/material/Tooltip';
+import Typography from '@mui/material/Typography';
+import {
+ DataGrid,
+ GridToolbar,
+ GridActionsCellItem,
+ DataGridProps,
+ GridColDef,
+ GridFilterModel,
+ GridPaginationModel,
+ GridSortModel,
+ GridEventListener,
+} from '@mui/x-data-grid';
+import AddIcon from '@mui/icons-material/Add';
+import RefreshIcon from '@mui/icons-material/Refresh';
+import EditIcon from '@mui/icons-material/Edit';
+import DeleteIcon from '@mui/icons-material/Delete';
+import invariant from 'invariant';
+import { useDialogs } from '../useDialogs';
+import { useNotifications } from '../useNotifications';
+import { DataModel, DataModelId, DataSource } from './shared';
+import { CRUDContext, RouterContext } from '../shared/context';
+
+const ErrorOverlay = styled('div')(({ theme }) => ({
+ position: 'absolute',
+ backgroundColor: theme.palette.error.light,
+ borderRadius: '4px',
+ top: 0,
+ height: '100%',
+ width: '100%',
+ display: 'flex',
+ alignItems: 'center',
+ justifyContent: 'center',
+ textAlign: 'center',
+ p: 1,
+ zIndex: 10,
+}));
+
+export interface ListSlotProps {
+ dataGrid?: DataGridProps;
+}
+
+export interface ListSlots {
+ /**
+ * The DataGrid component used to list the items.
+ * @default DataGrid
+ */
+ dataGrid?: React.JSXElementConstructor;
+}
+
+export interface ListProps {
+ /**
+ * Server-side data source.
+ */
+ dataSource?: DataSource & Required, 'getMany'>>;
+ /**
+ * Initial number of rows to show per page.
+ * @default 100
+ */
+ initialPageSize?: number;
+ /**
+ * Callback fired when a row is clicked. Not called if the target clicked is an interactive element added by the built-in columns.
+ */
+ onRowClick?: (id: DataModelId) => void;
+ /**
+ * Callback fired when the "Create" button is clicked.
+ */
+ onCreateClick?: () => void;
+ /**
+ * Callback fired when the "Edit" button is clicked.
+ */
+ onEditClick?: (id: DataModelId) => void;
+ /**
+ * The components used for each slot inside.
+ * @default {}
+ */
+ slots?: ListSlots;
+ /**
+ * The props used for each slot inside.
+ * @default {}
+ */
+ slotProps?: ListSlotProps;
+}
+/**
+ *
+ * Demos:
+ *
+ * - [CRUD](https://mui.com/toolpad/core/react-crud/)
+ *
+ * API:
+ *
+ * - [List API](https://mui.com/toolpad/core/api/list)
+ */
+function List(props: ListProps) {
+ const { initialPageSize = 100, onRowClick, onCreateClick, onEditClick, slots, slotProps } = props;
+
+ const crudContext = React.useContext(CRUDContext);
+ const dataSource = (props.dataSource ?? crudContext.dataSource) as Exclude<
+ typeof props.dataSource,
+ undefined
+ >;
+
+ invariant(dataSource, 'No data source found.');
+
+ const { fields, ...methods } = dataSource;
+ const { getMany, deleteOne } = methods;
+
+ const routerContext = React.useContext(RouterContext);
+
+ const dialogs = useDialogs();
+ const notifications = useNotifications();
+
+ const [rowsState, setRowsState] = React.useState<{ rows: D[]; rowCount: number }>({
+ rows: [],
+ rowCount: 0,
+ });
+
+ const [paginationModel, setPaginationModel] = React.useState({
+ page: routerContext?.searchParams.get('page')
+ ? Number(routerContext?.searchParams.get('page'))
+ : 0,
+ pageSize: routerContext?.searchParams.get('pageSize')
+ ? Number(routerContext?.searchParams.get('pageSize'))
+ : initialPageSize,
+ });
+ const [filterModel, setFilterModel] = React.useState(
+ routerContext?.searchParams.get('filter')
+ ? JSON.parse(routerContext?.searchParams.get('filter') ?? '')
+ : { items: [] },
+ );
+ const [sortModel, setSortModel] = React.useState(
+ routerContext?.searchParams.get('sort')
+ ? JSON.parse(routerContext?.searchParams.get('sort') ?? '')
+ : [],
+ );
+
+ const [isLoading, setIsLoading] = React.useState(true);
+ const [error, setError] = React.useState(null);
+
+ React.useEffect(() => {
+ const url = new URL(window.location.href);
+
+ url.searchParams.set('page', String(paginationModel.page));
+ url.searchParams.set('pageSize', String(paginationModel.pageSize));
+
+ window.history.pushState({}, '', url);
+ }, [paginationModel]);
+
+ React.useEffect(() => {
+ const url = new URL(window.location.href);
+
+ if (
+ filterModel.items.length > 0 ||
+ (filterModel.quickFilterValues && filterModel.quickFilterValues.length > 0)
+ ) {
+ url.searchParams.set('filter', JSON.stringify(filterModel));
+ } else {
+ url.searchParams.delete('filter');
+ }
+
+ window.history.pushState({}, '', url);
+ }, [filterModel]);
+
+ React.useEffect(() => {
+ const url = new URL(window.location.href);
+
+ if (sortModel.length > 0) {
+ url.searchParams.set('sort', JSON.stringify(sortModel));
+ } else {
+ url.searchParams.delete('sort');
+ }
+
+ window.history.pushState({}, '', url);
+ }, [sortModel]);
+
+ const loadData = React.useCallback(async () => {
+ setError(null);
+ setIsLoading(true);
+ try {
+ const listData = await getMany({
+ paginationModel,
+ sortModel,
+ filterModel,
+ });
+ setRowsState({
+ rows: listData.items,
+ rowCount: listData.itemCount,
+ });
+ } catch (listDataError) {
+ setError(listDataError as Error);
+ }
+ setIsLoading(false);
+ }, [filterModel, getMany, paginationModel, sortModel]);
+
+ React.useEffect(() => {
+ loadData();
+ }, [filterModel, getMany, loadData, paginationModel, sortModel]);
+
+ const handleRefresh = React.useCallback(() => {
+ if (!isLoading) {
+ loadData();
+ }
+ }, [isLoading, loadData]);
+
+ const handleRowClick = React.useCallback>(
+ ({ row }) => {
+ if (onRowClick) {
+ onRowClick(row.id);
+ }
+ },
+ [onRowClick],
+ );
+
+ const handleItemEdit = React.useCallback(
+ (itemId: DataModelId) => () => {
+ if (onEditClick) {
+ onEditClick(itemId);
+ }
+ },
+ [onEditClick],
+ );
+
+ const handleItemDelete = React.useCallback(
+ (itemId: DataModelId) => async () => {
+ const confirmed = await dialogs.confirm(`Do you wish to delete item "${itemId}"?`, {
+ title: 'Delete item?',
+ severity: 'error',
+ okText: 'Delete',
+ cancelText: 'Cancel',
+ });
+
+ if (confirmed) {
+ setIsLoading(true);
+ try {
+ await deleteOne?.(itemId);
+ notifications.show('Item deleted successfully.', {
+ severity: 'success',
+ autoHideDuration: 3000,
+ });
+ loadData();
+ } catch (deleteError) {
+ notifications.show(`Failed to delete item. Reason: ${(deleteError as Error).message}`, {
+ severity: 'error',
+ autoHideDuration: 3000,
+ });
+ }
+ setIsLoading(false);
+ }
+ },
+ [deleteOne, dialogs, loadData, notifications],
+ );
+
+ const DataGridSlot = slots?.dataGrid ?? DataGrid;
+
+ const initialState = React.useMemo(
+ () => ({
+ pagination: { paginationModel: { pageSize: initialPageSize } },
+ }),
+ [initialPageSize],
+ );
+
+ const columns = React.useMemo(() => {
+ return [
+ ...fields,
+ {
+ field: 'actions',
+ type: 'actions',
+ flex: 1,
+ align: 'right',
+ getActions: ({ id }) => [
+ ...(onEditClick
+ ? [
+ }
+ label="Edit"
+ onClick={handleItemEdit(id)}
+ />,
+ ]
+ : []),
+ ...(deleteOne
+ ? [
+ }
+ label="Delete"
+ onClick={handleItemDelete(id)}
+ />,
+ ]
+ : []),
+ ],
+ },
+ ];
+ }, [deleteOne, fields, handleItemDelete, handleItemEdit, onEditClick]);
+
+ return (
+
+
+
+
+
+
+
+
+
+ {onCreateClick ? (
+ }>
+ Create New
+
+ ) : null}
+
+
+
+ {error && (
+
+ {error.message}
+
+ )}
+
+
+ );
+}
+
+List.propTypes /* remove-proptypes */ = {
+ // ┌────────────────────────────── Warning ──────────────────────────────┐
+ // │ These PropTypes are generated from the TypeScript type definitions. │
+ // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
+ // └─────────────────────────────────────────────────────────────────────┘
+ /**
+ * Server-side data source.
+ */
+ dataSource: PropTypes.object,
+ /**
+ * Initial number of rows to show per page.
+ * @default 100
+ */
+ initialPageSize: PropTypes.number,
+ /**
+ * Callback fired when the "Create" button is clicked.
+ */
+ onCreateClick: PropTypes.func,
+ /**
+ * Callback fired when the "Edit" button is clicked.
+ */
+ onEditClick: PropTypes.func,
+ /**
+ * Callback fired when a row is clicked. Not called if the target clicked is an interactive element added by the built-in columns.
+ */
+ onRowClick: PropTypes.func,
+ /**
+ * The props used for each slot inside.
+ * @default {}
+ */
+ slotProps: PropTypes.shape({
+ dataGrid: PropTypes.object,
+ }),
+ /**
+ * The components used for each slot inside.
+ * @default {}
+ */
+ slots: PropTypes.shape({
+ dataGrid: PropTypes.elementType,
+ }),
+} as any;
+
+export { List };
diff --git a/packages/toolpad-core/src/CRUD/Show.tsx b/packages/toolpad-core/src/CRUD/Show.tsx
new file mode 100644
index 00000000000..edca0aa5aab
--- /dev/null
+++ b/packages/toolpad-core/src/CRUD/Show.tsx
@@ -0,0 +1,261 @@
+'use client';
+import * as React from 'react';
+import PropTypes from 'prop-types';
+import Alert from '@mui/material/Alert';
+import Box from '@mui/material/Box';
+import Button from '@mui/material/Button';
+import CircularProgress from '@mui/material/CircularProgress';
+import Divider from '@mui/material/Divider';
+import Grid from '@mui/material/Grid2';
+import Paper from '@mui/material/Paper';
+import Stack from '@mui/material/Stack';
+import Typography from '@mui/material/Typography';
+import EditIcon from '@mui/icons-material/Edit';
+import DeleteIcon from '@mui/icons-material/Delete';
+import type { GridColDef } from '@mui/x-data-grid';
+import invariant from 'invariant';
+import dayjs from 'dayjs';
+import { useDialogs } from '../useDialogs';
+import { useNotifications } from '../useNotifications';
+import { DataModel, DataModelId, DataSource } from './shared';
+import { CRUDContext } from '../shared/context';
+
+export interface ShowProps {
+ id: DataModelId;
+ /**
+ * Server-side data source.
+ */
+ dataSource?: DataSource & Required, 'getOne'>>;
+ /**
+ * Callback fired when the "Edit" button is clicked.
+ */
+ onEditClick?: (id: DataModelId) => void;
+ /**
+ * Callback fired when the item is successfully deleted.
+ */
+ onDelete?: (id: DataModelId) => void;
+}
+/**
+ *
+ * Demos:
+ *
+ * - [CRUD](https://mui.com/toolpad/core/react-crud/)
+ *
+ * API:
+ *
+ * - [Show API](https://mui.com/toolpad/core/api/show)
+ */
+function Show(props: ShowProps) {
+ const { id, onEditClick, onDelete } = props;
+
+ const crudContext = React.useContext(CRUDContext);
+ const dataSource = (props.dataSource ?? crudContext.dataSource) as Exclude<
+ typeof props.dataSource,
+ undefined
+ >;
+
+ invariant(dataSource, 'No data source found.');
+
+ const { fields, ...methods } = dataSource;
+ const { getOne, deleteOne } = methods;
+
+ const dialogs = useDialogs();
+ const notifications = useNotifications();
+
+ const [data, setData] = React.useState(null);
+ const [isLoading, setIsLoading] = React.useState(false);
+ const [error, setError] = React.useState(null);
+
+ const [hasDeleted, setHasDeleted] = React.useState(false);
+
+ const loadData = React.useCallback(async () => {
+ setError(null);
+ setIsLoading(true);
+ try {
+ const showData = await getOne(id);
+ setData(showData);
+ } catch (showDataError) {
+ setError(showDataError as Error);
+ }
+ setIsLoading(false);
+ }, [getOne, id]);
+
+ React.useEffect(() => {
+ loadData();
+ }, [loadData]);
+
+ const handleItemEdit = React.useCallback(() => {
+ if (onEditClick) {
+ onEditClick(id);
+ }
+ }, [id, onEditClick]);
+
+ const handleItemDelete = React.useCallback(async () => {
+ const confirmed = await dialogs.confirm(`Do you wish to delete item "${id}"?`, {
+ title: 'Delete item?',
+ severity: 'error',
+ okText: 'Delete',
+ cancelText: 'Cancel',
+ });
+
+ if (confirmed) {
+ setIsLoading(true);
+ try {
+ await deleteOne?.(id);
+
+ if (onDelete) {
+ onDelete(id);
+ }
+
+ notifications.show('Item deleted successfully.', {
+ severity: 'success',
+ autoHideDuration: 3000,
+ });
+
+ setHasDeleted(true);
+ } catch (deleteError) {
+ notifications.show(`Failed to delete item. Reason: ${(deleteError as Error).message}`, {
+ severity: 'error',
+ autoHideDuration: 3000,
+ });
+ }
+ setIsLoading(false);
+ }
+ }, [deleteOne, dialogs, id, notifications, onDelete]);
+
+ const renderField = React.useCallback(
+ (showField: GridColDef) => {
+ if (!data) {
+ return '…';
+ }
+
+ const { field, type } = showField;
+ const fieldValue = data[field];
+
+ if (type === 'boolean') {
+ return fieldValue ? 'Yes' : 'No';
+ }
+ if (type === 'date') {
+ return fieldValue ? dayjs(fieldValue as string).format('MMMM D, YYYY') : '-';
+ }
+ if (type === 'dateTime') {
+ return fieldValue ? dayjs(fieldValue as string).format('MMMM D, YYYY h:mm A') : '-';
+ }
+
+ return String(fieldValue) ?? '-';
+ },
+ [data],
+ );
+
+ const renderShow = React.useMemo(() => {
+ if (isLoading) {
+ return (
+
+
+
+ );
+ }
+ if (error) {
+ return (
+
+ {error.message}
+
+ );
+ }
+
+ if (hasDeleted) {
+ return (
+
+ This item has been deleted.
+
+ );
+ }
+
+ return data ? (
+
+
+ {fields.map((showField) => {
+ const { field, headerName } = showField;
+
+ return (
+
+
+ {headerName}
+
+ {renderField(showField)}
+
+
+
+ );
+ })}
+
+
+
+ {onEditClick ? (
+ } onClick={handleItemEdit}>
+ Edit
+
+ ) : null}
+ {deleteOne ? (
+ }
+ onClick={handleItemDelete}
+ >
+ Delete
+
+ ) : null}
+
+
+ ) : null;
+ }, [
+ data,
+ deleteOne,
+ error,
+ fields,
+ handleItemDelete,
+ handleItemEdit,
+ hasDeleted,
+ isLoading,
+ onEditClick,
+ renderField,
+ ]);
+
+ return {renderShow};
+}
+
+Show.propTypes /* remove-proptypes */ = {
+ // ┌────────────────────────────── Warning ──────────────────────────────┐
+ // │ These PropTypes are generated from the TypeScript type definitions. │
+ // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
+ // └─────────────────────────────────────────────────────────────────────┘
+ /**
+ * Server-side data source.
+ */
+ dataSource: PropTypes.object,
+ /**
+ * @ignore
+ */
+ id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,
+ /**
+ * Callback fired when the item is successfully deleted.
+ */
+ onDelete: PropTypes.func,
+ /**
+ * Callback fired when the "Edit" button is clicked.
+ */
+ onEditClick: PropTypes.func,
+} as any;
+
+export { Show };
diff --git a/packages/toolpad-core/src/CRUD/index.ts b/packages/toolpad-core/src/CRUD/index.ts
new file mode 100644
index 00000000000..937e88579b0
--- /dev/null
+++ b/packages/toolpad-core/src/CRUD/index.ts
@@ -0,0 +1,10 @@
+export * from './List';
+export * from './Show';
+export * from './Create';
+export * from './Edit';
+
+export * from './CRUDProvider';
+
+export * from './CRUD';
+
+export * from './shared';
diff --git a/packages/toolpad-core/src/CRUD/shared.ts b/packages/toolpad-core/src/CRUD/shared.ts
new file mode 100644
index 00000000000..200bdafc5f9
--- /dev/null
+++ b/packages/toolpad-core/src/CRUD/shared.ts
@@ -0,0 +1,29 @@
+import { GridColDef, GridFilterModel, GridPaginationModel, GridSortModel } from '@mui/x-data-grid';
+
+export type DataModelId = string | number;
+
+export interface DataModel {
+ id: DataModelId;
+ [key: string]: unknown;
+}
+
+export interface GetManyParams {
+ paginationModel: GridPaginationModel;
+ sortModel: GridSortModel;
+ filterModel: GridFilterModel;
+}
+
+export interface DataSource {
+ fields: GridColDef[];
+ getMany?: (params: GetManyParams) => Promise<{ items: D[]; itemCount: number }>;
+ getOne?: (id: DataModelId) => Promise;
+ createOne?: (data: Omit) => Promise;
+ updateOne?: (data: D) => Promise;
+ deleteOne?: (id: DataModelId) => Promise;
+ /**
+ * Function to validate form values. Returns object with error strings for each field.
+ */
+ validate: (
+ formValues: Omit,
+ ) => Partial> | Promise>>;
+}
diff --git a/packages/toolpad-core/src/index.ts b/packages/toolpad-core/src/index.ts
index 123c479d6c3..56106095a76 100644
--- a/packages/toolpad-core/src/index.ts
+++ b/packages/toolpad-core/src/index.ts
@@ -8,6 +8,8 @@ export * from './Account';
export * from './PageContainer';
+export * from './CRUD';
+
export * from './useActivePage';
export * from './useDialogs';
diff --git a/packages/toolpad-core/src/shared/context.ts b/packages/toolpad-core/src/shared/context.ts
index 0b3a25323c3..280cfcd6866 100644
--- a/packages/toolpad-core/src/shared/context.ts
+++ b/packages/toolpad-core/src/shared/context.ts
@@ -1,6 +1,8 @@
import * as React from 'react';
import type { PaletteMode } from '@mui/material';
import type { Branding, Navigation, Router } from '../AppProvider';
+import type { DataModel } from '../CRUD';
+import type { CRUDProviderProps } from '../CRUD/CRUDProvider';
export const BrandingContext = React.createContext(null);
@@ -19,3 +21,9 @@ export const PaletteModeContext = React.createContext<{
export const RouterContext = React.createContext(null);
export const WindowContext = React.createContext(undefined);
+
+export const CRUDContext = React.createContext<{
+ dataSource: CRUDProviderProps['dataSource'] | null;
+}>({
+ dataSource: null,
+});
diff --git a/packages/toolpad-studio-components/package.json b/packages/toolpad-studio-components/package.json
index 7c217e07d48..874b6930571 100644
--- a/packages/toolpad-studio-components/package.json
+++ b/packages/toolpad-studio-components/package.json
@@ -41,9 +41,9 @@
"url": "https://github.com/mui/toolpad/issues"
},
"dependencies": {
- "@mui/icons-material": "6.3.1",
+ "@mui/icons-material": "6.4.1",
"@mui/lab": "6.0.0-beta.22",
- "@mui/material": "6.3.1",
+ "@mui/material": "6.4.1",
"@mui/x-charts": "7.25.0",
"@mui/x-data-grid-premium": "7.25.0",
"@mui/x-date-pickers": "7.25.0",
diff --git a/packages/toolpad-studio-runtime/package.json b/packages/toolpad-studio-runtime/package.json
index ea41f110c19..80679d2ef6d 100644
--- a/packages/toolpad-studio-runtime/package.json
+++ b/packages/toolpad-studio-runtime/package.json
@@ -44,7 +44,7 @@
},
"dependencies": {
"@auth/core": "0.37.4",
- "@mui/material": "6.3.1",
+ "@mui/material": "6.4.1",
"@tanstack/react-query": "5.61.3",
"@toolpad/utils": "workspace:*",
"@types/json-schema": "7.0.15",
diff --git a/packages/toolpad-studio/package.json b/packages/toolpad-studio/package.json
index 7fb23d76216..71e05f462ed 100644
--- a/packages/toolpad-studio/package.json
+++ b/packages/toolpad-studio/package.json
@@ -63,12 +63,12 @@
"@emotion/styled": "11.14.0",
"@googleapis/drive": "8.14.0",
"@googleapis/sheets": "9.3.1",
- "@mui/icons-material": "6.3.1",
+ "@mui/icons-material": "6.4.1",
"@mui/lab": "6.0.0-beta.22",
- "@mui/material": "6.3.1",
- "@mui/system": "6.3.1",
+ "@mui/material": "6.4.1",
+ "@mui/system": "6.4.1",
"@mui/types": "7.2.21",
- "@mui/utils": "6.3.1",
+ "@mui/utils": "6.4.1",
"@mui/x-charts": "7.25.0",
"@mui/x-data-grid": "7.25.0",
"@mui/x-data-grid-premium": "7.25.0",
diff --git a/playground/nextjs-pages/package.json b/playground/nextjs-pages/package.json
index 9a415391308..28f3c11f382 100644
--- a/playground/nextjs-pages/package.json
+++ b/playground/nextjs-pages/package.json
@@ -9,8 +9,8 @@
"devDependencies": {
"@emotion/react": "11.14.0",
"@emotion/styled": "11.14.0",
- "@mui/icons-material": "6.3.1",
- "@mui/material": "6.3.1",
+ "@mui/icons-material": "6.4.1",
+ "@mui/material": "6.4.1",
"@mui/material-nextjs": "6.3.1",
"@toolpad/core": "workspace:*",
"@types/react": "^19.0.8",
diff --git a/playground/nextjs/package.json b/playground/nextjs/package.json
index 87016f9f4b0..de70550ac45 100644
--- a/playground/nextjs/package.json
+++ b/playground/nextjs/package.json
@@ -9,8 +9,8 @@
"devDependencies": {
"@emotion/react": "11.14.0",
"@emotion/styled": "11.14.0",
- "@mui/icons-material": "6.3.1",
- "@mui/material": "6.3.1",
+ "@mui/icons-material": "6.4.1",
+ "@mui/material": "6.4.1",
"@mui/material-nextjs": "6.3.1",
"@toolpad/core": "workspace:*",
"@types/node": "^20.17.16",
diff --git a/playground/vite/package.json b/playground/vite/package.json
index 2e209678f06..05e01163fda 100644
--- a/playground/vite/package.json
+++ b/playground/vite/package.json
@@ -10,8 +10,8 @@
"devDependencies": {
"@emotion/react": "11.14.0",
"@emotion/styled": "11.14.0",
- "@mui/icons-material": "6.3.1",
- "@mui/material": "6.3.1",
+ "@mui/icons-material": "6.4.1",
+ "@mui/material": "6.4.1",
"@toolpad/core": "workspace:*",
"@types/react": "^19.0.8",
"@types/react-dom": "^19.0.3",
@@ -19,6 +19,7 @@
"react": "^19.0.0",
"react-dom": "^19.0.0",
"react-router": "7.1.5",
- "vite": "5.4.12"
+ "vite": "5.4.12",
+ "yup": "1.6.1"
}
}
diff --git a/playground/vite/src/App.tsx b/playground/vite/src/App.tsx
index ea7cb04796c..cc27100e129 100644
--- a/playground/vite/src/App.tsx
+++ b/playground/vite/src/App.tsx
@@ -18,6 +18,7 @@ const NAVIGATION: Navigation = [
segment: 'orders',
title: 'Orders',
icon: ,
+ pattern: 'orders{/:orderId}*',
},
];
diff --git a/playground/vite/src/data/orders.ts b/playground/vite/src/data/orders.ts
new file mode 100644
index 00000000000..9d731a81776
--- /dev/null
+++ b/playground/vite/src/data/orders.ts
@@ -0,0 +1,186 @@
+import { DataSource } from '@toolpad/core/CRUD';
+import * as yup from 'yup';
+import yupAdapter from '../validationAdapters/yupAdapter';
+
+type OrderStatus = 'pending' | 'sent';
+export interface Order extends Record {
+ id: number;
+ title: string;
+ status: OrderStatus;
+ itemCount: number;
+ fastDelivery: boolean;
+ createdAt: string;
+ deliveryTime: string;
+}
+
+const getOrdersStore = (): Order[] => {
+ const value = localStorage.getItem('orders-store');
+ return value ? JSON.parse(value) : [];
+};
+
+const setOrdersStore = (value: Order[]) => {
+ return localStorage.setItem('orders-store', JSON.stringify(value));
+};
+
+export const ordersDataSource: Required> = {
+ fields: [
+ { field: 'id', headerName: 'ID' },
+ { field: 'title', headerName: 'Title' },
+ {
+ field: 'status',
+ headerName: 'Status',
+ type: 'singleSelect',
+ valueOptions: ['pending', 'fulfilled'],
+ },
+ { field: 'itemCount', headerName: 'No. of items', type: 'number' },
+ { field: 'fastDelivery', headerName: 'Fast delivery', type: 'boolean' },
+ {
+ field: 'createdAt',
+ headerName: 'Created at',
+ type: 'date',
+ valueGetter: (value: string) => value && new Date(value),
+ },
+ {
+ field: 'deliveryTime',
+ headerName: 'Delivery time',
+ type: 'dateTime',
+ valueGetter: (value: string) => value && new Date(value),
+ },
+ ],
+ getMany: async ({ paginationModel, filterModel, sortModel }) => {
+ return new Promise<{ items: Order[]; itemCount: number }>((resolve) => {
+ setTimeout(() => {
+ const ordersStore = getOrdersStore();
+
+ let filteredOrders = [...ordersStore];
+
+ // Apply filters
+ if (filterModel?.items?.length) {
+ filterModel.items.forEach(({ field, value, operator }) => {
+ if (!field || value == null) {
+ return;
+ }
+
+ filteredOrders = filteredOrders.filter((order) => {
+ const orderValue = order[field];
+
+ switch (operator) {
+ case 'contains':
+ return String(orderValue).toLowerCase().includes(String(value).toLowerCase());
+ case 'equals':
+ return orderValue === value;
+ case 'startsWith':
+ return String(orderValue).toLowerCase().startsWith(String(value).toLowerCase());
+ case 'endsWith':
+ return String(orderValue).toLowerCase().endsWith(String(value).toLowerCase());
+ case '>':
+ return (orderValue as number) > value;
+ case '<':
+ return (orderValue as number) < value;
+ default:
+ return true;
+ }
+ });
+ });
+ }
+
+ // Apply sorting
+ if (sortModel?.length) {
+ filteredOrders.sort((a, b) => {
+ for (const { field, sort } of sortModel) {
+ if ((a[field] as number) < (b[field] as number)) {
+ return sort === 'asc' ? -1 : 1;
+ }
+ if ((a[field] as number) > (b[field] as number)) {
+ return sort === 'asc' ? 1 : -1;
+ }
+ }
+ return 0;
+ });
+ }
+
+ // Apply pagination
+ const start = paginationModel.page * paginationModel.pageSize;
+ const end = start + paginationModel.pageSize;
+ const paginatedOrders = filteredOrders.slice(start, end);
+
+ resolve({
+ items: paginatedOrders,
+ itemCount: filteredOrders.length,
+ });
+ }, 1500);
+ });
+ },
+ getOne: (orderId) => {
+ return new Promise((resolve, reject) => {
+ setTimeout(() => {
+ const ordersStore = getOrdersStore();
+
+ const orderToShow = ordersStore.find((order) => order.id === Number(orderId));
+
+ if (orderToShow) {
+ resolve(orderToShow);
+ } else {
+ reject(new Error('Order not found'));
+ }
+ }, 1500);
+ });
+ },
+ createOne: (data) => {
+ return new Promise((resolve) => {
+ setTimeout(() => {
+ const ordersStore = getOrdersStore();
+
+ const newOrder = { id: ordersStore.length + 1, ...data } as Order;
+
+ setOrdersStore([...ordersStore, newOrder]);
+
+ resolve(newOrder);
+ }, 1500);
+ });
+ },
+ updateOne: (data) => {
+ return new Promise((resolve, reject) => {
+ setTimeout(() => {
+ const ordersStore = getOrdersStore();
+
+ let updatedOrder: Order | null = null;
+
+ setOrdersStore(
+ ordersStore.map((order) => {
+ if (order.id === data.id) {
+ updatedOrder = { ...order, ...data }; // Preserve existing fields
+ return updatedOrder;
+ }
+ return order;
+ }),
+ );
+
+ if (updatedOrder) {
+ resolve(updatedOrder);
+ } else {
+ reject(new Error('Order not found'));
+ }
+ }, 1500);
+ });
+ },
+ deleteOne: (id) => {
+ return new Promise((resolve) => {
+ setTimeout(() => {
+ const ordersStore = getOrdersStore();
+
+ setOrdersStore(ordersStore.filter((order) => order.id !== id));
+
+ resolve();
+ }, 1500);
+ });
+ },
+ validate: yupAdapter(
+ yup.object({
+ title: yup.string().required('Title is required'),
+ status: yup.string().required('Status is required'),
+ itemCount: yup.number().min(1, 'Item count must be at least 1'),
+ createdAt: yup.string().required('Creation date is required'),
+ }),
+ ),
+};
diff --git a/playground/vite/src/layouts/dashboard.tsx b/playground/vite/src/layouts/dashboard.tsx
index 84b8584f7c6..4ae22979981 100644
--- a/playground/vite/src/layouts/dashboard.tsx
+++ b/playground/vite/src/layouts/dashboard.tsx
@@ -1,12 +1,28 @@
import * as React from 'react';
-import { Outlet } from 'react-router';
+import { Outlet, useLocation, useParams, matchPath } from 'react-router';
import { DashboardLayout } from '@toolpad/core/DashboardLayout';
import { PageContainer } from '@toolpad/core/PageContainer';
export default function Layout() {
+ const location = useLocation();
+ const { orderId } = useParams();
+
+ const title = React.useMemo(() => {
+ if (location.pathname === '/orders/new') {
+ return 'New Order';
+ }
+ if (matchPath('/orders/:orderId/edit', location.pathname)) {
+ return `Order ${orderId} - Edit`;
+ }
+ if (orderId) {
+ return `Order ${orderId}`;
+ }
+ return undefined;
+ }, [location.pathname, orderId]);
+
return (
-
+
diff --git a/playground/vite/src/main.tsx b/playground/vite/src/main.tsx
index cee7678c361..6eddeb935f5 100644
--- a/playground/vite/src/main.tsx
+++ b/playground/vite/src/main.tsx
@@ -4,7 +4,7 @@ import { createBrowserRouter, RouterProvider } from 'react-router';
import App from './App';
import Layout from './layouts/dashboard';
import DashboardPage from './pages';
-import OrdersPage from './pages/orders';
+import OrdersCRUDPage from './pages/orders';
const router = createBrowserRouter([
{
@@ -19,8 +19,12 @@ const router = createBrowserRouter([
Component: DashboardPage,
},
{
- path: 'orders',
- Component: OrdersPage,
+ path: 'orders/*',
+ Component: OrdersCRUDPage,
+ },
+ {
+ path: 'orders/:orderId/*',
+ Component: OrdersCRUDPage,
},
],
},
diff --git a/playground/vite/src/pages/orders.tsx b/playground/vite/src/pages/orders.tsx
index de4948afd88..2afb6219e72 100644
--- a/playground/vite/src/pages/orders.tsx
+++ b/playground/vite/src/pages/orders.tsx
@@ -1,6 +1,14 @@
import * as React from 'react';
-import Typography from '@mui/material/Typography';
+import { CRUD } from '@toolpad/core/CRUD';
+import { ordersDataSource, Order } from '../data/orders';
-export default function OrdersPage() {
- return Welcome to the Toolpad orders!;
+export default function OrdersCRUDPage() {
+ return (
+
+ dataSource={ordersDataSource}
+ rootPath="/orders"
+ initialPageSize={25}
+ defaultValues={{ itemCount: 1 }}
+ />
+ );
}
diff --git a/playground/vite/src/validationAdapters/yupAdapter.ts b/playground/vite/src/validationAdapters/yupAdapter.ts
new file mode 100644
index 00000000000..04d213f0cd6
--- /dev/null
+++ b/playground/vite/src/validationAdapters/yupAdapter.ts
@@ -0,0 +1,23 @@
+import { DataModel } from '@toolpad/core/CRUD';
+import * as yup from 'yup';
+
+const yupAdapter =
+ (schema: yup.ObjectSchema>) =>
+ async (formValues: Omit) => {
+ try {
+ await schema.validate(formValues, { abortEarly: false });
+ return {};
+ } catch (error) {
+ return (error as yup.ValidationError).inner.reduce(
+ (acc, curr) => {
+ if (curr.path) {
+ acc[curr.path as keyof Omit] = curr.message;
+ }
+ return acc;
+ },
+ {} as Record, string>,
+ );
+ }
+ };
+
+export default yupAdapter;
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index f320fc4304e..5a505e3f82a 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -105,7 +105,7 @@ importers:
version: https://codeload.github.com/mui/material-ui/tar.gz/dd69cf07e7aace1efad91e5b8e733c7efcf6c02c(encoding@0.1.13)
'@mui/x-charts':
specifier: 7.25.0
- version: 7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ version: 7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@next/eslint-plugin-next':
specifier: 14.2.23
version: 14.2.23
@@ -299,11 +299,11 @@ importers:
specifier: 5.0.0-beta.68
version: 5.0.0-beta.68(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@mui/docs':
- specifier: 6.3.1
- version: 6.3.1(zr4k4xiuc3jt6p7px4uscqtuny)
+ specifier: 6.4.1
+ version: 6.4.1(3gva2vm4pftzxcubfzhbhznkmy)
'@mui/icons-material':
- specifier: 6.3.1
- version: 6.3.1(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
+ specifier: 6.4.1
+ version: 6.4.1(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
'@mui/internal-markdown':
specifier: 1.0.24
version: 1.0.24
@@ -312,28 +312,28 @@ importers:
version: 5.0.0-beta.51(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@mui/lab':
specifier: 6.0.0-beta.22
- version: 6.0.0-beta.22(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ version: 6.0.0-beta.22(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@mui/material':
- specifier: 6.3.1
- version: 6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ specifier: 6.4.1
+ version: 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@mui/material-nextjs':
specifier: 6.3.1
version: 6.3.1(@emotion/cache@11.14.0)(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/server@11.11.0)(@types/react@19.0.8)(next@15.1.6(@babel/core@7.26.0)(@playwright/test@1.47.2)(babel-plugin-macros@3.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)
'@mui/styles':
- specifier: 6.3.1
- version: 6.3.1(@types/react@19.0.8)(react@19.0.0)
+ specifier: 6.4.1
+ version: 6.4.1(@types/react@19.0.8)(react@19.0.0)
'@mui/system':
- specifier: 6.3.1
- version: 6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
+ specifier: 6.4.1
+ version: 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
'@mui/utils':
- specifier: 6.3.1
- version: 6.3.1(@types/react@19.0.8)(react@19.0.0)
+ specifier: 6.4.1
+ version: 6.4.1(@types/react@19.0.8)(react@19.0.0)
'@mui/x-date-pickers':
specifier: 7.25.0
- version: 7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(date-fns-jalali@2.29.3-0)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ version: 7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(date-fns-jalali@2.29.3-0)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@mui/x-date-pickers-pro':
specifier: 7.25.0
- version: 7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(date-fns-jalali@2.29.3-0)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ version: 7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(date-fns-jalali@2.29.3-0)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@mui/x-license':
specifier: 7.25.0
version: 7.25.0(@types/react@19.0.8)(react@19.0.0)
@@ -606,10 +606,10 @@ importers:
version: 7.26.0
'@mui/lab':
specifier: 6.0.0-beta.22
- version: 6.0.0-beta.22(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ version: 6.0.0-beta.22(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@mui/utils':
- specifier: 6.3.1
- version: 6.3.1(@types/react@19.0.8)(react@19.0.0)
+ specifier: 6.4.1
+ version: 6.4.1(@types/react@19.0.8)(react@19.0.0)
'@toolpad/utils':
specifier: workspace:*
version: link:../toolpad-utils
@@ -619,6 +619,9 @@ importers:
client-only:
specifier: ^0.0.1
version: 0.0.1
+ dayjs:
+ specifier: 1.11.13
+ version: 1.11.13
invariant:
specifier: 2.2.4
version: 2.2.4
@@ -633,11 +636,17 @@ importers:
version: 19.0.0
devDependencies:
'@mui/icons-material':
- specifier: 6.3.1
- version: 6.3.1(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
+ specifier: 6.4.1
+ version: 6.4.1(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
'@mui/material':
- specifier: 6.3.1
- version: 6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ specifier: 6.4.1
+ version: 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@mui/x-data-grid':
+ specifier: 7.22.2
+ version: 7.22.2(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@mui/x-date-pickers':
+ specifier: 7.23.6
+ version: 7.23.6(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@types/invariant':
specifier: 2.2.37
version: 2.2.37
@@ -700,44 +709,44 @@ importers:
specifier: 9.3.1
version: 9.3.1(encoding@0.1.13)
'@mui/icons-material':
- specifier: 6.3.1
- version: 6.3.1(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
+ specifier: 6.4.1
+ version: 6.4.1(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
'@mui/lab':
specifier: 6.0.0-beta.22
- version: 6.0.0-beta.22(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ version: 6.0.0-beta.22(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@mui/material':
- specifier: 6.3.1
- version: 6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ specifier: 6.4.1
+ version: 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@mui/system':
- specifier: 6.3.1
- version: 6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
+ specifier: 6.4.1
+ version: 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
'@mui/types':
specifier: 7.2.21
version: 7.2.21(@types/react@19.0.8)
'@mui/utils':
- specifier: 6.3.1
- version: 6.3.1(@types/react@19.0.8)(react@19.0.0)
+ specifier: 6.4.1
+ version: 6.4.1(@types/react@19.0.8)(react@19.0.0)
'@mui/x-charts':
specifier: 7.25.0
- version: 7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ version: 7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@mui/x-data-grid':
specifier: 7.25.0
- version: 7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ version: 7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@mui/x-data-grid-premium':
specifier: 7.25.0
- version: 7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ version: 7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@mui/x-date-pickers':
specifier: 7.25.0
- version: 7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(date-fns-jalali@2.29.3-0)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ version: 7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(date-fns-jalali@2.29.3-0)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@mui/x-date-pickers-pro':
specifier: 7.25.0
- version: 7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(date-fns-jalali@2.29.3-0)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ version: 7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(date-fns-jalali@2.29.3-0)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@mui/x-license':
specifier: 7.25.0
version: 7.25.0(@types/react@19.0.8)(react@19.0.0)
'@mui/x-tree-view':
specifier: 7.25.0
- version: 7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ version: 7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@tanstack/react-query':
specifier: 5.61.3
version: 5.61.3(react@19.0.0)
@@ -1040,23 +1049,23 @@ importers:
packages/toolpad-studio-components:
dependencies:
'@mui/icons-material':
- specifier: 6.3.1
- version: 6.3.1(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
+ specifier: 6.4.1
+ version: 6.4.1(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
'@mui/lab':
specifier: 6.0.0-beta.22
- version: 6.0.0-beta.22(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ version: 6.0.0-beta.22(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@mui/material':
- specifier: 6.3.1
- version: 6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ specifier: 6.4.1
+ version: 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@mui/x-charts':
specifier: 7.25.0
- version: 7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ version: 7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@mui/x-data-grid-premium':
specifier: 7.25.0
- version: 7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ version: 7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@mui/x-date-pickers':
specifier: 7.25.0
- version: 7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(date-fns-jalali@2.29.3-0)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ version: 7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(date-fns-jalali@2.29.3-0)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@mui/x-license':
specifier: 7.25.0
version: 7.25.0(@types/react@19.0.8)(react@19.0.0)
@@ -1101,8 +1110,8 @@ importers:
specifier: 0.37.4
version: 0.37.4
'@mui/material':
- specifier: 6.3.1
- version: 6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ specifier: 6.4.1
+ version: 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@tanstack/react-query':
specifier: 5.61.3
version: 5.61.3(react@19.0.0)
@@ -1208,11 +1217,11 @@ importers:
specifier: 11.14.0
version: 11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
'@mui/icons-material':
- specifier: 6.3.1
- version: 6.3.1(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
+ specifier: 6.4.1
+ version: 6.4.1(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
'@mui/material':
- specifier: 6.3.1
- version: 6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ specifier: 6.4.1
+ version: 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@mui/material-nextjs':
specifier: 6.3.1
version: 6.3.1(@emotion/cache@11.14.0)(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/server@11.11.0)(@types/react@19.0.8)(next@15.1.6(@babel/core@7.26.0)(@playwright/test@1.47.2)(babel-plugin-macros@3.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)
@@ -1253,11 +1262,11 @@ importers:
specifier: 11.14.0
version: 11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
'@mui/icons-material':
- specifier: 6.3.1
- version: 6.3.1(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
+ specifier: 6.4.1
+ version: 6.4.1(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
'@mui/material':
- specifier: 6.3.1
- version: 6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ specifier: 6.4.1
+ version: 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@mui/material-nextjs':
specifier: 6.3.1
version: 6.3.1(@emotion/cache@11.14.0)(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/server@11.11.0)(@types/react@19.0.8)(next@15.1.6(@babel/core@7.26.0)(@playwright/test@1.47.2)(babel-plugin-macros@3.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)
@@ -1295,11 +1304,11 @@ importers:
specifier: 11.14.0
version: 11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
'@mui/icons-material':
- specifier: 6.3.1
- version: 6.3.1(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
+ specifier: 6.4.1
+ version: 6.4.1(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
'@mui/material':
- specifier: 6.3.1
- version: 6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ specifier: 6.4.1
+ version: 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@toolpad/core':
specifier: workspace:*
version: link:../../packages/toolpad-core/build
@@ -1324,12 +1333,15 @@ importers:
vite:
specifier: 5.4.12
version: 5.4.12(@types/node@20.17.16)(terser@5.36.0)
+ yup:
+ specifier: 1.6.1
+ version: 1.6.1
test:
devDependencies:
'@mui/material':
- specifier: 6.3.1
- version: 6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ specifier: 6.4.1
+ version: 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@toolpad/studio':
specifier: workspace:*
version: link:../packages/toolpad-studio
@@ -2958,7 +2970,6 @@ packages:
'@mui/base@5.0.0-beta.40-0':
resolution: {integrity: sha512-hG3atoDUxlvEy+0mqdMpWd04wca8HKr2IHjW/fAjlkCHQolSLazhZM46vnHjOf15M4ESu25mV/3PgjczyjVM4w==}
engines: {node: '>=12.0.0'}
- deprecated: This package has been replaced by @base-ui-components/react
peerDependencies:
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
react: ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -2970,7 +2981,6 @@ packages:
'@mui/base@5.0.0-beta.68':
resolution: {integrity: sha512-F1JMNeLS9Qhjj3wN86JUQYBtJoXyQvknxlzwNl6eS0ZABo1MiohMONj3/WQzYPSXIKC2bS/ZbyBzdHhi2GnEpA==}
engines: {node: '>=14.0.0'}
- deprecated: This package has been replaced by @base-ui-components/react
peerDependencies:
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
react: ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -2982,11 +2992,11 @@ packages:
'@mui/core-downloads-tracker@5.16.12':
resolution: {integrity: sha512-rkN+bPpe2Xn8h4ZLqKy5JsZt3nzMyTJ2ySdyLHHf0IL+PrxS46dxOIC1i66R8qi14kJBHfy7Byqv1yUvpwf0iw==}
- '@mui/core-downloads-tracker@6.3.1':
- resolution: {integrity: sha512-2OmnEyoHpj5//dJJpMuxOeLItCCHdf99pjMFfUFdBteCunAK9jW+PwEo4mtdGcLs7P+IgZ+85ypd52eY4AigoQ==}
+ '@mui/core-downloads-tracker@6.4.2':
+ resolution: {integrity: sha512-Qmod9fHsFWrtLxdSkZ4iDLRz2AUKt3C2ZEimuY+qKlQGVKJDNS5DuSlNOAgqfHFDq8mzB17ATN6HFcThwJlvUw==}
- '@mui/docs@6.3.1':
- resolution: {integrity: sha512-0JqU2+dEKX1b0MZTDG4qM+iiW5wgapwzq8Q1Joehlq91PrW9atddbKIDUpFdy7MY+DKSFDNB+QRT+pez42PGWA==}
+ '@mui/docs@6.4.1':
+ resolution: {integrity: sha512-JmO5JbYozMiworxOcFklerQAb3uV7Uq7nM5ecIBvbUCv9v8hQlDLYl5j4zcix/PZFjCoSLSn3lcZ6EpBwlO+Rw==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@mui/base': '*'
@@ -3002,11 +3012,11 @@ packages:
'@types/react':
optional: true
- '@mui/icons-material@6.3.1':
- resolution: {integrity: sha512-nJmWj1PBlwS3t1PnoqcixIsftE+7xrW3Su7f0yrjPw4tVjYrgkhU0hrRp+OlURfZ3ptdSkoBkalee9Bhf1Erfw==}
+ '@mui/icons-material@6.4.1':
+ resolution: {integrity: sha512-wsxFcUTQxt4s+7Bg4GgobqRjyaHLmZGNOs+HJpbwrwmLbT6mhIJxhpqsKzzWq9aDY8xIe7HCjhpH7XI5UD6teA==}
engines: {node: '>=14.0.0'}
peerDependencies:
- '@mui/material': ^6.3.1
+ '@mui/material': ^6.4.1
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
react: ^17.0.0 || ^18.0.0 || ^19.0.0
peerDependenciesMeta:
@@ -3024,6 +3034,9 @@ packages:
'@mui/internal-markdown@1.0.24':
resolution: {integrity: sha512-bFjygozW3vhmnct9COgysXv5+afLzDgdt30LVUgPeDSaxZbAfSoyD0Q/b848Zl5WEaXpKrzg0TVKPoE8XAGoIg==}
+ '@mui/internal-markdown@1.0.25':
+ resolution: {integrity: sha512-9A+IrU2gxUd+1JInu7C2hAPsWA0kD1Z2ytme4SfCs95d03MamfFRBDuXt659Dxemb/IHXumxcDuuT8zzLXzUwg==}
+
'@mui/internal-scripts@1.0.32':
resolution: {integrity: sha512-iYccvD8q4KB4VhX1DTNdSlvGTfkZBMoQ3JfKbEphQCAyLU8Fwb9FfCt1aJC71ViXyHzmGwEKuLRyDzBh7C3BOg==}
@@ -3083,13 +3096,13 @@ packages:
'@types/react':
optional: true
- '@mui/material@6.3.1':
- resolution: {integrity: sha512-ynG9ayhxgCsHJ/dtDcT1v78/r2GwQyP3E0hPz3GdPRl0uFJz/uUTtI5KFYwadXmbC+Uv3bfB8laZ6+Cpzh03gA==}
+ '@mui/material@6.4.1':
+ resolution: {integrity: sha512-MFBfia6UiKxyoLeGkAh8M15bkeDmfnsUTMRJd/vTQue6YQ8AQ6lw9HqDthyYghzDEWIvZO/lQQzLrZE8XwNJLA==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@emotion/react': ^11.5.0
'@emotion/styled': ^11.3.0
- '@mui/material-pigment-css': ^6.3.1
+ '@mui/material-pigment-css': ^6.4.1
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
react: ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -3118,8 +3131,8 @@ packages:
'@types/react':
optional: true
- '@mui/private-theming@6.3.1':
- resolution: {integrity: sha512-g0u7hIUkmXmmrmmf5gdDYv9zdAig0KoxhIQn1JN8IVqApzf/AyRhH3uDGx5mSvs8+a1zb4+0W6LC260SyTTtdQ==}
+ '@mui/private-theming@6.4.2':
+ resolution: {integrity: sha512-2CkQT0gNlogM50qGTBJgWA7hPPx4AeH8RE2xJa+PHtIOowiVPX52ZsQ0e7Ho18DAqEbkngQ6Uju037ER+TCY5A==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -3141,8 +3154,8 @@ packages:
'@emotion/styled':
optional: true
- '@mui/styled-engine@6.3.1':
- resolution: {integrity: sha512-/7CC0d2fIeiUxN5kCCwYu4AWUDd9cCTxWCyo0v/Rnv6s8uk6hWgJC3VLZBoDENBHf/KjqDZuYJ2CR+7hD6QYww==}
+ '@mui/styled-engine@6.4.2':
+ resolution: {integrity: sha512-cgjQK2bkllSYoWUBv93ALhCPJ0NhfO3NctsBf13/b4XSeQVfKPBAnR+P9mNpdFMa5a5RWwtWuBD3cZ5vktsN+g==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@emotion/react': ^11.4.1
@@ -3154,8 +3167,8 @@ packages:
'@emotion/styled':
optional: true
- '@mui/styles@6.3.1':
- resolution: {integrity: sha512-PokH/ywp4uQDwrUoqo55oMsZfLCZn7Wdg9wMQAOksWpdRDhWUV4P6DqRliy5F26JPaitu0YTy1Wbf8ePdyfNrg==}
+ '@mui/styles@6.4.1':
+ resolution: {integrity: sha512-W0AAfCsjrqTWdWzxM9vFPWkSNPQppKDNxDXN2l527Fu6ITF1ZBmw97p85Q6IkyXuUPlF+Mr12ztKSq9e2kD4KA==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -3180,8 +3193,8 @@ packages:
'@types/react':
optional: true
- '@mui/system@6.3.1':
- resolution: {integrity: sha512-AwqQ3EAIT2np85ki+N15fF0lFXX1iFPqenCzVOSl3QXKy2eifZeGd9dGtt7pGMoFw5dzW4dRGGzRpLAq9rkl7A==}
+ '@mui/system@6.4.1':
+ resolution: {integrity: sha512-rgQzgcsHCTtzF9MZ+sL0tOhf2ZBLazpjrujClcb4Siju5lTrK0xX4PsiropActzCemNfM+mOu+0jezAVnfRK8g==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@emotion/react': ^11.5.0
@@ -3214,8 +3227,18 @@ packages:
'@types/react':
optional: true
- '@mui/utils@6.3.1':
- resolution: {integrity: sha512-sjGjXAngoio6lniQZKJ5zGfjm+LD2wvLwco7FbKe1fu8A7VIFmz2SwkLb+MDPLNX1lE7IscvNNyh1pobtZg2tw==}
+ '@mui/utils@6.4.1':
+ resolution: {integrity: sha512-iQUDUeYh87SvR4lVojaRaYnQix8BbRV51MxaV6MBmqthecQoxwSbS5e2wnbDJUeFxY2ppV505CiqPLtd0OWkqw==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
+ react: ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@mui/utils@6.4.2':
+ resolution: {integrity: sha512-5NkhzlJkmR5+5RSs/Irqin1GPy2Z8vbLk/UzQrH9FEAnm6OA9SvuXjzgklxUs7N65VwEkGpKK1jMZ5K84hRdzQ==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -3275,6 +3298,22 @@ packages:
'@emotion/styled':
optional: true
+ '@mui/x-data-grid@7.22.2':
+ resolution: {integrity: sha512-yfy2s5A6tbajQZiEdsba49T4FYb9F0WPrzbbG30dl1+sIiX4ZRX7ma44UIDGPZrsZv8xkkE+p8qeJxZ7OaMteA==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ '@emotion/react': ^11.9.0
+ '@emotion/styled': ^11.8.1
+ '@mui/material': ^5.15.14 || ^6.0.0
+ '@mui/system': ^5.15.14 || ^6.0.0
+ react: ^17.0.0 || ^18.0.0
+ react-dom: ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ '@emotion/react':
+ optional: true
+ '@emotion/styled':
+ optional: true
+
'@mui/x-data-grid@7.25.0':
resolution: {integrity: sha512-e9ZLbCgnDiADFiDyXo91ucZFHEMkKBNpwpkaTq5KohzefJfMpMQjTEbJeueSfBG2G1Q1Am2TPeBqrNeReIA7RQ==}
engines: {node: '>=14.0.0'}
@@ -3328,6 +3367,43 @@ packages:
moment-jalaali:
optional: true
+ '@mui/x-date-pickers@7.23.6':
+ resolution: {integrity: sha512-jt6rEAYLju3NZe3y2S+I5KcTiSHV79FW0jeNUEUTceg1qsPzseHbND66k3zVF0hO3N2oZtLtPywof6vN5Doe+Q==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ '@emotion/react': ^11.9.0
+ '@emotion/styled': ^11.8.1
+ '@mui/material': ^5.15.14 || ^6.0.0
+ '@mui/system': ^5.15.14 || ^6.0.0
+ date-fns: ^2.25.0 || ^3.2.0 || ^4.0.0
+ date-fns-jalali: ^2.13.0-0 || ^3.2.0-0 || ^4.0.0-0
+ dayjs: ^1.10.7
+ luxon: ^3.0.2
+ moment: ^2.29.4
+ moment-hijri: ^2.1.2 || ^3.0.0
+ moment-jalaali: ^0.7.4 || ^0.8.0 || ^0.9.0 || ^0.10.0
+ react: ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ '@emotion/react':
+ optional: true
+ '@emotion/styled':
+ optional: true
+ date-fns:
+ optional: true
+ date-fns-jalali:
+ optional: true
+ dayjs:
+ optional: true
+ luxon:
+ optional: true
+ moment:
+ optional: true
+ moment-hijri:
+ optional: true
+ moment-jalaali:
+ optional: true
+
'@mui/x-date-pickers@7.25.0':
resolution: {integrity: sha512-t62OSFAKwj7KYQ8KcwTuKj6OgDuLQPSe4QUJcKDzD9rEhRIJVRUw2x27gBSdcls4l0PTrba19TghvDxCZprriw==}
engines: {node: '>=14.0.0'}
@@ -3365,6 +3441,18 @@ packages:
moment-jalaali:
optional: true
+ '@mui/x-internals@7.21.0':
+ resolution: {integrity: sha512-94YNyZ0BhK5Z+Tkr90RKf47IVCW8R/1MvdUhh6MCQg6sZa74jsX+x+gEZ4kzuCqOsuyTyxikeQ8vVuCIQiP7UQ==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ react: ^17.0.0 || ^18.0.0
+
+ '@mui/x-internals@7.23.6':
+ resolution: {integrity: sha512-hT1Pa4PNCnxwiauPbYMC3p4DiEF1x05Iu4C1MtC/jMJ1LtthymLmTuQ6ZQ53/R9FeqK6sYd6A6noR+vNMjp5DA==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ react: ^17.0.0 || ^18.0.0 || ^19.0.0
+
'@mui/x-internals@7.25.0':
resolution: {integrity: sha512-tBUN54YznAkmtCIRAOl35Kgl0MjFDIjUbzIrbWRgVSIR3QJ8bXnVSkiRBi+P91SZEl9+ZW0rDj+osq7xFJV0kg==}
engines: {node: '>=14.0.0'}
@@ -8922,6 +9010,9 @@ packages:
prop-types@15.8.1:
resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
+ property-expr@2.0.6:
+ resolution: {integrity: sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==}
+
proto-list@1.2.4:
resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==}
@@ -9923,6 +10014,9 @@ packages:
through@2.3.8:
resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
+ tiny-case@1.0.3:
+ resolution: {integrity: sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==}
+
tiny-invariant@1.3.3:
resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==}
@@ -9978,6 +10072,9 @@ packages:
resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
engines: {node: '>=0.6'}
+ toposort@2.0.2:
+ resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==}
+
totalist@3.0.1:
resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
engines: {node: '>=6'}
@@ -10643,6 +10740,9 @@ packages:
resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==}
engines: {node: '>=18'}
+ yup@1.6.1:
+ resolution: {integrity: sha512-JED8pB50qbA4FOkDol0bYF/p60qSEDQqBD0/qeIrUCG1KbPBIQ776fCUNb9ldbPcSTxA69g/47XTo4TqWiuXOA==}
+
zip-stream@4.1.1:
resolution: {integrity: sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==}
engines: {node: '>= 10'}
@@ -12459,7 +12559,7 @@ snapshots:
'@babel/runtime': 7.26.0
'@floating-ui/react-dom': 2.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@mui/types': 7.2.21(@types/react@19.0.8)
- '@mui/utils': 6.3.1(@types/react@19.0.8)(react@19.0.0)
+ '@mui/utils': 6.4.1(@types/react@19.0.8)(react@19.0.0)
'@popperjs/core': 2.11.8
clsx: 2.1.1
prop-types: 15.8.1
@@ -12470,16 +12570,16 @@ snapshots:
'@mui/core-downloads-tracker@5.16.12': {}
- '@mui/core-downloads-tracker@6.3.1': {}
+ '@mui/core-downloads-tracker@6.4.2': {}
- '@mui/docs@6.3.1(zr4k4xiuc3jt6p7px4uscqtuny)':
+ '@mui/docs@6.4.1(3gva2vm4pftzxcubfzhbhznkmy)':
dependencies:
'@babel/runtime': 7.26.0
'@mui/base': 5.0.0-beta.68(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@mui/icons-material': 6.3.1(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
- '@mui/internal-markdown': 1.0.24
- '@mui/material': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@mui/system': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
+ '@mui/icons-material': 6.4.1(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
+ '@mui/internal-markdown': 1.0.25
+ '@mui/material': 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@mui/system': 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
chai: 5.1.2
clipboard-copy: 4.0.1
clsx: 2.1.1
@@ -12491,10 +12591,10 @@ snapshots:
optionalDependencies:
'@types/react': 19.0.8
- '@mui/icons-material@6.3.1(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)':
+ '@mui/icons-material@6.4.1(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)':
dependencies:
'@babel/runtime': 7.26.0
- '@mui/material': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@mui/material': 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
react: 19.0.0
optionalDependencies:
'@types/react': 19.0.8
@@ -12516,6 +12616,13 @@ snapshots:
marked: 15.0.6
prismjs: 1.29.0
+ '@mui/internal-markdown@1.0.25':
+ dependencies:
+ '@babel/runtime': 7.26.0
+ lodash: 4.17.21
+ marked: 15.0.6
+ prismjs: 1.29.0
+
'@mui/internal-scripts@1.0.32':
dependencies:
'@babel/core': 7.26.0
@@ -12548,14 +12655,14 @@ snapshots:
'@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
'@types/react': 19.0.8
- '@mui/lab@6.0.0-beta.22(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
+ '@mui/lab@6.0.0-beta.22(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
'@babel/runtime': 7.26.0
'@mui/base': 5.0.0-beta.68(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@mui/material': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@mui/system': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
+ '@mui/material': 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@mui/system': 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
'@mui/types': 7.2.21(@types/react@19.0.8)
- '@mui/utils': 6.3.1(@types/react@19.0.8)(react@19.0.0)
+ '@mui/utils': 6.4.1(@types/react@19.0.8)(react@19.0.0)
clsx: 2.1.1
prop-types: 15.8.1
react: 19.0.0
@@ -12576,13 +12683,13 @@ snapshots:
'@emotion/server': 11.11.0
'@types/react': 19.0.8
- '@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
+ '@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
'@babel/runtime': 7.26.0
- '@mui/core-downloads-tracker': 6.3.1
- '@mui/system': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
+ '@mui/core-downloads-tracker': 6.4.2
+ '@mui/system': 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
'@mui/types': 7.2.21(@types/react@19.0.8)
- '@mui/utils': 6.3.1(@types/react@19.0.8)(react@19.0.0)
+ '@mui/utils': 6.4.1(@types/react@19.0.8)(react@19.0.0)
'@popperjs/core': 2.11.8
'@types/react-transition-group': 4.4.12(@types/react@19.0.8)
clsx: 2.1.1
@@ -12620,10 +12727,10 @@ snapshots:
optionalDependencies:
'@types/react': 19.0.8
- '@mui/private-theming@6.3.1(@types/react@19.0.8)(react@19.0.0)':
+ '@mui/private-theming@6.4.2(@types/react@19.0.8)(react@19.0.0)':
dependencies:
'@babel/runtime': 7.26.0
- '@mui/utils': 6.3.1(@types/react@19.0.8)(react@19.0.0)
+ '@mui/utils': 6.4.2(@types/react@19.0.8)(react@19.0.0)
prop-types: 15.8.1
react: 19.0.0
optionalDependencies:
@@ -12640,7 +12747,7 @@ snapshots:
'@emotion/react': 11.14.0(@types/react@19.0.8)(react@19.0.0)
'@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
- '@mui/styled-engine@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(react@19.0.0)':
+ '@mui/styled-engine@6.4.2(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(react@19.0.0)':
dependencies:
'@babel/runtime': 7.26.0
'@emotion/cache': 11.14.0
@@ -12653,13 +12760,13 @@ snapshots:
'@emotion/react': 11.14.0(@types/react@19.0.8)(react@19.0.0)
'@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
- '@mui/styles@6.3.1(@types/react@19.0.8)(react@19.0.0)':
+ '@mui/styles@6.4.1(@types/react@19.0.8)(react@19.0.0)':
dependencies:
'@babel/runtime': 7.26.0
'@emotion/hash': 0.9.2
- '@mui/private-theming': 6.3.1(@types/react@19.0.8)(react@19.0.0)
+ '@mui/private-theming': 6.4.2(@types/react@19.0.8)(react@19.0.0)
'@mui/types': 7.2.21(@types/react@19.0.8)
- '@mui/utils': 6.3.1(@types/react@19.0.8)(react@19.0.0)
+ '@mui/utils': 6.4.1(@types/react@19.0.8)(react@19.0.0)
clsx: 2.1.1
csstype: 3.1.3
hoist-non-react-statics: 3.3.2
@@ -12692,13 +12799,13 @@ snapshots:
'@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
'@types/react': 19.0.8
- '@mui/system@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)':
+ '@mui/system@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)':
dependencies:
'@babel/runtime': 7.26.0
- '@mui/private-theming': 6.3.1(@types/react@19.0.8)(react@19.0.0)
- '@mui/styled-engine': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(react@19.0.0)
+ '@mui/private-theming': 6.4.2(@types/react@19.0.8)(react@19.0.0)
+ '@mui/styled-engine': 6.4.2(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(react@19.0.0)
'@mui/types': 7.2.21(@types/react@19.0.8)
- '@mui/utils': 6.3.1(@types/react@19.0.8)(react@19.0.0)
+ '@mui/utils': 6.4.1(@types/react@19.0.8)(react@19.0.0)
clsx: 2.1.1
csstype: 3.1.3
prop-types: 15.8.1
@@ -12724,7 +12831,19 @@ snapshots:
optionalDependencies:
'@types/react': 19.0.8
- '@mui/utils@6.3.1(@types/react@19.0.8)(react@19.0.0)':
+ '@mui/utils@6.4.1(@types/react@19.0.8)(react@19.0.0)':
+ dependencies:
+ '@babel/runtime': 7.26.0
+ '@mui/types': 7.2.21(@types/react@19.0.8)
+ '@types/prop-types': 15.7.14
+ clsx: 2.1.1
+ prop-types: 15.8.1
+ react: 19.0.0
+ react-is: 19.0.0
+ optionalDependencies:
+ '@types/react': 19.0.8
+
+ '@mui/utils@6.4.2(@types/react@19.0.8)(react@19.0.0)':
dependencies:
'@babel/runtime': 7.26.0
'@mui/types': 7.2.21(@types/react@19.0.8)
@@ -12754,12 +12873,12 @@ snapshots:
delaunator: 5.0.1
robust-predicates: 3.0.2
- '@mui/x-charts@7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
+ '@mui/x-charts@7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
'@babel/runtime': 7.26.0
- '@mui/material': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@mui/system': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
- '@mui/utils': 6.3.1(@types/react@19.0.8)(react@19.0.0)
+ '@mui/material': 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@mui/system': 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
+ '@mui/utils': 6.4.1(@types/react@19.0.8)(react@19.0.0)
'@mui/x-charts-vendor': 7.20.0
'@mui/x-internals': 7.25.0(@types/react@19.0.8)(react@19.0.0)
'@react-spring/rafz': 9.7.5
@@ -12774,14 +12893,14 @@ snapshots:
transitivePeerDependencies:
- '@types/react'
- '@mui/x-data-grid-premium@7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
+ '@mui/x-data-grid-premium@7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
'@babel/runtime': 7.26.0
- '@mui/material': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@mui/system': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
- '@mui/utils': 6.3.1(@types/react@19.0.8)(react@19.0.0)
- '@mui/x-data-grid': 7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@mui/x-data-grid-pro': 7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@mui/material': 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@mui/system': 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
+ '@mui/utils': 6.4.1(@types/react@19.0.8)(react@19.0.0)
+ '@mui/x-data-grid': 7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@mui/x-data-grid-pro': 7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@mui/x-internals': 7.25.0(@types/react@19.0.8)(react@19.0.0)
'@mui/x-license': 7.25.0(@types/react@19.0.8)(react@19.0.0)
'@types/format-util': 1.0.4
@@ -12797,13 +12916,13 @@ snapshots:
transitivePeerDependencies:
- '@types/react'
- '@mui/x-data-grid-pro@7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
+ '@mui/x-data-grid-pro@7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
'@babel/runtime': 7.26.0
- '@mui/material': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@mui/system': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
- '@mui/utils': 6.3.1(@types/react@19.0.8)(react@19.0.0)
- '@mui/x-data-grid': 7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@mui/material': 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@mui/system': 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
+ '@mui/utils': 6.4.1(@types/react@19.0.8)(react@19.0.0)
+ '@mui/x-data-grid': 7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@mui/x-internals': 7.25.0(@types/react@19.0.8)(react@19.0.0)
'@mui/x-license': 7.25.0(@types/react@19.0.8)(react@19.0.0)
'@types/format-util': 1.0.4
@@ -12818,12 +12937,30 @@ snapshots:
transitivePeerDependencies:
- '@types/react'
- '@mui/x-data-grid@7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
+ '@mui/x-data-grid@7.22.2(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
+ dependencies:
+ '@babel/runtime': 7.26.0
+ '@mui/material': 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@mui/system': 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
+ '@mui/utils': 6.4.1(@types/react@19.0.8)(react@19.0.0)
+ '@mui/x-internals': 7.21.0(@types/react@19.0.8)(react@19.0.0)
+ clsx: 2.1.1
+ prop-types: 15.8.1
+ react: 19.0.0
+ react-dom: 19.0.0(react@19.0.0)
+ reselect: 5.1.1
+ optionalDependencies:
+ '@emotion/react': 11.14.0(@types/react@19.0.8)(react@19.0.0)
+ '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
+ transitivePeerDependencies:
+ - '@types/react'
+
+ '@mui/x-data-grid@7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
'@babel/runtime': 7.26.0
- '@mui/material': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@mui/system': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
- '@mui/utils': 6.3.1(@types/react@19.0.8)(react@19.0.0)
+ '@mui/material': 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@mui/system': 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
+ '@mui/utils': 6.4.1(@types/react@19.0.8)(react@19.0.0)
'@mui/x-internals': 7.25.0(@types/react@19.0.8)(react@19.0.0)
clsx: 2.1.1
prop-types: 15.8.1
@@ -12836,13 +12973,13 @@ snapshots:
transitivePeerDependencies:
- '@types/react'
- '@mui/x-date-pickers-pro@7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(date-fns-jalali@2.29.3-0)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
+ '@mui/x-date-pickers-pro@7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(date-fns-jalali@2.29.3-0)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
'@babel/runtime': 7.26.0
- '@mui/material': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@mui/system': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
- '@mui/utils': 6.3.1(@types/react@19.0.8)(react@19.0.0)
- '@mui/x-date-pickers': 7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(date-fns-jalali@2.29.3-0)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@mui/material': 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@mui/system': 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
+ '@mui/utils': 6.4.1(@types/react@19.0.8)(react@19.0.0)
+ '@mui/x-date-pickers': 7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(date-fns-jalali@2.29.3-0)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@mui/x-internals': 7.25.0(@types/react@19.0.8)(react@19.0.0)
'@mui/x-license': 7.25.0(@types/react@19.0.8)(react@19.0.0)
clsx: 2.1.1
@@ -12858,12 +12995,32 @@ snapshots:
transitivePeerDependencies:
- '@types/react'
- '@mui/x-date-pickers@7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(date-fns-jalali@2.29.3-0)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
+ '@mui/x-date-pickers@7.23.6(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
+ dependencies:
+ '@babel/runtime': 7.26.0
+ '@mui/material': 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@mui/system': 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
+ '@mui/utils': 6.4.1(@types/react@19.0.8)(react@19.0.0)
+ '@mui/x-internals': 7.23.6(@types/react@19.0.8)(react@19.0.0)
+ '@types/react-transition-group': 4.4.12(@types/react@19.0.8)
+ clsx: 2.1.1
+ prop-types: 15.8.1
+ react: 19.0.0
+ react-dom: 19.0.0(react@19.0.0)
+ react-transition-group: 4.4.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ optionalDependencies:
+ '@emotion/react': 11.14.0(@types/react@19.0.8)(react@19.0.0)
+ '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
+ dayjs: 1.11.13
+ transitivePeerDependencies:
+ - '@types/react'
+
+ '@mui/x-date-pickers@7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(date-fns-jalali@2.29.3-0)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
'@babel/runtime': 7.26.0
- '@mui/material': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@mui/system': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
- '@mui/utils': 6.3.1(@types/react@19.0.8)(react@19.0.0)
+ '@mui/material': 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@mui/system': 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
+ '@mui/utils': 6.4.1(@types/react@19.0.8)(react@19.0.0)
'@mui/x-internals': 7.25.0(@types/react@19.0.8)(react@19.0.0)
'@types/react-transition-group': 4.4.12(@types/react@19.0.8)
clsx: 2.1.1
@@ -12879,10 +13036,26 @@ snapshots:
transitivePeerDependencies:
- '@types/react'
+ '@mui/x-internals@7.21.0(@types/react@19.0.8)(react@19.0.0)':
+ dependencies:
+ '@babel/runtime': 7.26.0
+ '@mui/utils': 6.4.1(@types/react@19.0.8)(react@19.0.0)
+ react: 19.0.0
+ transitivePeerDependencies:
+ - '@types/react'
+
+ '@mui/x-internals@7.23.6(@types/react@19.0.8)(react@19.0.0)':
+ dependencies:
+ '@babel/runtime': 7.26.0
+ '@mui/utils': 6.4.1(@types/react@19.0.8)(react@19.0.0)
+ react: 19.0.0
+ transitivePeerDependencies:
+ - '@types/react'
+
'@mui/x-internals@7.25.0(@types/react@19.0.8)(react@19.0.0)':
dependencies:
'@babel/runtime': 7.26.0
- '@mui/utils': 6.3.1(@types/react@19.0.8)(react@19.0.0)
+ '@mui/utils': 6.4.1(@types/react@19.0.8)(react@19.0.0)
react: 19.0.0
transitivePeerDependencies:
- '@types/react'
@@ -12890,18 +13063,18 @@ snapshots:
'@mui/x-license@7.25.0(@types/react@19.0.8)(react@19.0.0)':
dependencies:
'@babel/runtime': 7.26.0
- '@mui/utils': 6.3.1(@types/react@19.0.8)(react@19.0.0)
+ '@mui/utils': 6.4.1(@types/react@19.0.8)(react@19.0.0)
'@mui/x-internals': 7.25.0(@types/react@19.0.8)(react@19.0.0)
react: 19.0.0
transitivePeerDependencies:
- '@types/react'
- '@mui/x-tree-view@7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
+ '@mui/x-tree-view@7.25.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
'@babel/runtime': 7.26.0
- '@mui/material': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@mui/system': 6.3.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
- '@mui/utils': 6.3.1(@types/react@19.0.8)(react@19.0.0)
+ '@mui/material': 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@mui/system': 6.4.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)
+ '@mui/utils': 6.4.1(@types/react@19.0.8)(react@19.0.0)
'@mui/x-internals': 7.25.0(@types/react@19.0.8)(react@19.0.0)
'@types/react-transition-group': 4.4.12(@types/react@19.0.8)
clsx: 2.1.1
@@ -19576,6 +19749,8 @@ snapshots:
object-assign: 4.1.1
react-is: 16.13.1
+ property-expr@2.0.6: {}
+
proto-list@1.2.4: {}
protocols@2.0.1: {}
@@ -20777,6 +20952,8 @@ snapshots:
through@2.3.8: {}
+ tiny-case@1.0.3: {}
+
tiny-invariant@1.3.3: {}
tiny-warning@1.0.3: {}
@@ -20820,6 +20997,8 @@ snapshots:
toidentifier@1.0.1: {}
+ toposort@2.0.2: {}
+
totalist@3.0.1: {}
tough-cookie@4.1.4:
@@ -21583,6 +21762,13 @@ snapshots:
yoctocolors@2.1.1: {}
+ yup@1.6.1:
+ dependencies:
+ property-expr: 2.0.6
+ tiny-case: 1.0.3
+ toposort: 2.0.2
+ type-fest: 2.19.0
+
zip-stream@4.1.1:
dependencies:
archiver-utils: 3.0.4
diff --git a/scripts/generateProptypes.ts b/scripts/generateProptypes.ts
index ad49871579a..f4061fd42a3 100644
--- a/scripts/generateProptypes.ts
+++ b/scripts/generateProptypes.ts
@@ -59,6 +59,7 @@ async function generateProptypes(
name.toLowerCase().endsWith('classes') ||
name === 'theme' ||
name === 'ownerState' ||
+ name === 'dataSource' ||
(name.endsWith('Props') && name !== 'componentsProps' && name !== 'slotProps')
) {
return false;
diff --git a/test/package.json b/test/package.json
index 83642a94e2a..a8d7e944bf6 100644
--- a/test/package.json
+++ b/test/package.json
@@ -2,7 +2,7 @@
"name": "@toolpad/studio-tests",
"private": true,
"devDependencies": {
- "@mui/material": "6.3.1",
+ "@mui/material": "6.4.1",
"@toolpad/studio": "workspace:*",
"@toolpad/utils": "workspace:*",
"@types/invariant": "2.2.37",