UNPKG

@nex-ui/react

Version:

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

32 lines (29 loc) • 845 B
import clsx from 'clsx'; import { useMemo } from 'react'; import { kebabCase } from '@nex-ui/utils'; import { generateSlotClass } from './generateSlotClass.mjs'; import { useNexUI } from '../provider/Context.mjs'; const useSlotClasses = ({ name, slots, classNames })=>{ const { prefix } = useNexUI(); return useMemo(()=>{ const root = `${prefix}-${kebabCase(name)}`; return composeClasses(slots, root, classNames); }, [ classNames, name, prefix, slots ]); }; function composeClasses(slots, prefix, classes) { const output = {}; slots.forEach((slot)=>{ const className = classes?.[slot]; output[slot] = clsx([ className, generateSlotClass(prefix, kebabCase(slot)) ]); }); return output; } export { useSlotClasses };