{
+ }
+
+ export namespace Styles {
+ interface AutoPrefix {
+ all(styles: React.CSSProperties): React.CSSProperties;
+ set(style: React.CSSProperties, key: string, value: string | number): void;
+ single(key: string): string;
+ singleHyphened(key: string): string;
+ }
+ export var AutoPrefix: AutoPrefix;
+
+ interface Spacing {
+ iconSize?: number;
+
+ desktopGutter?: number;
+ desktopGutterMore?: number;
+ desktopGutterLess?: number;
+ desktopGutterMini?: number;
+ desktopKeylineIncrement?: number;
+ desktopDropDownMenuItemHeight?: number;
+ desktopDropDownMenuFontSize?: number;
+ desktopLeftNavMenuItemHeight?: number;
+ desktopSubheaderHeight?: number;
+ desktopToolbarHeight?: number;
+ }
+ interface ThemePalette {
+ primary1Color?: string;
+ primary2Color?: string;
+ primary3Color?: string;
+ accent1Color?: string;
+ accent2Color?: string;
+ accent3Color?: string;
+ textColor?: string;
+ canvasColor?: string;
+ borderColor?: string;
+ disabledColor?: string;
+ alternateTextColor?: string;
+ }
+ interface MuiTheme {
+ rawTheme: RawTheme;
+ static: boolean;
+ appBar?: {
+ color?: string,
+ textColor?: string,
+ height?: number
+ },
+ avatar?: {
+ borderColor?: string;
+ }
+ button?: {
+ height?: number,
+ minWidth?: number,
+ iconButtonSize?: number
+ },
+ checkbox?: {
+ boxColor?: string,
+ checkedColor?: string,
+ requiredColor?: string,
+ disabledColor?: string,
+ labelColor?: string,
+ labelDisabledColor?: string
+ },
+ datePicker?: {
+ color?: string,
+ textColor?: string,
+ calendarTextColor?: string,
+ selectColor?: string,
+ selectTextColor?: string,
+ },
+ dropDownMenu?: {
+ accentColor?: string,
+ },
+ flatButton?: {
+ color?: string,
+ textColor?: string,
+ primaryTextColor?: string,
+ secondaryTextColor?: string,
+ disabledColor?: string
+ },
+ floatingActionButton?: {
+ buttonSize?: number,
+ miniSize?: number,
+ color?: string,
+ iconColor?: string,
+ secondaryColor?: string,
+ secondaryIconColor?: string,
+ disabledColor?: string,
+ disabledTextColor?: string
+ },
+ inkBar?: {
+ backgroundColor?: string;
+ },
+ leftNav?: {
+ width?: number,
+ color?: string,
+ },
+ listItem?: {
+ nestedLevelDepth?: number;
+ },
+ menu?: {
+ backgroundColor?: string,
+ containerBackgroundColor?: string,
+ },
+ menuItem?: {
+ dataHeight?: number,
+ height?: number,
+ hoverColor?: string,
+ padding?: number,
+ selectedTextColor?: string,
+ },
+ menuSubheader?: {
+ padding?: number,
+ borderColor?: string,
+ textColor?: string,
+ },
+ paper?: {
+ backgroundColor?: string,
+ },
+ radioButton?: {
+ borderColor?: string,
+ backgroundColor?: string,
+ checkedColor?: string,
+ requiredColor?: string,
+ disabledColor?: string,
+ size?: number,
+ labelColor?: string,
+ labelDisabledColor?: string
+ },
+ raisedButton?: {
+ color?: string,
+ textColor?: string,
+ primaryColor?: string,
+ primaryTextColor?: string,
+ secondaryColor?: string,
+ secondaryTextColor?: string,
+ disabledColor?: string,
+ disabledTextColor?: string
+ },
+ refreshIndicator?: {
+ strokeColor?: string;
+ loadingStrokeColor?: string;
+ };
+ slider?: {
+ trackSize?: number,
+ trackColor?: string,
+ trackColorSelected?: string,
+ handleSize?: number,
+ handleSizeActive?: number,
+ handleSizeDisabled?: number,
+ handleColorZero?: string,
+ handleFillColor?: string,
+ selectionColor?: string,
+ rippleColor?: string,
+ },
+ snackbar?: {
+ textColor?: string,
+ backgroundColor?: string,
+ actionColor?: string,
+ },
+ table?: {
+ backgroundColor?: string;
+ };
+ tableHeader?: {
+ borderColor?: string;
+ };
+ tableHeaderColumn?: {
+ textColor?: string;
+ };
+ tableFooter?: {
+ borderColor?: string;
+ textColor?: string;
+ };
+ tableRow?: {
+ hoverColor?: string;
+ stripeColor?: string;
+ selectedColor?: string;
+ textColor?: string;
+ borderColor?: string;
+ };
+ tableRowColumn?: {
+ height?: number;
+ spacing?: number;
+ };
+ timePicker?: {
+ color?: string;
+ textColor?: string;
+ accentColor?: string;
+ clockColor?: string;
+ selectColor?: string;
+ selectTextColor?: string;
+ };
+ toggle?: {
+ thumbOnColor?: string,
+ thumbOffColor?: string,
+ thumbDisabledColor?: string,
+ thumbRequiredColor?: string,
+ trackOnColor?: string,
+ trackOffColor?: string,
+ trackDisabledColor?: string,
+ trackRequiredColor?: string,
+ labelColor?: string,
+ labelDisabledColor?: string
+ },
+ toolbar?: {
+ backgroundColor?: string,
+ height?: number,
+ titleFontSize?: number,
+ iconColor?: string,
+ separatorColor?: string,
+ menuHoverColor?: string,
+ };
+ tabs?: {
+ backgroundColor?: string;
+ };
+ textField?: {
+ textColor?: string;
+ hintColor?: string;
+ floatingLabelColor?: string;
+ disabledTextColor?: string;
+ errorColor?: string;
+ focusColor?: string;
+ backgroundColor?: string;
+ borderColor?: string;
+ };
+ }
+
+ interface RawTheme {
+ spacing: Spacing;
+ fontFamily?: string;
+ palette: ThemePalette;
+ }
+
+ export function ThemeDecorator(muiTheme: Styles.MuiTheme): (Component: React.ComponentClass
) => React.ComponentClass
;
+
+ interface ThemeManager {
+ getMuiTheme(rawTheme: RawTheme): MuiTheme;
+ modifyRawThemeSpacing(muiTheme: MuiTheme, newSpacing: Spacing): MuiTheme;
+ modifyRawThemePalette(muiTheme: MuiTheme, newPaletteKeys: ThemePalette): MuiTheme;
+ modifyRawThemeFontFamily(muiTheme: MuiTheme, newFontFamily: string): MuiTheme;
+ }
+ export var ThemeManager: ThemeManager;
+
+ interface Transitions {
+ easeOut(duration?: string, property?: string | string[], delay?: string, easeFunction?: string): string;
+ create(duration?: string, property?: string, delay?: string, easeFunction?: string): string;
+ easeOutFunction: string;
+ easeInOutFunction: string;
+ }
+ export var Transitions: Transitions;
+
+ interface Typography {
+ textFullBlack:string;
+ textDarkBlack: string;
+ textLightBlack: string;
+ textMinBlack: string;
+ textFullWhite: string;
+ textDarkWhite: string;
+ textLightWhite: string;
+
+ // font weight
+ fontWeightLight: number;
+ fontWeightNormal: number;
+ fontWeightMedium: number;
+
+ fontStyleButtonFontSize: number;
+ }
+ export var Typography: Typography;
+
+ export var DarkRawTheme: RawTheme;
+ export var LightRawTheme: RawTheme;
+ }
+
+ interface SnackbarProps extends React.Props {
+ message: string;
+ action?: string;
+ autoHideDuration?: number;
+ onActionTouchTap?: React.TouchEventHandler;
+ onShow?: () => void;
+ onDismiss?: () => void;
+ openOnMount?: boolean;
+ }
+ export class Snackbar extends React.Component {
+ }
+
+ namespace Tabs {
+ interface TabProps extends React.Props {
+ label?: string;
+ value?: string;
+ selected?: boolean;
+ width?: string;
+
+ // Called by Tabs component
+ onActive?: (tab: Tab) => void;
+
+ onTouchTap?: (value: string, e: TouchTapEvent, tab: Tab) => void;
+ }
+ export class Tab extends React.Component {
+ }
+
+ interface TabsProps extends React.Props {
+ contentContainerStyle?: React.CSSProperties;
+ initialSelectedIndex?: number;
+ inkBarStyle?: React.CSSProperties;
+ style?: React.CSSProperties;
+ tabItemContainerStyle?: React.CSSProperties;
+ tabWidth?: number;
+ value?: string | number;
+
+ onChange?: (value: string | number, e: React.FormEvent, tab: Tab) => void;
+ }
+ export class Tabs extends React.Component {
+ }
+ }
+
+ namespace Table {
+ interface TableProps extends React.Props {
+ allRowsSelected?: boolean;
+ fixedFooter?: boolean;
+ fixedHeader?: boolean;
+ height?: string;
+ multiSelectable?: boolean;
+ onCellClick?: (row: number, column: number) => void;
+ onCellHover?: (row: number, column: number) => void;
+ onCellHoverExit?: (row: number, column: number) => void;
+ onRowHover?: (row: number) => void;
+ onRowHoverExit?: (row: number) => void;
+ onRowSelection?: (selectedRows: number[])=> void;
+ selectable?: boolean;
+ }
+ export class Table extends React.Component {
+ }
+
+ interface TableBodyProps extends React.Props {
+ allRowsSelected?: boolean;
+ deselectOnClickaway?: boolean;
+ displayRowCheckbox?: boolean;
+ multiSelectable?: boolean;
+ onCellClick?: (row: number, column: number) => void;
+ onCellHover?: (row: number, column: number) => void;
+ onCellHoverExit?: (row: number, column: number) => void;
+ onRowHover?: (row: number) => void;
+ onRowHoverExit?: (row: number) => void;
+ onRowSelection?: (selectedRows: number[])=> void;
+ preScanRows?: boolean;
+ selectable?: boolean;
+ showRowHover?: boolean;
+ stripedRows?: boolean;
+ }
+ export class TableBody extends React.Component {
+ }
+
+ interface TableFooterProps extends React.Props {
+ adjustForCheckbox?: boolean;
+ }
+ export class TableFooter extends React.Component {
+ }
+
+ interface TableHeaderProps extends React.Props {
+ adjustForCheckbox?: boolean;
+ displaySelectAll?: boolean;
+ enableSelectAll?: boolean;
+ onSelectAll?: (event: React.MouseEvent) => void;
+ selectAllSelected?: boolean;
+ }
+ export class TableHeader extends React.Component {
+ }
+
+ interface TableHeaderColumnProps extends React.Props {
+ columnNumber?: number;
+ onClick?: (e: React.MouseEvent, column: number) => void;
+ tooltip?: string;
+ tooltipStyle?: React.CSSProperties;
+ }
+ export class TableHeaderColumn extends React.Component {
+ }
+
+ interface TableRowProps extends React.Props {
+ displayBorder?: boolean;
+ hoverable?: boolean;
+ onCellClick?: (e: React.MouseEvent, row: number, column: number) => void;
+ onCellHover?: (e: React.MouseEvent, row: number, column: number) => void;
+ onCellHoverExit?: (e: React.MouseEvent, row: number, column: number) => void;
+ onRowClick?: (e: React.MouseEvent, row: number) => void;
+ onRowHover?: (e: React.MouseEvent, row: number) => void;
+ onRowHoverExit?: (e: React.MouseEvent, row: number) => void;
+ rowNumber?: number;
+ selectable?: boolean;
+ selected?: boolean;
+ striped?: boolean;
+ }
+ export class TableRow extends React.Component {
+ }
+
+ interface TableRowColumnProps extends React.Props {
+ columnNumber?: number;
+ hoverable?: boolean;
+ onHover?: (e: React.MouseEvent, column: number) => void;
+ onHoverExit?: (e: React.MouseEvent, column: number) => void;
+ }
+ export class TableRowColumn extends React.Component {
+ }
+ }
+
+ interface ThemeWrapperProps extends React.Props {
+ theme: Styles.MuiTheme;
+ }
+ export class ThemeWrapper extends React.Component {
+ }
+
+ interface ToggleProps extends CommonEnhancedSwitchProps {
+ // is root element
+
+ elementStyle?: React.CSSProperties;
+ labelStyle?: React.CSSProperties;
+ onToggle?: (e: React.MouseEvent, isInputChecked: boolean) => void;
+ toggled?: boolean;
+ defaultToggled?: boolean;
+ }
+ export class Toggle extends React.Component {
+ isToggled(): boolean;
+ setToggled(newToggledValue: boolean): void;
+ }
+
+ interface TimePickerProps extends React.Props {
+ defaultTime?: Date;
+ format?: string;
+ pedantic?: boolean;
+ onFocus?: React.FocusEventHandler;
+ onTouchTap?: TouchTapEventHandler;
+ onChange?: (e: any, time: Date) => void;
+ onShow?: () => void;
+ onDismiss?: () => void;
+ }
+ export class TimePicker extends React.Component {
+ }
+
+ interface TextFieldProps extends React.Props {
+ errorStyle?: React.CSSProperties;
+ errorText?: string;
+ floatingLabelText?: string;
+ floatingLabelStyle?: React.CSSProperties;
+ fullWidth?: boolean;
+ hintText?: string | React.ReactElement;
+ id?: string;
+ inputStyle?: React.CSSProperties;
+ multiLine?: boolean;
+ onEnterKeyDown?: React.KeyboardEventHandler;
+ style?: React.CSSProperties;
+ rows?: number,
+ underlineStyle?: React.CSSProperties;
+ underlineFocusStyle?: React.CSSProperties;
+ underlineDisabledStyle?: React.CSSProperties;
+ type?: string;
+
+ disabled?: boolean;
+ isRtl?: boolean;
+ value?: string;
+ defaultValue?: string;
+ valueLink?: ReactLink;
+
+ onBlur?: React.FocusEventHandler;
+ onChange?: React.FormEventHandler;
+ onFocus?: React.FocusEventHandler;
+ onKeyDown?: React.KeyboardEventHandler;
+ }
+ export class TextField extends React.Component {
+ blur(): void;
+ clearValue(): void;
+ focus(): void;
+ getValue(): string;
+ setErrorText(newErrorText: string): void;
+ setValue(newValue: string): void;
+ }
+
+ namespace Toolbar {
+ interface ToolbarProps extends React.Props {
+ }
+ export class Toolbar extends React.Component {
+ }
+
+ interface ToolbarGroupProps extends React.Props {
+ float?: string;
+ }
+ export class ToolbarGroup extends React.Component {
+ }
+
+ interface ToolbarSeparatorProps extends React.Props {
+ }
+ export class ToolbarSeparator extends React.Component {
+ }
+
+ interface ToolbarTitleProps extends React.HTMLAttributesBase {
+ text?: string;
+ }
+ export class ToolbarTitle extends React.Component {
+ }
+ }
+
+ interface TooltipProps extends React.Props {
+ label: string;
+ show?: boolean;
+ touch?: boolean;
+ verticalPosition?: string;
+ horizontalPosition?: string;
+ }
+ export class Tooltip extends React.Component {
+ }
+
+ export namespace Utils {
+ interface ContrastLevel {
+ range: [number, number];
+ color: string;
+ }
+ interface ColorManipulator {
+ fade(color: string, amount: string|number): string;
+ lighten(color: string, amount: string|number): string;
+ darken(color: string, amount: string|number): string;
+ contrastRatio(background: string, foreground: string): number;
+ contrastRatioLevel(background: string, foreground: string): ContrastLevel;
+ }
+ export var ColorManipulator: ColorManipulator;
+
+ interface CssEvent {
+ transitionEndEventName(): string;
+ animationEndEventName(): string;
+ onTransitionEnd(el: Element, callback: () => void): void;
+ onAnimationEnd(el: Element, callback: () => void): void;
+ }
+ export var CssEvent: CssEvent;
+
+ interface Dom {
+ isDescendant(parent: Node, child: Node): boolean;
+ offset(el: Element): { top: number, left: number };
+ getStyleAttributeAsNumber(el: HTMLElement, attr: string): number;
+ addClass(el: Element, className: string): void;
+ removeClass(el: Element, className: string): void;
+ hasClass(el: Element, className: string): boolean;
+ toggleClass(el: Element, className: string): void;
+ forceRedraw(el: HTMLElement): void;
+ withoutTransition(el: HTMLElement, callback: () => void): void;
+ }
+ export var Dom: Dom;
+
+ interface Events {
+ once(el: Element, type: string, callback: EventListener): void;
+ on(el: Element, type: string, callback: EventListener): void;
+ off(el: Element, type: string, callback: EventListener): void;
+ isKeyboard(e: Event): boolean;
+ }
+ export var Events: Events;
+
+ function Extend(base: T, override: S1): (T & S1);
+
+ interface ImmutabilityHelper {
+ merge(base: any, ...args: any[]): any;
+ mergeItem(obj: any, key: any, newValueObject: any): any;
+ push(array: any[], obj: any): any[];
+ shift(array: any[]): any[];
+ }
+ export var ImmutabilityHelper: ImmutabilityHelper;
+
+ interface KeyCode {
+ DOWN: number;
+ ESC: number;
+ ENTER: number;
+ LEFT: number;
+ RIGHT: number;
+ SPACE: number;
+ TAB: number;
+ UP: number;
+ }
+ var KeyCode: KeyCode;
+
+ interface KeyLine {
+ Desktop: {
+ GUTTER: number;
+ GUTTER_LESS: number;
+ INCREMENT: number;
+ MENU_ITEM_HEIGHT: number;
+ };
+
+ getIncrementalDim(dim: number): number;
+ }
+ export var KeyLine: KeyLine;
+
+ interface UniqueId {
+ generate(): string;
+ }
+ export var UniqueId: UniqueId;
+
+ interface Styles {
+ mergeAndPrefix(base: any, ...args: any[]): React.CSSProperties;
+ }
+ export var Styles: Styles;
+ }
+
+ // New menus available only through requiring directly to the end file
+ namespace Menus {
+ interface IconMenuProps extends React.Props {
+ closeOnItemTouchTap?: boolean;
+ desktop?: boolean;
+ iconButtonElement: React.ReactElement;
+ openDirection?: string;
+ menuStyle?: React.CSSProperties;
+ multiple?: boolean;
+ value?: string | Array;
+ width?: string | number;
+ touchTapCloseDelay?: number;
+
+ onKeyboardFocus?: React.FocusEventHandler;
+ onItemTouchTap?: (e: TouchTapEvent, item: React.ReactElement) => void;
+ onChange?: (e: React.FormEvent, value: string | Array) => void;
+ }
+ export class IconMenu extends React.Component {
+ }
+
+ interface MenuProps extends React.Props