diff --git a/packages/core/types/stitches.d.ts b/packages/core/types/stitches.d.ts index 82eb3fca..93af895d 100644 --- a/packages/core/types/stitches.d.ts +++ b/packages/core/types/stitches.d.ts @@ -84,7 +84,12 @@ export default interface Stitches< } theme: string & { [Scale in keyof Theme]: { - [Token in keyof Theme[Scale]]: ThemeUtil.Token, string, Extract, Prefix> + [Token in keyof Theme[Scale]]: ThemeUtil.Token< + Extract, + string, + Extract, + Extract + > } } reset: { @@ -146,8 +151,8 @@ export default interface Stitches< [Prelude in keyof Composers[K]]: Prelude extends keyof KnownCSS | 'compoundVariants' | 'defaultVariants' | 'variants' ? unknown - : Composers[K][Prelude] extends {} - ? CSS[Prelude] + : Composers[K][Prelude] extends Record + ? CSS : boolean | number | string } & CSS @@ -157,8 +162,9 @@ export default interface Stitches< } ): StyledComponent.CssComponent< StyledComponent.StyledComponentType, - StyledComponent.StyledComponentProps & { css?: CSS }, - Media + StyledComponent.StyledComponentProps, + Media, + CSS > }, } @@ -166,10 +172,10 @@ export default interface Stitches< type ThemeTokens = { [Scale in keyof Values]: { [Token in keyof Values[Scale]]: ThemeUtil.Token< - Token, + Extract, Values[Scale][Token], - Scale, - Prefix + Extract, + Extract > } } diff --git a/packages/core/types/styled-component.d.ts b/packages/core/types/styled-component.d.ts index 6c0751ff..8f399ead 100644 --- a/packages/core/types/styled-component.d.ts +++ b/packages/core/types/styled-component.d.ts @@ -1,4 +1,3 @@ -import type * as CSSUtil from './css-util' import type * as Default from './default' import type * as Util from './util' @@ -7,39 +6,44 @@ export interface CssComponent< Type = 'span', Props = {}, Media = Default.Media, - TransformedProps = TransformProps, Media> & { css?: Props['css'] } + CSS = {}, + TransformedProps = TransformProps > { ( props?: & TransformedProps + & { + css?: CSS + } & { [name in number | string]: any } ): string & { className: string selector: string - props: object + props: {} } className: string selector: string [$$StyledComponentType]: Type - [$$StyledComponentProps]: Omit + [$$StyledComponentProps]: Props [$$StyledComponentMedia]: Media } export type TransformProps = { - [K in keyof Props]: - K extends 'css' - ? Props['css'] extends CSSUtil.CSS - ? Props['css'] - : CSSUtil.CSS - : - | Props[K] - | { + [K in keyof Props]: ( + | Props[K] + | ( + & { [KMedia in Util.Prefixed<'@', 'initial' | keyof Media>]?: Props[K] } + & { + [KMedia in string]: Props[K] + } + ) + ) } /** Unique symbol used to reference the type of a Styled Component. */ diff --git a/packages/react/types/stitches.d.ts b/packages/react/types/stitches.d.ts index 2e74e8f6..4ac4e2d3 100644 --- a/packages/react/types/stitches.d.ts +++ b/packages/react/types/stitches.d.ts @@ -90,7 +90,12 @@ export default interface Stitches< } theme: string & { [Scale in keyof Theme]: { - [Token in keyof Theme[Scale]]: ThemeUtil.Token, string, Extract, Prefix> + [Token in keyof Theme[Scale]]: ThemeUtil.Token< + Extract, + string, + Extract, + Extract + > } } reset: { @@ -158,8 +163,8 @@ export default interface Stitches< [Prelude in keyof Composers[K]]: Prelude extends keyof KnownCSS | 'compoundVariants' | 'defaultVariants' | 'variants' ? unknown - : Composers[K][Prelude] extends {} - ? CSS[Prelude] + : Composers[K][Prelude] extends Record + ? CSS : boolean | number | string } & CSS @@ -169,8 +174,9 @@ export default interface Stitches< } ): StyledComponent.CssComponent< StyledComponent.StyledComponentType, - StyledComponent.StyledComponentProps & { css?: CSS }, - Media + StyledComponent.StyledComponentProps, + Media, + CSS > }, styled: { @@ -239,8 +245,8 @@ export default interface Stitches< [Prelude in keyof Composers[K]]: Prelude extends keyof KnownCSS | 'compoundVariants' | 'defaultVariants' | 'variants' ? unknown - : Composers[K][Prelude] extends {} - ? CSS[Prelude] + : Composers[K][Prelude] extends Record + ? CSS : boolean | number | string } & CSS @@ -250,10 +256,9 @@ export default interface Stitches< } ): StyledComponent.StyledComponent< Type, - StyledComponent.StyledComponentProps & { - css?: CSS - }, - Media + StyledComponent.StyledComponentProps, + Media, + CSS > } } @@ -261,10 +266,10 @@ export default interface Stitches< type ThemeTokens = { [Scale in keyof Values]: { [Token in keyof Values[Scale]]: ThemeUtil.Token< - Token, + Extract, Values[Scale][Token], - Scale, - Prefix + Extract, + Extract > } } diff --git a/packages/react/types/styled-component.d.ts b/packages/react/types/styled-component.d.ts index 7df0d241..97bc08c5 100644 --- a/packages/react/types/styled-component.d.ts +++ b/packages/react/types/styled-component.d.ts @@ -7,43 +7,54 @@ export interface StyledComponent< Type = 'span', Props = {}, Media = Default.Media, + CSS = {}, TransformedProps = TransformProps > extends React.ForwardRefExoticComponent< Util.Assign< Type extends React.ElementType ? React.ComponentPropsWithRef : never, - TransformedProps & { as?: Type } + TransformedProps & { as?: Type } & { css?: CSS } > > { ( - props: As extends '' - ? { as: keyof JSX.IntrinsicElements } - : As extends React.ComponentType - ? Util.Assign - : As extends keyof JSX.IntrinsicElements - ? Util.Assign - : never + props: ( + As extends '' + ? { as: keyof JSX.IntrinsicElements } + : As extends React.ComponentType + ? Util.Assign + : As extends keyof JSX.IntrinsicElements + ? Util.Assign + : never + ) ): React.ReactElement | null className: string selector: string [$$StyledComponentType]: Type - [$$StyledComponentProps]: Omit + [$$StyledComponentProps]: Props [$$StyledComponentMedia]: Media } +type InferLate = { + [K in keyof Props]: K extends 'css' ? CSS : unknown +} + /** Returns a new CSS Component. */ export interface CssComponent< Type = 'span', Props = {}, Media = Default.Media, + CSS = {}, TransformedProps = TransformProps > { ( props?: & TransformedProps + & { + css?: CSS + } & { [name in number | string]: any } @@ -57,24 +68,20 @@ export interface CssComponent< selector: string [$$StyledComponentType]: Type - [$$StyledComponentProps]: Omit + [$$StyledComponentProps]: Props [$$StyledComponentMedia]: Media } export type TransformProps = { [K in keyof Props]: ( - K extends 'css' - ? Props[K] - : ( - | Props[K] - | ( - & { - [KMedia in Util.Prefixed<'@', 'initial' | keyof Media>]?: Props[K] - } - & { - [KMedia in string]: Props[K] - } - ) + | Props[K] + | ( + & { + [KMedia in Util.Prefixed<'@', 'initial' | keyof Media>]?: Props[K] + } + & { + [KMedia in string]: Props[K] + } ) ) }