import { CSSObject } from '@mui/styled-engine'; import { Breakpoints, BreakpointsOptions } from './createBreakpoints'; import { Shape, ShapeOptions } from './shape'; import { Spacing, SpacingOptions } from './createSpacing'; import { SxConfig, SxProps } from '../styleFunctionSx'; import { ApplyStyles } from './applyStyles'; export { Breakpoint, BreakpointOverrides } from './createBreakpoints'; export type Direction = 'ltr' | 'rtl'; export interface ThemeOptions { shape?: ShapeOptions; breakpoints?: BreakpointsOptions; direction?: Direction; mixins?: unknown; palette?: Record; shadows?: unknown; spacing?: SpacingOptions; transitions?: unknown; components?: Record; typography?: unknown; zIndex?: Record; unstable_sxConfig?: SxConfig; } export interface Theme { shape: Shape; breakpoints: Breakpoints; direction: Direction; palette: Record & { mode: 'light' | 'dark' }; shadows?: unknown; spacing: Spacing; transitions?: unknown; components?: Record; mixins?: unknown; typography?: unknown; zIndex?: unknown; applyStyles: ApplyStyles<'light' | 'dark'>; unstable_sxConfig: SxConfig; unstable_sx: (props: SxProps) => CSSObject; } /** * Generate a theme base on the options received. * @param options Takes an incomplete theme object and adds the missing parts. * @param args Deep merge the arguments with the about to be returned theme. * @returns A complete, ready-to-use theme object. */ export default function createTheme(options?: ThemeOptions, ...args: object[]): Theme;