export function remToPx(value: string) { return Math.round(parseFloat(value) * 16) } export function pxToRem(value: number) { return `${value / 16}rem` } export function responsiveFontSizes({ sm, md, lg }: { sm: number; md: number; lg: number }) { return { '@media (min-width:600px)': { fontSize: pxToRem(sm), }, '@media (min-width:900px)': { fontSize: pxToRem(md), }, '@media (min-width:1200px)': { fontSize: pxToRem(lg), }, } } export const typography = { h1: { fontWeight: 800, lineHeight: 1.25, fontSize: pxToRem(40), ...responsiveFontSizes({ sm: 40, md: 64, lg: 64 }), }, h2: { fontWeight: 800, lineHeight: 64 / 48, fontSize: pxToRem(32), ...responsiveFontSizes({ sm: 32, md: 48, lg: 48 }), }, h3: { fontWeight: 700, lineHeight: 1.5, fontSize: pxToRem(24), ...responsiveFontSizes({ sm: 24, md: 32, lg: 32 }), }, h4: { fontWeight: 700, lineHeight: 1.5, fontSize: pxToRem(20), ...responsiveFontSizes({ sm: 20, md: 24, lg: 24 }), }, h5: { fontWeight: 700, lineHeight: 1.5, fontSize: pxToRem(18), ...responsiveFontSizes({ sm: 18, md: 20, lg: 20 }), }, h6: { fontWeight: 700, lineHeight: 28 / 18, fontSize: pxToRem(17), ...responsiveFontSizes({ sm: 17, md: 18, lg: 18 }), }, subtitle1: { fontWeight: 600, lineHeight: 1.5, fontSize: pxToRem(16), }, subtitle2: { fontWeight: 600, lineHeight: 22 / 14, fontSize: pxToRem(14), }, body1: { lineHeight: 1.5, fontSize: pxToRem(16), }, body2: { lineHeight: 22 / 14, fontSize: pxToRem(14), }, caption: { lineHeight: 1.5, fontSize: pxToRem(12), }, overline: { fontWeight: 500, lineHeight: 1.3, fontSize: pxToRem(10), letterSpacing: '0.5px', textTransform: 'uppercase', }, button: { fontWeight: 700, lineHeight: 24 / 14, fontSize: pxToRem(14), textTransform: 'unset', }, }