Skip to main content

Function: mergeThemeConfig()

mergeThemeConfig<T, U>(baseTheme: T, overrides: U): { [KeyType in string | number | symbol]: ({ [Key in string | number | symbol as Key extends keyof PickIndexSignature<U> ? never : Key]: PickIndexSignature<T>[Key] } & PickIndexSignature<U> & { [Key in string | number | symbol as Key extends keyof OmitIndexSignature<U> ? never : Key]: OmitIndexSignature<T>[Key] } & OmitIndexSignature<U>)[KeyType] }

Defined in: shared/types/themeConfig.ts:823

Merges theme overrides with base theme configuration using type-safe merging.

Type Parametersโ€‹

Tโ€‹

T extends ThemeConfig

Uโ€‹

U extends ThemeOverride

Parametersโ€‹

baseThemeโ€‹

T

Base theme configuration

overridesโ€‹

U

Theme overrides to apply

Returnsโ€‹

{ [KeyType in string | number | symbol]: ({ [Key in string | number | symbol as Key extends keyof PickIndexSignature<U> ? never : Key]: PickIndexSignature<T>[Key] } & PickIndexSignature<U> & { [Key in string | number | symbol as Key extends keyof OmitIndexSignature<U> ? never : Key]: OmitIndexSignature<T>[Key] } & OmitIndexSignature<U>)[KeyType] }

Merged theme configuration with type-safe property resolution

Remarksโ€‹

Uses type-fest's Merge utility to combine theme configurations with proper type safety. This provides better type inference than manual object spreading and ensures all properties are handled correctly.

Exampleโ€‹

const baseTheme: ThemeConfig = getBaseTheme();
const overrides: ThemeOverride = {
colors: { text: { primary: "#007bff" } },
spacing: { lg: "20px" },
};

const mergedTheme = mergeThemeConfig(baseTheme, overrides);
// Result is fully typed with merged properties