@nex-ui/react
Version:
🎉 A beautiful, modern, and reliable React component library.
32 lines (29 loc) • 845 B
JavaScript
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 };