Skip to main content

Function: createDeepThemeOverride()

createDeepThemeOverride(baseTheme: ThemeConfig, deepOverrides: { animation?: { duration?: { fast?: string; normal?: string; slow?: string; }; easing?: { easeIn?: string; easeInOut?: string; easeOut?: string; linear?: string; }; }; borderRadius?: { full?: string; lg?: string; md?: string; none?: string; sm?: string; xl?: string; }; colors?: { background?: { default?: string; elevated?: string; paper?: string; primary?: string; secondary?: string; }; border?: { default?: string; disabled?: string; error?: string; focus?: string; hover?: string; success?: string; warning?: string; }; hover?: { background?: string; border?: string; primary?: string; secondary?: string; text?: string; }; primary?: { error?: string; info?: string; primary?: string; secondary?: string; success?: string; warning?: string; }; status?: { down?: string; paused?: string; pending?: string; unknown?: string; up?: string; }; text?: { disabled?: string; error?: string; inverse?: string; muted?: string; primary?: string; success?: string; warning?: string; }; }; components?: { button?: { borderRadius?: string; fontSize?: string; fontWeight?: number; padding?: string; }; card?: { borderRadius?: string; padding?: string; shadow?: string; }; input?: { borderRadius?: string; fontSize?: string; padding?: string; }; modal?: { backdropColor?: string; borderRadius?: string; shadow?: string; }; }; shadows?: { lg?: string; md?: string; none?: string; sm?: string; xl?: string; }; spacing?: { lg?: string; md?: string; sm?: string; xl?: string; xs?: string; xxl?: string; xxs?: string; }; typography?: { fontFamily?: { body?: string; heading?: string; mono?: string; }; fontSize?: { body?: string; caption?: string; h1?: string; h2?: string; h3?: string; h4?: string; h5?: string; h6?: string; large?: string; small?: string; }; fontWeight?: { bold?: number; light?: number; medium?: number; normal?: number; semibold?: number; }; lineHeight?: { body?: string; heading?: string; tight?: string; }; }; }): ThemeConfig

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

Creates a deeply customized theme using PartialDeep pattern for maximum flexibility.

Parametersโ€‹

baseThemeโ€‹

ThemeConfig

Base theme configuration

deepOverridesโ€‹

Deep partial overrides using PartialDeep pattern

animation?โ€‹

{ duration?: { fast?: string; normal?: string; slow?: string; }; easing?: { easeIn?: string; easeInOut?: string; easeOut?: string; linear?: string; }; }

Animation and transition configuration

animation.duration?โ€‹

{ fast?: string; normal?: string; slow?: string; }

Animation duration values

animation.duration.fast?โ€‹

string

animation.duration.normal?โ€‹

string

animation.duration.slow?โ€‹

string

animation.easing?โ€‹

{ easeIn?: string; easeInOut?: string; easeOut?: string; linear?: string; }

Animation easing functions

animation.easing.easeIn?โ€‹

string

animation.easing.easeInOut?โ€‹

string

animation.easing.easeOut?โ€‹

string

animation.easing.linear?โ€‹

string

borderRadius?โ€‹

{ full?: string; lg?: string; md?: string; none?: string; sm?: string; xl?: string; }

Border radius configuration

borderRadius.full?โ€‹

string

Full/circular border radius

borderRadius.lg?โ€‹

string

Large border radius

borderRadius.md?โ€‹

string

Medium border radius

borderRadius.none?โ€‹

string

No border radius

borderRadius.sm?โ€‹

string

Small border radius

borderRadius.xl?โ€‹

string

Extra large border radius

colors?โ€‹

{ background?: { default?: string; elevated?: string; paper?: string; primary?: string; secondary?: string; }; border?: { default?: string; disabled?: string; error?: string; focus?: string; hover?: string; success?: string; warning?: string; }; hover?: { background?: string; border?: string; primary?: string; secondary?: string; text?: string; }; primary?: { error?: string; info?: string; primary?: string; secondary?: string; success?: string; warning?: string; }; status?: { down?: string; paused?: string; pending?: string; unknown?: string; up?: string; }; text?: { disabled?: string; error?: string; inverse?: string; muted?: string; primary?: string; success?: string; warning?: string; }; }

Color configuration

colors.background?โ€‹

{ default?: string; elevated?: string; paper?: string; primary?: string; secondary?: string; }

Background color configuration

colors.background.default?โ€‹

string

Default background color

colors.background.elevated?โ€‹

string

Elevated surface background color

colors.background.paper?โ€‹

string

Paper/card background color

colors.background.primary?โ€‹

string

Primary background color

colors.background.secondary?โ€‹

string

Secondary background color

colors.border?โ€‹

{ default?: string; disabled?: string; error?: string; focus?: string; hover?: string; success?: string; warning?: string; }

Border color configuration

colors.border.default?โ€‹

string

Default border color

colors.border.disabled?โ€‹

string

Disabled state border color

colors.border.error?โ€‹

string

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/Error state border color

colors.border.focus?โ€‹

string

Focus state border color

colors.border.hover?โ€‹

string

Hover state border color

colors.border.success?โ€‹

string

Success state border color

colors.border.warning?โ€‹

string

Warning state border color

colors.hover?โ€‹

{ background?: string; border?: string; primary?: string; secondary?: string; text?: string; }

Hover state color configuration

colors.hover.background?โ€‹

string

Background color on hover

colors.hover.border?โ€‹

string

Border color on hover

colors.hover.primary?โ€‹

string

Primary color on hover

colors.hover.secondary?โ€‹

string

Secondary color on hover

colors.hover.text?โ€‹

string

Text color on hover

colors.primary?โ€‹

{ error?: string; info?: string; primary?: string; secondary?: string; success?: string; warning?: string; }

Primary color palette

colors.primary.error?โ€‹

string

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/Error state color

colors.primary.info?โ€‹

string

Info state color

colors.primary.primary?โ€‹

string

Primary brand color

colors.primary.secondary?โ€‹

string

Secondary brand color

colors.primary.success?โ€‹

string

Success state color

colors.primary.warning?โ€‹

string

Warning state color

colors.status?โ€‹

{ down?: string; paused?: string; pending?: string; unknown?: string; up?: string; }

Status indicator colors

colors.status.down?โ€‹

string

Down/error status color

colors.status.paused?โ€‹

string

Paused status color

colors.status.pending?โ€‹

string

Pending status color

colors.status.unknown?โ€‹

string

Unknown status color

colors.status.up?โ€‹

string

Up/success status color

colors.text?โ€‹

{ disabled?: string; error?: string; inverse?: string; muted?: string; primary?: string; success?: string; warning?: string; }

Text color configuration

colors.text.disabled?โ€‹

string

Disabled text color

colors.text.error?โ€‹

string

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/Error text color

colors.text.inverse?โ€‹

string

Inverse text color (for dark backgrounds)

colors.text.muted?โ€‹

string

Muted/secondary text color

colors.text.primary?โ€‹

string

Primary text color

colors.text.success?โ€‹

string

Success text color

colors.text.warning?โ€‹

string

Warning text color

components?โ€‹

{ button?: { borderRadius?: string; fontSize?: string; fontWeight?: number; padding?: string; }; card?: { borderRadius?: string; padding?: string; shadow?: string; }; input?: { borderRadius?: string; fontSize?: string; padding?: string; }; modal?: { backdropColor?: string; borderRadius?: string; shadow?: string; }; }

Component-specific styling

components.button?โ€‹

{ borderRadius?: string; fontSize?: string; fontWeight?: number; padding?: string; }

Button component styling

components.button.borderRadius?โ€‹

string

components.button.fontSize?โ€‹

string

components.button.fontWeight?โ€‹

number

components.button.padding?โ€‹

string

components.card?โ€‹

{ borderRadius?: string; padding?: string; shadow?: string; }

Card component styling

components.card.borderRadius?โ€‹

string

components.card.padding?โ€‹

string

components.card.shadow?โ€‹

string

components.input?โ€‹

{ borderRadius?: string; fontSize?: string; padding?: string; }

Input component styling

components.input.borderRadius?โ€‹

string

components.input.fontSize?โ€‹

string

components.input.padding?โ€‹

string

components.modal?โ€‹

{ backdropColor?: string; borderRadius?: string; shadow?: string; }

Modal component styling

components.modal.backdropColor?โ€‹

string

components.modal.borderRadius?โ€‹

string

components.modal.shadow?โ€‹

string

shadows?โ€‹

{ lg?: string; md?: string; none?: string; sm?: string; xl?: string; }

Shadow configuration

shadows.lg?โ€‹

string

Large shadow

shadows.md?โ€‹

string

Medium shadow

shadows.none?โ€‹

string

No shadow

shadows.sm?โ€‹

string

Small shadow

shadows.xl?โ€‹

string

Extra large shadow

spacing?โ€‹

{ lg?: string; md?: string; sm?: string; xl?: string; xs?: string; xxl?: string; xxs?: string; }

Spacing configuration

spacing.lg?โ€‹

string

Large spacing value

spacing.md?โ€‹

string

Medium spacing value

spacing.sm?โ€‹

string

Small spacing value

spacing.xl?โ€‹

string

Extra large spacing value

spacing.xs?โ€‹

string

Extra small spacing value

spacing.xxl?โ€‹

string

Extra extra large spacing value

spacing.xxs?โ€‹

string

Extra extra small spacing value

typography?โ€‹

{ fontFamily?: { body?: string; heading?: string; mono?: string; }; fontSize?: { body?: string; caption?: string; h1?: string; h2?: string; h3?: string; h4?: string; h5?: string; h6?: string; large?: string; small?: string; }; fontWeight?: { bold?: number; light?: number; medium?: number; normal?: number; semibold?: number; }; lineHeight?: { body?: string; heading?: string; tight?: string; }; }

Typography configuration

typography.fontFamily?โ€‹

{ body?: string; heading?: string; mono?: string; }

Font family configuration

typography.fontFamily.body?โ€‹

string

typography.fontFamily.heading?โ€‹

string

typography.fontFamily.mono?โ€‹

string

typography.fontSize?โ€‹

{ body?: string; caption?: string; h1?: string; h2?: string; h3?: string; h4?: string; h5?: string; h6?: string; large?: string; small?: string; }

Font size configuration

typography.fontSize.body?โ€‹

string

typography.fontSize.caption?โ€‹

string

typography.fontSize.h1?โ€‹

string

typography.fontSize.h2?โ€‹

string

typography.fontSize.h3?โ€‹

string

typography.fontSize.h4?โ€‹

string

typography.fontSize.h5?โ€‹

string

typography.fontSize.h6?โ€‹

string

typography.fontSize.large?โ€‹

string

typography.fontSize.small?โ€‹

string

typography.fontWeight?โ€‹

{ bold?: number; light?: number; medium?: number; normal?: number; semibold?: number; }

Font weight configuration

typography.fontWeight.bold?โ€‹

number

typography.fontWeight.light?โ€‹

number

typography.fontWeight.medium?โ€‹

number

typography.fontWeight.normal?โ€‹

number

typography.fontWeight.semibold?โ€‹

number

typography.lineHeight?โ€‹

{ body?: string; heading?: string; tight?: string; }

Line height configuration

typography.lineHeight.body?โ€‹

string

typography.lineHeight.heading?โ€‹

string

typography.lineHeight.tight?โ€‹

string

Returnsโ€‹

ThemeConfig

Theme configuration with deeply merged overrides

Remarksโ€‹

Uses type-fest's PartialDeep to allow modification of any nested property without requiring complete object structures. This is ideal for fine-grained theme customization where only specific values need to be changed.

Exampleโ€‹

const customTheme = createDeepThemeOverride(baseTheme, {
colors: {
text: { primary: "#1a1a1a" }, // Only change text primary color
background: { primary: "#ffffff" }, // Only change background primary
},
typography: {
fontSize: { h1: "40px" }, // Only change h1 font size
},
});