import { PropsWithChildren } from 'react'; import { BreakPointsKeys } from '../../constants'; export type Breakpoint = BreakPointsKeys; export type BreakpointConfig = Record; export type UppercaseBreakpoint = Uppercase>; export interface IBreakpointContext { breakpoint: Breakpoint; breakpointConfig: BreakpointConfig; } export interface BreakpointProviderProps extends PropsWithChildren { breakpointConfig?: BreakpointConfig; } export interface MediaProviderProps extends PropsWithChildren { breakpointConfig?: BreakpointConfig; } export interface BreakpointReturn { breakpoint: Breakpoint; up: (token: Breakpoint) => boolean; down: (token: Breakpoint) => boolean; only: (token: Breakpoint) => boolean; not: (token: Breakpoint) => boolean; between: (start: Breakpoint, end: Breakpoint) => boolean; } export type MediaQuery = (style: TemplateStringsArray | string) => string; declare module 'styled-components' { interface DefaultTheme { media: { up: (token: Breakpoint) => MediaQuery; down: (token: Breakpoint) => MediaQuery; only: (token: Breakpoint) => MediaQuery; not: (token: Breakpoint) => MediaQuery; between: (start: Breakpoint, end: Breakpoint) => MediaQuery; exact: (min: number, max: number) => MediaQuery; }; } }