'use client'; import { ReactNode, useCallback } from 'react'; import { Logo } from '@gitroom/frontend/components/new-layout/logo'; import { MenuItem } from '@gitroom/frontend/components/new-layout/menu-item'; import { Plus_Jakarta_Sans } from 'next/font/google'; const ModeComponent = dynamic( () => import('@gitroom/frontend/components/layout/mode.component'), { ssr: false, } ); import clsx from 'clsx'; import dynamic from 'next/dynamic'; import { useFetch } from '@gitroom/helpers/utils/custom.fetch'; import { useT } from '@gitroom/react/translation/get.transation.service.client'; import { useVariables } from '@gitroom/react/helpers/variable.context'; import { useSearchParams } from 'next/navigation'; import useSWR from 'swr'; import { CheckPayment } from '@gitroom/frontend/components/layout/check.payment'; import { ToolTip } from '@gitroom/frontend/components/layout/top.tip'; import { ShowMediaBoxModal } from '@gitroom/frontend/components/media/media.component'; import { ShowLinkedinCompany } from '@gitroom/frontend/components/launches/helpers/linkedin.component'; import { MediaSettingsLayout } from '@gitroom/frontend/components/launches/helpers/media.settings.component'; import { Toaster } from '@gitroom/react/toaster/toaster'; import { ShowPostSelector } from '@gitroom/frontend/components/post-url-selector/post.url.selector'; import { NewSubscription } from '@gitroom/frontend/components/layout/new.subscription'; import { Onboarding } from '@gitroom/frontend/components/onboarding/onboarding'; import { Support } from '@gitroom/frontend/components/layout/support'; import { ContinueProvider } from '@gitroom/frontend/components/layout/continue.provider'; import { ContextWrapper } from '@gitroom/frontend/components/layout/user.context'; import { CopilotKit } from '@copilotkit/react-core'; import { MantineWrapper } from '@gitroom/react/helpers/mantine.wrapper'; import { Impersonate } from '@gitroom/frontend/components/layout/impersonate'; import { Title } from '@gitroom/frontend/components/layout/title'; import { TopMenu } from '@gitroom/frontend/components/layout/top.menu'; import { LanguageComponent } from '@gitroom/frontend/components/layout/language.component'; import { ChromeExtensionComponent } from '@gitroom/frontend/components/layout/chrome.extension.component'; import NotificationComponent from '@gitroom/frontend/components/notifications/notification.component'; import { BillingAfter } from '@gitroom/frontend/components/new-layout/billing.after'; const jakartaSans = Plus_Jakarta_Sans({ weight: ['600', '500'], style: ['normal', 'italic'], subsets: ['latin'], }); export const LayoutComponent = ({ children }: { children: ReactNode }) => { const fetch = useFetch(); const { backendUrl, billingEnabled, isGeneral } = useVariables(); const searchParams = useSearchParams(); const load = useCallback(async (path: string) => { return await (await fetch(path)).json(); }, []); const { data: user, mutate } = useSWR('/user/self', load, { revalidateOnFocus: false, revalidateOnReconnect: false, revalidateIfStale: false, refreshWhenOffline: false, refreshWhenHidden: false, }); if (!user) return null; return ( {user.tier === 'FREE' && searchParams.get('check') && ( )} {user.tier !== 'FREE' && }
{user?.admin ? :
}
{user.tier === 'FREE' && isGeneral && billingEnabled ? ( ) : (
</div> <div className="flex gap-[20px] text-textItemBlur"> <div className="hover:text-newTextColor"> <ModeComponent /> </div> <div className="w-[1px] h-[20px] bg-blockSeparator" /> <LanguageComponent /> <ChromeExtensionComponent /> <div className="w-[1px] h-[20px] bg-blockSeparator" /> <NotificationComponent /> </div> </div> <div className="flex flex-1 gap-[1px]">{children}</div> </div> </div> )} </div> </MantineWrapper> </CopilotKit> </ContextWrapper> ); };