From 827eb1488903ad867d866f16562fe433f2884dd9 Mon Sep 17 00:00:00 2001 From: Necati Ozmen Date: Wed, 14 Jan 2026 15:49:02 +0300 Subject: [PATCH 1/8] feat: add home page documentation and navigation updates --- website/docs/home.md | 11 ++ website/sidebars.ts | 5 + website/src/components/doc-navbar/index.tsx | 22 ++- .../src/components/docs-widgets/DocsHome.tsx | 184 ++++++++++++++++++ website/src/components/navbar/index.tsx | 37 +++- website/src/css/custom.css | 88 +++++++++ 6 files changed, 336 insertions(+), 11 deletions(-) create mode 100644 website/docs/home.md create mode 100644 website/src/components/docs-widgets/DocsHome.tsx diff --git a/website/docs/home.md b/website/docs/home.md new file mode 100644 index 000000000..30fda8649 --- /dev/null +++ b/website/docs/home.md @@ -0,0 +1,11 @@ +--- +sidebar_label: Home +slug: /home +hide_table_of_contents: true +hide_title: true +custom_edit_url: null +--- + +import DocsHome from '@site/src/components/docs-widgets/DocsHome'; + + diff --git a/website/sidebars.ts b/website/sidebars.ts index 16ccd3952..1014b2f49 100644 --- a/website/sidebars.ts +++ b/website/sidebars.ts @@ -12,6 +12,11 @@ import type { SidebarsConfig } from "@docusaurus/plugin-content-docs"; */ const sidebars: SidebarsConfig = { docs: [ + { + type: "doc", + id: "home", + label: "Home", + }, { type: "category", label: "Get Started", diff --git a/website/src/components/doc-navbar/index.tsx b/website/src/components/doc-navbar/index.tsx index 6dbac3348..3990d1285 100644 --- a/website/src/components/doc-navbar/index.tsx +++ b/website/src/components/doc-navbar/index.tsx @@ -18,11 +18,17 @@ type TabConfig = { }; const tabs: TabConfig[] = [ + { + id: "home", + label: "Home", + href: "/docs/home/", + match: (pathname) => pathname === "/docs/home/" || pathname === "/docs/home", + }, { id: "voltagent", - label: "VoltAgent Docs", + label: "VoltAgent", href: "/docs/", - match: (pathname) => pathname.startsWith("/docs/"), + match: (pathname) => pathname.startsWith("/docs/") && !pathname.startsWith("/docs/home"), }, { id: "observability", @@ -136,6 +142,16 @@ export default function DocNavbar() {
+ setIsMenuOpen(false)} + > + Home + setIsMenuOpen(false)} > - VoltAgent Docs + VoltAgent + {/* Hero Section - Centered */} +
+
+ Build · Observe · Ship +
+ AI Agents +
+
+ AI Agent Engineering Platform for development,{" "} + observability,{" "} + evaluation, and{" "} + deployment in one place. +
+
+ + {/* VoltAgent Core Section */} +
+
+ Core + Open Source TypeScript Framework +
+ + {/* Feature Badges */} +
+ {coreFeatures.map((feature) => ( + + {feature} + + ))} + + and more... + +
+ + {/* Code Block */} + {codeExample} +
+ + {/* VoltOps Console Section */} +
+
+ VoltOps Console + Cloud / Self-Hosted Platform +
+
+ {voltOpsFeatures.map((feature) => ( + +
+
+ + {feature.title} +
+ +

{feature.description}

+ + Learn more + +
+ + ))} +
+
+ +
+ + {/* Quick Links Section */} +
+

Quick Links

+
+ {quickLinks.map((link) => ( + + {link.title} + + ))} +
+
+
+ ); +} diff --git a/website/src/components/navbar/index.tsx b/website/src/components/navbar/index.tsx index 0a8dc1b47..fd5eeb3a9 100644 --- a/website/src/components/navbar/index.tsx +++ b/website/src/components/navbar/index.tsx @@ -43,21 +43,42 @@ import styles from "./styles.module.css"; // Docs page tab configuration const docTabs = [ - { label: "VoltAgent", href: "/docs/", match: "/docs/" }, - { label: "Observability", href: "/observability-docs/", match: "/observability-docs/" }, + { label: "Home", href: "/docs/home/", match: (path: string) => path.startsWith("/docs/home") }, + { + label: "VoltAgent", + href: "/docs/", + match: (path: string) => path.startsWith("/docs/") && !path.startsWith("/docs/home"), + }, + { + label: "Observability", + href: "/observability-docs/", + match: (path: string) => path.startsWith("/observability-docs/"), + }, { label: "Actions & Triggers", href: "/actions-triggers-docs/", - match: "/actions-triggers-docs/", + match: (path: string) => path.startsWith("/actions-triggers-docs/"), + }, + { + label: "Evaluation", + href: "/evaluation-docs/", + match: (path: string) => path.startsWith("/evaluation-docs/"), }, - { label: "Evaluation", href: "/evaluation-docs/", match: "/evaluation-docs/" }, { label: "Prompt Engineering", href: "/prompt-engineering-docs/", - match: "/prompt-engineering-docs/", + match: (path: string) => path.startsWith("/prompt-engineering-docs/"), + }, + { + label: "Deployment", + href: "/deployment-docs/", + match: (path: string) => path.startsWith("/deployment-docs/"), + }, + { + label: "Recipes & Guides", + href: "/recipes-and-guides/", + match: (path: string) => path.startsWith("/recipes-and-guides/"), }, - { label: "Deployment", href: "/deployment-docs/", match: "/deployment-docs/" }, - { label: "Recipes & Guides", href: "/recipes-and-guides/", match: "/recipes-and-guides/" }, ]; export default function Navbar() { @@ -201,7 +222,7 @@ export default function Navbar() { to={tab.href} className={clsx( styles.docsTab, - location.pathname.startsWith(tab.match) && styles.docsTabActive, + tab.match(location.pathname) && styles.docsTabActive, )} > {tab.label} diff --git a/website/src/css/custom.css b/website/src/css/custom.css index e9156d457..727775404 100644 --- a/website/src/css/custom.css +++ b/website/src/css/custom.css @@ -5877,3 +5877,91 @@ html[data-theme="dark"] .three-columns .card p { .showcase-code-block [class*="codeBlockTitle"] { display: none !important; } + +/* ======================================== + Docs Home Page Styles + ======================================== */ + +/* Hide sidebar on docs home page */ +.docs-home-page-wrapper aside.theme-doc-sidebar-container { + display: none !important; +} + +/* Make main content full width on home page */ +.docs-home-page-wrapper main { + max-width: 100% !important; +} + +.docs-home-page-wrapper .col--3 { + display: none !important; +} + +.docs-home-page-wrapper [class*="docMainContainer"] { + max-width: 100% !important; + padding: 0 !important; +} + +/* Center the home page content */ +.docs-home-page { + max-width: 960px !important; + margin: 0 auto !important; + padding: 2rem 1.5rem !important; +} + +/* Home page hero section */ +.docs-home-page h1 { + font-size: 2.5rem !important; + font-weight: 700 !important; + margin-bottom: 1rem !important; + text-align: center !important; +} + +.docs-home-page > p:first-of-type { + font-size: 1.125rem !important; + text-align: center !important; + opacity: 0.9; + max-width: 700px; + margin: 0 auto 1.5rem auto !important; +} + +/* Center hero buttons */ +.docs-home-page .home-hero-buttons { + justify-content: center !important; +} + +/* Section headings */ +.docs-home-page h2 { + font-size: 1.5rem !important; + font-weight: 600 !important; + margin-top: 2rem !important; + margin-bottom: 0.75rem !important; +} + +/* Feature cards hover effect */ +.home-feature-link:hover { + border-color: var(--ifm-color-emphasis-500) !important; + transform: translateY(-2px); + transition: all 0.2s ease; +} + +.home-feature-link { + transition: all 0.2s ease; +} + +/* Hide copy-page dropdown on docs home page */ +.docs-home .copy-page-dropdown-wrapper { + display: none !important; +} + +/* Alternative selector for docs home page */ +.docs-home ~ .copy-page-dropdown-wrapper, +.docs-home + .copy-page-dropdown-wrapper, +article:has(.docs-home) .copy-page-dropdown-wrapper, +[class*="docItemContainer"]:has(.docs-home) .copy-page-dropdown-wrapper { + display: none !important; +} + +/* Remove border-bottom from docs-home links */ +.docs-home a.no-underline { + border-bottom: none !important; +} From 64828e3670aa732e213b7f446b191cce87b819b7 Mon Sep 17 00:00:00 2001 From: Necati Ozmen Date: Wed, 14 Jan 2026 16:23:43 +0300 Subject: [PATCH 2/8] feat: enhance DocsHome layout and styling with full-width background and centered content --- .../src/components/docs-widgets/DocsHome.tsx | 4 +- website/src/css/custom.css | 54 +++++++++++++++++++ 2 files changed, 55 insertions(+), 3 deletions(-) diff --git a/website/src/components/docs-widgets/DocsHome.tsx b/website/src/components/docs-widgets/DocsHome.tsx index 36bf390bb..457466cef 100644 --- a/website/src/components/docs-widgets/DocsHome.tsx +++ b/website/src/components/docs-widgets/DocsHome.tsx @@ -82,7 +82,7 @@ const quickLinks = [ export default function DocsHome() { return ( -
+
{/* Hero Section - Centered */}
-
- {/* Quick Links Section */}

Quick Links

diff --git a/website/src/css/custom.css b/website/src/css/custom.css index 727775404..be1c1e0eb 100644 --- a/website/src/css/custom.css +++ b/website/src/css/custom.css @@ -5965,3 +5965,57 @@ article:has(.docs-home) .copy-page-dropdown-wrapper, .docs-home a.no-underline { border-bottom: none !important; } + +/* Docs home page background */ +.docs-home { + background-color: #000000 !important; +} + +/* Docs home page full background black */ +article:has(.docs-home), +article:has(.docs-home) .theme-doc-markdown, +[class*="docItemContainer"]:has(.docs-home) { + background-color: #000000 !important; +} + +/* Also target the main container */ +main:has(.docs-home) { + background-color: #000000 !important; +} + +/* Docs home page - target docItemWrapper */ +[class*="docItemWrapper"]:has(.docs-home), +[class*="docMainContainer"]:has(.docs-home), +[class*="docRoot"]:has(.docs-home) { + background-color: #000000 !important; +} + +/* Hide sidebar on docs home page */ +[class*="docSidebarContainer"]:has(~ [class*="docMainContainer"] .docs-home), +aside:has(~ main .docs-home) { + display: none !important; +} + +/* Make content full width when sidebar is hidden */ +[class*="docMainContainer"]:has(.docs-home) { + width: 100% !important; + max-width: 100% !important; +} + +/* Center content on docs home page */ +[class*="docMainContainer"]:has(.docs-home) [class*="docItemContainer"] { + max-width: 1200px !important; + margin: 0 auto !important; + padding: 0 2rem !important; +} + +/* Fix docs home centering */ +[class*="docItemContainer"]:has(.docs-home) { + margin-left: auto !important; + margin-right: auto !important; +} + +[class*="docMainContainer"]:has(.docs-home) > div { + display: flex !important; + justify-content: center !important; +} From 4bf842f3897960c379b6a224a53206ca6a0dd84d Mon Sep 17 00:00:00 2001 From: Necati Ozmen Date: Thu, 15 Jan 2026 00:42:51 +0300 Subject: [PATCH 3/8] feat: update DocsHome layout and styling, enhance FeatureShowcase --- .../src/components/docs-widgets/DocsHome.tsx | 139 +++++++++--------- .../src/components/feature-showcase/index.tsx | 12 +- .../components/feature-showcase/mock-data.ts | 4 +- website/src/css/custom.css | 18 ++- 4 files changed, 94 insertions(+), 79 deletions(-) diff --git a/website/src/components/docs-widgets/DocsHome.tsx b/website/src/components/docs-widgets/DocsHome.tsx index 457466cef..7146228ec 100644 --- a/website/src/components/docs-widgets/DocsHome.tsx +++ b/website/src/components/docs-widgets/DocsHome.tsx @@ -1,15 +1,19 @@ import Link from "@docusaurus/Link"; import { - ArrowRightIcon, BoltIcon, + BookOpenIcon, ChartBarIcon, + ChatBubbleLeftRightIcon, DocumentTextIcon, + ListBulletIcon, MagnifyingGlassIcon, RocketLaunchIcon, ShieldCheckIcon, } from "@heroicons/react/24/outline"; // @ts-expect-error - Docusaurus theme component import CodeBlock from "@theme/CodeBlock"; +import { FeatureShowcase } from "../feature-showcase"; +import { DotPattern } from "../ui/dot-pattern"; const codeExample = `import { VoltAgent, Agent } from "@voltagent/core"; import { honoServer } from "@voltagent/server-hono"; @@ -28,77 +32,50 @@ new VoltAgent({ const coreFeatures = ["Memory", "RAG", "Guardrails", "Tools", "MCP", "Voice", "Workflow"]; -const voltOpsFeatures = [ - { - title: "Observability", - description: - "Debug agent behavior with detailed traces. See every tool call, LLM request, and decision path.", - href: "/observability-docs/", - icon: MagnifyingGlassIcon, - }, - { - title: "Evaluation", - description: - "Score agent outputs against test datasets. Catch regressions before they hit production.", - href: "/evaluation-docs/", - icon: ChartBarIcon, - }, - { - title: "Prompt Management", - description: "Version control your prompts. A/B test changes and rollback when needed.", - href: "/prompt-engineering-docs/", - icon: DocumentTextIcon, - }, +const quickLinks = [ { - title: "Deployment", - description: "Ship agents with one click. Connect your GitHub repo and deploy automatically.", - href: "/deployment-docs/", + title: "Quick Start", + description: "Get up and running with VoltAgent in minutes.", + href: "/docs/quick-start/", icon: RocketLaunchIcon, }, + { - title: "Automation", - description: "Trigger workflows based on events. Build complex pipelines without extra code.", - href: "/actions-triggers-docs/", - icon: BoltIcon, - }, - { - title: "Guardrails", - description: "Validate inputs and outputs. Block harmful content and enforce safety rules.", - href: "/docs/guardrails/overview/", - icon: ShieldCheckIcon, + title: "Recipes & Guides", + description: "Ready-to-use patterns and best practices.", + href: "/recipes-and-guides/", + icon: BookOpenIcon, }, -]; -const quickLinks = [ - { title: "Quick Start Guide", href: "/docs/quick-start/" }, - { title: "Recipes & Guides", href: "/recipes-and-guides/" }, - { title: "API Reference", href: "/docs/api/overview/" }, { - title: "Examples on GitHub", - href: "https://github.com/voltagent/voltagent/tree/main/examples", - external: true, + title: "5 Steps Tutorial", + description: "Learn the fundamentals with hands-on examples.", + href: "/docs/getting-started/tutorial/", + icon: ListBulletIcon, }, ]; export default function DocsHome() { return ( -
+
+ {/* Hero Section - Centered */} -
+
- Build · Observe · Ship + Build · Observe · Automate · Ship
AI Agents
-
+
AI Agent Engineering Platform for development,{" "} observability,{" "} evaluation, and{" "} @@ -107,23 +84,28 @@ export default function DocsHome() {
{/* VoltAgent Core Section */} -
-
- Core - Open Source TypeScript Framework +
+
+ Core + + Open Source TypeScript Framework +
+

+ Everything you need to build production-ready AI agents in TypeScript. +

{/* Feature Badges */} -
+
{coreFeatures.map((feature) => ( {feature} ))} - + and more...
@@ -133,12 +115,19 @@ export default function DocsHome() {
{/* VoltOps Console Section */} -
-
- VoltOps Console - Cloud / Self-Hosted Platform +
+
+ VoltOps Console + Cloud / Self-Hosted Platform
-
+

+ Enterprise-grade platform to take AI agents from development to production. +

+ {/* Feature Showcase - Full Width */} +
+ +
+ {/*
{voltOpsFeatures.map((feature) => (
))} -
+
*/}
{/* Quick Links Section */}
-

Quick Links

-
+

Get Started

+
{quickLinks.map((link) => ( - - {link.title} - +
+ + +
+ {link.title} + + {link.description} + +
+ +
+
))}
diff --git a/website/src/components/feature-showcase/index.tsx b/website/src/components/feature-showcase/index.tsx index df73fdd51..b0670398d 100644 --- a/website/src/components/feature-showcase/index.tsx +++ b/website/src/components/feature-showcase/index.tsx @@ -69,12 +69,12 @@ export function FeatureShowcase() { }, [activeTab]); return ( -
+
{/* Main Container */} -
+
{/* Tab Bar + Description (unified) */} -
+
{/* Tabs */}

@@ -199,11 +199,11 @@ export function FeatureShowcase() {

{/* Code Panel - Bottom on mobile, Left on desktop */} -
+
{displayTabData?.triggerCode && displayTabData?.actionCode ? (
{/* Code Tabs */} -
+