Skip to content
Closed
Show file tree
Hide file tree
Changes from 67 commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
51e9159
Initial docs scaffold
haydenbleasel Nov 17, 2025
02e6277
Add docs as workspace package
haydenbleasel Nov 17, 2025
05efa8c
Draft internationalization support
haydenbleasel Nov 17, 2025
4fa1668
Update package.json
haydenbleasel Nov 17, 2025
2623c31
Migrate docs
haydenbleasel Nov 17, 2025
8cd1224
Remove dotfiles
haydenbleasel Nov 17, 2025
34c68a7
Migrate frontmatter, delete meta files
haydenbleasel Nov 17, 2025
1573d43
Fix internationalization issues
haydenbleasel Nov 17, 2025
30e75bb
Migrate images
haydenbleasel Nov 17, 2025
921cf00
Remove Callout and Video imports
haydenbleasel Nov 17, 2025
ff41cbb
Migrate remaining components
haydenbleasel Nov 17, 2025
836d877
Migrate BlogIndex
haydenbleasel Nov 17, 2025
a86c589
Update layout.tsx
haydenbleasel Nov 17, 2025
a8f7fd6
Fix refs
haydenbleasel Nov 17, 2025
02553dd
Migrate custom components
haydenbleasel Nov 17, 2025
24c1e6d
TS fixes
haydenbleasel Nov 17, 2025
2ab85ec
Lang fixes
haydenbleasel Nov 17, 2025
c97f514
Migrate custom components to Fumadocs / tsx
haydenbleasel Nov 17, 2025
867a4be
Remove custom linter / formatter
haydenbleasel Nov 17, 2025
5350c1b
TS fixes
haydenbleasel Nov 17, 2025
729ccba
Add React / Next resolutions
haydenbleasel Nov 17, 2025
3252b68
Delete README.md
haydenbleasel Nov 17, 2025
5544f76
Fix i18n setup
haydenbleasel Nov 18, 2025
7b97092
Flatten docs IA
haydenbleasel Nov 18, 2025
7ac455e
Scaffold blog and example routes
haydenbleasel Nov 18, 2025
6ec33b6
Convert blog index to page
haydenbleasel Nov 18, 2025
29da393
Fix catch-all route
haydenbleasel Nov 18, 2025
f67c4ca
Fix metadata and static params
haydenbleasel Nov 18, 2025
73baa9e
Fix page data
haydenbleasel Nov 18, 2025
1a3f96e
Update next.config.ts
haydenbleasel Nov 18, 2025
b499c90
Move language picker to navbar
haydenbleasel Nov 18, 2025
6340ca4
Add redirects
haydenbleasel Nov 18, 2025
cd351a1
Update page.tsx
haydenbleasel Nov 18, 2025
56c9d5a
Fix implementation of props.full
haydenbleasel Nov 18, 2025
1da7dd4
Update global.css
haydenbleasel Nov 18, 2025
9f2376a
Update logo
haydenbleasel Nov 18, 2025
10efd54
Implement package-install blocks
haydenbleasel Nov 18, 2025
995cc2f
Ignore TS errors temporarily
haydenbleasel Nov 18, 2025
0f2ea06
Add i18n to search
haydenbleasel Nov 18, 2025
65cceae
Update Geistdocs
haydenbleasel Dec 10, 2025
332b887
Update next.config.ts
haydenbleasel Dec 10, 2025
8248b24
Rename en files
haydenbleasel Dec 10, 2025
df21315
Rename es files
haydenbleasel Dec 10, 2025
99f9e64
Rename fr files
haydenbleasel Dec 10, 2025
60aeb18
Rename pt files
haydenbleasel Dec 10, 2025
8bb4ab0
Rename cn files
haydenbleasel Dec 10, 2025
88563ca
Fix custom sources
haydenbleasel Dec 10, 2025
482bcf7
Restore custom components
haydenbleasel Dec 10, 2025
97bc3f0
Add blog redirect, fix meta.json for docs
haydenbleasel Dec 10, 2025
b397758
Update geistdocs.tsx
haydenbleasel Dec 10, 2025
9f36665
Add locale redirects
haydenbleasel Dec 10, 2025
96b7c82
Update homepage
haydenbleasel Dec 10, 2025
7fa8bdd
Update page.tsx
haydenbleasel Dec 10, 2025
fc53bf4
Update pnpm-lock.yaml
haydenbleasel Dec 10, 2025
8c45c6e
Remove JSX.Element
haydenbleasel Dec 10, 2025
def8bdd
More fixes
haydenbleasel Dec 10, 2025
81d7109
Delete vercel.tsx
haydenbleasel Dec 10, 2025
4d51239
Merge icon files
haydenbleasel Dec 10, 2025
5edf82a
Update features.tsx
haydenbleasel Dec 10, 2025
ea40851
Delete language-picker.tsx
haydenbleasel Dec 10, 2025
3c110fb
Update svgs.ts
haydenbleasel Dec 10, 2025
c2bfff7
Extract copy into copy.ts
haydenbleasel Dec 10, 2025
559e9b0
Update copy.ts
haydenbleasel Dec 10, 2025
e4494f5
Remove Features component
haydenbleasel Dec 10, 2025
2e88d53
Remove homepage content
haydenbleasel Dec 10, 2025
2789d1c
Fix translations search route
haydenbleasel Dec 10, 2025
7f30811
Fix paths
haydenbleasel Dec 10, 2025
544b81f
Update copy.ts
haydenbleasel Dec 10, 2025
973f32d
Misc fixes
haydenbleasel Dec 10, 2025
213f98f
Update mdx-components.tsx
haydenbleasel Dec 10, 2025
158a973
Update edit-source.tsx
haydenbleasel Dec 10, 2025
41e68c4
Run updater
haydenbleasel Dec 10, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
14 changes: 14 additions & 0 deletions docs/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# GitHub Repository Configuration
NEXT_PUBLIC_GEISTDOCS_OWNER="vercel"
NEXT_PUBLIC_GEISTDOCS_REPO=""
NEXT_PUBLIC_GEISTDOCS_CATEGORY=""

# GitHub App Credentials (optional - for feedback feature)
GITHUB_APP_ID=""
GITHUB_APP_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\n...\n-----END RSA PRIVATE KEY-----"

# AI Gateway API Key (optional - for AI chat)
AI_GATEWAY_API_KEY=""

# Production URL (automatically set on Vercel)
NEXT_PUBLIC_VERCEL_PROJECT_PRODUCTION_URL="localhost:3000"
26 changes: 26 additions & 0 deletions docs/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# deps
/node_modules

# generated content
.source

# test & build
/coverage
/.next/
/out/
/build
*.tsbuildinfo

# misc
.DS_Store
*.pem
/.pnp
.pnp.js
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# others
.env*.local
.vercel
next-env.d.ts
26 changes: 26 additions & 0 deletions docs/app/[lang]/(home)/components/centered-section.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import type { ReactNode } from 'react'

type CenteredSectionProps = {
title: string
description: string
children?: ReactNode
}

export const CenteredSection = ({
title,
description,
children
}: CenteredSectionProps) => (
<div className="grid items-center gap-10 overflow-hidden px-4 py-8 sm:px-12 sm:py-12">
<div className="mx-auto grid max-w-3xl gap-4 text-center">
<h2 className="font-semibold text-xl tracking-tight sm:text-2xl md:text-3xl lg:text-[40px]">
{title}
</h2>
<p className="text-balance text-lg text-muted-foreground">
{description}
</p>
</div>

{children}
</div>
)
19 changes: 19 additions & 0 deletions docs/app/[lang]/(home)/components/cta.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import DynamicLink from "fumadocs-core/dynamic-link";
import { Button } from "@/components/ui/button";

type CTAProps = {
title: string;
href: string;
cta: string;
};

export const CTA = ({ title, href, cta }: CTAProps) => (
<section className="flex flex-col gap-4 px-8 py-10 sm:px-12 md:flex-row md:items-center md:justify-between">
<h2 className="font-semibold text-xl tracking-tight sm:text-2xl md:text-3xl lg:text-[40px]">
{title}
</h2>
<Button asChild size="lg">
<DynamicLink href={`/[lang]${href}`}>{cta}</DynamicLink>
</Button>
</section>
);
29 changes: 29 additions & 0 deletions docs/app/[lang]/(home)/components/hero.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import type { ReactNode } from 'react'
import { Badge } from '@/components/ui/badge'

type HeroProps = {
badge?: string
title: string
description: string
children: ReactNode
}

export const Hero = ({ badge, title, description, children }: HeroProps) => (
<section className="mt-(--fd-nav-height) space-y-6 px-4 pt-16 pb-16 text-center sm:pt-24">
<div className="mx-auto w-full max-w-4xl space-y-5">
{badge && (
<Badge className="rounded-full" variant="secondary">
<div className="size-2 rounded-full bg-muted-foreground" />
<p>{badge}</p>
</Badge>
)}
<h1 className="text-balance text-center font-semibold text-[40px]! leading-[1.1] tracking-tight sm:text-5xl! lg:font-semibold xl:text-6xl!">
{title}
</h1>
<p className="mx-auto max-w-3xl text-balance text-muted-foreground leading-relaxed sm:text-xl">
{description}
</p>
</div>
{children}
</section>
)
25 changes: 25 additions & 0 deletions docs/app/[lang]/(home)/components/one-two-section.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import type { ReactNode } from "react";

type OneTwoSectionProps = {
title: string;
description: string;
children?: ReactNode;
};

export const OneTwoSection = ({
title,
description,
children,
}: OneTwoSectionProps) => (
<div className="grid gap-12 p-8 sm:grid-cols-3 sm:gap-0 sm:divide-x sm:p-0">
<div className="flex flex-col gap-2 text-balance sm:p-12">
<h2 className="font-semibold text-xl tracking-tight sm:text-2xl md:text-3xl">
{title}
</h2>
<p className="mt-2 text-balance text-lg text-muted-foreground">
{description}
</p>
</div>
<div className="col-span-2 sm:p-12">{children}</div>
</div>
);
50 changes: 50 additions & 0 deletions docs/app/[lang]/(home)/components/templates.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import Image from "next/image";
import { cn } from "@/lib/utils";

type TemplatesProps = {
title: string;
description: string;
data: {
title: string;
description: string;
link: string;
image: string;
}[];
};

export const Templates = ({ title, description, data }: TemplatesProps) => (
<div className="grid gap-12 p-8 px-4 py-8 sm:p-12 sm:px-12 sm:py-12">
<div className="grid max-w-3xl gap-2 text-balance">
<h2 className="font-semibold text-xl tracking-tight sm:text-2xl md:text-3xl lg:text-[40px]">
{title}
</h2>
<p className="text-balance text-lg text-muted-foreground">
{description}
</p>
</div>
<div className="grid gap-8 md:grid-cols-3">
{data.map((item) => (
<a
className="group flex-col overflow-hidden rounded-lg border bg-background p-4"
href={item.link}
key={item.title}
>
<h3 className="font-medium tracking-tight">{item.title}</h3>
<p className="line-clamp-2 text-muted-foreground text-sm">
{item.description}
</p>
<Image
alt={item.title}
className={cn(
"-rotate-3 -mb-12 mt-8 ml-7 aspect-video overflow-hidden rounded-md border object-cover object-top",
"group-hover:-rotate-1 transition-transform duration-300 group-hover:scale-105"
)}
height={336}
src={item.image}
width={640}
/>
</a>
))}
</div>
</div>
);
20 changes: 20 additions & 0 deletions docs/app/[lang]/(home)/components/text-grid-section.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
type TextGridSectionProps = {
data: {
id: string;
title: string;
description: string;
}[];
};

export const TextGridSection = ({ data }: TextGridSectionProps) => (
<div className="grid gap-8 px-4 py-8 sm:px-12 sm:py-12 md:grid-cols-3">
{data.map((item) => (
<div key={item.id}>
<h3 className="mb-2 font-semibold text-lg tracking-tight">
{item.title}
</h3>
<p className="text-muted-foreground">{item.description}</p>
</div>
))}
</div>
);
Loading
Loading