// Definitions by: Junyoung Clare Jang // TypeScript Version: 3.4 import { EmotionCache } from '@emotion/cache' import { ArrayInterpolation, ComponentSelector, CSSInterpolation, CSSObject, FunctionInterpolation, Interpolation, Keyframes, SerializedStyles } from '@emotion/serialize' import { ClassAttributes, Context, Provider, FC, ReactElement, ReactNode, Ref, createElement } from 'react' import { EmotionJSX } from './jsx-namespace' export { ArrayInterpolation, ComponentSelector, CSSObject, EmotionCache, FunctionInterpolation, Interpolation, Keyframes, SerializedStyles } export * from './theming' export * from './helper' // tslint:disable-next-line: no-empty-interface export interface Theme {} export const ThemeContext: Context export const CacheProvider: Provider export function withEmotionCache( func: (props: Props, context: EmotionCache, ref: Ref) => ReactNode ): FC> export function css( template: TemplateStringsArray, ...args: Array ): SerializedStyles export function css(...args: Array): SerializedStyles export interface GlobalProps { styles: Interpolation } /** * @desc * JSX generic are supported only after TS@2.9 */ export function Global(props: GlobalProps): ReactElement export function keyframes( template: TemplateStringsArray, ...args: Array ): Keyframes export function keyframes(...args: Array): Keyframes export interface ArrayClassNamesArg extends Array {} export type ClassNamesArg = | undefined | null | string | boolean | { [className: string]: boolean | null | undefined } | ArrayClassNamesArg export interface ClassNamesContent { css(template: TemplateStringsArray, ...args: Array): string css(...args: Array): string cx(...args: Array): string theme: Theme } export interface ClassNamesProps { children(content: ClassNamesContent): ReactNode } /** * @desc * JSX generic are supported only after TS@2.9 */ export function ClassNames(props: ClassNamesProps): ReactElement export const jsx: typeof createElement export namespace jsx { namespace JSX { type ElementType = EmotionJSX.ElementType interface Element extends EmotionJSX.Element {} interface ElementClass extends EmotionJSX.ElementClass {} interface ElementAttributesProperty extends EmotionJSX.ElementAttributesProperty {} interface ElementChildrenAttribute extends EmotionJSX.ElementChildrenAttribute {} type LibraryManagedAttributes = EmotionJSX.LibraryManagedAttributes< C, P > interface IntrinsicAttributes extends EmotionJSX.IntrinsicAttributes {} interface IntrinsicClassAttributes extends EmotionJSX.IntrinsicClassAttributes {} type IntrinsicElements = EmotionJSX.IntrinsicElements } }