import {GlamorousComponent} from './glamorous-component' import {Omit} from './helpers' import {StyleArgument, StaticStyleArgument} from './style-arguments' // # built-in DOM - component factories glamorous.div export interface BuiltInGlamorousComponentFactory { (...styles: StaticStyleArgument[]): GlamorousComponent< ElementProps, object > ( ...styles: StyleArgument[] ): GlamorousComponent & ElementProps, Props> (...styles: StyleArgument[]): GlamorousComponent< Props & ElementProps, Props > } // # dom tag - component factories glamorous('div') // ## without propsAreCssOverides export interface KeyGlamorousComponentFactory< ElementProps, Properties, ExternalProps, DefaultProps > { (...styles: StaticStyleArgument[]): GlamorousComponent< ElementProps & ExternalProps & Partial, ExternalProps > ( ...styles: StyleArgument[] ): GlamorousComponent< ElementProps & ExternalProps & Partial & Omit & Props, ExternalProps > ( ...styles: StyleArgument[] ): GlamorousComponent< ElementProps & ExternalProps & Partial & Props, ExternalProps > } // ## with propsAreCssOverides export interface KeyGlamorousComponentFactoryCssOverides< ElementProps, Properties, ExternalProps, DefaultProps > { (...styles: StaticStyleArgument[]): GlamorousComponent< ElementProps & ExternalProps & Partial & Properties, ExternalProps > ( ...styles: StyleArgument[] ): GlamorousComponent< ElementProps & ExternalProps & Partial & Omit & Properties, ExternalProps > ( ...styles: StyleArgument[] ): GlamorousComponent< ElementProps & ExternalProps & Partial & Props & Properties, ExternalProps > } // # react component - component factories glamorous(Component) // ## without propsAreCssOverides export interface GlamorousComponentFactory< ExternalProps, Properties, DefaultProps > { (...styles: StaticStyleArgument[]): GlamorousComponent< ExternalProps & Partial, object > ( ...styles: StyleArgument[] ): GlamorousComponent< ExternalProps & Partial & Omit, Props > ( ...styles: StyleArgument[] ): GlamorousComponent & Props, Props> } // ## with propsAreCssOverides export interface GlamorousComponentFactoryCssOverides< ExternalProps, Properties, DefaultProps > { (...styles: StaticStyleArgument[]): GlamorousComponent< ExternalProps & Partial & Properties, object > ( ...styles: StyleArgument[] ): GlamorousComponent< ExternalProps & Partial & Properties & Omit, Props > ( ...styles: StyleArgument[] ): GlamorousComponent< ExternalProps & Partial & Properties & Props, Props > }