import { ThemedStyledProps, DefaultTheme, CSSObject } from 'styled-components';

export { StyledProps } from 'styled-components';

export type Style<P = {}> = (
  props: ThemedStyledProps<P, DefaultTheme>
) => string | number;

export type Styles<P = {}> = (
  props: ThemedStyledProps<P, DefaultTheme>
) => CSSObject;

export interface Scale<TValue> {
  [id: string]: TValue;
}

export interface Breakpoints<T> {
  sm?: T;
  md?: T;
  lg?: T;
  xl?: T;
}

export type ResponsiveValue<T> = T | Array<T | null> | Breakpoints<T>;
