parent
fa3fc07d85
commit
37c856d383
4 changed files with 20 additions and 27 deletions
@ -1,41 +1,33 @@ |
|||||||
import { |
import { Button as MUIButton, SxProps, Theme } from '@mui/material'; |
||||||
Button as MUIButton, |
import { FC, useMemo } from 'react'; |
||||||
ButtonProps as MUIButtonProps, |
|
||||||
} from '@mui/material'; |
|
||||||
|
|
||||||
import { BLACK, GREY, TEXT } from '../lib/consts/DEFAULT_THEME'; |
import { BLACK, GREY, TEXT } from '../lib/consts/DEFAULT_THEME'; |
||||||
|
|
||||||
type ContainedButtonProps = MUIButtonProps; |
const ContainedButton: FC<ContainedButtonProps> = ({ sx, ...restProps }) => { |
||||||
|
const combinedSx = useMemo<SxProps<Theme>>( |
||||||
|
() => ({ |
||||||
|
backgroundColor: TEXT, |
||||||
|
color: BLACK, |
||||||
|
textTransform: 'none', |
||||||
|
|
||||||
const ContainedButton = ( |
'&:hover': { |
||||||
containedButtonProps: ContainedButtonProps, |
backgroundColor: GREY, |
||||||
): JSX.Element => { |
}, |
||||||
const { children, sx } = containedButtonProps; |
|
||||||
const combinedSx: ContainedButtonProps['sx'] = { |
|
||||||
backgroundColor: TEXT, |
|
||||||
color: BLACK, |
|
||||||
textTransform: 'none', |
|
||||||
|
|
||||||
'&:hover': { |
...sx, |
||||||
backgroundColor: GREY, |
}), |
||||||
}, |
[sx], |
||||||
|
); |
||||||
...sx, |
|
||||||
}; |
|
||||||
|
|
||||||
return ( |
return ( |
||||||
<MUIButton |
<MUIButton |
||||||
{...{ |
{...{ |
||||||
variant: 'contained', |
variant: 'contained', |
||||||
...containedButtonProps, |
...restProps, |
||||||
sx: combinedSx, |
sx: combinedSx, |
||||||
}} |
}} |
||||||
> |
/> |
||||||
{children} |
|
||||||
</MUIButton> |
|
||||||
); |
); |
||||||
}; |
}; |
||||||
|
|
||||||
export type { ContainedButtonProps }; |
|
||||||
|
|
||||||
export default ContainedButton; |
export default ContainedButton; |
||||||
|
@ -0,0 +1 @@ |
|||||||
|
type ContainedButtonProps = import('@mui/material').ButtonProps; |
Loading…
Reference in new issue