responsive styled component

PHOTO EMBED

Thu Jun 01 2023 11:52:50 GMT+0000 (Coordinated Universal Time)

Saved by @yarenrkmez

import { css, CSSObject, FlattenSimpleInterpolation } from "styled-components";

interface Size {
  [key: string]: number;
}

interface MediaQueries {
  [key: string]: (style: TemplateStringsArray | CSSObject) => FlattenSimpleInterpolation;
}

const sizes: Size = {
  desktop: 1024,
  tablet: 768,
  phone: 320,
  phoneS: 319,
};

export const mediaQueries: MediaQueries = Object.keys(sizes).reduce((acc, label) => {
  acc[label as keyof Size] = (style: TemplateStringsArray | CSSObject) => css`
    @media (max-width: ${sizes[label as keyof Size]}px) {
      ${css(style)};
    }
  `;
  return acc;
}, {} as MediaQueries);
content_copyCOPY