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 4.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import RoutePrefixHandle from './routePrefixHandle'
  2. import type { Viewport } from 'next'
  3. import I18nServer from './components/i18n-server'
  4. import BrowserInitor from './components/browser-initor'
  5. import SentryInitor from './components/sentry-initor'
  6. import { getLocaleOnServer } from '@/i18n/server'
  7. import { TanstackQueryIniter } from '@/context/query-client'
  8. import { ThemeProvider } from 'next-themes'
  9. import './styles/globals.css'
  10. import './styles/markdown.scss'
  11. import GlobalPublicStoreProvider from '@/context/global-public-context'
  12. import { DatasetAttr } from '@/types/feature'
  13. export const viewport: Viewport = {
  14. width: 'device-width',
  15. initialScale: 1,
  16. maximumScale: 1,
  17. viewportFit: 'cover',
  18. userScalable: false,
  19. }
  20. const LocaleLayout = async ({
  21. children,
  22. }: {
  23. children: React.ReactNode
  24. }) => {
  25. const locale = await getLocaleOnServer()
  26. const datasetMap: Record<DatasetAttr, string | undefined> = {
  27. [DatasetAttr.DATA_API_PREFIX]: process.env.NEXT_PUBLIC_API_PREFIX,
  28. [DatasetAttr.DATA_PUBLIC_API_PREFIX]: process.env.NEXT_PUBLIC_PUBLIC_API_PREFIX,
  29. [DatasetAttr.DATA_MARKETPLACE_API_PREFIX]: process.env.NEXT_PUBLIC_MARKETPLACE_API_PREFIX,
  30. [DatasetAttr.DATA_MARKETPLACE_URL_PREFIX]: process.env.NEXT_PUBLIC_MARKETPLACE_URL_PREFIX,
  31. [DatasetAttr.DATA_PUBLIC_EDITION]: process.env.NEXT_PUBLIC_EDITION,
  32. [DatasetAttr.DATA_PUBLIC_SUPPORT_MAIL_LOGIN]: process.env.NEXT_PUBLIC_SUPPORT_MAIL_LOGIN,
  33. [DatasetAttr.DATA_PUBLIC_SENTRY_DSN]: process.env.NEXT_PUBLIC_SENTRY_DSN,
  34. [DatasetAttr.DATA_PUBLIC_MAINTENANCE_NOTICE]: process.env.NEXT_PUBLIC_MAINTENANCE_NOTICE,
  35. [DatasetAttr.DATA_PUBLIC_SITE_ABOUT]: process.env.NEXT_PUBLIC_SITE_ABOUT,
  36. [DatasetAttr.DATA_PUBLIC_TEXT_GENERATION_TIMEOUT_MS]: process.env.NEXT_PUBLIC_TEXT_GENERATION_TIMEOUT_MS,
  37. [DatasetAttr.DATA_PUBLIC_MAX_TOOLS_NUM]: process.env.NEXT_PUBLIC_MAX_TOOLS_NUM,
  38. [DatasetAttr.DATA_PUBLIC_MAX_PARALLEL_LIMIT]: process.env.NEXT_PUBLIC_MAX_PARALLEL_LIMIT,
  39. [DatasetAttr.DATA_PUBLIC_TOP_K_MAX_VALUE]: process.env.NEXT_PUBLIC_TOP_K_MAX_VALUE,
  40. [DatasetAttr.DATA_PUBLIC_INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH]: process.env.NEXT_PUBLIC_INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH,
  41. [DatasetAttr.DATA_PUBLIC_LOOP_NODE_MAX_COUNT]: process.env.NEXT_PUBLIC_LOOP_NODE_MAX_COUNT,
  42. [DatasetAttr.DATA_PUBLIC_MAX_ITERATIONS_NUM]: process.env.NEXT_PUBLIC_MAX_ITERATIONS_NUM,
  43. [DatasetAttr.DATA_PUBLIC_MAX_TREE_DEPTH]: process.env.NEXT_PUBLIC_MAX_TREE_DEPTH,
  44. [DatasetAttr.DATA_PUBLIC_ALLOW_UNSAFE_DATA_SCHEME]: process.env.NEXT_PUBLIC_ALLOW_UNSAFE_DATA_SCHEME,
  45. [DatasetAttr.DATA_PUBLIC_ENABLE_WEBSITE_JINAREADER]: process.env.NEXT_PUBLIC_ENABLE_WEBSITE_JINAREADER,
  46. [DatasetAttr.DATA_PUBLIC_ENABLE_WEBSITE_FIRECRAWL]: process.env.NEXT_PUBLIC_ENABLE_WEBSITE_FIRECRAWL,
  47. [DatasetAttr.DATA_PUBLIC_ENABLE_WEBSITE_WATERCRAWL]: process.env.NEXT_PUBLIC_ENABLE_WEBSITE_WATERCRAWL,
  48. }
  49. return (
  50. <html lang={locale ?? 'en'} className="h-full" suppressHydrationWarning>
  51. <head>
  52. <meta name="theme-color" content="#FFFFFF" />
  53. <meta name="mobile-web-app-capable" content="yes" />
  54. <meta name="apple-mobile-web-app-capable" content="yes" />
  55. <meta name="apple-mobile-web-app-status-bar-style" content="default" />
  56. </head>
  57. <body
  58. className="color-scheme h-full select-auto"
  59. {...datasetMap}
  60. >
  61. <BrowserInitor>
  62. <SentryInitor>
  63. <TanstackQueryIniter>
  64. <ThemeProvider
  65. attribute='data-theme'
  66. defaultTheme='system'
  67. enableSystem
  68. disableTransitionOnChange
  69. >
  70. <I18nServer>
  71. <GlobalPublicStoreProvider>
  72. {children}
  73. </GlobalPublicStoreProvider>
  74. </I18nServer>
  75. </ThemeProvider>
  76. </TanstackQueryIniter>
  77. </SentryInitor>
  78. </BrowserInitor>
  79. <RoutePrefixHandle />
  80. </body>
  81. </html>
  82. )
  83. }
  84. export default LocaleLayout