import { ComponentType, Suspense, lazy } from 'react'; import { useIsMobile } from '@/hooks/useIsMobile'; interface ResponsiveRouteProps { desktop: ComponentType; mobile: ComponentType; fallback?: React.ReactNode; } /** * ResponsiveRoute component that automatically switches between desktop and mobile versions * Uses lazy loading for optimal performance */ export function ResponsiveRoute({ desktop: Desktop, mobile: Mobile, fallback }: ResponsiveRouteProps) { const isMobile = useIsMobile(); // Default loading fallback const defaultFallback = (
); return ( {isMobile ? : } ); } /** * Factory function to create lazy-loaded responsive routes * Usage: * const Dashboard = createResponsiveRoute( * () => import('./pages/dashboard'), * () => import('./pages/mobile/dashboard') * ); */ export function createResponsiveRoute( desktopImport: () => Promise<{ default: ComponentType }>, mobileImport: () => Promise<{ default: ComponentType }> ) { const DesktopLazy = lazy(desktopImport); const MobileLazy = lazy(mobileImport); return function ResponsiveRouteWrapper() { return ; }; }