@re-flex/styles
Version:
Core Style Util Package
24 lines (23 loc) • 1.83 kB
TypeScript
import React, { ComponentProps, ElementType, ForwardedRef, PropsWithoutRef } from "react";
import { SxType } from "./sx";
import Theme from "./Types";
declare type StylesSXType = SxType | SxType[];
declare type StylesGenerator<P extends object = {}> = (props: P) => StylesSXType;
export declare type PropsOf<C extends keyof JSX.IntrinsicElements | React.JSXElementConstructor<any>> = JSX.LibraryManagedAttributes<C, React.ComponentProps<C>>;
declare type GenerateProps<T extends ElementType, P extends object = {}> = PropsOf<T> & P;
declare type RenderClasses<Tag extends ElementType, PP extends object> = StylesSXType | StylesGenerator<GenerateProps<Tag, PP> & {
theme: Theme;
}>;
export declare type DistributiveOmit<T, K extends keyof any> = T extends any ? Omit<T, K> : never;
declare const styledFlex: <Tag extends React.ElementType<any>, Forward extends boolean = false>(Component: Tag, forwardableRef?: Forward, defaultProps?: React.ComponentProps<Tag> & {
sx?: SxType;
}) => <PP extends object = {}>(renderClasses: RenderClasses<Tag, PP>) => (<Alias extends React.ElementType<any>>({ sx: SXInProp, component: ComponentInProp, ...definedProps }: PP & {
className?: string;
component?: Alias;
sx?: SxType;
} & DistributiveOmit<JSX.LibraryManagedAttributes<Alias, React.ComponentProps<Alias>>, JSX.LibraryManagedAttributes<Tag, React.ComponentProps<Tag>>>, ref?: Forward extends true ? React.ForwardedRef<React.PropsWithoutRef<Alias extends React.ElementType<any> ? Alias : Tag>> : never) => JSX.Element) | React.ForwardRefExoticComponent<React.PropsWithoutRef<PP & {
className?: string;
component?: React.ElementType<any>;
sx?: SxType;
} & Omit<any, JSX.LibraryManagedAttributes<Tag, React.ComponentProps<Tag>>>> & React.RefAttributes<React.ElementType<any>>>;
export default styledFlex;