@re-flex/styles
Version:
Core Style Util Package
27 lines (26 loc) • 904 B
JavaScript
import { useCallback, useMemo } from "react";
import { useTheme } from "./Core";
import { css } from "./Gooberize";
import { sxPropInitializer } from "./sx";
export const makeStyles = (hookSource, sxEnable) => () => {
const theme = useTheme();
const styles = useMemo(() => {
let renderHook = hookSource(theme);
let calculatedClasses = {};
for (const [className, classObj] of Object.entries(renderHook)) {
let extendClassObj = classObj;
if (sxEnable) {
extendClassObj = sxPropInitializer(extendClassObj);
}
calculatedClasses[className] = css(extendClassObj);
}
return calculatedClasses;
}, [theme]);
return styles;
};
export const useThemingCss = () => {
const theme = useTheme();
return useCallback((rule) => {
return css(sxPropInitializer(rule));
}, [theme]);
};