@winglet/style-utils
Version:
Comprehensive CSS and style management utilities including className manipulation, CSS compression, and universal style manager for TypeScript projects
30 lines (29 loc) • 1.16 kB
TypeScript
import type { ClassValue } from './type';
/**
* Concatenates CSS class names conditionally, similar to clsx/classnames but more lightweight.
* Accepts various input types including strings, numbers, arrays, and objects.
* Filters out falsy values and handles nested structures recursively.
*
* @param args - Variable number of class value arguments that can be strings, numbers, arrays, or objects
* @returns A single concatenated string of class names, separated by spaces
*
* @example
* ```typescript
* // String and number inputs
* cx('btn', 'primary') // 'btn primary'
* cx('btn', 123) // 'btn 123'
*
* // Conditional classes with falsy values
* cx('btn', false && 'hidden', null, undefined, 'active') // 'btn active'
*
* // Object notation for conditional classes
* cx('btn', { 'btn-primary': true, 'btn-disabled': false }) // 'btn btn-primary'
*
* // Array inputs with nesting
* cx(['btn', 'primary'], ['large', false && 'hidden']) // 'btn primary large'
*
* // Mixed inputs
* cx('btn', { primary: true }, ['large'], null, 'active') // 'btn primary large active'
* ```
*/
export declare const cx: (...args: ClassValue[]) => string;