UNPKG

@nex-ui/react

Version:

🎉 A beautiful, modern, and reliable React component library.

40 lines (37 loc) • 1.3 kB
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 };