diff --git a/docs/ai-python/.gitignore b/docs/ai-python/.gitignore new file mode 100644 index 00000000..dc245b9b --- /dev/null +++ b/docs/ai-python/.gitignore @@ -0,0 +1,29 @@ +# dependencies +node_modules + +# generated content +.source + +# test and build output +coverage +.next +out +build +dist +*.tsbuildinfo + +# local environment +.env*.local +.vercel + +# logs +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# system files +.DS_Store + +# Turborepo +.turbo diff --git a/docs/ai-python/app/[lang]/(home)/components/centered-section.tsx b/docs/ai-python/app/[lang]/(home)/components/centered-section.tsx new file mode 100644 index 00000000..1e323cca --- /dev/null +++ b/docs/ai-python/app/[lang]/(home)/components/centered-section.tsx @@ -0,0 +1,26 @@ +import type { ReactNode } from "react"; + +interface CenteredSectionProps { + children: ReactNode; + description: string; + title: string; +} + +export const CenteredSection = ({ + title, + description, + children, +}: CenteredSectionProps) => ( +
+
+

+ {title} +

+

+ {description} +

+
+ + {children} +
+); diff --git a/docs/ai-python/app/[lang]/(home)/components/cta.tsx b/docs/ai-python/app/[lang]/(home)/components/cta.tsx new file mode 100644 index 00000000..10b7767d --- /dev/null +++ b/docs/ai-python/app/[lang]/(home)/components/cta.tsx @@ -0,0 +1,19 @@ +import DynamicLink from "fumadocs-core/dynamic-link"; +import { Button } from "@/components/ui/button"; + +interface CTAProps { + cta: string; + href: string; + title: string; +} + +export const CTA = ({ title, href, cta }: CTAProps) => ( +
+

+ {title} +

+ +
+); diff --git a/docs/ai-python/app/[lang]/(home)/components/hero.tsx b/docs/ai-python/app/[lang]/(home)/components/hero.tsx new file mode 100644 index 00000000..d59ecb6d --- /dev/null +++ b/docs/ai-python/app/[lang]/(home)/components/hero.tsx @@ -0,0 +1,27 @@ +import type { ReactNode } from "react"; +import { Badge } from "@/components/ui/badge"; + +interface HeroProps { + badge: string; + children: ReactNode; + description: string; + title: string; +} + +export const Hero = ({ badge, title, description, children }: HeroProps) => ( +
+
+ +
+

{badge}

+ +

+ {title} +

+

+ {description} +

+
+ {children} +
+); diff --git a/docs/ai-python/app/[lang]/(home)/components/one-two-section.tsx b/docs/ai-python/app/[lang]/(home)/components/one-two-section.tsx new file mode 100644 index 00000000..42f1e6d1 --- /dev/null +++ b/docs/ai-python/app/[lang]/(home)/components/one-two-section.tsx @@ -0,0 +1,25 @@ +import type { ReactNode } from "react"; + +interface OneTwoSectionProps { + children?: ReactNode; + description: string; + title: string; +} + +export const OneTwoSection = ({ + title, + description, + children, +}: OneTwoSectionProps) => ( +
+
+

+ {title} +

+

+ {description} +

+
+
{children}
+
+); diff --git a/docs/ai-python/app/[lang]/(home)/components/templates.tsx b/docs/ai-python/app/[lang]/(home)/components/templates.tsx new file mode 100644 index 00000000..a64b2cb3 --- /dev/null +++ b/docs/ai-python/app/[lang]/(home)/components/templates.tsx @@ -0,0 +1,50 @@ +import Image from "next/image"; +import { cn } from "@/lib/utils"; + +interface TemplatesProps { + data: { + title: string; + description: string; + link: string; + image: string; + }[]; + description: string; + title: string; +} + +export const Templates = ({ title, description, data }: TemplatesProps) => ( +
+
+

+ {title} +

+

+ {description} +

+
+
+ {data.map((item) => ( + +

{item.title}

+

+ {item.description} +

+ {item.title} +
+ ))} +
+
+); diff --git a/docs/ai-python/app/[lang]/(home)/components/text-grid-section.tsx b/docs/ai-python/app/[lang]/(home)/components/text-grid-section.tsx new file mode 100644 index 00000000..1b10d098 --- /dev/null +++ b/docs/ai-python/app/[lang]/(home)/components/text-grid-section.tsx @@ -0,0 +1,20 @@ +interface TextGridSectionProps { + data: { + id: string; + title: string; + description: string; + }[]; +} + +export const TextGridSection = ({ data }: TextGridSectionProps) => ( +
+ {data.map((item) => ( +
+

+ {item.title} +

+

{item.description}

+
+ ))} +
+); diff --git a/docs/ai-python/app/[lang]/(home)/layout.tsx b/docs/ai-python/app/[lang]/(home)/layout.tsx new file mode 100644 index 00000000..a86a82f3 --- /dev/null +++ b/docs/ai-python/app/[lang]/(home)/layout.tsx @@ -0,0 +1,14 @@ +import { HomeLayout } from "@/components/geistdocs/home-layout"; +import { source } from "@/lib/geistdocs/source"; + +const Layout = async ({ children, params }: LayoutProps<"/[lang]">) => { + const { lang } = await params; + + return ( + +
{children}
+
+ ); +}; + +export default Layout; diff --git a/docs/ai-python/app/[lang]/(home)/page.tsx b/docs/ai-python/app/[lang]/(home)/page.tsx new file mode 100644 index 00000000..d860c93e --- /dev/null +++ b/docs/ai-python/app/[lang]/(home)/page.tsx @@ -0,0 +1,126 @@ +import type { Metadata } from "next"; +import { + CommandPromptContent, + CommandPromptCopy, + CommandPromptList, + CommandPromptPrefix, + CommandPromptRoot, + CommandPromptSurface, + CommandPromptTrigger, + CommandPromptTriggerDivider, + CommandPromptViewport, +} from "@/components/ui/command-prompt"; +import { CenteredSection } from "./components/centered-section"; +import { CTA } from "./components/cta"; +import { Hero } from "./components/hero"; +import { OneTwoSection } from "./components/one-two-section"; +import { Templates } from "./components/templates"; +import { TextGridSection } from "./components/text-grid-section"; + +const title = "Geistdocs"; +const description = + "A Vercel documentation template built with Next.js and Fumadocs. Designed for spinning up documentation sites quickly and consistently."; + +export const metadata: Metadata = { + title, + description, +}; + +const templates = [ + { + title: "Template 1", + description: "Description of template 1", + link: "https://example.com/template-1", + image: "https://placehold.co/600x400.png", + }, + { + title: "Template 2", + description: "Description of template 2", + link: "https://example.com/template-2", + image: "https://placehold.co/600x400.png", + }, + { + title: "Template 3", + description: "Description of template 3", + link: "https://example.com/template-3", + image: "https://placehold.co/600x400.png", + }, +]; + +const textGridSection = [ + { + id: "1", + title: "Text Grid Section", + description: "Description of text grid section", + }, + { + id: "2", + title: "Text Grid Section", + description: "Description of text grid section", + }, + { + id: "3", + title: "Text Grid Section", + description: "Description of text grid section", + }, +]; + +const COMMAND_FOR_HUMANS = "npx @vercel/geistdocs init"; +const COMMAND_FOR_AGENTS = "npx @vercel/geistdocs init --agent"; + +const HomePage = () => ( +
+ + + + + For humans + + + + For agents + + + + $ + + + {COMMAND_FOR_HUMANS} + + + {COMMAND_FOR_AGENTS} + + + + + + +
+ + +
+ + +
+ + + +
+
+); + +export default HomePage; diff --git a/docs/ai-python/app/[lang]/docs/[[...slug]]/page.tsx b/docs/ai-python/app/[lang]/docs/[[...slug]]/page.tsx new file mode 100644 index 00000000..f9d7183c --- /dev/null +++ b/docs/ai-python/app/[lang]/docs/[[...slug]]/page.tsx @@ -0,0 +1,19 @@ +import { createDocsPage } from "@vercel/geistdocs/pages/docs"; +import { getMDXComponents } from "@/components/geistdocs/mdx-components"; +import { MobileDocsBar } from "@/components/geistdocs/mobile-docs-bar"; +import { config } from "@/lib/geistdocs/config"; +import { geistdocsSource } from "@/lib/geistdocs/source"; + +const docsPage = createDocsPage({ + config, + mdx: ({ link }) => getMDXComponents({ a: link }), + source: geistdocsSource, + tableOfContentPopover: { + enabled: false, + }, + renderTop: ({ data }) => , +}); + +export default docsPage.Page; +export const generateStaticParams = docsPage.generateStaticParams; +export const generateMetadata = docsPage.generateMetadata; diff --git a/docs/ai-python/app/[lang]/docs/layout.tsx b/docs/ai-python/app/[lang]/docs/layout.tsx new file mode 100644 index 00000000..0263099d --- /dev/null +++ b/docs/ai-python/app/[lang]/docs/layout.tsx @@ -0,0 +1,14 @@ +import { DocsLayout } from "@/components/geistdocs/docs-layout"; +import { source } from "@/lib/geistdocs/source"; + +const Layout = async ({ children, params }: LayoutProps<"/[lang]/docs">) => { + const { lang } = await params; + + return ( +
+ {children} +
+ ); +}; + +export default Layout; diff --git a/docs/ai-python/app/[lang]/layout.tsx b/docs/ai-python/app/[lang]/layout.tsx new file mode 100644 index 00000000..83147660 --- /dev/null +++ b/docs/ai-python/app/[lang]/layout.tsx @@ -0,0 +1,29 @@ +import "../global.css"; +import { Footer } from "@/components/geistdocs/footer"; +import { Navbar } from "@/components/geistdocs/navbar"; +import { GeistdocsProvider } from "@/components/geistdocs/provider"; +import { basePath } from "@/geistdocs"; +import { mono, sans } from "@/lib/geistdocs/fonts"; +import { cn } from "@/lib/utils"; + +const Layout = async ({ children, params }: LayoutProps<"/[lang]">) => { + const { lang } = await params; + + return ( + + + + + {children} +