import * as React from 'react'; import getThemeProps from '@material-ui/styles/getThemeProps'; import { useTheme } from '@material-ui/core/styles'; export function useDefaultProps(props: T, { name }: { name: string }) { const theme = useTheme(); return getThemeProps({ props, theme, name, }); } export function withDefaultProps( componentConfig: { name: string }, Component: React.ComponentType ): React.FC { const componentName = componentConfig.name.replace('Mui', ''); const WithDefaultProps = (props: T) => { Component.displayName = componentName; const propsWithDefault = useDefaultProps(props, componentConfig); return ; }; WithDefaultProps.displayName = `WithDefaultProps(${componentName})`; return WithDefaultProps; }