import * as CSS from 'csstype'; import { Breakpoints, CSSObject, Mixins, SxConfig, Transitions } from '@mui/system'; import { SizeTokens, ViewportTokens } from './sysTokensType'; import { CssVarsTheme } from '../styles'; import { CSSProperties } from 'react'; export interface StateLayers { hoverOnSurface: string; focusOnSurface: string; pressOnSurface: string; disabledOnSurface: string; dragOnSurface: string; extraHeavyOnsurface: string; hoverSecondary: string; focusSecondary: string; pressSecondary: string; hoverPrimary: string; focusPrimary: string; pressPrimary: string; disabled: string; hoverOnPrimary: string; focusOnPrimary: string; pressOnPrimary: string; hoverError: string; focusError: string; pressError: string; hoverOnPrimaryContainer: string; hoverOnSecondaryContainer: string; hoverOnTertiaryContainer: string; hoverOnDetailCard: string; focusOnSecondaryContainer: string; pressOnSecondaryContainer: string; hoverTextonPrimary: string; hoverTextPrimary: string; hoverOnSurfaceVariant: string; pressOnSurfaceVariant: string; focusOnSurfaceVariant: string; hoverWarning: string; focusWarning: string; pressWarning: string; } export interface AddOn { primaryFixed: string; onPrimaryFixed: string; primaryFixedDim: string; onPrimaryFixedVariant: string; secondaryFixed: string; onSecondaryFixed: string; secondaryFixedDim: string; onSecondaryFixedVariant: string; tertiaryFixed: string; onTertiaryFixed: string; tertiaryFixedDim: string; onTertiaryFixedVariant: string; surfaceDim: string; surfaceBright: string; highlight1: string; highlight2: string; highlight3: string; highlight4: string; highlight5: string; highlight6: string; } export type NovaPalette = { primary: string; onPrimary: string; primaryContainer: string; onPrimaryContainer: string; secondary: string; onSecondary: string; secondaryContainer: string; onSecondaryContainer: string; tertiary: string; onTertiary: string; tertiaryContainer: string; onTertiaryContainer: string; error: string; onError: string; errorContainer: string; onErrorContainer: string; warning: string; onWarning: string; warningContainer: string; onWarningContainer: string; info: string; onInfo: string; infoContainer: string; onInfoContainer: string; success: string; onSuccess: string; successContainer: string; onSuccessContainer: string; surface: string; onSurface: string; onSurfaceVariant: string; surfaceContainerLowest: string; surfaceContainerLow: string; surfaceContainer: string; surfaceContainerHigh: string; surfaceContainerHighest: string; inverseSurface: string; inverseOnSurface: string; inversePrimary: string; outline: string; outlineVariant: string; outlineDisabled: string; scrim: string; shadow: string; surfaceVariant: string; backgroundDisabled: string; onBackgroundDisabled: string; backgroundStates: string; stateLayers: StateLayers; addOns: AddOn; }; export type NovaTypography = { fontFamily: string; displayLarge: CSSProperties; displayMedium: CSSProperties; displaySmall: CSSProperties; headlineLarge: CSSProperties; headlineMedium: CSSProperties; headlineSmall: CSSProperties; titleLarge: CSSProperties; titleMedium: CSSProperties; titleSmall: CSSProperties; bodyLarge: CSSProperties; bodyMedium: CSSProperties; bodySmall: CSSProperties; bodyXsmall: CSSProperties; labelLarge: CSSProperties; labelMedium: CSSProperties; labelSmall: CSSProperties; labelXsmall: CSSProperties; }; export type NovaPigmentTheme = { palette: NovaPalette; shadows: ['none', string, string, string, string, string]; spacing: number; typography: NovaTypography & { fontFamily: string; }; sys: { size: SizeTokens; viewport: ViewportTokens; }; breakpoints: Breakpoints; }; /** * The `SxProps` can be either object or function */ type CssVarsProperties = Pick; export interface BaseTheme extends NovaPigmentTheme { mixins: Mixins; transitions: Transitions; } export interface CSSSelectorObjectOrCssVariables { [cssSelectorOrVariable: string]: ((theme: Theme) => SystemStyleObject | string | number) | SystemStyleObject | string | number; } export type CSSPseudoSelectorProps = { [K in CSS.Pseudos]?: ((theme: Theme) => SystemStyleObject) | SystemStyleObject; }; export type SystemStyleObject = React.CSSProperties | CSSPseudoSelectorProps | CSSSelectorObjectOrCssVariables | null; type SystemSxProps = SystemStyleObject | ((theme: Theme) => SystemStyleObject) | ReadonlyArray | ((theme: Theme) => SystemStyleObject)>; export type SxProps = SystemSxProps; export interface Theme extends NovaPigmentTheme, CssVarsProperties { cssVariables?: true; unstable_sx: (props: SxProps) => CSSObject; unstable_sxConfig: SxConfig; } export {};