You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

layout.tsx 1.4KB

12345678910111213141516171819202122232425262728293031323334353637
  1. 'use client'
  2. import Header from '@/app/signin/_header'
  3. import cn from '@/utils/classnames'
  4. import { useGlobalPublicStore } from '@/context/global-public-context'
  5. import useDocumentTitle from '@/hooks/use-document-title'
  6. import { AppContextProvider } from '@/context/app-context'
  7. import { useMemo } from 'react'
  8. export default function SignInLayout({ children }: any) {
  9. const { systemFeatures } = useGlobalPublicStore()
  10. useDocumentTitle('')
  11. const isLoggedIn = useMemo(() => {
  12. try {
  13. return Boolean(localStorage.getItem('console_token') && localStorage.getItem('refresh_token'))
  14. }
  15. catch { return false }
  16. }, [])
  17. return <>
  18. <div className={cn('flex min-h-screen w-full justify-center bg-background-default-burn p-6')}>
  19. <div className={cn('flex w-full shrink-0 flex-col items-center rounded-2xl border border-effects-highlight bg-background-default-subtle')}>
  20. <Header />
  21. <div className={cn('flex w-full grow flex-col items-center justify-center px-6 md:px-[108px]')}>
  22. <div className='flex flex-col md:w-[400px]'>
  23. {isLoggedIn ? <AppContextProvider>
  24. {children}
  25. </AppContextProvider>
  26. : children}
  27. </div>
  28. </div>
  29. {systemFeatures.branding.enabled === false && <div className='system-xs-regular px-8 py-6 text-text-tertiary'>
  30. © {new Date().getFullYear()} LangGenius, Inc. All rights reserved.
  31. </div>}
  32. </div>
  33. </div>
  34. </>
  35. }