import { css } from 'styled-components'; type Breakpoint = { cssProp: string; cssPropUnits: string; values: { [key: number]: number }[]; mediaQueryType: 'max-width' | 'min-width' | 'max-height' | 'min-height'; }; export const breakpoints = (breakpoints: Breakpoint) => { const { cssProp, cssPropUnits, values, mediaQueryType } = breakpoints; const breakpointProps = values.reduce((mediaQueries, value) => { const [screenBreakpoint, cssPropBreakpoint] = [Object.keys(value)[0], Object.values(value)[0]]; return (mediaQueries += ` @media screen and (${mediaQueryType}: ${screenBreakpoint}px) { ${cssProp}: ${cssPropBreakpoint}${cssPropUnits}; } `); }, ''); return css` ${breakpointProps} `; };