diff --git a/docs/data/base/components/button/UnstyledButtonCustom.js b/docs/data/base/components/button/UnstyledButtonCustom.js
index ec343d488f0ff3..629ed5a0f2d9f2 100644
--- a/docs/data/base/components/button/UnstyledButtonCustom.js
+++ b/docs/data/base/components/button/UnstyledButtonCustom.js
@@ -22,7 +22,7 @@ ButtonRoot.propTypes = {
};
const SvgButton = React.forwardRef(function SvgButton(props, ref) {
- return ;
+ return ;
});
export default function UnstyledButtonCustom() {
diff --git a/docs/data/base/components/button/UnstyledButtonCustom.tsx b/docs/data/base/components/button/UnstyledButtonCustom.tsx
index e5cfd5aa651254..7da614321c1c94 100644
--- a/docs/data/base/components/button/UnstyledButtonCustom.tsx
+++ b/docs/data/base/components/button/UnstyledButtonCustom.tsx
@@ -23,7 +23,7 @@ const SvgButton = React.forwardRef(function SvgButton(
props: ButtonProps,
ref: React.ForwardedRef,
) {
- return ;
+ return ;
});
export default function UnstyledButtonCustom() {
diff --git a/docs/data/base/components/button/UnstyledButtonsDisabledFocusCustom.js b/docs/data/base/components/button/UnstyledButtonsDisabledFocusCustom.js
index 13357df617cd5c..c31182973b1f31 100644
--- a/docs/data/base/components/button/UnstyledButtonsDisabledFocusCustom.js
+++ b/docs/data/base/components/button/UnstyledButtonsDisabledFocusCustom.js
@@ -6,10 +6,10 @@ import Stack from '@mui/material/Stack';
export default function UnstyledButtonsDisabledFocusCustom() {
return (
-
+
focusableWhenDisabled = false
-
+
focusableWhenDisabled = true
diff --git a/docs/data/base/components/button/UnstyledButtonsDisabledFocusCustom.tsx b/docs/data/base/components/button/UnstyledButtonsDisabledFocusCustom.tsx
index 023993fc6f5f3c..a343eccad52078 100644
--- a/docs/data/base/components/button/UnstyledButtonsDisabledFocusCustom.tsx
+++ b/docs/data/base/components/button/UnstyledButtonsDisabledFocusCustom.tsx
@@ -2,15 +2,15 @@ import * as React from 'react';
import Button, { buttonClasses, ButtonTypeMap } from '@mui/base/Button';
import { styled } from '@mui/system';
import Stack from '@mui/material/Stack';
-import { OverridableComponent } from '@mui/types';
+import { PolymorphicComponent } from '@mui/base/utils';
export default function UnstyledButtonsDisabledFocusCustom() {
return (
-
+
focusableWhenDisabled = false
-
+
focusableWhenDisabled = true
@@ -52,4 +52,4 @@ const CustomButton = styled(Button)`
opacity: 0.5;
cursor: not-allowed;
}
-` as OverridableComponent;
+` as PolymorphicComponent;
diff --git a/docs/data/base/components/button/UnstyledButtonsDisabledFocusCustom.tsx.preview b/docs/data/base/components/button/UnstyledButtonsDisabledFocusCustom.tsx.preview
index 6c68795155388b..ea5b0163da93f7 100644
--- a/docs/data/base/components/button/UnstyledButtonsDisabledFocusCustom.tsx.preview
+++ b/docs/data/base/components/button/UnstyledButtonsDisabledFocusCustom.tsx.preview
@@ -1,6 +1,6 @@
-
+
focusableWhenDisabled = false
-
+
focusableWhenDisabled = true
\ No newline at end of file
diff --git a/docs/data/base/components/button/UnstyledButtonsSpan.js b/docs/data/base/components/button/UnstyledButtonsSpan.js
index 49e2d1dfcc4cd4..fe81cec1cb86ed 100644
--- a/docs/data/base/components/button/UnstyledButtonsSpan.js
+++ b/docs/data/base/components/button/UnstyledButtonsSpan.js
@@ -6,8 +6,8 @@ import Stack from '@mui/material/Stack';
export default function UnstyledButtonsSpan() {
return (
- Button
-
+ Button
+
Disabled
diff --git a/docs/data/base/components/button/UnstyledButtonsSpan.tsx b/docs/data/base/components/button/UnstyledButtonsSpan.tsx
index b22aeae6f108cb..deac7b4edd7d57 100644
--- a/docs/data/base/components/button/UnstyledButtonsSpan.tsx
+++ b/docs/data/base/components/button/UnstyledButtonsSpan.tsx
@@ -2,13 +2,13 @@ import * as React from 'react';
import Button, { buttonClasses, ButtonTypeMap } from '@mui/base/Button';
import { styled } from '@mui/system';
import Stack from '@mui/material/Stack';
-import { OverridableComponent } from '@mui/types';
+import { PolymorphicComponent } from '@mui/base/utils';
export default function UnstyledButtonsSpan() {
return (
- Button
-
+ Button
+
Disabled
@@ -50,4 +50,4 @@ const CustomButton = styled(Button)`
opacity: 0.5;
cursor: not-allowed;
}
-` as OverridableComponent;
+` as PolymorphicComponent;
diff --git a/docs/data/base/components/button/UnstyledButtonsSpan.tsx.preview b/docs/data/base/components/button/UnstyledButtonsSpan.tsx.preview
index 456f8c68ebbaf6..c38f8399833ef2 100644
--- a/docs/data/base/components/button/UnstyledButtonsSpan.tsx.preview
+++ b/docs/data/base/components/button/UnstyledButtonsSpan.tsx.preview
@@ -1,4 +1,4 @@
-Button
-
+Button
+
Disabled
\ No newline at end of file
diff --git a/docs/data/base/components/button/button.md b/docs/data/base/components/button/button.md
index c2d7609ad41d31..f8247cbdff004a 100644
--- a/docs/data/base/components/button/button.md
+++ b/docs/data/base/components/button/button.md
@@ -54,19 +54,19 @@ The Button component is composed of a root `
```
-### Slot props
+### Custom structure
-:::info
-The following props are available on all non-utility Base components.
-See [Usage](/base/getting-started/usage/) for full details.
-:::
-
-Use the `component` prop to override the root slot with a custom element:
+Use the `slots.root` prop to override the root slot with a custom element:
```jsx
-
+
```
+:::info
+The `slots` prop is available on all non-utility Base components.
+See [Overriding component structure](/base/guides/overriding-component-structure/) for full details.
+:::
+
If you provide a non-interactive element such as a ``, the Button component will automatically add the necessary accessibility attributes.
Compare the attributes on the `` in this demo with the Button from the previous demo—try inspecting them both with your browser's dev tools:
@@ -74,10 +74,24 @@ Compare the attributes on the `` in this demo with the Button from the pre
{{"demo": "UnstyledButtonsSpan.js"}}
:::warning
-If a Button is customized with a non-button element (i.e. ``), it will not submit the form it's in when clicked.
-Similarly, `