UNPKG

@payfit/unity-themes

Version:

95 lines (94 loc) 3.65 kB
import { cnMerge } from 'tailwind-variants'; /** * Unity-configured class name utility function for merging CSS classes. * * This is a pre-configured version of tailwind-variants' `cn` function that includes * Unity's custom tailwind-merge configuration. It automatically handles Unity's custom * class names and resolves conflicts according to Unity design system rules. * @param classes - CSS class names to merge * @returns Merged and deduplicated class string * @example * ```tsx * import { cn } from '@payfit/unity-themes' * * // Basic usage * const className = cn('uy:p-200', 'uy:bg-surface-primary-default') * // → 'uy:p-200 uy:bg-surface-primary-default' * * // Conflict resolution - last class wins * const className = cn('uy:bg-surface-primary-default', 'uy:bg-surface-danger-default') * // → 'uy:bg-surface-danger-default' * * // Conditional classes * const className = cn( * 'uy:px-200 uy:py-100', * isActive && 'uy:bg-surface-primary-default', * isDisabled && 'uy:bg-surface-neutral-disabled' * ) * * // With component props * function Button({ variant, size, className: extraClasses, ...props }) { * return ( * <button * className={cn( * 'uy:px-200 uy:py-100 uy:rounded-100', // base styles * variant === 'primary' && 'uy:bg-surface-primary-default', * variant === 'secondary' && 'uy:bg-surface-neutral-default', * size === 'large' && 'uy:px-300 uy:py-150', * extraClasses // allow override * )} * {...props} * /> * ) * } * ``` * @description * - Automatically merges conflicting Unity classes using Unity's design system rules * - Supports all Unity design tokens: semantic colors, primitive colors, spacing, typography, etc. * - Handles conditional classes (falsy values are ignored) * - Compatible with standard Tailwind classes alongside Unity classes * - Removes duplicate classes and resolves conflicts intelligently * @see {@link uyMerge} for the underlying merge function * @see {@link twMergeConfig} for the Unity merge configuration details */ export declare const cn: (...params: Parameters<typeof cnMerge>) => import('tailwind-variants').CnReturn; /** * Alias for {@link cn} - Unity-configured class name utility function. * * This function is identical to `cn` but provides a more descriptive name * for developers who prefer explicit naming conventions. * @param classes - CSS class names to merge * @returns Merged and deduplicated class string * @example * ```tsx * import { classNames } from '@payfit/unity-themes' * * const buttonClasses = classNames( * 'uy:px-200 uy:py-100', * 'uy:bg-surface-primary-default', * 'uy:text-content-inverted-default' * ) * ``` * @see {@link cn} for detailed documentation and examples */ export declare const classNames: (...params: Parameters<typeof cnMerge>) => import('tailwind-variants').CnReturn; /** * Alias for {@link cn} - Unity-configured class name utility function. * * This function is identical to `cn` but follows the naming convention * popularized by the `clsx` library for developers familiar with that API. * @param classes - CSS class names to merge * @returns Merged and deduplicated class string * @example * ```tsx * import { clsx } from '@payfit/unity-themes' * * const cardClasses = clsx( * 'uy:p-300 uy:rounded-200', * 'uy:bg-surface-neutral-default', * isHighlighted && 'uy:border-border-primary-default' * ) * ``` * @see {@link cn} for detailed documentation and examples */ export declare const clsx: (...params: Parameters<typeof cnMerge>) => import('tailwind-variants').CnReturn;