@nex-ui/react
Version:
🎉 A beautiful, modern, and reliable React component library.
40 lines (37 loc) • 1.3 kB
JavaScript
import { useMemo } from 'react';
import { isPlainObject, isFunction } from '@nex-ui/utils';
import { defineSlotRecipe, defineRecipe, mergeRecipeConfigs } from '@nex-ui/system';
import { useNexUI } from '../provider/Context.mjs';
const useStyles = ({ name, ownerState, recipe })=>{
const { components } = useNexUI();
const styleOverrides = components?.[name]?.styleOverrides;
const extendedRecipe = useMemo(()=>{
if (isPlainObject(styleOverrides)) {
const slotRecipe = recipe;
if (slotRecipe.__slotRecipe) {
// @ts-ignore
return defineSlotRecipe({
extend: slotRecipe,
...styleOverrides
});
}
return defineRecipe({
// @ts-ignore
extend: recipe,
...styleOverrides
});
}
return recipe;
}, [
recipe,
styleOverrides
]);
if (isFunction(styleOverrides)) {
// @ts-ignore
return mergeRecipeConfigs(extendedRecipe(extendedRecipe.splitVariantProps(ownerState)), // @ts-ignore
styleOverrides(ownerState));
}
// @ts-ignore
return extendedRecipe(extendedRecipe.splitVariantProps(ownerState));
};
export { useStyles };