import { Fragment } from 'react' import { useRouter } from 'next/router' import { Popover, Transition } from '@headlessui/react' import { MenuIcon, XIcon } from '@heroicons/react/outline' import { useTranslations } from 'next-intl' import Grid from '@tw/Grid' import ForumIcon from '@icons/ForumIcon' import TwitterIcon from '@icons/TwitterIcon' import DiscordIcon from '@icons/DiscordIcon' import TelegramIcon from '@icons/TelegramIcon' import DocumentTextIcon from '@icons/DocsIcon' import { Wallet } from '@components/Wallet' import { SynapseLogoSvg, SynapseLogoWithTitleSvg } from './SynapseLogoSvg' import { TopBarNavLink, checkIsRouteMatched } from './TopBarNavLink' import { DISCORD_URL, SYNAPSE_DOCS_URL, FORUM_URL, LANDING_PATH, TELEGRAM_URL, TWITTER_URL, STAKE_SYN_FOR_CX_URL, } from '@/constants/urls' import { NAVIGATION } from '@/constants/routes' import { MoreButton } from './MoreButton' import { PageFooter } from './PageFooter' import { joinClassNames } from '@/utils/joinClassNames' import { MaintenanceBanners, useMaintenance, } from '@/components/Maintenance/Maintenance' import { AnnouncementBanner } from '@/components/Maintenance/components/AnnouncementBanner' import { LanguageSelector } from '@/components/LanguageSelector' const wrapperClassNames = { textColor: 'text-zinc-800 dark:text-zinc-200', font: 'tracking-wide', bgColor: 'bg-gradient-to-b', bgGradient: 'from-white to-[hsl(235deg_75%_96%)]', bgGradientDark: 'dark:from-black dark:to-[hsl(265deg_25%_7.5%)]', // bgFrame: 'w-screen h-screen overflow-scroll', // TODO: Enable once wrapperStyle is removed } const TODO_REMOVE_wrapperStyle = { background: 'radial-gradient(23.86% 33.62% at 50.97% 47.88%, rgba(255, 0, 255, 0.04) 0%, rgba(172, 143, 255, 0.04) 100%), #111111', backgroundImage: `url('landingBg.svg')`, backgroundSize: '800px', backgroundPosition: 'center 150px', backgroundRepeat: 'no-repeat', } const HypercallWordmark = ({ height = 16 }: { height?: number }) => ( ) const HYPERCALL_APP_URL = 'https://app.hypercall.xyz/' const HC_LIME = '#A9FA38' const HypercallBannerContent = () => { return (
) } export function LandingPageWrapper({ children }: { children: any }) { return (
} startDate={new Date('2026-07-10T00:00:00+00:00')} endDate={null} /> {children}
) } export function LandingNav() { const t = useTranslations('Nav') return (
{t('Open menu')}
{({ open }) => ( <> {}}> )}
{t('Close menu')}
) } export function PopoverPanelContainer({ children, className, }: { children: any className?: string }) { return (
{children}
) } function TopBarButtons() { const t = useTranslations('Nav') const topBarNavLinks = Object.entries(NAVIGATION).map(([key, value]) => ( )) return <>{topBarNavLinks} } function MoreInfoButtons() { return ( <> ) } function SocialButtons() { return ( } /> } /> } /> } /> } /> ) } function MobileBarButtons() { const mobileBarItems = Object.entries(NAVIGATION).map(([key, value]) => ( )) return <>{mobileBarItems} } function MobileBarItem({ to, labelText, match, }: { to: string labelText: string match?: string | { startsWith: string } }) { const router = useRouter() const isRouteMatched = checkIsRouteMatched(router, match) const isInternal = to[0] === '/' || to[0] === '#' return ( {labelText} ) } function MoreInfoItem({ to, labelText, description, className, }: { to: string labelText: string description: string className?: string }) { return (

{labelText}

{description}

) } function MiniInfoItem({ href, icon, labelText, }: { href: string icon: JSX.Element labelText: string }) { return (

{icon} {labelText}

) } export function SynapseTitleLogo({ showText }: { showText: boolean }) { return ( {showText ? : } ) }