import { type ClassValue, clsx } from 'clsx'; /** * Utility function to merge class names * Combines clsx for conditional classes */ export function cn(...inputs: ClassValue[]): string { return clsx(inputs); } /** * Format currency value */ export function formatCurrency(value: number): string { return new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD', minimumFractionDigits: 0, maximumFractionDigits: 0, }).format(value); } /** * Format number with commas */ export function formatNumber(value: number): string { return new Intl.NumberFormat('en-US').format(value); } /** * Debounce function */ export function debounce unknown>( func: T, wait: number ): (...args: Parameters) => void { let timeout: ReturnType | null = null; return function executedFunction(...args: Parameters) { const later = () => { timeout = null; func(...args); }; if (timeout !== null) { clearTimeout(timeout); } timeout = setTimeout(later, wait); }; } /** * Calculate total device count */ export function getTotalDevices(devices: { workstations: number; laptops: number; servers: number; networkDevices: number; mobileDevices: number; }): number { return ( devices.workstations + devices.laptops + devices.servers + devices.networkDevices + devices.mobileDevices ); }