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