Skip to content

Custom components

Learn how to use MUI System with custom components.

Using sx with custom components

Normally you would use the Box component at the root of your component tree in order to work with the sx prop. If you want to use sx with fully custom (non-MUI) components, you can do so with the unstable_styleFunctionSx utility. This gives you all the same capabilities, and with a smaller bundle size.

The following demo shows how to implement this utility:

Custom component with the sx prop
<ThemeProvider theme={theme}>
  <Div sx={{ m: 1, p: 1, border: 1 }}>Custom component with the sx prop</Div>
</ThemeProvider>

Using standalone system utilities

If you only need specific style functions from the sx prop, you can import them individually rather than pulling in the entire package. This is useful if you need to optimize for the smallest bundle size possible.

The demo below illustrates how this works:

Styled components
import * as React from 'react';
import styled from 'styled-components';
import { palette, PaletteProps, spacing, SpacingProps } from '@mui/system';

const Div = styled.div<PaletteProps & SpacingProps>`
  ${palette}
  ${spacing}
`;

export default function CombiningStyleFunctionsDemo() {
  return (
    <Div color="white" bgcolor="palevioletred" p={1}>
      Styled components
    </Div>
  );
}