mirror of
https://github.com/idanoo/GoScrobble.git
synced 2024-11-24 17:35:16 +00:00
40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
|
import { Omit, Overwrite } from '@material-ui/types';
|
||
|
import {
|
||
|
CreateCSSProperties,
|
||
|
StyledComponentProps,
|
||
|
WithStylesOptions,
|
||
|
} from '@material-ui/styles/withStyles';
|
||
|
import * as React from 'react';
|
||
|
import { DefaultTheme } from '../defaultTheme';
|
||
|
|
||
|
// We don't want a union type here (like React.ComponentType) in order to support mapped types.
|
||
|
export type StyledComponent<P extends {}> = (props: P) => React.ReactElement<P, any> | null;
|
||
|
|
||
|
/**
|
||
|
* @internal
|
||
|
*/
|
||
|
export type ComponentCreator<Component extends React.ElementType> = <
|
||
|
Theme = DefaultTheme,
|
||
|
Props extends {} = React.ComponentPropsWithoutRef<Component>
|
||
|
>(
|
||
|
styles:
|
||
|
| CreateCSSProperties<Props>
|
||
|
| ((props: { theme: Theme } & Props) => CreateCSSProperties<Props>),
|
||
|
options?: WithStylesOptions<Theme>
|
||
|
) => StyledComponent<
|
||
|
Omit<
|
||
|
JSX.LibraryManagedAttributes<Component, React.ComponentProps<Component>>,
|
||
|
'classes' | 'className'
|
||
|
> &
|
||
|
StyledComponentProps<'root'> &
|
||
|
Overwrite<Props, { className?: string; theme?: Theme }>
|
||
|
>;
|
||
|
|
||
|
export interface StyledProps {
|
||
|
className: string;
|
||
|
}
|
||
|
|
||
|
export default function styled<Component extends React.ElementType>(
|
||
|
Component: Component
|
||
|
): ComponentCreator<Component>;
|