diff --git a/docs/data/material/components/toggle-button/SpacingToggleButton.js b/docs/data/material/components/toggle-button/SpacingToggleButton.js
new file mode 100644
index 00000000000000..35e2ba6123332d
--- /dev/null
+++ b/docs/data/material/components/toggle-button/SpacingToggleButton.js
@@ -0,0 +1,91 @@
+import * as React from 'react';
+import PropTypes from 'prop-types';
+import FormatAlignLeftIcon from '@mui/icons-material/FormatAlignLeft';
+import FormatAlignCenterIcon from '@mui/icons-material/FormatAlignCenter';
+import FormatAlignRightIcon from '@mui/icons-material/FormatAlignRight';
+import FormatAlignJustifyIcon from '@mui/icons-material/FormatAlignJustify';
+import ToggleButton, { toggleButtonClasses } from '@mui/material/ToggleButton';
+import ToggleButtonGroup, {
+ toggleButtonGroupClasses,
+} from '@mui/material/ToggleButtonGroup';
+
+function ButtonGroup({ gap, orientation }) {
+ const [alignment, setAlignment] = React.useState('left');
+
+ const handleAlignment = (event, newAlignment) => {
+ setAlignment(newAlignment);
+ };
+
+ return (
+ ({
+ gap,
+ ...(orientation === 'horizontal' && {
+ [`& .${toggleButtonGroupClasses.firstButton}, & .${toggleButtonGroupClasses.middleButton}`]:
+ {
+ borderTopRightRadius: (theme.vars || theme).shape.borderRadius,
+ borderBottomRightRadius: (theme.vars || theme).shape.borderRadius,
+ },
+ [`& .${toggleButtonGroupClasses.lastButton}, & .${toggleButtonGroupClasses.middleButton}`]:
+ {
+ borderTopLeftRadius: (theme.vars || theme).shape.borderRadius,
+ borderBottomLeftRadius: (theme.vars || theme).shape.borderRadius,
+ borderLeft: `1px solid ${(theme.vars || theme).palette.divider}`,
+ },
+ [`& .${toggleButtonGroupClasses.lastButton}.${toggleButtonClasses.disabled}, & .${toggleButtonGroupClasses.middleButton}.${toggleButtonClasses.disabled}`]:
+ {
+ borderLeft: `1px solid ${(theme.vars || theme).palette.action.disabledBackground}`,
+ },
+ }),
+ ...(orientation === 'vertical' && {
+ [`& .${toggleButtonGroupClasses.firstButton}, & .${toggleButtonGroupClasses.middleButton}`]:
+ {
+ borderBottomRightRadius: (theme.vars || theme).shape.borderRadius,
+ borderBottomLeftRadius: (theme.vars || theme).shape.borderRadius,
+ },
+ [`& .${toggleButtonGroupClasses.lastButton}, & .${toggleButtonGroupClasses.middleButton}`]:
+ {
+ borderTopRightRadius: (theme.vars || theme).shape.borderRadius,
+ borderTopLeftRadius: (theme.vars || theme).shape.borderRadius,
+ borderTop: `1px solid ${(theme.vars || theme).palette.divider}`,
+ },
+ [`& .${toggleButtonGroupClasses.lastButton}.${toggleButtonClasses.disabled}, & .${toggleButtonGroupClasses.middleButton}.${toggleButtonClasses.disabled}`]:
+ {
+ borderTop: `1px solid ${(theme.vars || theme).palette.action.disabledBackground}`,
+ },
+ }),
+ })}
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
+
+ButtonGroup.propTypes = {
+ gap: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,
+ orientation: PropTypes.oneOf(['horizontal', 'vertical']).isRequired,
+};
+
+export default function SpacingToggleButton() {
+ return (
+
+
+
+ );
+}
diff --git a/docs/data/material/components/toggle-button/SpacingToggleButton.tsx b/docs/data/material/components/toggle-button/SpacingToggleButton.tsx
new file mode 100644
index 00000000000000..1e36e41cba831f
--- /dev/null
+++ b/docs/data/material/components/toggle-button/SpacingToggleButton.tsx
@@ -0,0 +1,94 @@
+import * as React from 'react';
+import FormatAlignLeftIcon from '@mui/icons-material/FormatAlignLeft';
+import FormatAlignCenterIcon from '@mui/icons-material/FormatAlignCenter';
+import FormatAlignRightIcon from '@mui/icons-material/FormatAlignRight';
+import FormatAlignJustifyIcon from '@mui/icons-material/FormatAlignJustify';
+import ToggleButton, { toggleButtonClasses } from '@mui/material/ToggleButton';
+import ToggleButtonGroup, {
+ toggleButtonGroupClasses,
+} from '@mui/material/ToggleButtonGroup';
+
+function ButtonGroup({
+ gap,
+ orientation,
+}: {
+ gap: string | number;
+ orientation: 'horizontal' | 'vertical';
+}) {
+ const [alignment, setAlignment] = React.useState('left');
+
+ const handleAlignment = (
+ event: React.MouseEvent,
+ newAlignment: string | null,
+ ) => {
+ setAlignment(newAlignment);
+ };
+
+ return (
+ ({
+ gap,
+ ...(orientation === 'horizontal' && {
+ [`& .${toggleButtonGroupClasses.firstButton}, & .${toggleButtonGroupClasses.middleButton}`]:
+ {
+ borderTopRightRadius: (theme.vars || theme).shape.borderRadius,
+ borderBottomRightRadius: (theme.vars || theme).shape.borderRadius,
+ },
+ [`& .${toggleButtonGroupClasses.lastButton}, & .${toggleButtonGroupClasses.middleButton}`]:
+ {
+ borderTopLeftRadius: (theme.vars || theme).shape.borderRadius,
+ borderBottomLeftRadius: (theme.vars || theme).shape.borderRadius,
+ borderLeft: `1px solid ${(theme.vars || theme).palette.divider}`,
+ },
+ [`& .${toggleButtonGroupClasses.lastButton}.${toggleButtonClasses.disabled}, & .${toggleButtonGroupClasses.middleButton}.${toggleButtonClasses.disabled}`]:
+ {
+ borderLeft: `1px solid ${(theme.vars || theme).palette.action.disabledBackground}`,
+ },
+ }),
+ ...(orientation === 'vertical' && {
+ [`& .${toggleButtonGroupClasses.firstButton}, & .${toggleButtonGroupClasses.middleButton}`]:
+ {
+ borderBottomRightRadius: (theme.vars || theme).shape.borderRadius,
+ borderBottomLeftRadius: (theme.vars || theme).shape.borderRadius,
+ },
+ [`& .${toggleButtonGroupClasses.lastButton}, & .${toggleButtonGroupClasses.middleButton}`]:
+ {
+ borderTopRightRadius: (theme.vars || theme).shape.borderRadius,
+ borderTopLeftRadius: (theme.vars || theme).shape.borderRadius,
+ borderTop: `1px solid ${(theme.vars || theme).palette.divider}`,
+ },
+ [`& .${toggleButtonGroupClasses.lastButton}.${toggleButtonClasses.disabled}, & .${toggleButtonGroupClasses.middleButton}.${toggleButtonClasses.disabled}`]:
+ {
+ borderTop: `1px solid ${(theme.vars || theme).palette.action.disabledBackground}`,
+ },
+ }),
+ })}
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
+
+export default function SpacingToggleButton() {
+ return (
+
+
+
+ );
+}
diff --git a/docs/data/material/components/toggle-button/SpacingToggleButton.tsx.preview b/docs/data/material/components/toggle-button/SpacingToggleButton.tsx.preview
new file mode 100644
index 00000000000000..9d3dde287bad90
--- /dev/null
+++ b/docs/data/material/components/toggle-button/SpacingToggleButton.tsx.preview
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/data/material/components/toggle-button/toggle-button.md b/docs/data/material/components/toggle-button/toggle-button.md
index 3dd7d233958903..f6c707382c7997 100644
--- a/docs/data/material/components/toggle-button/toggle-button.md
+++ b/docs/data/material/components/toggle-button/toggle-button.md
@@ -43,6 +43,12 @@ For larger or smaller buttons, use the `size` prop.
{{"demo": "ColorToggleButton.js"}}
+## Spacing
+
+Adjust the spacing between toggle buttons using the `gap` prop.
+
+{{"demo": "SpacingToggleButton.js"}}
+
## Vertical buttons
The buttons can be stacked vertically with the `orientation` prop set to "vertical".