'use client'; import { useRef, useState, useEffect } from 'react'; import { useRouter } from 'next/navigation'; import PageLayout from './components/PageLayout'; import Crosshair from './components/Crosshair'; import Waves from './components/background/waves'; import { usePublicDashboardPlatforms } from './hooks/usePublicDashboardPlatforms'; import { LinkIcon, ShoppingBagIcon, UserCircleIcon, UsersIcon, } from '@heroicons/react/24/outline'; import type { ComponentType, SVGProps } from 'react'; import type { DashboardPlatformIconName } from './utils/dashboardPlatforms'; export default function HomePage() { const containerRef = useRef(null); const [isMobile, setIsMobile] = useState(() => { if (typeof window === 'undefined') return false; return window.matchMedia('(max-width: 768px)').matches; }); const router = useRouter(); const isShopEnabled = process.env.NEXT_PUBLIC_SHOW_SHOP !== 'false'; const { platforms, loading, error } = usePublicDashboardPlatforms(); // Keep breakpoint updated (resize/orientation) useEffect(() => { const mq = window.matchMedia('(max-width: 768px)'); const apply = () => setIsMobile(mq.matches); mq.addEventListener?.('change', apply); window.addEventListener('resize', apply, { passive: true }); return () => { mq.removeEventListener?.('change', apply); window.removeEventListener('resize', apply); }; }, []); const icons: Record>> = { ShoppingBagIcon, LinkIcon, UsersIcon, UserCircleIcon, }; const goTo = (href: string) => { const trimmed = (href || '').trim(); if (!trimmed) return; if (trimmed.startsWith('http://') || trimmed.startsWith('https://')) { window.location.href = trimmed; return; } router.push(trimmed); }; return (
{/* Waves background */}
Profit Planet
Welcome

Profit Planet

Pick a platform to continue.

Platforms

Navigation shortcuts

{loading && (
Loading…
)} {error && (
{error}
)} {!loading && !error && (
{platforms.map((platform) => { const Icon = icons[platform.icon] || LinkIcon; const disabledByEnv = platform.href === '/shop' && !isShopEnabled; const isDisabled = Boolean(platform.disabled) || disabledByEnv; const disabledText = disabledByEnv ? 'This is currently disabled.' : platform.disabledText; return ( ); })} {platforms.length === 0 && (
No platforms available.
)}
)}
{/* No parallax/crosshair on mobile */} {!isMobile && }
); }