@livelike/react-native
Version:
LiveLike React Native package
31 lines (27 loc) • 768 B
text/typescript
import { useMemo } from 'react';
import { createStyles } from '../utils';
import { useTheme } from './useTheme';
import { LLComponentStyleFn } from '../types';
import { useFonts } from './useFonts';
export type UseStylesArg<TStyles> = {
componentStylesFn: LLComponentStyleFn<TStyles>;
stylesProp?: Partial<TStyles>;
};
export function useStyles<TStyles>({
componentStylesFn,
stylesProp,
}: UseStylesArg<TStyles>): TStyles {
const { theme } = useTheme();
const { fonts } = useFonts();
const componentStyles = useMemo(() => {
return componentStylesFn({ theme, fonts });
}, [theme, componentStylesFn]);
return useMemo(
() =>
createStyles({
componentStyles,
stylesProp,
}),
[componentStyles, stylesProp]
);
}