import { CSSProperties } from './css-properties'
/**
* `glamorousComponentFactory` returns a ComponentClass
*
* @see {@link https://github.com/paypal/glamorous/blob/master/src/create-glamorous.js#L28-L131}
*/
export type GlamorousComponent
= React.ComponentClass
/**
* StaticStyles are objects of CSS Properties.
*
* @see {@link https://github.com/paypal/glamorous/blob/master/src/create-glamorous.js#L28-L131}
*/
export type StaticStyles = Partial
/**
* DynamicStyledFunction generates styles based on props
* and themes.
*
* @see {@link https://github.com/paypal/glamorous/blob/master/src/create-glamorous.js#L28-L131}
*/
export type DynamicStyledFunction = (
props: CustomProps,
theme?: ThemeProps
) => Partial
type Styles = Array | StaticStyles>
// TODO: Using a union for a parameter kills autocomplete so we
// use overloading to give autocomplete on the first two styles
// and retain typesafety on additional styles
// s = StaticStyles, d = DynamicStyledFunction
// s
// s,s
// s,d
// s,d,s
// s,d,d
// s,s,d
// s,s,s
// d
// d,s
// d,d
// d,s,d
// d,s,s
// d,d,s
// d,d,d
export interface ExtraGlamorousProps {
innerRef?: (instance: any) => void;
css?: CSSProperties;
}
export interface StyledFunction {
(
style1: StaticStyles,
...styles: Styles
): GlamorousComponent;
}
export interface StyledFunction {
(
style1: StaticStyles,
style2: StaticStyles,
...styles: Styles
): GlamorousComponent
}
export interface StyledFunction {
(
style1: StaticStyles,
style2: DynamicStyledFunction,
...styles: Styles
): GlamorousComponent
}
export interface StyledFunction {
(
style1: StaticStyles,
style2: DynamicStyledFunction,
style3: StaticStyles,
...styles: Styles
): GlamorousComponent
}
export interface StyledFunction {
(
style1: StaticStyles,
style2: DynamicStyledFunction,
style3: DynamicStyledFunction,
...styles: Styles
): GlamorousComponent
}
export interface StyledFunction {
(
style1: StaticStyles,
style2: StaticStyles,
style3: DynamicStyledFunction,
...styles: Styles
): GlamorousComponent
}
export interface StyledFunction {
(
style1: StaticStyles,
style2: StaticStyles,
style3: StaticStyles,
...styles: Styles
): GlamorousComponent
}
export interface StyledFunction {
(
style1: DynamicStyledFunction,
...styles: Styles
): GlamorousComponent
}
export interface StyledFunction {
(
style1: DynamicStyledFunction,
style2: StaticStyles,
...styles: Styles
): GlamorousComponent
}
export interface StyledFunction {
(
style1: DynamicStyledFunction,
style2: DynamicStyledFunction,
...styles: Styles
): GlamorousComponent
}
export interface StyledFunction {
(
style1: DynamicStyledFunction,
style2: StaticStyles,
style3: DynamicStyledFunction,
...styles: Styles
): GlamorousComponent
}
export interface StyledFunction {
(
style1: DynamicStyledFunction,
style2: StaticStyles,
style3: StaticStyles,
...styles: Styles
): GlamorousComponent
}
export interface StyledFunction {
(
style1: DynamicStyledFunction,
style2: DynamicStyledFunction,
style3: StaticStyles,
...styles: Styles
): GlamorousComponent
}
export interface StyledFunction {
(
style1: DynamicStyledFunction,
style2: DynamicStyledFunction,
style3: DynamicStyledFunction,
...styles: Styles
): GlamorousComponent
}
export type HtmlStyledFunction = StyledFunction, Properties>
export type SvgStyledFunction = StyledFunction, Properties>