39 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import * as React from 'react';
 | 
						|
import { Theme } from './createMuiTheme';
 | 
						|
 | 
						|
/**
 | 
						|
   * This is basically the API of JSS. It defines a Map<string, CSS>,
 | 
						|
   * where
 | 
						|
   *
 | 
						|
   * - the `keys` are the class (names) that will be created
 | 
						|
   * - the `values` are objects that represent CSS rules (`React.CSSProperties`).
 | 
						|
   */
 | 
						|
export type StyleRules<ClassKey extends string = string> = Record<ClassKey, Partial<React.CSSProperties>>;
 | 
						|
 | 
						|
export type StyleRulesCallback<ClassKey extends string = string> = (theme: Theme) => StyleRules<ClassKey>;
 | 
						|
 | 
						|
export interface WithStylesOptions {
 | 
						|
  flip?: boolean;
 | 
						|
  withTheme?: boolean;
 | 
						|
  name?: string;
 | 
						|
}
 | 
						|
 | 
						|
export type ClassNameMap<ClassKey extends string = string> = Record<ClassKey, string>;
 | 
						|
 | 
						|
export interface WithStyles<ClassKey extends string = string> {
 | 
						|
  classes: ClassNameMap<ClassKey>
 | 
						|
  theme?: Theme
 | 
						|
}
 | 
						|
 | 
						|
export interface StyledComponentProps<ClassKey extends string = string> {
 | 
						|
  classes?: Partial<ClassNameMap<ClassKey>>;
 | 
						|
  innerRef?: React.Ref<any>;
 | 
						|
}
 | 
						|
 | 
						|
export default function withStyles<ClassKey extends string>(
 | 
						|
  style: StyleRules<ClassKey> | StyleRulesCallback<ClassKey>,
 | 
						|
  options?: WithStylesOptions
 | 
						|
): <P>(
 | 
						|
  component: React.ComponentType<P & WithStyles<ClassKey>>
 | 
						|
) => React.ComponentType<P & StyledComponentProps<ClassKey>>;
 |