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 = { "workshop": "lucide:hammer", "competition": "lucide:trophy", "game": "lucide:gamepad-2", "quiz": "lucide:brain" }