From ae8190855e216142243cb0cd1059d5bd69ffbd62 Mon Sep 17 00:00:00 2001 From: Zhulien Ivanov Date: Sun, 4 Dec 2022 14:10:54 +0200 Subject: [PATCH] [@mantine/styles] Add access to theme in `defaultProps` (#2950) --- src/mantine-styles/src/theme/MantineProvider.tsx | 5 ++++- src/mantine-styles/src/theme/types/MantineTheme.ts | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) 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 5f632e9c901..dca33711f32 100644 --- a/src/mantine-styles/src/theme/types/MantineTheme.ts +++ b/src/mantine-styles/src/theme/types/MantineTheme.ts @@ -106,7 +106,7 @@ export interface MantineTheme { } interface ThemeComponent { - defaultProps?: Record; + defaultProps?: Record | ((theme: MantineTheme) => Record); classNames?: Record; styles?: | Record