Spaces:
Paused
Paused
File size: 2,399 Bytes
56c7b6d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | import clsx from 'clsx';
import { twMerge } from 'tailwind-merge';
export function cn(...inputs: any[]) {
return twMerge(clsx(inputs));
}
export function truncate(str: string, length: number = 100): string {
if (str.length <= length) return str;
return str.slice(0, length) + '...';
}
export function formatDate(date: Date | string): string {
const d = typeof date === 'string' ? new Date(date) : date;
return d.toLocaleDateString('en-US', {
year: 'numeric',
month: 'short',
day: 'numeric',
});
}
export function formatTime(date: Date | string): string {
const d = typeof date === 'string' ? new Date(date) : date;
return d.toLocaleTimeString('en-US', {
hour: '2-digit',
minute: '2-digit',
});
}
export function downloadFile(blob: Blob, filename: string): void {
const url = window.URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = url;
link.download = filename;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
window.URL.revokeObjectURL(url);
}
export function formatFileSize(bytes: number): string {
if (bytes === 0) return '0 Bytes';
const k = 1024;
const sizes = ['Bytes', 'KB', 'MB', 'GB'];
const i = Math.floor(Math.log(bytes) / Math.log(k));
return Math.round((bytes / Math.pow(k, i)) * 100) / 100 + ' ' + sizes[i];
}
export function formatNumber(num: number): string {
return new Intl.NumberFormat('en-US').format(num);
}
export function getInitials(name: string): string {
return name
.split(' ')
.map((n) => n[0])
.join('')
.toUpperCase()
.slice(0, 2);
}
export async function readFileAsArrayBuffer(file: File): Promise<ArrayBuffer> {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = (e) => {
if (e.target?.result instanceof ArrayBuffer) {
resolve(e.target.result);
} else {
reject(new Error('Failed to read file'));
}
};
reader.onerror = () => reject(new Error('File read error'));
reader.readAsArrayBuffer(file);
});
}
export const COLORS = {
primary: '#22c55e', // emerald-500
primaryDark: '#15803d', // emerald-700
background: '#0A0E27',
backgroundLight: '#1a1f3a',
text: '#f8fafc',
textMuted: '#cbd5e1',
border: '#334155',
success: '#22c55e',
error: '#ef4444',
warning: '#f59e0b',
info: '#3b82f6',
};
|