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โ
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โ
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
},
});