import { Component, FC, ReactElement, ReactNode } from "react"; type BreakpointNames = 'xs' | 'sm' | 'md' | 'lg' | 'xl' type InitialBreakpoints = BreakpointNames | '_initial' type MediaQueries = { [mq in InitialBreakpoints]?: string } type MediaTypeMapping = boolean type IsCalculated = boolean type MediaTypeMap = { [mt in InitialBreakpoints]?: MediaTypeMapping } type Orientation = 'portrait' | 'landscape' | null interface ResponsiveContext { isCalculated: IsCalculated, mediaType: InitialBreakpoints, lessThan: MediaTypeMap, greaterThan: MediaTypeMap, is: MediaTypeMap, orientation: Orientation, } interface IsMobile { isCalculated: IsCalculated, isMobile: MediaTypeMapping, } type Breakpoints = { [bp in BreakpointNames]?: string } interface ResponsiveProps { children: ReactNode, } interface ResponsiveProviderProps { initialMediaType?: InitialBreakpoints, defaultOrientation?: Orientation, children: ReactNode, breakpoints?: Breakpoints, breakpointsMax?: Breakpoints, mediaQueries?: MediaQueries, mobileBreakpoint?: BreakpointNames, } interface WithResponsiveProps { responsive: ResponsiveContext } export const ResponsiveProvider: FC export const useResponsive: () => ResponsiveContext export const Responsive: FC export const withResponsive:

(Component: Component) => (props: P) => ReactElement

export const withIsMobile:

(Component: Component) => (props: P) => ReactElement

export const useIsMobile: () => IsMobile