import { clsx, type ClassValue } from 'clsx'; | |
import { twMerge } from 'tailwind-merge'; | |
export function cn(...inputs: ClassValue[]) { | |
return twMerge(clsx(inputs)); | |
} | |
export function formatBytes( | |
bytes: number, | |
opts: { | |
decimals?: number; | |
sizeType?: 'accurate' | 'normal'; | |
} = {}, | |
) { | |
const { decimals = 0, sizeType = 'normal' } = opts; | |
const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB']; | |
const accurateSizes = ['Bytes', 'KiB', 'MiB', 'GiB', 'TiB']; | |
if (bytes === 0) return '0 Byte'; | |
const i = Math.floor(Math.log(bytes) / Math.log(1024)); | |
return `${(bytes / Math.pow(1024, i)).toFixed(decimals)} ${ | |
sizeType === 'accurate' ? accurateSizes[i] ?? 'Bytes' : sizes[i] ?? 'Bytes' | |
}`; | |
} | |