// Type definitions for Glamorous v3.2.0 // Project: https://github.com/paypal/glamorous // Definitions by: Kok Sam import * as React from 'react' import { HTMLComponentFactory, HTMLKey, SVGComponentFactory, SVGKey, } from './built-in-component-factories' import { GlamorousComponent, ExtraGlamorousProps, WithComponent, WithProps, } from './glamorous-component' import { BuiltInGlamorousComponentFactory, KeyGlamorousComponentFactory, KeyGlamorousComponentFactoryCssOverides, GlamorousComponentFactory, GlamorousComponentFactoryCssOverides, } from './component-factory' import { CSSProperties, CSSPropertiesCompleteSingle, CSSPropertiesComplete, CSSPropertiesPseudo, CSSPropertiesLossy, } from './css-properties' import { SVGProperties, SVGPropertiesCompleteSingle, SVGPropertiesComplete, SVGPropertiesLossy, } from './svg-properties' import { StyleFunction, StyleArray, StyleArgument, } from './style-arguments' import { Omit } from './helpers' export { CSSProperties, CSSPropertiesCompleteSingle, CSSPropertiesComplete, CSSPropertiesPseudo, CSSPropertiesLossy, SVGProperties, SVGPropertiesCompleteSingle, SVGPropertiesComplete, SVGPropertiesLossy, GlamorousComponent, ExtraGlamorousProps, WithComponent, WithProps, StyleFunction, StyleArray, StyleArgument, BuiltInGlamorousComponentFactory, KeyGlamorousComponentFactory, KeyGlamorousComponentFactoryCssOverides, GlamorousComponentFactory, GlamorousComponentFactoryCssOverides, HTMLComponentFactory, HTMLKey, SVGComponentFactory, SVGKey, } export interface GlamorousOptions { displayName: string rootEl: string | Element forwardProps: String[] shouldClassNameUpdate: (props: Props, prevProps: Props, context: Context, prevContext: Context) => boolean propsAreCssOverrides?: false withProps: DefaultProps } export interface PropsAreCssOverridesGlamorousOptions { displayName?: string rootEl?: string | Element forwardProps?: String[] shouldClassNameUpdate?: (props: Props, prevProps: Props, context: Context, prevContext: Context) => boolean propsAreCssOverrides: true withProps?: DefaultProps } export type Component = React.ComponentClass | React.StatelessComponent type OmitInternals< Props extends { className?: string, theme?: object } > = Omit type GlamorousProps = { className?: string, theme?: object } export interface GlamorousInterface extends HTMLComponentFactory, SVGComponentFactory { // # Glamarous Component factories // Two overloads are needed per shape due to a union return of CSSProperties | SVGProperties // resulting in a loss of typesafety on function arguments // ## create a component factory from your own component ( component: Component, options?: Partial>, ): GlamorousComponentFactory ( component: Component, options?: Partial>, ): GlamorousComponentFactory ( component: Component, options?: PropsAreCssOverridesGlamorousOptions, ): GlamorousComponentFactoryCssOverides ( component: Component, options?: PropsAreCssOverridesGlamorousOptions, ): GlamorousComponentFactoryCssOverides // ## create a component factory from a dom tag ( component: HTMLKey, options?: Partial>, ): KeyGlamorousComponentFactory< HTMLComponentFactory[HTMLKey], CSSProperties, ExternalProps, DefaultProps > ( component: SVGKey, options?: Partial>, ): KeyGlamorousComponentFactory< SVGComponentFactory[SVGKey], SVGProperties, ExternalProps, DefaultProps > ( component: HTMLKey, options?: PropsAreCssOverridesGlamorousOptions, ): KeyGlamorousComponentFactoryCssOverides< HTMLComponentFactory[HTMLKey], CSSProperties, ExternalProps, DefaultProps > ( component: SVGKey, options?: PropsAreCssOverridesGlamorousOptions, ): KeyGlamorousComponentFactoryCssOverides< SVGComponentFactory[SVGKey], SVGProperties, ExternalProps, DefaultProps > Div: React.StatelessComponent Svg: React.StatelessComponent } interface ThemeProps { theme: object } export class ThemeProvider extends React.Component { } export function withTheme( component: React.ComponentClass ): React.ComponentClass< Omit > export function withTheme( component: React.StatelessComponent ): React.StatelessComponent< Omit > declare const glamorous: GlamorousInterface export default glamorous