d25d482dc2
Publish CLI Package / publish-npm (push) Waiting to run
Publish Python SDK / publish-pypi (push) Waiting to run
Publish TypeScript SDK / publish-npm (push) Waiting to run
CI / Migrate Dev DB (push) Has been skipped
CI / Detect Version (push) Has been cancelled
CI / Migrate DB (push) Has been cancelled
CI / Build Dev ECR (./docker/app.Dockerfile, ECR_APP) (push) Has been cancelled
CI / Build Dev ECR (./docker/db.Dockerfile, ECR_MIGRATIONS) (push) Has been cancelled
CI / Build Dev ECR (./docker/pii.Dockerfile, ECR_PII) (push) Has been cancelled
CI / Build Dev ECR (./docker/realtime.Dockerfile, ECR_REALTIME) (push) Has been cancelled
CI / Deploy Trigger.dev (Dev) (push) Has been cancelled
CI / Build AMD64 (./docker/app.Dockerfile, ECR_APP, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Build AMD64 (./docker/db.Dockerfile, ECR_MIGRATIONS, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build AMD64 (./docker/pii.Dockerfile, ECR_PII, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build AMD64 (./docker/realtime.Dockerfile, ECR_REALTIME, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/app.Dockerfile, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/db.Dockerfile, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/pii.Dockerfile, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/realtime.Dockerfile, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Check Docs Changes (push) Has been cancelled
CI / Process Docs (push) Has been cancelled
CI / Create GitHub Release (push) Has been cancelled
CI / Test and Build (push) Has been cancelled
132 lines
3.4 KiB
TypeScript
132 lines
3.4 KiB
TypeScript
import type { ReactNode } from 'react'
|
|
import { defineI18nUI } from 'fumadocs-ui/i18n'
|
|
import { DocsLayout } from 'fumadocs-ui/layouts/docs'
|
|
import { RootProvider } from 'fumadocs-ui/provider/next'
|
|
import { Geist_Mono, Inter } from 'next/font/google'
|
|
import { AskAI } from '@/components/ai/ask-ai'
|
|
import {
|
|
SidebarFolder,
|
|
SidebarItem,
|
|
SidebarSeparator,
|
|
} from '@/components/docs-layout/sidebar-components'
|
|
import { Footer } from '@/components/footer/footer'
|
|
import { Navbar } from '@/components/navbar/navbar'
|
|
import { SimWordmark } from '@/components/ui/sim-logo'
|
|
import { i18n } from '@/lib/i18n'
|
|
import { serializeJsonLd } from '@/lib/json-ld'
|
|
import { source } from '@/lib/source'
|
|
import { DOCS_BASE_URL } from '@/lib/urls'
|
|
import { season } from '@/app/fonts/season'
|
|
import '../global.css'
|
|
|
|
const inter = Inter({
|
|
subsets: ['latin'],
|
|
variable: '--font-geist-sans',
|
|
display: 'swap',
|
|
})
|
|
|
|
const geistMono = Geist_Mono({
|
|
subsets: ['latin'],
|
|
variable: '--font-geist-mono',
|
|
display: 'swap',
|
|
})
|
|
|
|
const { provider } = defineI18nUI(i18n, {
|
|
translations: {
|
|
en: {
|
|
displayName: 'English',
|
|
},
|
|
es: {
|
|
displayName: 'Español',
|
|
},
|
|
fr: {
|
|
displayName: 'Français',
|
|
},
|
|
de: {
|
|
displayName: 'Deutsch',
|
|
},
|
|
ja: {
|
|
displayName: '日本語',
|
|
},
|
|
zh: {
|
|
displayName: '简体中文',
|
|
},
|
|
},
|
|
})
|
|
|
|
type LayoutProps = {
|
|
children: ReactNode
|
|
params: Promise<{ lang: string }>
|
|
}
|
|
|
|
const SUPPORTED_LANGUAGES: Set<string> = new Set(i18n.languages)
|
|
|
|
export default async function Layout({ children, params }: LayoutProps) {
|
|
const { lang: rawLang } = await params
|
|
const lang = SUPPORTED_LANGUAGES.has(rawLang) ? rawLang : 'en'
|
|
|
|
const structuredData = {
|
|
'@context': 'https://schema.org',
|
|
'@type': 'WebSite',
|
|
name: 'Sim Documentation',
|
|
description:
|
|
'Documentation for Sim — the open-source AI workspace where teams build, deploy, and manage AI agents. Connect 1,000+ integrations and every major LLM.',
|
|
url: DOCS_BASE_URL,
|
|
publisher: {
|
|
'@type': 'Organization',
|
|
name: 'Sim',
|
|
url: 'https://sim.ai',
|
|
logo: {
|
|
'@type': 'ImageObject',
|
|
url: `${DOCS_BASE_URL}/static/logo.png`,
|
|
},
|
|
},
|
|
inLanguage: lang,
|
|
}
|
|
|
|
return (
|
|
<html
|
|
lang={lang}
|
|
className={`${inter.variable} ${geistMono.variable} ${season.variable}`}
|
|
suppressHydrationWarning
|
|
>
|
|
<head>
|
|
<script
|
|
type='application/ld+json'
|
|
dangerouslySetInnerHTML={{ __html: serializeJsonLd(structuredData) }}
|
|
/>
|
|
</head>
|
|
<body className='flex min-h-screen flex-col font-sans'>
|
|
<RootProvider i18n={provider(lang)}>
|
|
<Navbar />
|
|
<DocsLayout
|
|
tree={source.pageTree[lang]}
|
|
nav={{
|
|
title: <SimWordmark className='h-[18px]' />,
|
|
}}
|
|
sidebar={{
|
|
tabs: false,
|
|
defaultOpenLevel: 0,
|
|
collapsible: false,
|
|
footer: null,
|
|
banner: null,
|
|
components: {
|
|
Item: SidebarItem,
|
|
Folder: SidebarFolder,
|
|
Separator: SidebarSeparator,
|
|
},
|
|
}}
|
|
containerProps={{
|
|
className: '!pt-0',
|
|
}}
|
|
>
|
|
{children}
|
|
</DocsLayout>
|
|
<Footer />
|
|
<AskAI locale={lang} />
|
|
</RootProvider>
|
|
</body>
|
|
</html>
|
|
)
|
|
}
|