diff --git a/src/mantine-styles/src/theme/MantineProvider.tsx b/src/mantine-styles/src/theme/MantineProvider.tsx index 6596e296325..3dc26cf49b4 100644 --- a/src/mantine-styles/src/theme/MantineProvider.tsx +++ b/src/mantine-styles/src/theme/MantineProvider.tsx @@ -53,7 +53,10 @@ export function useComponentDefaultProps, U extend [Key in Extract]-?: U[Key] & T[Key]; } { const theme = useMantineTheme(); - const contextProps = theme.components[component]?.defaultProps; + const contextPropsPayload = theme.components[component]?.defaultProps; + const contextProps = + typeof contextPropsPayload === 'function' ? contextPropsPayload(theme) : contextPropsPayload; + return { ...defaultProps, ...contextProps, ...filterProps(props) }; } diff --git a/src/mantine-styles/src/theme/types/MantineTheme.ts b/src/mantine-styles/src/theme/types/MantineTheme.ts index 25842efe202..d86630b9624 100644 --- a/src/mantine-styles/src/theme/types/MantineTheme.ts +++ b/src/mantine-styles/src/theme/types/MantineTheme.ts @@ -105,7 +105,7 @@ export interface MantineTheme { } interface ThemeComponent { - defaultProps?: Record; + defaultProps?: Record | ((theme: MantineTheme) => Record); classNames?: Record; styles?: | Record