UNPKG

@gravity-ui/graph

Version:

Modern graph editor component

25 lines (24 loc) 999 B
/** * Utility function for combining CSS class names * Accepts strings, objects with truthy/falsy values, or undefined values * @param classes - Array of class names (strings), conditional classes (objects), or undefined * @returns Combined class names as a single string */ export const cn = (...classes) => { return classes.reduce((acc, curr) => { // Skip undefined values if (!curr) return acc; // Handle string class names if (typeof curr === "string") { return acc ? `${acc} ${curr}` : curr; } // Handle conditional classes (objects with truthy/falsy values) const items = Object.entries(curr) .filter(([_, value]) => value) // Only include classes where value is truthy .map(([key]) => key) // Extract the class name (key) .join(" "); // eslint-disable-next-line no-nested-ternary return items ? (acc ? `${acc} ${items}` : items) : acc; }, ""); };