/** * Type definitions for "material-ui" v1.0.0-beta.2 * Project: https://github.com/callemall/material-ui/ * TypeScript Version: 2.4 */ /// /// declare namespace MaterialUI { /** * Component exposed by `material-ui` are usually wrapped * with the `withStyles` HOC and allow customization via * the following props: * * - `className` * - `classes` * - `style` */ interface MaterialComponentProps { className?: string; classes?: StyleClasses; style?: Partial; } class Component extends React.Component< P & MaterialComponentProps > {} interface InputEventEmitter { onBlur: React.ReactEventHandler; onChange: React.ReactEventHandler; onClean: React.ReactEventHandler; onDirty: React.ReactEventHandler; onFocus: React.ReactEventHandler; onKeyDown: React.ReactEventHandler; onKeyUp: React.ReactEventHandler; } /** * Utilies types based on: * https://github.com/Microsoft/TypeScript/issues/12215#issuecomment-307871458 */ type Diff = ({ [P in T]: P } & { [P in U]: never } & { [x: string]: never })[T]; type Omit = { [P in Diff]: T[P] }; } declare namespace MaterialUI.PropTypes { type Alignment = 'inherit' | 'left' | 'center' | 'right' | 'justify'; type Color = 'inherit' | 'primary' | 'accent' | 'default'; type Margin = 'none' | 'dense' | 'normal'; } declare module 'material-ui' { export { default as AppBar } from 'material-ui/AppBar'; export { default as Avatar } from 'material-ui/Avatar'; export { default as Badge } from 'material-ui/Badge'; export { default as BottomNavigation, BottomNavigationButton, } from 'material-ui/BottomNavigation'; export { default as Button } from 'material-ui/Button'; export { default as Card, CardActions, CardContent, CardHeader, CardMedia, } from 'material-ui/Card'; export { default as Checkbox } from 'material-ui/Checkbox'; export { default as Chip } from 'material-ui/Chip'; export { default as Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, } from 'material-ui/Dialog'; export { default as Divider } from 'material-ui/Divider'; export { default as Drawer } from 'material-ui/Drawer'; export { FormControl, FormGroup, FormLabel, FormHelperText, FormControlLabel, } from 'material-ui/Form'; export { default as Hidden } from 'material-ui/Hidden'; export { default as Icon } from 'material-ui/Icon'; export { default as IconButton } from 'material-ui/IconButton'; export { default as Input, InputLabel } from 'material-ui/Input'; export { default as Grid } from 'material-ui/Grid'; export { default as List, ListItem, ListItemAvatar, ListItemIcon, ListItemSecondaryAction, ListItemText, ListSubheader, } from 'material-ui/List'; export { default as Menu, MenuItem, MenuList } from 'material-ui/Menu'; export { default as Paper } from 'material-ui/Paper'; export { CircularProgress, LinearProgress } from 'material-ui/Progress'; export { default as Radio, RadioGroup } from 'material-ui/Radio'; export { default as Snackbar, SnackbarContent } from 'material-ui/Snackbar'; export { MuiThemeProvider } from 'material-ui/styles'; import * as colors from 'material-ui/colors'; export { colors }; export { default as SvgIcon } from 'material-ui/SvgIcon'; export { default as Switch } from 'material-ui/Switch'; export { default as Table, TableBody, TableCell, TableHead, TableRow, TableSortLabel, } from 'material-ui/Table'; export { default as Tabs, Tab } from 'material-ui/Tabs'; export { default as Typography } from 'material-ui/Typography'; export { default as TextField } from 'material-ui/TextField'; export { default as Toolbar } from 'material-ui/Toolbar'; } /* ============================================= */ /* */ /* COMPONENTS */ /* */ /* ============================================= */ declare module 'material-ui/AppBar' { export { default } from 'material-ui/AppBar/AppBar'; export * from 'material-ui/AppBar/AppBar'; } declare module 'material-ui/AppBar/AppBar' { import { PaperProps } from 'material-ui/Paper/Paper'; export interface AppBarProps extends PaperProps { color?: MaterialUI.PropTypes.Color; position?: 'static' | 'fixed' | 'absolute'; } export default class AppBar extends MaterialUI.Component {} } declare module 'material-ui/Avatar' { export { default } from 'material-ui/Avatar/Avatar'; export * from 'material-ui/Avatar/Avatar'; } declare module 'material-ui/Avatar/Avatar' { export interface AvatarProps { alt?: string; childrenClassName?: string; component?: React.ReactNode; imgProps?: Object; sizes?: string; src?: string; srcSet?: string; } export default class Avatar extends MaterialUI.Component {} } declare module 'material-ui/Badge' { export { default } from 'material-ui/Badge/Badge'; export * from 'material-ui/Badge/Badge'; } declare module 'material-ui/Badge/Badge' { export interface BadgeProps extends React.HTMLAttributes { badgeContent: React.ReactNode; children: React.ReactNode; color?: 'default' | 'primary' | 'accent'; } export default class Badge extends MaterialUI.Component {} } declare module 'material-ui/BottomNavigation' { export { default } from 'material-ui/BottomNavigation/BottomNavigation'; export * from 'material-ui/BottomNavigation/BottomNavigation'; export { default as BottomNavigationButton, } from 'material-ui/BottomNavigation/BottomNavigationButton'; export * from 'material-ui/BottomNavigation/BottomNavigationButton'; } declare module 'material-ui/BottomNavigation/BottomNavigation' { export interface BottomNavigationProps extends React.HTMLAttributes { children: React.ReactNode; onChange?: React.ReactEventHandler; showLabels?: boolean; value?: any; } export default class BottomNavigation extends MaterialUI.Component< BottomNavigationProps > {} } declare module 'material-ui/BottomNavigation/BottomNavigationButton' { import { ButtonBaseProps } from 'material-ui/internal/ButtonBase'; export interface BottomNavigationButtonProps extends ButtonBaseProps { icon?: React.ReactNode; label?: React.ReactNode; onChange?: (event: React.ChangeEvent<{}>, value: number) => void; onClick?: React.ReactEventHandler; selected?: boolean; showLabel?: boolean; value?: number; } export default class BottomNavigationButton extends MaterialUI.Component< BottomNavigationButtonProps > {} } declare module 'material-ui/Button' { export { default } from 'material-ui/Button/Button'; export * from 'material-ui/Button/Button'; } declare module 'material-ui/Button/Button' { import { ButtonBaseProps } from 'material-ui/internal/ButtonBase'; export interface ButtonProps extends ButtonBaseProps { color?: MaterialUI.PropTypes.Color | 'contrast'; component?: React.ReactNode; dense?: boolean; disabled?: boolean; disableFocusRipple?: boolean; disableRipple?: boolean; fab?: boolean; href?: string; raised?: boolean; type?: string; } export default class Button extends MaterialUI.Component {} } declare module 'material-ui/Card' { export { default } from 'material-ui/Card/Card'; export * from 'material-ui/Card/Card'; export { default as CardActions } from 'material-ui/Card/CardActions'; export * from 'material-ui/Card/CardActions'; export { default as CardContent } from 'material-ui/Card/CardContent'; export * from 'material-ui/Card/CardContent'; export { default as CardHeader } from 'material-ui/Card/CardHeader'; export * from 'material-ui/Card/CardHeader'; export { default as CardMedia } from 'material-ui/Card/CardMedia'; export * from 'material-ui/Card/CardMedia'; } declare module 'material-ui/Card/Card' { import { PaperProps } from 'material-ui/Paper/Paper'; export interface CardProps extends PaperProps { raised?: boolean; } export default class Card extends MaterialUI.Component {} } declare module 'material-ui/Card/CardActions' { export interface CardActionsProps extends React.HTMLAttributes { disableActionSpacing?: boolean; } export default class CardActions extends MaterialUI.Component< CardActionsProps > {} } declare module 'material-ui/Card/CardContent' { export type CardContentProps = {} & React.HTMLAttributes; export default class CardContent extends MaterialUI.Component< CardContentProps > {} } declare module 'material-ui/Card/CardHeader' { import { CardContentProps } from 'material-ui/Card/CardContent'; export type CardHeaderProps = { avatar?: React.ReactNode; subheader?: React.ReactNode; title?: React.ReactNode; } & Partial>; export default class CardHeader extends MaterialUI.Component< CardHeaderProps > {} } declare module 'material-ui/Card/CardMedia' { export interface CardMediaProps extends React.HTMLAttributes {} export default class CardMedia extends MaterialUI.Component {} } declare module 'material-ui/Checkbox' { export { default } from 'material-ui/Checkbox/Checkbox'; export * from 'material-ui/Checkbox/Checkbox'; } declare module 'material-ui/Checkbox/Checkbox' { import { SwitchBaseProps } from 'material-ui/internal/SwitchBase'; export interface CheckboxProps extends SwitchBaseProps {} export default class Checkbox extends MaterialUI.Component {} } declare module 'material-ui/Chip' { export { default } from 'material-ui/Chip/Chip'; export * from 'material-ui/Chip/Chip'; } declare module 'material-ui/Chip/Chip' { export interface ChipProps extends React.HTMLAttributes { avatar?: React.ReactNode; label?: React.ReactNode; onKeyDown?: React.EventHandler>; onRequestDelete?: React.EventHandler; tabIndex?: number; } export default class Chip extends MaterialUI.Component {} } declare module 'material-ui/Dialog' { export { default } from 'material-ui/Dialog/Dialog'; export * from 'material-ui/Dialog/Dialog'; export { default as DialogActions } from 'material-ui/Dialog/DialogActions'; export * from 'material-ui/Dialog/DialogActions'; export { default as DialogTitle } from 'material-ui/Dialog/DialogTitle'; export * from 'material-ui/Dialog/DialogTitle'; export { default as DialogContent } from 'material-ui/Dialog/DialogContent'; export * from 'material-ui/Dialog/DialogContent'; export { default as DialogContentText, } from 'material-ui/Dialog/DialogContentText'; export * from 'material-ui/Dialog/DialogContentText'; export { default as withResponsiveFullScreen, } from 'material-ui/Dialog/withResponsiveFullScreen'; export * from 'material-ui/Dialog/withResponsiveFullScreen'; } declare module 'material-ui/Dialog/Dialog' { import { ModalProps } from 'material-ui/internal/Modal'; export type DialogProps = { fullScreen?: boolean; ignoreBackdropClick?: boolean; ignoreEscapeKeyUp?: boolean; enterTransitionDuration?: number | string; leaveTransitionDuration?: number | string; maxWidth?: 'xs' | 'sm' | 'md'; onBackdropClick?: Function; onEscapeKeyUp?: Function; onRequestClose?: React.EventHandler; open?: boolean; transition?: Function | React.ReactElement; } & ModalProps; export default class Dialog extends MaterialUI.Component {} } declare module 'material-ui/Dialog/DialogActions' { export interface DialogActionsProps extends React.HTMLAttributes {} export default class DialogActions extends MaterialUI.Component< DialogActionsProps > {} } declare module 'material-ui/Dialog/DialogContent' { export interface DialogContentProps extends React.HTMLAttributes {} export default class DialogContent extends MaterialUI.Component< DialogContentProps > {} } declare module 'material-ui/Dialog/DialogContentText' { export interface DialogContentTextProps extends React.HTMLAttributes {} export default class DialogContentText extends MaterialUI.Component< DialogContentTextProps > {} } declare module 'material-ui/Dialog/DialogTitle' { export interface DialogTitleProps extends React.HTMLAttributes { disableTypography?: boolean; } export default class DialogTitle extends MaterialUI.Component< DialogTitleProps > {} } declare module 'material-ui/Dialog/withResponsiveFullScreen' { import { Breakpoint } from 'material-ui/styles/breakpoints'; import { WithWidthEnhancement } from 'material-ui/utils/withWidth'; export interface WithResponsiveFullScreenOptions { breakpoint: Breakpoint; } export default function withResponsiveFullScreen

( options: WithResponsiveFullScreenOptions ): React.ComponentClass

; } declare module 'material-ui/Divider' { export { default } from 'material-ui/Divider/Divider'; export * from 'material-ui/Divider/Divider'; } declare module 'material-ui/Divider/Divider' { export interface DividerProps extends React.HTMLAttributes { absolute?: boolean; inset?: boolean; light?: boolean; } export default class Divider extends MaterialUI.Component {} } declare module 'material-ui/Drawer' { export { default } from 'material-ui/Drawer/Drawer'; export * from 'material-ui/Drawer/Drawer'; } declare module 'material-ui/Drawer/Drawer' { import { ModalProps } from 'material-ui/internal/Modal'; import { SlideProps } from 'material-ui/transitions/Slide'; import { Theme } from 'material-ui/styles/theme'; export interface DrawerProps extends ModalProps { anchor?: 'left' | 'top' | 'right' | 'bottom'; docked?: boolean; elevation?: number; enterTransitionDuration?: number; leaveTransitionDuration?: number; open?: boolean; SlideProps?: SlideProps; theme?: Theme; } export default class Drawer extends MaterialUI.Component {} } declare module 'material-ui/Form' { export { default as FormGroup } from 'material-ui/Form/FormGroup'; export * from 'material-ui/Form/FormGroup'; export { default as FormLabel } from 'material-ui/Form/FormLabel'; export * from 'material-ui/Form/FormLabel'; export { default as FormControl } from 'material-ui/Form/FormControl'; export * from 'material-ui/Form/FormControl'; export { default as FormHelperText } from 'material-ui/Form/FormHelperText'; export * from 'material-ui/Form/FormHelperText'; export { default as FormControlLabel, } from 'material-ui/Form/FormControlLabel'; export * from 'material-ui/Form/FormControlLabel'; } declare module 'material-ui/Form/FormControl' { export interface FormControlProps extends React.HtmlHTMLAttributes { disabled?: boolean; error?: boolean; fullWidth?: boolean; margin?: MaterialUI.PropTypes.Margin; onBlur?: React.EventHandler; onFocus?: React.EventHandler; required?: boolean; } export default class FormControl extends MaterialUI.Component< FormControlProps > {} } declare module 'material-ui/Form/FormControlLabel' { export type FormControlLabelProps = { checked?: boolean | string; control: React.ReactElement; disabled?: boolean; inputRef?: React.Ref; label: React.ReactNode; name?: string; onChange?: (event: React.ChangeEvent<{}>, checked: boolean) => void; value?: string; } & React.LabelHTMLAttributes; export default class FormControlLabel extends MaterialUI.Component< FormControlLabelProps > {} } declare module 'material-ui/Form/FormGroup' { export interface FormGroupProps extends React.HtmlHTMLAttributes { row?: boolean; } export default class FormGroup extends MaterialUI.Component {} } declare module 'material-ui/Form/FormHelperText' { export interface FormHelperTextProps extends React.HTMLAttributes { disabled?: boolean; error?: boolean; margin?: 'dense'; } export default class FormHelperText extends MaterialUI.Component< FormHelperTextProps > {} } declare module 'material-ui/Form/FormLabel' { export interface FormLabelProps extends React.LabelHTMLAttributes { disabled?: boolean; error?: boolean; focused?: boolean; required?: boolean; } export default class FormLabel extends MaterialUI.Component {} } declare module 'material-ui/Grid' { export { default } from 'material-ui/Grid/Grid'; export * from 'material-ui/Grid/Grid'; } declare module 'material-ui/Grid/Grid' { import { HiddenProps } from 'material-ui/Hidden/Hidden'; import { Breakpoint } from 'material-ui/styles/breakpoints'; export type GridAlignment = 'flex-start' | 'center' | 'flex-end' | 'stretch'; export type GridDirection = | 'row' | 'row-reverse' | 'column' | 'column-reverse'; export type GridSpacing = 0 | 8 | 16 | 24 | 40; export type GridJustification = | 'flex-start' | 'center' | 'flex-end' | 'space-between' | 'space-around'; export type GridWrap = 'nowrap' | 'wrap' | 'wrap-reverse'; export type GridSize = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12; export type GridProps = { component?: React.ReactNode; container?: boolean; item?: boolean; align?: GridAlignment; direction?: GridDirection; spacing?: GridSpacing; hidden?: HiddenProps; justify?: GridJustification; wrap?: GridWrap; } & Partial<{ [key in Breakpoint]: boolean | GridSize }>; export default class Grid extends MaterialUI.Component {} } declare module 'material-ui/GridList' { export { default } from 'material-ui/GridList/GridList'; export * from 'material-ui/GridList/GridList'; export { default as GridList } from 'material-ui/GridList/GridList'; export { default as GridListTitle } from 'material-ui/GridList/GridListTitle'; export * from 'material-ui/GridList/GridListTitle'; export { default as GridListTitleBar, } from 'material-ui/GridList/GridListTitleBar'; export * from 'material-ui/GridList/GridListTitleBar'; } declare module 'material-ui/GridList/GridList' { export interface GridListProps { cellHeight?: number | 'auto'; cols?: number; component?: React.ReactElement | string; spacing?: number; } export default class GridList extends MaterialUI.Component {} } declare module 'material-ui/GridList/GridListTitle' { export interface GridListTitleProps { cols?: number; component?: React.ReactElement | string; row?: number; } export default class GridListTitle extends MaterialUI.Component< GridListTitleProps > {} } declare module 'material-ui/GridList/GridListTitleBar' { export interface GridListTitleBarProps { actionIcon?: React.ReactElement; actionPosition?: 'left' | 'right'; subtitle?: React.ReactNode; title?: React.ReactNode; titlePosition?: 'top' | 'bottom'; } export default class GridListTitleBar extends MaterialUI.Component< GridListTitleBarProps > {} } declare module 'material-ui/Hidden' { export { default } from 'material-ui/Hidden/Hidden'; export * from 'material-ui/Hidden/Hidden'; export { default as HiddenJs } from 'material-ui/Hidden/HiddenJs'; export * from 'material-ui/Hidden/HiddenJs'; } declare module 'material-ui/Hidden/Hidden' { import { Breakpoint } from 'material-ui/styles/breakpoints'; export interface HiddenProps { only?: Breakpoint | Array; xsUp?: boolean; smUp?: boolean; mdUp?: boolean; lgUp?: boolean; xlUp?: boolean; xsDown?: boolean; smDown?: boolean; mdDown?: boolean; lgDown?: boolean; xlDown?: boolean; implementation?: 'js' | 'css'; } export default class Hidden extends MaterialUI.Component {} } declare module 'material-ui/Hidden/HiddenJs' { import { Breakpoint } from 'material-ui/styles/breakpoints'; export interface HiddenJsProps { only?: Breakpoint | Array; xsUp?: boolean; smUp?: boolean; mdUp?: boolean; lgUp?: boolean; xlUp?: boolean; xsDown?: boolean; smDown?: boolean; mdDown?: boolean; lgDown?: boolean; xlDown?: boolean; } export default class HiddenJs extends MaterialUI.Component {} } declare module 'material-ui/Icon' { export { default } from 'material-ui/Icon/Icon'; export * from 'material-ui/Icon/Icon'; } declare module 'material-ui/Icon/Icon' { export interface IconProps extends React.HTMLAttributes { color?: | 'inherit' | 'accent' | 'action' | 'contrast' | 'disabled' | 'error' | 'primary'; } export default class Icon extends MaterialUI.Component {} } declare module 'material-ui/IconButton' { export { default } from 'material-ui/IconButton/IconButton'; export * from 'material-ui/IconButton/IconButton'; } declare module 'material-ui/IconButton/IconButton' { import { ButtonBaseProps } from 'material-ui/internal/ButtonBase'; export interface IconButtonProps extends ButtonBaseProps { color?: MaterialUI.PropTypes.Color | 'contrast'; disabled?: boolean; disableRipple?: boolean; rootRef?: React.Ref; } export default class IconButton extends MaterialUI.Component< IconButtonProps > {} } declare module 'material-ui/Input' { export { default } from 'material-ui/Input/Input'; export * from 'material-ui/Input/Input'; export { default as InputLabel } from 'material-ui/Input/InputLabel'; export * from 'material-ui/Input/InputLabel'; // NOTE: Textarea is missing from exports (intentional?) } declare module 'material-ui/Input/Input' { export type InputProps = { autoComplete?: string; autoFocus?: boolean; component?: React.ReactNode; defaultValue?: string | number; disabled?: boolean; disableUnderline?: boolean; error?: boolean; fullWidth?: boolean; id?: string; /** * TODO: Can we be more restrictive? E.g. it's only an * if [component] is not set. */ inputProps?: | React.TextareaHTMLAttributes | React.InputHTMLAttributes; inputRef?: React.Ref; margin?: 'dense'; multiline?: boolean; name?: string; placeholder?: string; rows?: string | number; rowsMax?: string | number; type?: string; value?: string | number; } & React.HTMLAttributes & Partial>; export default class Input extends MaterialUI.Component {} } declare module 'material-ui/Input/InputLabel' { import { FormLabelProps } from 'material-ui/Form/FormLabel'; export interface InputLabelProps extends FormLabelProps { disableAnimation?: boolean; disabled?: boolean; error?: boolean; focused?: boolean; required?: boolean; shrink?: boolean; } export default class InputLabel extends MaterialUI.Component< InputLabelProps > {} } declare module 'material-ui/Input/Textarea' { export type TextareaProps = { defaultValue?: any; disabled?: boolean; onChange?: React.EventHandler>; rows?: string | number; rowsMax?: string | number; textareaRef?: React.Ref; value?: string; } & React.TextareaHTMLAttributes; export default class Textarea extends MaterialUI.Component {} } declare module 'material-ui/List' { export { default } from 'material-ui/List/List'; export * from 'material-ui/List/List'; export { default as ListItem } from 'material-ui/List/ListItem'; export * from 'material-ui/List/ListItem'; export { default as ListItemAvatar } from 'material-ui/List/ListItemAvatar'; export * from 'material-ui/List/ListItemAvatar'; export { default as ListItemText } from 'material-ui/List/ListItemText'; export * from 'material-ui/List/ListItemText'; export { default as ListItemIcon } from 'material-ui/List/ListItemIcon'; export * from 'material-ui/List/ListItemIcon'; export { default as ListItemSecondaryAction, } from 'material-ui/List/ListItemSecondaryAction'; export * from 'material-ui/List/ListItemSecondaryAction'; export { default as ListSubheader } from 'material-ui/List/ListSubheader'; export * from 'material-ui/List/ListSubheader'; } declare module 'material-ui/List/List' { export interface ListProps extends React.HTMLAttributes { component?: React.ReactNode; dense?: boolean; disablePadding?: boolean; rootRef?: React.Ref; subheader?: React.ReactElement; } export default class List extends MaterialUI.Component {} } declare module 'material-ui/List/ListItem' { import { ButtonBaseProps } from 'material-ui/internal/ButtonBase'; export type ListItemProps = { button?: boolean; component?: React.ReactNode; dense?: boolean; disabled?: boolean; disableGutters?: boolean; divider?: boolean; } & ButtonBaseProps & React.LiHTMLAttributes; export default class ListItem extends MaterialUI.Component {} } declare module 'material-ui/List/ListItemAvatar' { export interface ListItemAvatarProps {} export default class ListItemAvatar extends MaterialUI.Component< ListItemAvatarProps > {} } declare module 'material-ui/List/ListItemIcon' { export interface ListItemIconProps {} export default class ListItemIcon extends MaterialUI.Component< ListItemIconProps > {} } declare module 'material-ui/List/ListItemSecondaryAction' { export interface ListItemSecondaryActionProps {} export default class ListItemSecondaryAction extends MaterialUI.Component< ListItemSecondaryActionProps > {} } declare module 'material-ui/List/ListItemText' { export interface ListItemTextProps extends React.HTMLAttributes { disableTypography?: boolean; inset?: boolean; primary?: React.ReactNode; secondary?: React.ReactNode; } export default class ListItemText extends MaterialUI.Component< ListItemTextProps > {} } declare module 'material-ui/List/ListSubheader' { export interface ListSubheaderProps extends React.HTMLAttributes { color?: 'default' | 'primary' | 'inherit'; inset?: boolean; } export default class ListSubheader extends MaterialUI.Component< ListSubheaderProps > {} } declare module 'material-ui/Menu' { export { default } from 'material-ui/Menu/Menu'; export * from 'material-ui/Menu/Menu'; export { default as MenuList } from 'material-ui/Menu/MenuList'; export * from 'material-ui/Menu/MenuList'; export { default as MenuItem } from 'material-ui/Menu/MenuItem'; export * from 'material-ui/Menu/MenuItem'; } declare module 'material-ui/Menu/Menu' { import { TransitionHandlers } from 'material-ui/internal/Transition'; import { MenuListProps } from 'material-ui/Menu/MenuList'; import { PopoverProps } from 'material-ui/internal/Popover'; export type MenuProps = { anchorEl?: HTMLElement; MenuListProps?: MenuListProps; onRequestClose?: React.EventHandler; open?: boolean; transitionDuration?: number | 'auto'; } & Partial & PopoverProps; export default class Menu extends MaterialUI.Component {} } declare module 'material-ui/Menu/MenuItem' { import { ListItemProps } from 'material-ui/List/ListItem'; export interface MenuItemProps extends ListItemProps { component?: React.ReactNode; role?: string; selected?: boolean; } export default class MenuItem extends MaterialUI.Component {} } declare module 'material-ui/Menu/MenuList' { import { ListProps } from 'material-ui/List/List'; export type MenuListProps = { onKeyDown?: React.ReactEventHandler>; } & ListProps; export default class MenuList extends MaterialUI.Component {} } declare module 'material-ui/MobileStepper' { export { default } from 'material-ui/MobileStepper/MobileStepper'; export * from 'material-ui/MobileStepper/MobileStepper'; } declare module 'material-ui/MobileStepper/MobileStepper' { import { PaperProps } from 'material-ui/Paper/Paper'; export interface MobileStepperProps extends PaperProps { activeStep?: number; backButtonText?: React.ReactNode; disableBack?: boolean; disableNext?: boolean; nextButtonText?: React.ReactNode; onBack: React.EventHandler; onNext: React.EventHandler; position?: 'bottom' | 'top' | 'static'; steps: number; type?: 'text' | 'dots' | 'progress'; } export default class MobileStepper extends MaterialUI.Component< MobileStepperProps > {} } declare module 'material-ui/Paper' { export { default } from 'material-ui/Paper/Paper'; export * from 'material-ui/Paper/Paper'; } declare module 'material-ui/Paper/Paper' { export interface PaperProps extends React.HTMLAttributes { component?: React.ReactNode; elevation?: number; square?: boolean; } export default class Paper extends MaterialUI.Component {} } declare module 'material-ui/Progress' { export { default as CircularProgress, } from 'material-ui/Progress/CircularProgress'; export * from 'material-ui/Progress/CircularProgress'; export { default as LinearProgress, } from 'material-ui/Progress/LinearProgress'; export * from 'material-ui/Progress/LinearProgress'; } declare module 'material-ui/Progress/CircularProgress' { export interface CircularProgressProps extends React.HTMLAttributes { color?: 'primary' | 'accent'; max?: number; min?: number; mode?: 'determinate' | 'indeterminate'; size?: number; value?: number; } export default class CircularProgress extends MaterialUI.Component< CircularProgressProps > {} } declare module 'material-ui/Progress/LinearProgress' { export interface LinearProgressProps extends React.HTMLAttributes { color?: 'primary' | 'accent'; mode?: 'determinate' | 'indeterminate' | 'buffer' | 'query'; value?: number; valueBuffer?: number; } export default class LinearProgress extends MaterialUI.Component< LinearProgressProps > {} } declare module 'material-ui/Radio' { export { default } from 'material-ui/Radio/Radio'; export * from 'material-ui/Radio/Radio'; export { default as RadioGroup } from 'material-ui/Radio/RadioGroup'; export * from 'material-ui/Radio/RadioGroup'; } declare module 'material-ui/Radio/Radio' { import { SwitchBaseProps } from 'material-ui/internal/SwitchBase'; export interface RadioProps extends SwitchBaseProps { checked?: boolean | string; checkedClassName?: string; checkedIcon?: React.ReactNode; defaultChecked?: boolean; disabled?: boolean; disabledClassName?: string; disableRipple?: boolean; icon?: React.ReactNode; inputProps?: Object; inputRef?: React.Ref; name?: string; onChange?: (event: React.ChangeEvent<{}>, checked: boolean) => void; tabIndex?: string; value?: string; } export default class Radio extends MaterialUI.Component {} } declare module 'material-ui/Radio/RadioGroup' { import { FormGroupProps } from 'material-ui/Form/FormGroup'; export type RadioGroupProps = { name?: string; onChange?: (event: React.ChangeEvent<{}>, value: string) => void; value: string; } & Partial>; export default class RadioGroup extends MaterialUI.Component< RadioGroupProps > {} } declare module 'material-ui/Snackbar' { export { default } from 'material-ui/Snackbar/Snackbar'; export * from 'material-ui/Snackbar/Snackbar'; export { default as SnackbarContent, } from 'material-ui/Snackbar/SnackbarContent'; export * from 'material-ui/Snackbar/SnackbarContent'; } declare module 'material-ui/Snackbar/Snackbar' { import { TransitionHandlers } from 'material-ui/internal/Transition'; export type Origin = { horizontal?: 'left' | 'center' | 'right' | number; vertical?: 'top' | 'center' | 'bottom' | number; }; export type SnackbarProps = { action?: React.ReactElement | React.ReactElement[]; anchorOrigin?: Origin; autoHideDuration?: number; enterTransitionDuration?: number; key?: number; leaveTransitionDuration?: number; message?: React.ReactElement; onMouseEnter?: React.MouseEventHandler; onMouseLeave?: React.MouseEventHandler; onRequestClose?: (event: React.SyntheticEvent, reason: string) => void; open: boolean; SnackbarContentProps?: Object; transition?: React.ReactNode; } & Partial & React.HTMLAttributes; export default class Snackbar extends MaterialUI.Component {} } declare module 'material-ui/Snackbar/SnackbarContent' { import { PaperProps } from 'material-ui/Paper/Paper'; export interface SnackbarContentProps extends PaperProps { action?: React.ReactElement; message: React.ReactElement | string; } export default class SnackbarContent extends MaterialUI.Component< SnackbarContentProps > {} } declare module 'material-ui/SvgIcon' { export { default } from 'material-ui/SvgIcon/SvgIcon'; export * from 'material-ui/SvgIcon/SvgIcon'; } declare module 'material-ui/SvgIcon/SvgIcon' { export interface SvgIconProps extends React.SVGProps { titleAccess?: string; viewBox?: string; } export default class SvgIcon extends MaterialUI.Component {} } declare module 'material-ui/Switch' { export { default } from 'material-ui/Switch/Switch'; export * from 'material-ui/Switch/Switch'; } declare module 'material-ui/Switch/Switch' { import { SwitchBaseProps } from 'material-ui/internal/SwitchBase'; export interface SwitchProps extends SwitchBaseProps { checked?: boolean | string; checkedClassName?: string; checkedIcon?: React.ReactNode; defaultChecked?: boolean; disabled?: boolean; disabledClassName?: string; disableRipple?: boolean; icon?: React.ReactNode; inputProps?: object; name?: string; onChange?: (event: React.ChangeEvent<{}>, checked: boolean) => void; tabIndex?: string; value?: string; } export default class Switch extends MaterialUI.Component {} } declare module 'material-ui/Table' { export { default } from 'material-ui/Table/Table'; export * from 'material-ui/Table/Table'; export { default as TableHead } from 'material-ui/Table/TableHead'; export * from 'material-ui/Table/TableHead'; export { default as TableBody } from 'material-ui/Table/TableBody'; export * from 'material-ui/Table/TableBody'; export { default as TableRow } from 'material-ui/Table/TableRow'; export * from 'material-ui/Table/TableRow'; export { default as TableCell } from 'material-ui/Table/TableCell'; export * from 'material-ui/Table/TableCell'; export { default as TableSortLabel } from 'material-ui/Table/TableSortLabel'; export * from 'material-ui/Table/TableSortLabel'; } declare module 'material-ui/Table/Table' { export interface TableProps extends React.TableHTMLAttributes {} export default class Table extends MaterialUI.Component {} } declare module 'material-ui/Table/TableBody' { export interface TableBodyProps extends React.HTMLAttributes {} export default class TableBody extends MaterialUI.Component {} } declare module 'material-ui/Table/TableCell' { /** * `` will be rendered as an ``or `` depending * on the context it is used in. Where context literally is the * React `context`. * * Since it is not decided via prop, we have create loose typings * here. */ export type TableCellProps = { checkbox?: boolean; compact?: boolean; disablePadding?: boolean; numeric?: boolean; } & React.ThHTMLAttributes & React.TdHTMLAttributes; export default class TableCell extends MaterialUI.Component {} } declare module 'material-ui/Table/TableHead' { export interface TableHeadProps extends React.HTMLAttributes {} export default class TableHead extends MaterialUI.Component {} } declare module 'material-ui/Table/TableRow' { export interface TableRowProps extends React.HTMLAttributes { hover?: boolean; selected?: boolean; } export default class TableRow extends MaterialUI.Component {} } declare module 'material-ui/Table/TableSortLabel' { import { ButtonBaseProps } from 'material-ui/internal/ButtonBase'; export interface TableSortLabelProps extends ButtonBaseProps { active?: boolean; direction?: 'asc' | 'desc'; } export default class TableSortLabel extends MaterialUI.Component< TableSortLabelProps > {} } declare module 'material-ui/Tabs' { export { default } from 'material-ui/Tabs/Tabs'; export * from 'material-ui/Tabs/Tabs'; export { default as Tab } from 'material-ui/Tabs/Tab'; export * from 'material-ui/Tabs/Tab'; } declare module 'material-ui/Tabs/Tab' { import { ButtonBaseProps } from 'material-ui/internal/ButtonBase'; export interface TabProps extends ButtonBaseProps { disabled?: boolean; fullWidth?: boolean; icon?: React.ReactNode; value?: any; label?: React.ReactNode; onChange?: ( event: React.ChangeEvent<{ checked: boolean }>, value: any ) => void; onClick?: React.EventHandler; selected?: boolean; style?: object; textColor?: string | 'accent' | 'primary' | 'inherit'; } export default class Tab extends MaterialUI.Component {} } declare module 'material-ui/Tabs/TabIndicator' { export interface TabIndicatorProps extends React.HTMLAttributes { color: 'accent' | 'primary' | string; style: { left: number; width: number }; } export default class TabIndicator extends MaterialUI.Component< TabIndicatorProps > {} } declare module 'material-ui/Tabs/TabScrollButton' { import { ButtonBaseProps } from 'material-ui/internal/ButtonBase'; export interface TabScrollButtonProps extends ButtonBaseProps { direction?: 'left' | 'right'; visible?: boolean; } export default class TabScrollButton extends MaterialUI.Component< TabScrollButtonProps > {} } declare module 'material-ui/Tabs/Tabs' { import { ButtonBaseProps } from 'material-ui/internal/ButtonBase'; export interface TabsProps extends ButtonBaseProps { buttonClassName?: string; centered?: boolean; children?: React.ReactNode; fullWidth?: boolean; value: any; indicatorClassName?: string; indicatorColor?: 'accent' | 'primary' | string; onChange: (event: React.ChangeEvent<{}>, value: any) => void; scrollable?: boolean; scrollButtons?: 'auto' | 'on' | 'off'; textColor?: 'accent' | 'primary' | 'inherit' | string; width?: string; } export default class Tabs extends MaterialUI.Component {} } declare module 'material-ui/TextField' { export { default } from 'material-ui/TextField/TextField'; export * from 'material-ui/TextField/TextField'; } declare module 'material-ui/TextField/TextField' { import { FormControlProps } from 'material-ui/Form/FormControl'; import { FormHelperTextProps } from 'material-ui/Form/FormHelperText'; import { InputProps } from 'material-ui/Input/Input'; import { InputLabelProps } from 'material-ui/Input/InputLabel'; export type TextFieldProps = { autoComplete?: string; autoFocus?: boolean; defaultValue?: string | number; disabled?: boolean; error?: boolean; FormHelperTextProps?: FormHelperTextProps; fullWidth?: boolean; helperText?: React.ReactNode; helperTextClassName?: string; id?: string; inputClassName?: string; InputClassName?: string; InputLabelProps?: InputLabelProps; inputProps?: Object; InputProps?: InputProps; inputRef?: React.Ref; label?: React.ReactElement | string; labelClassName?: string; multiline?: boolean; name?: string; placeholder?: string; required?: boolean; rootRef?: React.Ref; rows?: string | number; rowsMax?: string | number; type?: string; value?: string | number; margin?: MaterialUI.PropTypes.Margin; } & Partial> & FormControlProps; export default class Input extends MaterialUI.Component {} } declare module 'material-ui/Toolbar' { export { default } from 'material-ui/Toolbar/Toolbar'; export * from 'material-ui/Toolbar/Toolbar'; } declare module 'material-ui/Toolbar/Toolbar' { export interface ToolbarProps extends React.HTMLAttributes { disableGutters?: boolean; } export default class Toolbar extends MaterialUI.Component {} } declare module 'material-ui/Typography' { export { default } from 'material-ui/Typography/Typography'; export * from 'material-ui/Typography/Typography'; } declare module 'material-ui/Typography/Typography' { import { Style, TextStyle } from 'material-ui/styles/typography'; export interface TypographyProps extends React.HTMLAttributes { align?: MaterialUI.PropTypes.Alignment; component?: React.ReactNode; color?: MaterialUI.PropTypes.Color | 'secondary'; gutterBottom?: boolean; headlineMapping?: { [type in TextStyle]: string }; noWrap?: boolean; paragraph?: boolean; type?: Style | 'caption' | 'button'; } export default class Typography extends MaterialUI.Component< TypographyProps > {} } /* ============================================= */ /* */ /* COLORS */ /* */ /* ============================================= */ declare module 'material-ui/colors' { export type Contrast = 'light' | 'dark' | 'brown'; export interface Color { 50: string; 100: string; 200: string; 300: string; 400: string; 500: string; 600: string; 700: string; 800: string; 900: string; A100: string; A200: string; A400: string; A700: string; contrastDefaultColor: Contrast; } export const amber: Color; export const blue: Color; export const blueGrey: Color; export const brown: Color; export const cyan: Color; export const deepOrange: Color; export const deepPurple: Color; export const green: Color; export const grey: Color; export const indigo: Color; export const lightBlue: Color; export const lightGreen: Color; export const lime: Color; export const orange: Color; export const pink: Color; export const purple: Color; export const red: Color; export const teal: Color; export const yellow: Color; // From `/common` export const black: string; export const white: string; export const darkBlack: string; export const darkWhite: string; export const faintBlack: string; export const fullBlack: string; export const fullWhite: string; export const lightBlack: string; export const lightWhite: string; export const minBlack: string; export const transparent: string; } /* ============================================= */ /* */ /* INTERNAL */ /* */ /* ============================================= */ declare module 'material-ui/internal' { /** * NOTE: There is much more inside this module, * but not sure if this should be exposed or not. */ } declare module 'material-ui/internal/Backdrop' { export interface BackdropProps { invisible?: boolean; onClick?: React.ReactEventHandler<{}>; [prop: string]: any; } export default class Backdrop extends MaterialUI.Component {} } declare module 'material-ui/internal/ButtonBase' { export interface ButtonBaseProps { centerRipple?: boolean; component?: React.ReactNode; disabled?: boolean; disableRipple?: boolean; focusRipple?: boolean; keyboardFocusedClassName?: string; onBlur?: React.FocusEventHandler<{}>; onClick?: React.MouseEventHandler<{}>; onFocus?: React.FocusEventHandler<{}>; onKeyboardFocus?: React.FocusEventHandler<{}>; onKeyDown?: React.KeyboardEventHandler<{}>; onKeyUp?: React.KeyboardEventHandler<{}>; onMouseDown?: React.MouseEventHandler<{}>; onMouseLeave?: React.MouseEventHandler<{}>; onMouseUp?: React.MouseEventHandler<{}>; onTouchEnd?: React.TouchEventHandler<{}>; onTouchStart?: React.TouchEventHandler<{}>; role?: string; tabIndex?: string; type?: string; } export default class ButtonBase extends MaterialUI.Component< ButtonBaseProps > {} } declare module 'material-ui/internal/Modal' { import { BackdropProps } from 'material-ui/internal/Backdrop'; import { TransitionHandlers } from 'material-ui/internal/Transition'; export type ModalProps = { backdropClassName?: string; backdropComponent?: React.ComponentType; backdropInvisible?: boolean; backdropTransitionDuration?: number; keepMounted?: boolean; disableBackdrop?: boolean; ignoreBackdropClick?: boolean; ignoreEscapeKeyUp?: boolean; modalManager?: Object; onBackdropClick?: React.ReactEventHandler<{}>; onEscapeKeyUp?: React.ReactEventHandler<{}>; onRequestClose?: React.ReactEventHandler<{}>; show?: boolean; } & Partial & React.HtmlHTMLAttributes; export default class Modal extends MaterialUI.Component {} } declare module 'material-ui/internal/Popover' { import { PaperProps } from 'material-ui/Paper/Paper'; import { TransitionHandlers } from 'material-ui/internal/Transition'; export type Origin = { horizontal: 'left' | 'center' | 'right' | number; vertical: 'top' | 'center' | 'bottom' | number; }; export type PopoverProps = { anchorEl?: Object; anchorOrigin?: Origin; elevation?: number; enteredClassName?: string; enteringClassName?: string; exitedClassName?: string; exitingClassName?: string; getContentAnchorEl?: Function; modal?: boolean; onRequestClose?: Function; open?: boolean; role?: string; transformOrigin?: Origin; transitionDuration?: number | 'auto'; theme?: Object; } & Partial & PaperProps; export default class Popover extends MaterialUI.Component {} } declare module 'material-ui/internal/Portal' { export interface PortalProps { open?: boolean; } export default class Portal extends React.Component {} } declare module 'material-ui/internal/SwitchBase' { export interface SwitchBaseProps { checked?: boolean | string; checkedClassName?: string; checkedIcon?: React.ReactNode; defaultChecked?: boolean; disabled?: boolean; disabledClassName?: string; disableRipple?: boolean; icon?: React.ReactNode; indeterminate?: boolean; indeterminateIcon?: React.ReactNode; inputProps?: React.InputHTMLAttributes; inputRef?: React.Ref; name?: string; onChange?: (event: React.ChangeEvent<{}>, checked: boolean) => void; tabIndex?: string; value?: string; } export class SwitchBase extends MaterialUI.Component {} export interface CreateSwitchBaseOptions { defaultIcon?: React.ReactNode; defaultCheckedIcon?: React.ReactNode; inputType?: string; } export default function createSwitch( options: CreateSwitchBaseOptions ): SwitchBase; } declare module 'material-ui/internal/Transition' { export type TransitionCallback = (element: HTMLElement) => void; export type TransitionRequestTimeout = (element: HTMLElement) => number; export type TransitionHandlers = { onEnter: TransitionCallback; onEntering: TransitionCallback; onEntered: TransitionCallback; onExit: TransitionCallback; onExiting: TransitionCallback; onExited: TransitionCallback; }; export interface TransitionProps extends Partial { children?: React.ReactElement; className?: string; enteredClassName?: string; enteringClassName?: string; exitedClassName?: string; exitingClassName?: string; in?: boolean; onRequestTimeout?: TransitionRequestTimeout; timeout?: number; transitionAppear?: boolean; unmountOnExit?: boolean; } export default class Transition extends React.Component {} } /* ============================================= */ /* */ /* STYLES */ /* */ /* ============================================= */ declare module 'material-ui/styles' { export { default as MuiThemeProvider, } from 'material-ui/styles/MuiThemeProvider'; export { default as createBreakpoints } from 'material-ui/styles/breakpoints'; export { default as createMuiTheme } from 'material-ui/styles/theme'; export { default as createPalette } from 'material-ui/styles/palette'; export { default as createTypography } from 'material-ui/styles/typography'; export { default as withStyles } from 'material-ui/styles/withStyles'; export { default as withTheme } from 'material-ui/styles/withTheme'; export { StyleRules, StyleRulesCallback, } from 'material-ui/styles/withStyles'; } declare module 'material-ui/styles/MuiThemeProvider' { import { Theme } from 'material-ui/styles/theme'; export interface MuiThemeProviderProps { theme?: Theme; sheetsManager?: Object; children: React.ReactNode; } export default class MuiThemeProvider extends React.Component< MuiThemeProviderProps > {} } declare module 'material-ui/styles/breakpoints' { export type Breakpoint = 'xs' | 'sm' | 'md' | 'lg' | 'xl'; export type BreakpointMap = { [key in Breakpoint]: number }; export const keys: Breakpoint[]; export interface BreakpointsOptions { breakpoints: BreakpointMap; unit: string; step: number; } export interface Breakpoints { keys: typeof keys; values: number[]; up: (key: Breakpoint) => string; down: (key: Breakpoint) => string; between: (start: Breakpoint, end: Breakpoint) => string; only: (key: Breakpoint) => string; getWidth: (key: Breakpoint) => number; } function createBreakpoints( options?: Partial ): Breakpoints; export default createBreakpoints; } declare module 'material-ui/styles/colorManipulator' { export type ColorFormat = 'rgb' | 'rgba' | 'hsl' | 'hsla'; export type ColorObject = { type: ColorFormat; color: [number, number, number] | [number, number, number, number]; }; export function convertColorToString(color: ColorObject): string; export function convertHexToRGB(hex: string): string; export function decomposeColor(color: string): ColorObject; export function getContrastRatio( foreground: string, background: string ): number; export function getLuminance(color: string): number; export function emphasize(color: string, coefficient?: number): string; export function fade(color: string, value: number): string; export function darken(color: string, coefficient?: number): string; export function lighten(color: string, coefficient?: number): string; } declare module 'material-ui/styles/createGenerateClassName' { /** * FIXME: `jss` TS typings are bad and incomplete ... * So the following typigns are not really good. */ export default function createGenerateClassName(): ( rule: Object, stylesheet?: Object ) => string; } declare module 'material-ui/styles/mixins' { import { Spacing } from 'material-ui/styles/spacing'; import { Breakpoints } from 'material-ui/styles/breakpoints'; export interface Mixins { gutters: (styles: Object) => Object; } export default function createMixins( breakpoints: Breakpoints, spacing: Spacing ): Mixins; } declare module 'material-ui/styles/palette' { import { grey, Color, Contrast } from 'material-ui/colors'; export type Shade = { text: { primary: string; secondary: string; disabled: string; hint: string; icon: string; divider: string; lightDivider: string; }; input: { bottomLine: string; helperText: string; labelText: string; inputText: string; disabled: string; }; action: { active: string; disabled: string; }; background: { default: string; paper: string; appBar: string; contentFrame: string; status: string; }; }; export const light: Shade; export const dark: Shade; type PaletteOptions = { primary: Color; accent: Color; error: Color; type: Contrast; }; export type Palette = { grey: typeof grey; getContrastText: (color: string) => string; } & PaletteOptions & Shade; export default function createPalette( options?: Partial ): Palette; } declare module 'material-ui/styles/shadows' { const shadows: [ 'none', string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string ]; export type Shadows = typeof shadows; export default shadows; } declare module 'material-ui/styles/spacing' { const spacing: { unit: number; }; export type Spacing = typeof spacing; export default spacing; } declare module 'material-ui/styles/theme' { import { Breakpoints } from 'material-ui/styles/breakpoints'; import { Mixins } from 'material-ui/styles/mixins'; import { Palette } from 'material-ui/styles/palette'; import { Shadows } from 'material-ui/styles/shadows'; import { Spacing } from 'material-ui/styles/spacing'; import { Transitions } from 'material-ui/styles/transitions'; import { Typography } from 'material-ui/styles/typography'; import { ZIndex } from 'material-ui/styles/zIndex'; export interface ThemeOptions { breakpoints: Breakpoints; mixins: Mixins; palette: Palette; typography: Typography; } export type Theme = { direction: 'ltr'; shadows: Shadows; spacing: Spacing; transitions: Transitions; zIndex: ZIndex; } & ThemeOptions & T; export default function createMuiTheme( options?: Partial & T ): Theme; } declare module 'material-ui/styles/themeListener' { // This is using this API: https://github.com/vesparny/brcast interface MuiContext { getState(): Object; subscribe(callback: Function): Function; } export interface ThemeListener { contextTypes: { 'material-ui': object; }; initial(context: Object): Object; subscribe(context: Object, callback: Function): Function; } const themeListener: ThemeListener; export default themeListener; } declare module 'material-ui/styles/transitions' { export interface Easing { easeInOut: string; easeOut: string; easeIn: string; sharp: string; } export const easing: Easing; export interface Duration { shortest: number; shorter: number; short: number; standard: number; complex: number; enteringScreen: number; leavingScreen: number; } export const duration: Duration; export function formatMs(milliseconds: number): string; export interface Transitions { easing: Easing; duration: Duration; create( props: string | string[], options?: Partial<{ duration: number; easing: string; delay: number }> ): string; getAutoHeightDuration(height: number): number; } const transitions: Transitions; export default transitions; } declare module 'material-ui/styles/typography' { import { Palette } from 'material-ui/styles/palette'; export type TextStyle = | 'display1' | 'display2' | 'display3' | 'display4' | 'headline' | 'title' | 'subheading' | 'body1' | 'body2' | 'caption'; export type Style = TextStyle | 'button'; export interface FontStyle { fontFamily: string; fontSize: number | string; fontWeightLight: number | string; fontWeightRegular: number | string; fontWeightMedium: number | string; } export interface TypographyStyle { color: string; fontFamily: string; fontSize: number | string; fontWeight: number | string; letterSpacing: string; lineHeight: number | string; } export type Typography = { [type in Style]: TypographyStyle } & FontStyle; function createTypography( palette: Palette, constants?: FontStyle ): Typography; export default createTypography; } declare module 'material-ui/styles/withStyles' { import { Theme } from 'material-ui/styles/theme'; /** * This is basically the API of JSS. It defines a Map, * where * * - the `keys` are the class (names) that will be created * - the `values` are objects that represent CSS rules (`React.CSSProperties`). */ export interface StyleRules { [displayName: string]: Partial; } export type StyleRulesCallback = (theme: Theme) => StyleRules; export interface WithStylesOptions { withTheme?: boolean; name?: string; } const withStyles:

( style: StyleRules | StyleRulesCallback, options?: WithStylesOptions ) => ( component: React.ComponentType

) => React.ComponentClass

; export default withStyles; } declare module 'material-ui/styles/withTheme' { import { Theme } from 'material-ui/styles/theme'; const withTheme:

( component: React.ComponentType

) => React.ComponentClass

; export default withTheme; } declare module 'material-ui/styles/zIndex' { export interface ZIndex { mobileStepper: number; menu: number; appBar: number; drawerOverlay: number; navDrawer: number; dialogOverlay: number; dialog: number; layer: number; popover: number; snackbar: number; tooltip: number; } const zIndex: ZIndex; export default zIndex; } /* ============================================= */ /* */ /* TRANSITIONS */ /* */ /* ============================================= */ declare module 'material-ui/transitions/Collapse' { import { Theme } from 'material-ui/styles/theme'; import { TransitionProps } from 'material-ui/internal/Transition'; export interface CollapseProps extends TransitionProps { theme?: Theme; transitionDuration?: number | string; } export default class Collapse extends MaterialUI.Component {} } declare module 'material-ui/transitions/Fade' { import { Theme } from 'material-ui/styles/theme'; import { TransitionProps } from 'material-ui/internal/Transition'; export interface FadeProps extends TransitionProps { theme?: Theme; enterTransitionDuration?: number; leaveTransitionDuration?: number; } export default class Fade extends MaterialUI.Component {} } declare module 'material-ui/transitions/Slide' { import { Theme } from 'material-ui/styles/theme'; import { TransitionProps } from 'material-ui/internal/Transition'; export interface SlideProps extends TransitionProps { direction?: 'left' | 'right' | 'up' | 'down'; theme?: Theme; enterTransitionDuration?: number; leaveTransitionDuration?: number; } export default class Slide extends MaterialUI.Component {} } /* ============================================= */ /* */ /* TESTING */ /* */ /* ============================================= */ declare module 'material-ui/test-utils' { export { default as createShallow, } from 'material-ui/test-utils/createShallow'; export { default as createMount } from 'material-ui/test-utils/createMount'; export { default as createRender } from 'material-ui/test-utils/createRender'; export { default as getClasses } from 'material-ui/test-utils/getClasses'; } declare module 'material-ui/test-utils/createMount' { import { mount } from 'enzyme'; export interface MountOptions { mount: typeof mount; } export default function createMount( options?: Partial ): typeof mount & { attachTo: HTMLElement; cleanUp: Function; }; } declare module 'material-ui/test-utils/createRender' { import { render } from 'enzyme'; export interface RenderOptions { render: typeof render; } export default function createRender( options?: Partial ): typeof render & { cleanUp: Function }; } declare module 'material-ui/test-utils/createShallow' { import { shallow } from 'enzyme'; export interface ShallowOptions { shallow: typeof shallow; otherContext: Object; dive: boolean; untilSelector: boolean; } export default function createShallow( options?: Partial ): typeof shallow; } declare module 'material-ui/test-utils/getClasses' { export default function getClasses( element: React.ReactElement, options?: Partial<{ withTheme: boolean }> ): T; } declare module 'material-ui/test-utils/until' { import { CommonWrapper } from 'enzyme'; export default function until

( selector: string, options: { context: Object } ): CommonWrapper; } /* ============================================= */ /* */ /* UTILS */ /* */ /* ============================================= */ declare module 'material-ui/utils/addEventListener' { export default function addEventListener( node: Node, event: string, handler: (e: Event) => never, capture?: boolean ): { remove(): void }; } declare module 'material-ui/utils/helpers' { export function capitalizeFirstLetter(str: string): string; export function contains(obj: Object, pred: Object): boolean; export function findIndex(arr: any[], pred: any): number; export function find(arr: T[], pred: any): T; export function createChainedFunction( ...funcs: Function[] ): (...args: any[]) => never; } declare module 'material-ui/utils/keyboardFocus' { export function focusKeyPressed(pressed: boolean): boolean; export function detectKeyboardFocus( instance: { keyboardFocusTimeout: any; keyboardFocusCheckTime: number; keyboardFocusMaxCheckTimes: number; }, element: Element, cb: Function, attempt: number ): never; export function listenForFocusKeys(): never; } declare module 'material-ui/utils/manageAriaHidden' { export function ariaHidden(show: boolean, node: Node): never; export function hideSiblings(container: Element, mountNode: Node): never; export function showSiblings(container: Element, mountNode: Node): never; } declare module 'material-ui/utils/reactHelpers' { export function cloneChildrenWithClassName( children: React.ReactNode, className: string ): T[]; } declare module 'material-ui/utils/requirePropFactory' { // Internal anyway ... export default function requirePropFactory(componentNameInError: string): any; } declare module 'material-ui/utils/withWidth' { import { Breakpoint } from 'material-ui/styles/breakpoints'; export interface WithWidthOptions { resizeInterval: number; } export interface WithWidthEnhancement { width: number; } export function isWidthUp( breakpoint: Breakpoint, screenWidth: number, inclusive?: boolean ): boolean; export default function withWidth

( options?: WithWidthOptions ): ( component: React.ComponentType

) => React.ComponentClass

; }