import { type ClassValue, clsx } from 'clsx' import { twMerge } from 'tailwind-merge' export function cn(...inputs: ClassValue[]) { return twMerge(clsx(inputs)) } export function formatDate(date: Date) { return Intl.DateTimeFormat('en-US', { year: 'numeric', month: 'long', day: 'numeric', }).format(date) } export function calculateWordCountFromHtml( html: string | null | undefined, ): number { if (!html) return 0 const textOnly = html.replace(/<[^>]+>/g, '') return textOnly.split(/\s+/).filter(Boolean).length } export function readingTime(wordCount: number): string { const readingTimeMinutes = Math.max(1, Math.round(wordCount / 200)) return `${readingTimeMinutes} min read` } export function getHeadingMargin(depth: number): string { const margins: Record = { 3: 'ml-4', 4: 'ml-8', 5: 'ml-12', 6: 'ml-16', } return margins[depth] || '' } export function capitalizeFirstLetter(val: string): string { return String(val).charAt(0).toUpperCase() + String(val).slice(1) } export const iconMappings: Record = { workshop: 'lucide:hammer', competition: 'lucide:trophy', game: 'lucide:gamepad-2', quiz: 'lucide:brain', community: 'lucide:users', discussion: 'lucide:messages-square', }