diff --git a/docs/pages/material-ui/api/table-pagination.json b/docs/pages/material-ui/api/table-pagination.json
index 67dfeebfd74910..dacabc881904e1 100644
--- a/docs/pages/material-ui/api/table-pagination.json
+++ b/docs/pages/material-ui/api/table-pagination.json
@@ -60,14 +60,14 @@
"slotProps": {
"type": {
"name": "shape",
- "description": "{ actions?: { firstButton?: object, firstButtonIcon?: object, lastButton?: object, lastButtonIcon?: object, nextButton?: object, nextButtonIcon?: object, previousButton?: object, previousButtonIcon?: object }, select?: object }"
+ "description": "{ actions?: { firstButton?: object, firstButtonIcon?: object, lastButton?: object, lastButtonIcon?: object, nextButton?: object, nextButtonIcon?: object, previousButton?: object, previousButtonIcon?: object }, displayedRows?: func
| object, menuItem?: func
| object, root?: func
| object, select?: object, selectLabel?: func
| object, spacer?: func
| object, toolbar?: func
| object }"
},
"default": "{}"
},
"slots": {
"type": {
"name": "shape",
- "description": "{ actions?: { firstButton?: elementType, firstButtonIcon?: elementType, lastButton?: elementType, lastButtonIcon?: elementType, nextButton?: elementType, nextButtonIcon?: elementType, previousButton?: elementType, previousButtonIcon?: elementType } }"
+ "description": "{ actions?: { firstButton?: elementType, firstButtonIcon?: elementType, lastButton?: elementType, lastButtonIcon?: elementType, nextButton?: elementType, nextButtonIcon?: elementType, previousButton?: elementType, previousButtonIcon?: elementType }, displayedRows?: elementType, menuItem?: elementType, root?: elementType, select?: elementType, selectLabel?: elementType, spacer?: elementType, toolbar?: elementType }"
},
"default": "{}"
},
@@ -84,71 +84,72 @@
"import TablePagination from '@mui/material/TablePagination';",
"import { TablePagination } from '@mui/material';"
],
- "classes": [
+ "slots": [
{
- "key": "actions",
- "className": "MuiTablePagination-actions",
- "description": "Styles applied to the internal `TablePaginationActions` component.",
- "isGlobal": false
+ "name": "root",
+ "description": "The component that renders the root slot.\n[Follow this guide](https://mui.com/material-ui/api/table-cell/#props) to learn more about the requirements for this component.",
+ "default": "TableCell",
+ "class": "MuiTablePagination-root"
},
{
- "key": "displayedRows",
- "className": "MuiTablePagination-displayedRows",
- "description": "Styles applied to the displayed rows Typography element.",
- "isGlobal": false
+ "name": "toolbar",
+ "description": "The component that renders the toolbar slot.\n[Follow this guide](https://mui.com/material-ui/api/toolbar/#props) to learn more about the requirements for this component.",
+ "default": "Toolbar",
+ "class": "MuiTablePagination-toolbar"
},
{
- "key": "input",
- "className": "MuiTablePagination-input",
- "description": "Styles applied to the Select component `root` element.",
- "isGlobal": false
+ "name": "spacer",
+ "description": "The tag that renders the spacer slot.",
+ "default": "'div'",
+ "class": "MuiTablePagination-spacer"
},
{
- "key": "menuItem",
- "className": "MuiTablePagination-menuItem",
- "description": "Styles applied to the MenuItem component.",
- "isGlobal": false
+ "name": "selectLabel",
+ "description": "The tag that renders the selectLabel slot.",
+ "default": "'p'",
+ "class": "MuiTablePagination-selectLabel"
},
{
- "key": "root",
- "className": "MuiTablePagination-root",
- "description": "Styles applied to the root element.",
- "isGlobal": false
+ "name": "select",
+ "description": "The component that renders the select slot.\n[Follow this guide](https://mui.com/material-ui/api/select/#props) to learn more about the requirements for this component.",
+ "default": "Select",
+ "class": "MuiTablePagination-select"
},
{
- "key": "select",
- "className": "MuiTablePagination-select",
- "description": "Styles applied to the Select component `select` class.",
- "isGlobal": false
+ "name": "menuItem",
+ "description": "The component that renders the select slot.\n[Follow this guide](https://mui.com/material-ui/api/menu-item/#props) to learn more about the requirements for this component.",
+ "default": "MenuItem",
+ "class": "MuiTablePagination-menuItem"
},
{
- "key": "selectIcon",
- "className": "MuiTablePagination-selectIcon",
- "description": "Styles applied to the Select component `icon` class.",
- "isGlobal": false
+ "name": "displayedRows",
+ "description": "The tag that renders the displayedRows slot.",
+ "default": "'p'",
+ "class": "MuiTablePagination-displayedRows"
},
{
- "key": "selectLabel",
- "className": "MuiTablePagination-selectLabel",
- "description": "Styles applied to the select label Typography element.",
- "isGlobal": false
- },
+ "name": "actions",
+ "description": "The slots that passed to the actions slot.",
+ "class": "MuiTablePagination-actions"
+ }
+ ],
+ "classes": [
{
- "key": "selectRoot",
- "className": "MuiTablePagination-selectRoot",
+ "key": "input",
+ "className": "MuiTablePagination-input",
"description": "Styles applied to the Select component `root` element.",
"isGlobal": false
},
{
- "key": "spacer",
- "className": "MuiTablePagination-spacer",
- "description": "Styles applied to the spacer element.",
+ "key": "selectIcon",
+ "className": "MuiTablePagination-selectIcon",
+ "description": "Styles applied to the Select component `icon` class.",
"isGlobal": false
},
{
- "key": "toolbar",
- "className": "MuiTablePagination-toolbar",
- "description": "Styles applied to the Toolbar component.",
+ "key": "selectRoot",
+ "className": "MuiTablePagination-selectRoot",
+ "description": "Styles applied to the Select component `root` element.",
"isGlobal": false
}
],
diff --git a/docs/translations/api-docs/table-pagination/table-pagination.json b/docs/translations/api-docs/table-pagination/table-pagination.json
index fa2666ec9c1be5..9fdcc243099e5d 100644
--- a/docs/translations/api-docs/table-pagination/table-pagination.json
+++ b/docs/translations/api-docs/table-pagination/table-pagination.json
@@ -53,55 +53,34 @@
},
"showFirstButton": { "description": "If true
, show the first-page button." },
"showLastButton": { "description": "If true
, show the last-page button." },
- "slotProps": { "description": "The props used for each slot inside the TablePagination." },
- "slots": {
- "description": "The components used for each slot inside the TablePagination. Either a string to use a HTML element or a component."
- },
+ "slotProps": { "description": "The props used for each slot inside." },
+ "slots": { "description": "The components used for each slot inside." },
"sx": {
"description": "The system prop that allows defining system overrides as well as additional CSS styles."
}
},
"classDescriptions": {
- "actions": {
- "description": "Styles applied to {{nodeName}}.",
- "nodeName": "the internal TablePaginationActions
component"
- },
- "displayedRows": {
- "description": "Styles applied to {{nodeName}}.",
- "nodeName": "the displayed rows Typography element"
- },
"input": {
"description": "Styles applied to {{nodeName}}.",
"nodeName": "the Select component root
element"
},
- "menuItem": {
- "description": "Styles applied to {{nodeName}}.",
- "nodeName": "the MenuItem component"
- },
- "root": { "description": "Styles applied to the root element." },
- "select": {
- "description": "Styles applied to {{nodeName}}.",
- "nodeName": "the Select component select
class"
- },
"selectIcon": {
"description": "Styles applied to {{nodeName}}.",
"nodeName": "the Select component icon
class"
},
- "selectLabel": {
- "description": "Styles applied to {{nodeName}}.",
- "nodeName": "the select label Typography element"
- },
"selectRoot": {
"description": "Styles applied to {{nodeName}}.",
"nodeName": "the Select component root
element"
- },
- "spacer": {
- "description": "Styles applied to {{nodeName}}.",
- "nodeName": "the spacer element"
- },
- "toolbar": {
- "description": "Styles applied to {{nodeName}}.",
- "nodeName": "the Toolbar component"
}
+ },
+ "slotDescriptions": {
+ "actions": "The slots that passed to the actions slot.",
+ "displayedRows": "The tag that renders the displayedRows slot.",
+ "menuItem": "The component that renders the select slot. Follow this guide to learn more about the requirements for this component.",
+ "root": "The component that renders the root slot. Follow this guide to learn more about the requirements for this component.",
+ "select": "The component that renders the select slot. Follow this guide to learn more about the requirements for this component.",
+ "selectLabel": "The tag that renders the selectLabel slot.",
+ "spacer": "The tag that renders the spacer slot.",
+ "toolbar": "The component that renders the toolbar slot. Follow this guide to learn more about the requirements for this component."
}
}
diff --git a/packages/mui-codemod/src/deprecations/all/deprecations-all.js b/packages/mui-codemod/src/deprecations/all/deprecations-all.js
index 91658509b72b89..c6a16ef48d29ba 100644
--- a/packages/mui-codemod/src/deprecations/all/deprecations-all.js
+++ b/packages/mui-codemod/src/deprecations/all/deprecations-all.js
@@ -28,6 +28,7 @@ import transformTextFieldProps from '../text-field-props';
import transformTabClasses from '../tab-classes';
import transformToggleButtonGroupClasses from '../toggle-button-group-classes';
import transformTooltipProps from '../tooltip-props';
+import transformTablePaginationProps from '../table-pagination-props';
/**
* @param {import('jscodeshift').FileInfo} file
@@ -64,6 +65,7 @@ export default function deprecationsAll(file, api, options) {
file.source = transformTabClasses(file, api, options);
file.source = transformToggleButtonGroupClasses(file, api, options);
file.source = transformTooltipProps(file, api, options);
+ file.source = transformTablePaginationProps(file, api, options);
return file.source;
}
diff --git a/packages/mui-codemod/src/deprecations/table-pagination-props/index.js b/packages/mui-codemod/src/deprecations/table-pagination-props/index.js
new file mode 100644
index 00000000000000..e5547f42c7e42b
--- /dev/null
+++ b/packages/mui-codemod/src/deprecations/table-pagination-props/index.js
@@ -0,0 +1 @@
+export { default } from './table-pagination-props';
diff --git a/packages/mui-codemod/src/deprecations/table-pagination-props/table-pagination-props.js b/packages/mui-codemod/src/deprecations/table-pagination-props/table-pagination-props.js
new file mode 100644
index 00000000000000..57dad168bddb2a
--- /dev/null
+++ b/packages/mui-codemod/src/deprecations/table-pagination-props/table-pagination-props.js
@@ -0,0 +1,28 @@
+import movePropIntoSlots from '../utils/movePropIntoSlots';
+import movePropIntoSlotProps from '../utils/movePropIntoSlotProps';
+
+/**
+ * @param {import('jscodeshift').FileInfo} file
+ * @param {import('jscodeshift').API} api
+ */
+export default function transformer(file, api, options) {
+ const j = api.jscodeshift;
+ const root = j(file.source);
+ const printOptions = options.printOptions;
+
+ movePropIntoSlots(j, {
+ root,
+ componentName: 'TablePagination',
+ propName: 'ActionsComponent',
+ slotName: 'actions',
+ });
+
+ movePropIntoSlotProps(j, {
+ root,
+ componentName: 'TablePagination',
+ propName: 'SelectProps',
+ slotName: 'select',
+ });
+
+ return root.toSource(printOptions);
+}
diff --git a/packages/mui-codemod/src/deprecations/table-pagination-props/table-pagination-props.test.js b/packages/mui-codemod/src/deprecations/table-pagination-props/table-pagination-props.test.js
new file mode 100644
index 00000000000000..858ae985e08589
--- /dev/null
+++ b/packages/mui-codemod/src/deprecations/table-pagination-props/table-pagination-props.test.js
@@ -0,0 +1,16 @@
+import { describeJscodeshiftTransform } from '../../../testUtils';
+import transform from './table-pagination-props';
+
+describe('@mui/codemod', () => {
+ describe('deprecations', () => {
+ describeJscodeshiftTransform({
+ transform,
+ transformName: 'table-pagination-props',
+ dirname: __dirname,
+ testCases: [
+ { actual: '/test-cases/actual.js', expected: '/test-cases/expected.js' },
+ { actual: '/test-cases/theme.actual.js', expected: '/test-cases/theme.expected.js' },
+ ],
+ });
+ });
+});
diff --git a/packages/mui-codemod/src/deprecations/table-pagination-props/test-cases/actual.js b/packages/mui-codemod/src/deprecations/table-pagination-props/test-cases/actual.js
new file mode 100644
index 00000000000000..70bcf7a045076a
--- /dev/null
+++ b/packages/mui-codemod/src/deprecations/table-pagination-props/test-cases/actual.js
@@ -0,0 +1,32 @@
+import TablePagination from '@mui/material/TablePagination';
+import { TablePagination as MyTablePagination } from '@mui/material';
+
+;
+;
+;
+ null }}
+ slotProps={{ select: { native: false } }}
+/>;
+
+;
+
+;
diff --git a/packages/mui-codemod/src/deprecations/table-pagination-props/test-cases/expected.js b/packages/mui-codemod/src/deprecations/table-pagination-props/test-cases/expected.js
new file mode 100644
index 00000000000000..98c5aada897e06
--- /dev/null
+++ b/packages/mui-codemod/src/deprecations/table-pagination-props/test-cases/expected.js
@@ -0,0 +1,39 @@
+import TablePagination from '@mui/material/TablePagination';
+import { TablePagination as MyTablePagination } from '@mui/material';
+
+;
+;
+;
+ null }}
+ slotProps={{ select: {
+ ...{ native: true },
+ ...{ native: false }
+ } }} />;
+
+;
+
+;
diff --git a/packages/mui-codemod/src/deprecations/table-pagination-props/test-cases/theme.actual.js b/packages/mui-codemod/src/deprecations/table-pagination-props/test-cases/theme.actual.js
new file mode 100644
index 00000000000000..99f324af4424bd
--- /dev/null
+++ b/packages/mui-codemod/src/deprecations/table-pagination-props/test-cases/theme.actual.js
@@ -0,0 +1,23 @@
+fn({
+ MuiTablePagination: {
+ defaultProps: {
+ ActionsComponent: 'div',
+ SelectProps: { native: true },
+ },
+ },
+});
+
+fn({
+ MuiTablePagination: {
+ defaultProps: {
+ ActionsComponent: 'div',
+ SelectProps: { native: true },
+ slotProps: {
+ root: { id: 'test' },
+ },
+ slots: {
+ root: 'div',
+ },
+ },
+ },
+});
diff --git a/packages/mui-codemod/src/deprecations/table-pagination-props/test-cases/theme.expected.js b/packages/mui-codemod/src/deprecations/table-pagination-props/test-cases/theme.expected.js
new file mode 100644
index 00000000000000..847943f93d7139
--- /dev/null
+++ b/packages/mui-codemod/src/deprecations/table-pagination-props/test-cases/theme.expected.js
@@ -0,0 +1,29 @@
+fn({
+ MuiTablePagination: {
+ defaultProps: {
+ slots: {
+ actions: 'div'
+ },
+
+ slotProps: {
+ select: { native: true }
+ }
+ },
+ },
+});
+
+fn({
+ MuiTablePagination: {
+ defaultProps: {
+ slotProps: {
+ root: { id: 'test' },
+ select: { native: true }
+ },
+
+ slots: {
+ root: 'div',
+ actions: 'div'
+ }
+ },
+ },
+});
diff --git a/packages/mui-codemod/src/deprecations/utils/movePropIntoSlots.js b/packages/mui-codemod/src/deprecations/utils/movePropIntoSlots.js
index 9910853c3b4949..fc3be19f791dd0 100644
--- a/packages/mui-codemod/src/deprecations/utils/movePropIntoSlots.js
+++ b/packages/mui-codemod/src/deprecations/utils/movePropIntoSlots.js
@@ -9,7 +9,8 @@ function moveJsxPropIntoSlots(j, element, propName, slotName) {
);
if (index !== -1) {
- const removedValue = element.openingElement.attributes.splice(index, 1)[0].value.expression;
+ const attrNode = element.openingElement.attributes.splice(index, 1)[0];
+ const removedValue = attrNode.value.expression || attrNode.value;
let hasSlots = false;
element.openingElement.attributes.forEach((attr) => {
if (attr.name?.name === 'slots') {
diff --git a/packages/mui-material/src/TablePagination/TablePagination.d.ts b/packages/mui-material/src/TablePagination/TablePagination.d.ts
index e52eee2e1b898e..c55d4747fdd1a3 100644
--- a/packages/mui-material/src/TablePagination/TablePagination.d.ts
+++ b/packages/mui-material/src/TablePagination/TablePagination.d.ts
@@ -2,11 +2,14 @@ import * as React from 'react';
import { SxProps } from '@mui/system';
import { Theme } from '../styles';
import { OverridableComponent, OverrideProps } from '../OverridableComponent';
-import { TablePaginationActionsProps } from './TablePaginationActions';
+import { TablePaginationActionsProps, TablePaginationActionsSlots } from './TablePaginationActions';
import { TableCellProps } from '../TableCell';
import { IconButtonProps } from '../IconButton';
import { SelectProps } from '../Select';
import { TablePaginationClasses } from './tablePaginationClasses';
+import { CreateSlotsAndSlotProps, SlotProps } from '../utils/types';
+import { ToolbarProps } from '../Toolbar';
+import { MenuItemProps } from '../MenuItem';
export interface LabelDisplayedRowsArgs {
from: number;
@@ -15,6 +18,133 @@ export interface LabelDisplayedRowsArgs {
page: number;
}
+export interface TablePaginationRootSlotPropsOverrides {}
+
+export interface TablePaginationToolbarSlotPropsOverrides {}
+
+export interface TablePaginationSpacerSlotPropsOverrides {}
+
+export interface TablePaginationSelectLabelSlotPropsOverrides {}
+
+export interface TablePaginationSelectSlotPropsOverrides {}
+
+export interface TablePaginationMenuItemSlotPropsOverrides {}
+
+export interface TablePaginationDisplayedRowsSlotPropsOverrides {}
+
+export interface TablePaginationActionsSlotPropsOverrides {}
+
+export interface TablePaginationSlots {
+ /**
+ * The component that renders the root slot.
+ * [Follow this guide](https://mui.com/material-ui/api/table-cell/#props) to learn more about the requirements for this component.
+ * @default TableCell
+ */
+ root: React.ElementType;
+ /**
+ * The component that renders the toolbar slot.
+ * [Follow this guide](https://mui.com/material-ui/api/toolbar/#props) to learn more about the requirements for this component.
+ * @default Toolbar
+ */
+ toolbar: React.ElementType;
+ /**
+ * The tag that renders the spacer slot.
+ * @default 'div'
+ */
+ spacer: React.ElementType;
+ /**
+ * The tag that renders the selectLabel slot.
+ * @default 'p'
+ */
+ selectLabel: React.ElementType;
+ /**
+ * The component that renders the select slot.
+ * [Follow this guide](https://mui.com/material-ui/api/select/#props) to learn more about the requirements for this component.
+ * @default Select
+ */
+ select: React.ElementType;
+ /**
+ * The component that renders the select slot.
+ * [Follow this guide](https://mui.com/material-ui/api/menu-item/#props) to learn more about the requirements for this component.
+ * @default MenuItem
+ */
+ menuItem: React.ElementType;
+ /**
+ * The tag that renders the displayedRows slot.
+ * @default 'p'
+ */
+ displayedRows: React.ElementType;
+ /**
+ * The slots that passed to the actions slot.
+ */
+ actions: TablePaginationActionsSlots;
+}
+
+export type TablePaginationSlotsAndSlotProps = CreateSlotsAndSlotProps<
+ TablePaginationSlots,
+ {
+ /**
+ * Props forwarded to the root slot.
+ * By default, the avaible props are based on the [TableCell](https://mui.com/material-ui/api/table-cell/#props) component.
+ */
+ root: SlotProps<
+ React.ElementType,
+ TablePaginationRootSlotPropsOverrides,
+ TablePaginationOwnerState
+ >;
+ /**
+ * Props forwarded to the toolbar slot.
+ * By default, the avaible props are based on the [Toolbar](https://mui.com/material-ui/api/toolbar/#props) component.
+ */
+ toolbar: SlotProps<
+ React.ElementType,
+ TablePaginationToolbarSlotPropsOverrides,
+ TablePaginationOwnerState
+ >;
+ /**
+ * Props forwarded to the spacer slot.
+ * By default, the avaible props are based on the div element.
+ */
+ spacer: SlotProps<'div', TablePaginationSpacerSlotPropsOverrides, TablePaginationOwnerState>;
+ /**
+ * Props forwarded to the selectLabel slot.
+ * By default, the avaible props are based on the paragraph element.
+ */
+ selectLabel: SlotProps<
+ 'p',
+ TablePaginationSelectLabelSlotPropsOverrides,
+ TablePaginationOwnerState
+ >;
+ /**
+ * Props forwarded to the select slot.
+ * By default, the avaible props are based on the [Select](https://mui.com/material-ui/api/select/#props) component.
+ */
+ select: Partial & TablePaginationSelectSlotPropsOverrides;
+ /**
+ * Props forwarded to the menuItem slot.
+ * By default, the avaible props are based on the [MenuItem](https://mui.com/material-ui/api/menu-item/#props) component.
+ */
+ menuItem: SlotProps<
+ React.ElementType,
+ TablePaginationMenuItemSlotPropsOverrides,
+ TablePaginationOwnerState
+ >;
+ /**
+ * Props forwarded to the displayedRows slot.
+ * By default, the avaible props are based on the paragraph element.
+ */
+ displayedRows: SlotProps<
+ 'p',
+ TablePaginationDisplayedRowsSlotPropsOverrides,
+ TablePaginationOwnerState
+ >;
+ /**
+ * Props forwarded to the actions slot.
+ */
+ actions: TablePaginationActionsProps['slotProps'] & TablePaginationActionsSlotPropsOverrides;
+ }
+>;
+
/**
* This type is kept for compatibility. Use `TablePaginationOwnProps` instead.
*/
@@ -134,30 +264,16 @@ export interface TablePaginationOwnProps extends TablePaginationBaseProps {
* @default false
*/
showLastButton?: boolean;
- /**
- * The props used for each slot inside the TablePagination.
- * @default {}
- */
- slotProps?: {
- actions?: TablePaginationActionsProps['slotProps'];
- select?: Partial;
- };
- /**
- * The components used for each slot inside the TablePagination.
- * Either a string to use a HTML element or a component.
- * @default {}
- */
- slots?: {
- actions?: TablePaginationActionsProps['slots'];
- };
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx?: SxProps;
}
+export interface TablePaginationOwnerState extends TablePaginationOwnProps {}
+
export interface TablePaginationTypeMap {
- props: AdditionalProps & TablePaginationOwnProps;
+ props: AdditionalProps & TablePaginationOwnProps & TablePaginationSlotsAndSlotProps;
defaultComponent: RootComponent;
}
diff --git a/packages/mui-material/src/TablePagination/TablePagination.js b/packages/mui-material/src/TablePagination/TablePagination.js
index 7cf4445542451c..8133a43a687512 100644
--- a/packages/mui-material/src/TablePagination/TablePagination.js
+++ b/packages/mui-material/src/TablePagination/TablePagination.js
@@ -5,7 +5,6 @@ import clsx from 'clsx';
import integerPropType from '@mui/utils/integerPropType';
import chainPropTypes from '@mui/utils/chainPropTypes';
import composeClasses from '@mui/utils/composeClasses';
-import isHostComponent from '../utils/isHostComponent';
import { styled } from '../zero-styled';
import memoTheme from '../utils/memoTheme';
import { useDefaultProps } from '../DefaultPropsProvider';
@@ -17,6 +16,7 @@ import Toolbar from '../Toolbar';
import TablePaginationActions from './TablePaginationActions';
import useId from '../utils/useId';
import tablePaginationClasses, { getTablePaginationUtilityClass } from './tablePaginationClasses';
+import useSlot from '../utils/useSlot';
const TablePaginationRoot = styled(TableCell, {
name: 'MuiTablePagination',
@@ -152,7 +152,6 @@ const TablePagination = React.forwardRef(function TablePagination(inProps, ref)
const {
ActionsComponent = TablePaginationActions,
backIconButtonProps,
- className,
colSpan: colSpanProp,
component = TableCell,
count,
@@ -196,25 +195,78 @@ const TablePagination = React.forwardRef(function TablePagination(inProps, ref)
return rowsPerPage === -1 ? count : Math.min(count, (page + 1) * rowsPerPage);
};
+ const externalForwardedProps = { slots, slotProps };
+
+ const [RootSlot, rootSlotProps] = useSlot('root', {
+ ref,
+ className: classes.root,
+ elementType: TablePaginationRoot,
+ externalForwardedProps: {
+ ...externalForwardedProps,
+ component,
+ ...other,
+ },
+ ownerState,
+ additionalProps: {
+ colSpan,
+ },
+ });
+
+ const [ToolbarSlot, toolbarSlotProps] = useSlot('toolbar', {
+ className: classes.toolbar,
+ elementType: TablePaginationToolbar,
+ externalForwardedProps,
+ ownerState,
+ });
+
+ const [SpacerSlot, spacerSlotProps] = useSlot('spacer', {
+ className: classes.spacer,
+ elementType: TablePaginationSpacer,
+ externalForwardedProps,
+ ownerState,
+ });
+
+ const [SelectLabelSlot, selectLabelSlotProps] = useSlot('selectLabel', {
+ className: classes.selectLabel,
+ elementType: TablePaginationSelectLabel,
+ externalForwardedProps,
+ ownerState,
+ additionalProps: {
+ id: labelId,
+ },
+ });
+
+ const [SelectSlot, selectSlotProps] = useSlot('select', {
+ className: classes.select,
+ elementType: TablePaginationSelect,
+ externalForwardedProps,
+ ownerState,
+ });
+
+ const [MenuItemSlot, menuItemSlotProps] = useSlot('menuItem', {
+ className: classes.menuItem,
+ elementType: MenuItemComponent,
+ externalForwardedProps,
+ ownerState,
+ });
+
+ const [DisplayedRows, displayedRowsProps] = useSlot('displayedRows', {
+ className: classes.displayedRows,
+ elementType: TablePaginationDisplayedRows,
+ externalForwardedProps,
+ ownerState,
+ });
+
return (
-
-
-
+
+
+
{rowsPerPageOptions.length > 1 && (
-
- {labelRowsPerPage}
-
+ {labelRowsPerPage}
)}
{rowsPerPageOptions.length > 1 && (
- })}
value={rowsPerPage}
@@ -231,30 +283,28 @@ const TablePagination = React.forwardRef(function TablePagination(inProps, ref)
icon: clsx(classes.selectIcon, (selectProps.classes || {}).icon),
}}
disabled={disabled}
+ {...selectSlotProps}
>
{rowsPerPageOptions.map((rowsPerPageOption) => (
-
{rowsPerPageOption.label ? rowsPerPageOption.label : rowsPerPageOption}
-
+
))}
-
+
)}
-
+
{labelDisplayedRows({
from: count === 0 ? 0 : page * rowsPerPage + 1,
to: getLabelDisplayedRowsTo(),
count: count === -1 ? -1 : count,
page,
})}
-
+
-
-
+
+
);
});
@@ -297,10 +347,6 @@ TablePagination.propTypes /* remove-proptypes */ = {
* Override or extend the styles applied to the component.
*/
classes: PropTypes.object,
- /**
- * @ignore
- */
- className: PropTypes.string,
/**
* @ignore
*/
@@ -430,7 +476,7 @@ TablePagination.propTypes /* remove-proptypes */ = {
*/
showLastButton: PropTypes.bool,
/**
- * The props used for each slot inside the TablePagination.
+ * The props used for each slot inside.
* @default {}
*/
slotProps: PropTypes.shape({
@@ -444,11 +490,16 @@ TablePagination.propTypes /* remove-proptypes */ = {
previousButton: PropTypes.object,
previousButtonIcon: PropTypes.object,
}),
+ displayedRows: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),
+ menuItem: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),
+ root: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),
select: PropTypes.object,
+ selectLabel: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),
+ spacer: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),
+ toolbar: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),
}),
/**
- * The components used for each slot inside the TablePagination.
- * Either a string to use a HTML element or a component.
+ * The components used for each slot inside.
* @default {}
*/
slots: PropTypes.shape({
@@ -462,6 +513,13 @@ TablePagination.propTypes /* remove-proptypes */ = {
previousButton: PropTypes.elementType,
previousButtonIcon: PropTypes.elementType,
}),
+ displayedRows: PropTypes.elementType,
+ menuItem: PropTypes.elementType,
+ root: PropTypes.elementType,
+ select: PropTypes.elementType,
+ selectLabel: PropTypes.elementType,
+ spacer: PropTypes.elementType,
+ toolbar: PropTypes.elementType,
}),
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
diff --git a/packages/mui-material/src/TablePagination/TablePagination.spec.tsx b/packages/mui-material/src/TablePagination/TablePagination.spec.tsx
index ddeee0cf3f1216..b39b4b3b1044bc 100644
--- a/packages/mui-material/src/TablePagination/TablePagination.spec.tsx
+++ b/packages/mui-material/src/TablePagination/TablePagination.spec.tsx
@@ -1,7 +1,8 @@
import * as React from 'react';
-import TablePagination from '@mui/material/TablePagination';
+import TablePagination, { TablePaginationOwnerState } from '@mui/material/TablePagination';
import SvgIcon from '@mui/material/SvgIcon';
import IconButton, { IconButtonProps } from '@mui/material/IconButton';
+import { expectType } from '@mui/types';
function SampleIcon() {
return (
@@ -92,3 +93,84 @@ function classesTest() {
},
}}
/>;
+ {}}
+ slots={{
+ root: 'div',
+ toolbar: 'div',
+ spacer: 'div',
+ displayedRows: 'p',
+ select: 'select',
+ selectLabel: 'label',
+ menuItem: 'div',
+ }}
+ slotProps={{
+ root: {
+ id: 'root',
+ },
+ toolbar: {
+ id: 'toolbar',
+ disableGutters: true,
+ },
+ displayedRows: {
+ id: 'displayedRows',
+ },
+ menuItem: {
+ id: 'menuItem',
+ },
+ selectLabel: {
+ id: 'selectLabel',
+ },
+ spacer: {
+ id: 'spacer',
+ },
+ }}
+/>;
+ {}}
+ slotProps={{
+ root: (ownerState) => {
+ expectType(ownerState);
+ return {
+ id: 'root',
+ };
+ },
+ toolbar: (ownerState) => {
+ expectType(ownerState);
+ return {
+ id: 'toolbar',
+ disableGutters: true,
+ };
+ },
+ displayedRows: (ownerState) => {
+ expectType(ownerState);
+ return {
+ id: 'displayedRows',
+ };
+ },
+ menuItem: (ownerState) => {
+ expectType(ownerState);
+ return {
+ id: 'menuItem',
+ };
+ },
+ selectLabel: (ownerState) => {
+ expectType(ownerState);
+ return {
+ id: 'selectLabel',
+ };
+ },
+ spacer: (ownerState) => {
+ expectType(ownerState);
+ return {
+ id: 'spacer',
+ };
+ },
+ }}
+/>;
diff --git a/packages/mui-material/src/TablePagination/TablePagination.test.js b/packages/mui-material/src/TablePagination/TablePagination.test.js
index e75062a8d16902..59fa608a48d1b0 100644
--- a/packages/mui-material/src/TablePagination/TablePagination.test.js
+++ b/packages/mui-material/src/TablePagination/TablePagination.test.js
@@ -49,7 +49,26 @@ describe('', () => {
refInstanceof: window.HTMLTableCellElement,
testComponentPropWith: 'td',
testComponentsRootPropWith: 'td',
- testDeepOverrides: { slotName: 'toolbar', slotClassName: classes.toolbar },
+ testRootOverrides: { slotName: 'root', slotClassName: classes.root },
+ testDeepOverrides: [
+ { slotName: 'toolbar', slotClassName: classes.toolbar },
+ { slotName: 'spacer', slotClassName: classes.spacer },
+ { slotName: 'selectLabel', slotClassName: classes.selectLabel },
+ { slotName: 'displayedRows', slotClassName: classes.displayedRows },
+ ],
+ slots: {
+ root: {
+ expectedClassName: classes.root,
+ testWithComponent: React.forwardRef((props, ref) => (
+
+ )),
+ testWithElement: 'th',
+ },
+ toolbar: { expectedClassName: classes.toolbar },
+ spacer: { expectedClassName: classes.spacer },
+ selectLabel: { expectedClassName: classes.selectLabel },
+ displayedRows: { expectedClassName: classes.displayedRows },
+ },
skip: ['themeVariants', 'componentsProps'],
}),
);
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 1b15a0eee6ddf1..ce33e4b902dd31 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -359,7 +359,7 @@ importers:
version: link:../../packages/mui-utils/build
next:
specifier: latest
- version: 15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ version: 15.1.2(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
react:
specifier: ^19.0.0
version: 19.0.0
@@ -369,7 +369,7 @@ importers:
devDependencies:
'@pigment-css/nextjs-plugin':
specifier: 0.0.28
- version: 0.0.28(@types/react@19.0.1)(next@15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(webpack-sources@3.2.3)
+ version: 0.0.28(@types/react@19.0.1)(next@15.1.2(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(webpack-sources@3.2.3)
'@types/node':
specifier: ^20.17.10
version: 20.17.10
@@ -661,7 +661,7 @@ importers:
version: 9.7.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@toolpad/core':
specifier: ^0.10.0
- version: 0.10.0(@emotion/react@11.13.5(@types/react@19.0.1)(react@19.0.0))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@19.0.1)(react@19.0.0))(@types/react@19.0.1)(react@19.0.0))(@mui/icons-material@packages+mui-icons-material+build)(@mui/material-pigment-css@6.2.1(@emotion/react@11.13.5(@types/react@19.0.1)(react@19.0.0))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@19.0.1)(react@19.0.0))(@types/react@19.0.1)(react@19.0.0))(@pigment-css/react@0.0.28(@types/react@19.0.1)(react@19.0.0))(@types/react@19.0.1)(react@19.0.0))(@mui/material@packages+mui-material+build)(@types/react@19.0.1)(next@15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react-router-dom@6.28.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(vite@5.4.11(@types/node@20.17.10)(terser@5.37.0))
+ version: 0.10.0(@emotion/react@11.13.5(@types/react@19.0.1)(react@19.0.0))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@19.0.1)(react@19.0.0))(@types/react@19.0.1)(react@19.0.0))(@mui/icons-material@packages+mui-icons-material+build)(@mui/material-pigment-css@6.2.1(@emotion/react@11.13.5(@types/react@19.0.1)(react@19.0.0))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@19.0.1)(react@19.0.0))(@types/react@19.0.1)(react@19.0.0))(@pigment-css/react@0.0.28(@types/react@19.0.1)(react@19.0.0))(@types/react@19.0.1)(react@19.0.0))(@mui/material@packages+mui-material+build)(@types/react@19.0.1)(next@15.1.2(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react-router-dom@6.28.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(vite@5.4.11(@types/node@20.17.10)(terser@5.37.0))
autoprefixer:
specifier: ^10.4.20
version: 10.4.20(postcss@8.4.49)
@@ -745,7 +745,7 @@ importers:
version: 5.3.1(@mui/material@packages+mui-material+build)(react@19.0.0)
next:
specifier: ^15.1.1
- version: 15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ version: 15.1.2(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
notistack:
specifier: 3.0.1
version: 3.0.1(csstype@3.1.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
@@ -1457,7 +1457,7 @@ importers:
version: 19.0.1
next:
specifier: ^15.1.1
- version: 15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ version: 15.1.2(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
react:
specifier: ^19.0.0
version: 19.0.0
@@ -1631,7 +1631,7 @@ importers:
version: 4.17.21
next:
specifier: ^15.1.1
- version: 15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ version: 15.1.2(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
react:
specifier: ^19.0.0
version: 19.0.0
@@ -1835,7 +1835,7 @@ importers:
version: 19.0.1
next:
specifier: ^15.1.1
- version: 15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ version: 15.1.2(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
react:
specifier: ^19.0.0
version: 19.0.0
@@ -4459,56 +4459,56 @@ packages:
resolution: {integrity: sha512-q3L9i3HoNfz0SGpTIS4zTcKBbRkxzCRpd169eyiTuk3IwcPC3/85mzLHranlKo2b+HYT0gu37YxGB45aD8A3Tw==}
engines: {node: '>=18.0.0'}
- '@next/env@15.1.1':
- resolution: {integrity: sha512-ldU8IpUqxa87LsWyMh8eIqAzejt8+ZuEsdtCV+fpDog++cBO5b/PWaI7wQQwun8LKJeFFpnY4kv/6r+/dCON6A==}
+ '@next/env@15.1.2':
+ resolution: {integrity: sha512-Hm3jIGsoUl6RLB1vzY+dZeqb+/kWPZ+h34yiWxW0dV87l8Im/eMOwpOA+a0L78U0HM04syEjXuRlCozqpwuojQ==}
'@next/eslint-plugin-next@15.1.0':
resolution: {integrity: sha512-+jPT0h+nelBT6HC9ZCHGc7DgGVy04cv4shYdAe6tKlEbjQUtwU3LzQhzbDHQyY2m6g39m6B0kOFVuLGBrxxbGg==}
- '@next/swc-darwin-arm64@15.1.1':
- resolution: {integrity: sha512-pq7Hzu0KaaH6UYcCQ22mOuj2mWCD6iqGvYprp/Ep1EcCxbdNOSS+8EJADFbPHsaXLkaonIJ8lTKBGWXaFxkeNQ==}
+ '@next/swc-darwin-arm64@15.1.2':
+ resolution: {integrity: sha512-b9TN7q+j5/7+rGLhFAVZiKJGIASuo8tWvInGfAd8wsULjB1uNGRCj1z1WZwwPWzVQbIKWFYqc+9L7W09qwt52w==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
- '@next/swc-darwin-x64@15.1.1':
- resolution: {integrity: sha512-h567/b/AHAnMpaJ1D3l3jKLrzNOgN9bmDSRd+Gb0hXTkLZh8mE0Kd9MbIw39QeTZQJ3192uFRFWlDjWiifwVhQ==}
+ '@next/swc-darwin-x64@15.1.2':
+ resolution: {integrity: sha512-caR62jNDUCU+qobStO6YJ05p9E+LR0EoXh1EEmyU69cYydsAy7drMcOlUlRtQihM6K6QfvNwJuLhsHcCzNpqtA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
- '@next/swc-linux-arm64-gnu@15.1.1':
- resolution: {integrity: sha512-I5Q6M3T9jzTUM2JlwTBy/VBSX+YCDvPLnSaJX5wE5GEPeaJkipMkvTA9+IiFK5PG5ljXTqVFVUj5BSHiYLCpoQ==}
+ '@next/swc-linux-arm64-gnu@15.1.2':
+ resolution: {integrity: sha512-fHHXBusURjBmN6VBUtu6/5s7cCeEkuGAb/ZZiGHBLVBXMBy4D5QpM8P33Or8JD1nlOjm/ZT9sEE5HouQ0F+hUA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- '@next/swc-linux-arm64-musl@15.1.1':
- resolution: {integrity: sha512-4cPMSYmyXlOAk8U04ouEACEGnOwYM9uJOXZnm9GBXIKRbNEvBOH9OePhHiDWqOws6iaHvGayaKr+76LmM41yJA==}
+ '@next/swc-linux-arm64-musl@15.1.2':
+ resolution: {integrity: sha512-9CF1Pnivij7+M3G74lxr+e9h6o2YNIe7QtExWq1KUK4hsOLTBv6FJikEwCaC3NeYTflzrm69E5UfwEAbV2U9/g==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- '@next/swc-linux-x64-gnu@15.1.1':
- resolution: {integrity: sha512-KgIiKDdV35KwL9TrTxPFGsPb3J5RuDpw828z3MwMQbWaOmpp/T4MeWQCwo+J2aOxsyAcfsNE334kaWXCb6YTTA==}
+ '@next/swc-linux-x64-gnu@15.1.2':
+ resolution: {integrity: sha512-tINV7WmcTUf4oM/eN3Yuu/f8jQ5C6AkueZPKeALs/qfdfX57eNv4Ij7rt0SA6iZ8+fMobVfcFVv664Op0caCCg==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- '@next/swc-linux-x64-musl@15.1.1':
- resolution: {integrity: sha512-aHP/29x8loFhB3WuW2YaWaYFJN389t6/SBsug19aNwH+PRLzDEQfCvtuP6NxRCido9OAoExd+ZuYJKF9my1Kpg==}
+ '@next/swc-linux-x64-musl@15.1.2':
+ resolution: {integrity: sha512-jf2IseC4WRsGkzeUw/cK3wci9pxR53GlLAt30+y+B+2qAQxMw6WAC3QrANIKxkcoPU3JFh/10uFfmoMDF9JXKg==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- '@next/swc-win32-arm64-msvc@15.1.1':
- resolution: {integrity: sha512-klbzXYwqHMwiucNFF0tWiWJyPb45MBX1q/ATmxrMjEYgA+V/0OXc9KmNVRIn6G/ab0ASUk4uWqxik5m6wvm1sg==}
+ '@next/swc-win32-arm64-msvc@15.1.2':
+ resolution: {integrity: sha512-wvg7MlfnaociP7k8lxLX4s2iBJm4BrNiNFhVUY+Yur5yhAJHfkS8qPPeDEUH8rQiY0PX3u/P7Q/wcg6Mv6GSAA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
- '@next/swc-win32-x64-msvc@15.1.1':
- resolution: {integrity: sha512-V5fm4aULqHSlMQt3U1rWAWuwJTFsb6Yh4P8p1kQFoayAF9jAQtjBvHku4zCdrtQuw9u9crPC0FNML00kN4WGhA==}
+ '@next/swc-win32-x64-msvc@15.1.2':
+ resolution: {integrity: sha512-D3cNA8NoT3aWISWmo7HF5Eyko/0OdOO+VagkoJuiTk7pyX3P/b+n8XA/MYvyR+xSVcbKn68B1rY9fgqjNISqzQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
@@ -10064,8 +10064,8 @@ packages:
nested-error-stacks@2.1.1:
resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==}
- next@15.1.1:
- resolution: {integrity: sha512-SBZlcvdIxajw8//H3uOR1G3iu3jxsra/77m2ulRIxi3m89p+s3ACsoOXR49JEAbaun/DVoRJ9cPKq8eF/oNB5g==}
+ next@15.1.2:
+ resolution: {integrity: sha512-nLJDV7peNy+0oHlmY2JZjzMfJ8Aj0/dd3jCwSZS8ZiO5nkQfcZRqDrRN3U5rJtqVTQneIOGZzb6LCNrk7trMCQ==}
engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0}
hasBin: true
peerDependencies:
@@ -15539,34 +15539,34 @@ snapshots:
'@netlify/node-cookies': 0.1.0
urlpattern-polyfill: 8.0.2
- '@next/env@15.1.1': {}
+ '@next/env@15.1.2': {}
'@next/eslint-plugin-next@15.1.0':
dependencies:
fast-glob: 3.3.1
- '@next/swc-darwin-arm64@15.1.1':
+ '@next/swc-darwin-arm64@15.1.2':
optional: true
- '@next/swc-darwin-x64@15.1.1':
+ '@next/swc-darwin-x64@15.1.2':
optional: true
- '@next/swc-linux-arm64-gnu@15.1.1':
+ '@next/swc-linux-arm64-gnu@15.1.2':
optional: true
- '@next/swc-linux-arm64-musl@15.1.1':
+ '@next/swc-linux-arm64-musl@15.1.2':
optional: true
- '@next/swc-linux-x64-gnu@15.1.1':
+ '@next/swc-linux-x64-gnu@15.1.2':
optional: true
- '@next/swc-linux-x64-musl@15.1.1':
+ '@next/swc-linux-x64-musl@15.1.2':
optional: true
- '@next/swc-win32-arm64-msvc@15.1.1':
+ '@next/swc-win32-arm64-msvc@15.1.2':
optional: true
- '@next/swc-win32-x64-msvc@15.1.1':
+ '@next/swc-win32-x64-msvc@15.1.2':
optional: true
'@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3':
@@ -16001,10 +16001,10 @@ snapshots:
'@opentelemetry/api@1.8.0':
optional: true
- '@pigment-css/nextjs-plugin@0.0.28(@types/react@19.0.1)(next@15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(webpack-sources@3.2.3)':
+ '@pigment-css/nextjs-plugin@0.0.28(@types/react@19.0.1)(next@15.1.2(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(webpack-sources@3.2.3)':
dependencies:
'@pigment-css/unplugin': 0.0.28(@types/react@19.0.1)(react@19.0.0)(webpack-sources@3.2.3)
- next: 15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ next: 15.1.2(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
transitivePeerDependencies:
- '@types/react'
- react
@@ -16775,7 +16775,7 @@ snapshots:
'@theme-ui/css': 0.17.1(@emotion/react@11.13.5(@types/react@18.3.12)(react@19.0.0))
react: 19.0.0
- '@toolpad/core@0.10.0(@emotion/react@11.13.5(@types/react@19.0.1)(react@19.0.0))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@19.0.1)(react@19.0.0))(@types/react@19.0.1)(react@19.0.0))(@mui/icons-material@packages+mui-icons-material+build)(@mui/material-pigment-css@6.2.1(@emotion/react@11.13.5(@types/react@19.0.1)(react@19.0.0))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@19.0.1)(react@19.0.0))(@types/react@19.0.1)(react@19.0.0))(@pigment-css/react@0.0.28(@types/react@19.0.1)(react@19.0.0))(@types/react@19.0.1)(react@19.0.0))(@mui/material@packages+mui-material+build)(@types/react@19.0.1)(next@15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react-router-dom@6.28.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(vite@5.4.11(@types/node@20.17.10)(terser@5.37.0))':
+ '@toolpad/core@0.10.0(@emotion/react@11.13.5(@types/react@19.0.1)(react@19.0.0))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@19.0.1)(react@19.0.0))(@types/react@19.0.1)(react@19.0.0))(@mui/icons-material@packages+mui-icons-material+build)(@mui/material-pigment-css@6.2.1(@emotion/react@11.13.5(@types/react@19.0.1)(react@19.0.0))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@19.0.1)(react@19.0.0))(@types/react@19.0.1)(react@19.0.0))(@pigment-css/react@0.0.28(@types/react@19.0.1)(react@19.0.0))(@types/react@19.0.1)(react@19.0.0))(@mui/material@packages+mui-material+build)(@types/react@19.0.1)(next@15.1.2(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react-router-dom@6.28.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(vite@5.4.11(@types/node@20.17.10)(terser@5.37.0))':
dependencies:
'@babel/runtime': 7.26.0
'@mui/icons-material': link:packages/mui-icons-material/build
@@ -16790,7 +16790,7 @@ snapshots:
prop-types: 15.8.1
react: 19.0.0
optionalDependencies:
- next: 15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ next: 15.1.2(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
react-router-dom: 6.28.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
transitivePeerDependencies:
- '@emotion/react'
@@ -22722,9 +22722,9 @@ snapshots:
nested-error-stacks@2.1.1: {}
- next@15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
+ next@15.1.2(@babel/core@7.26.0)(@opentelemetry/api@1.8.0)(@playwright/test@1.48.2)(babel-plugin-macros@3.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
dependencies:
- '@next/env': 15.1.1
+ '@next/env': 15.1.2
'@swc/counter': 0.1.3
'@swc/helpers': 0.5.15
busboy: 1.6.0
@@ -22734,14 +22734,14 @@ snapshots:
react-dom: 19.0.0(react@19.0.0)
styled-jsx: 5.1.6(@babel/core@7.26.0)(babel-plugin-macros@3.1.0)(react@19.0.0)
optionalDependencies:
- '@next/swc-darwin-arm64': 15.1.1
- '@next/swc-darwin-x64': 15.1.1
- '@next/swc-linux-arm64-gnu': 15.1.1
- '@next/swc-linux-arm64-musl': 15.1.1
- '@next/swc-linux-x64-gnu': 15.1.1
- '@next/swc-linux-x64-musl': 15.1.1
- '@next/swc-win32-arm64-msvc': 15.1.1
- '@next/swc-win32-x64-msvc': 15.1.1
+ '@next/swc-darwin-arm64': 15.1.2
+ '@next/swc-darwin-x64': 15.1.2
+ '@next/swc-linux-arm64-gnu': 15.1.2
+ '@next/swc-linux-arm64-musl': 15.1.2
+ '@next/swc-linux-x64-gnu': 15.1.2
+ '@next/swc-linux-x64-musl': 15.1.2
+ '@next/swc-win32-arm64-msvc': 15.1.2
+ '@next/swc-win32-x64-msvc': 15.1.2
'@opentelemetry/api': 1.8.0
'@playwright/test': 1.48.2
sharp: 0.33.5