47 lines
1.6 KiB
TypeScript
47 lines
1.6 KiB
TypeScript
import { type ClassValue, clsx } from "clsx";
|
|
import { twMerge } from "tailwind-merge";
|
|
|
|
export function cn(...inputs: ClassValue[]) {
|
|
return twMerge(clsx(inputs));
|
|
}
|
|
|
|
export function formatTimestamp(date: Date): string {
|
|
const hours = date.getHours().toString().padStart(2, '0');
|
|
const minutes = date.getMinutes().toString().padStart(2, '0');
|
|
const seconds = date.getSeconds().toString().padStart(2, '0');
|
|
const ms = date.getMilliseconds().toString().padStart(3, '0');
|
|
return `${hours}:${minutes}:${seconds}.${ms}`;
|
|
}
|
|
|
|
export function getFileIcon(fileName: string): string {
|
|
if (fileName.endsWith('.lua')) return '🎮';
|
|
if (fileName.endsWith('.js') || fileName.endsWith('.jsx')) return '🌐';
|
|
if (fileName.endsWith('.ts') || fileName.endsWith('.tsx')) return '📘';
|
|
if (fileName.endsWith('.html')) return '📄';
|
|
if (fileName.endsWith('.css')) return '🎨';
|
|
if (fileName.endsWith('.json')) return '📋';
|
|
if (fileName.endsWith('.md')) return '📝';
|
|
return '📄';
|
|
}
|
|
|
|
export function getPlatformIcon(platform: string): string {
|
|
switch (platform) {
|
|
case 'roblox': return '🎮';
|
|
case 'web': return '🌐';
|
|
case 'mobile': return '📱';
|
|
case 'desktop': return '🖥️';
|
|
case 'shared': return '🔗';
|
|
default: return '📄';
|
|
}
|
|
}
|
|
|
|
export function getPlatformColor(platform: string): string {
|
|
switch (platform) {
|
|
case 'roblox': return 'text-red-400';
|
|
case 'web': return 'text-blue-400';
|
|
case 'mobile': return 'text-green-400';
|
|
case 'desktop': return 'text-purple-400';
|
|
case 'system': return 'text-gray-400';
|
|
default: return 'text-gray-400';
|
|
}
|
|
}
|