import { clsx, type ClassValue } from 'clsx' import { twMerge } from 'tailwind-merge' export function cn(...inputs: ClassValue[]) { return twMerge(clsx(inputs)) } export function isSafari() { if (typeof window === 'undefined' || !window.navigator) return false const ua = window.navigator.userAgent const vendor = window.navigator.vendor return /Safari/.test(ua) && /Apple Computer/.test(vendor) && !/Chrome/.test(ua) } export function isAndroid() { if (typeof window === 'undefined' || !window.navigator) return false const ua = window.navigator.userAgent return /android/i.test(ua) } export function isTorBrowser() { if (typeof window === 'undefined' || !window.navigator) return false const ua = window.navigator.userAgent return /torbrowser/i.test(ua) } export function isInViewport(el: HTMLElement) { const rect = el.getBoundingClientRect() return ( rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth) ) }