import * as React from "react" import { clsx, type ClassValue } from "clsx" import { twMerge } from "tailwind-merge" export function cn(...inputs: ClassValue[]) { return twMerge(clsx(inputs)) } export function useIsMobileScreen(breakpoint?: string) { const [isMobileScreen, setIsMobileScreen] = React.useState(false) React.useEffect(() => { const mql = window.matchMedia(`(max-width: ${breakpoint ?? "768px"})`) setIsMobileScreen(mql.matches) const listener = () => setIsMobileScreen(mql.matches) mql.addEventListener("change", listener) return () => mql.removeEventListener("change", listener) }, [breakpoint]) return isMobileScreen } export function formatNumber(num: number, decimals: number = 1): string { if (num === 0) return "0" const k = 1000 const sizes = ["", "K", "M", "B", "T"] const i = Math.floor(Math.log(Math.abs(num)) / Math.log(k)) if (i === 0) return num.toString() const scaled = num / Math.pow(k, i) return `${scaled.toFixed(decimals)}${sizes[i]}` }