import { ThemeOptions as MuiThemeOptions } from '@mui/material/styles'

declare module '@mui/material/styles' {
  interface Theme {
    borders?: {
      grayLight?: string
      primary?: string
    }
    palette?: {
      mode?: string
      primary?: {
        dark?: string
        main?: string
        light?: string
        lighter?: string
      }
      secondary?: {
        main?: string
        light?: string
        dark?: string
        lighter?: string
      }
      highlight?: {
        main?: string
      }
      grey?: {
        main?: string
      }
      info?: {
        main?: string
      }
      common?: {
        black?: string
        white?: string
        green?: string
        yellow?: string
        blue?: string
      }
      error?: {
        main?: string
      }
      text?: {
        primary?: string
        secondary?: string
        disabled?: string
      }
      background?: {
        paper?: string
        default?: string
      }
    }
  }
  // allow configuration using `createTheme`
  interface CustomThemeOptions extends MuiThemeOptions {
    borders?: {
      grayLight?: string
      primary?: string
    }
    palette?: {
      mode?: string
      primary?: {
        dark?: string
        main?: string
        light?: string
        lighter?: string
      }
      secondary?: {
        main?: string
        light?: string
        dark?: string
        lighter?: string
      }
      highlight?: {
        main?: string
      }
      grey?: {
        main?: string
      }
      common?: {
        black?: string
        white?: string
        green?: string
        yellow?: string
        blue?: string
      }
      error?: {
        main?: string
      }
      text?: {
        primary?: string
        secondary?: string
        disabled?: string
      }
      background?: {
        paper?: string
        default?: string
      }
    }
    components?: Components<Omit<Theme, 'components'>>
    typography?: TypographyOptions | ((palette: Palette) => TypographyOptions)
  }
  export function createTheme(options?: CustomThemeOptions): CustomTheme
}

declare module '@mui/material/Typography' {
  interface TypographyPropsVariantOverrides {
    label1: true
    label2: true
    subtitle3: true
  }
}
