import type { StyleRule } from "@vanilla-extract/css"; import { pxToRem } from "./pxToRem"; /** * Recursively navigates a vanilla-extract StyleRule and applies * pxToRem on every pixel value in every string property value * it can find. */ export function rem(styleRule: T): T { return Object.keys(styleRule) .reduce((acc, key) => { switch (typeof styleRule[key]) { case "object": acc[key] = rem(styleRule[key]); break; case "string": acc[key] = styleRule[key].replace(/[\d.]+px/g, pxToRem); break; default: acc[key] = styleRule[key]; } return acc; }, {} as T); }