diff --git a/website/src/components/navbar/styles.module.css b/website/src/components/navbar/styles.module.css
index 7a341499b..a829b885f 100644
--- a/website/src/components/navbar/styles.module.css
+++ b/website/src/components/navbar/styles.module.css
@@ -310,3 +310,380 @@
padding: 0 20px;
}
}
+
+/* ===== Docs Navbar Styles ===== */
+.docsNavbar {
+ position: sticky;
+ top: 0;
+ z-index: 1000;
+ background-color: #0a0a0a;
+ width: 100%;
+ border-bottom: 1px solid rgba(148, 163, 184, 0.18);
+ backdrop-filter: blur(12px);
+}
+
+[data-theme='light'] .docsNavbar {
+ background-color: #fdfdfd;
+ border-bottom-color: #e5e7eb;
+}
+
+.docsNavbarTop {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 0.625rem 1.5rem 0;
+ min-height: 52px;
+ margin-bottom: 5px;
+}
+
+[data-theme='light'] .docsNavbarTop {
+ border-bottom-color: rgba(0, 0, 0, 0.06);
+}
+
+.docsNavbarBottom {
+ display: flex;
+ align-items: center;
+ padding: 0 1.5rem;
+ min-height: 42px;
+ overflow-x: auto;
+ scrollbar-width: none;
+ -ms-overflow-style: none;
+}
+
+.docsNavbarBottom::-webkit-scrollbar {
+ display: none;
+}
+
+/* Left section - Logo */
+.docsLeftSection {
+ display: flex;
+ align-items: center;
+ flex-shrink: 0;
+}
+
+.docsLogoLink {
+ display: flex;
+ align-items: baseline;
+ gap: 0.375rem;
+ text-decoration: none;
+}
+
+.docsLogoIcon {
+ width: 1.1rem;
+ height: 1.1rem;
+ flex-shrink: 0;
+ align-self: center;
+}
+
+.docsLogoText {
+ font-size: 1.35rem;
+ font-weight: 700;
+ color: #00d992;
+}
+
+.docsFrameworkText {
+ font-size: 0.85rem;
+ color: #9ca3af;
+ white-space: nowrap;
+}
+
+.docsDocsText {
+ font-size: 0.85rem;
+ font-weight: 600;
+ color: #9ca3af;
+ white-space: nowrap;
+}
+
+/* Center section - Search + Version (left-aligned) */
+.docsCenterSection {
+ display: flex;
+ align-items: center;
+ gap: 0.625rem;
+ flex: 1;
+ justify-content: flex-start;
+ margin-left: 1.25rem;
+}
+
+.docsSearchWrapper {
+ min-width: 240px;
+ max-width: 280px;
+ width: 100%;
+ position: relative;
+}
+
+.docsSearchHidden {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ margin: -1px;
+ overflow: hidden;
+ clip: rect(0, 0, 0, 0);
+ white-space: nowrap;
+ border: 0;
+}
+
+.docsSearchButton {
+ display: inline-flex;
+ align-items: center;
+ gap: 0.5rem;
+ width: 100%;
+ height: 32px;
+ padding: 0 0.75rem;
+ border-radius: 6px;
+ background: rgba(255, 255, 255, 0.04);
+ border: 1px solid rgba(75, 85, 99, 0.4);
+ color: #94a3b8;
+ font-size: 0.8rem;
+ font-weight: 500;
+ cursor: pointer;
+ transition: all 0.2s ease;
+ text-decoration: none;
+}
+
+.docsSearchButton:hover {
+ background: rgba(255, 255, 255, 0.08);
+ border-color: rgba(255, 255, 255, 0.15);
+}
+
+[data-theme='light'] .docsSearchButton {
+ background: #f8fafc;
+ border-color: #e2e8f0;
+ color: #64748b;
+}
+
+[data-theme='light'] .docsSearchButton:hover {
+ background: rgba(0, 0, 0, 0.02);
+ border-color: rgba(0, 0, 0, 0.15);
+}
+
+.docsSearchIcon {
+ width: 14px;
+ height: 14px;
+ color: #9ca3af;
+}
+
+.docsSearchText {
+ flex: 1;
+ text-align: left;
+}
+
+.docsSearchShortcut {
+ font-size: 0.6875rem;
+ font-weight: 600;
+ padding: 0.1875rem 0.375rem;
+ border-radius: 4px;
+ background: rgba(16, 185, 129, 0.1);
+ border: 1px solid rgba(16, 185, 129, 0.3);
+ color: #10b981;
+}
+
+[data-theme='light'] .docsSearchShortcut {
+ background: rgba(16, 185, 129, 0.1);
+ border-color: rgba(16, 185, 129, 0.3);
+ color: #10b981;
+}
+
+.docsVersionBadge {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ height: 32px;
+ padding: 0 0.625rem;
+ background: transparent;
+ border: 1px solid rgba(75, 85, 99, 0.4);
+ border-radius: 6px;
+ font-size: 0.75rem;
+ font-weight: 600;
+ color: rgba(52, 211, 153, 0.92);
+ white-space: nowrap;
+ flex-shrink: 0;
+}
+
+[data-theme='light'] .docsVersionBadge {
+ background: rgba(16, 185, 129, 0.12);
+ border-color: rgba(5, 150, 105, 0.45);
+ color: #047857;
+}
+
+/* Right section - Actions */
+.docsRightSection {
+ display: flex;
+ align-items: center;
+ gap: 0.5rem;
+ flex-shrink: 0;
+}
+
+.docsSocialButton {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: 32px;
+ height: 32px;
+ border-radius: 6px;
+ background: transparent;
+ border: 1px solid rgba(75, 85, 99, 0.4);
+ transition: background 0.2s ease, border-color 0.2s ease;
+ text-decoration: none;
+}
+
+.docsSocialButton:hover {
+ background: rgba(148, 163, 184, 0.12);
+ border-color: rgba(148, 163, 184, 0.3);
+}
+
+[data-theme='light'] .docsSocialButton {
+ border-color: #e5e7eb;
+}
+
+[data-theme='light'] .docsSocialButton:hover {
+ background: rgba(0, 0, 0, 0.04);
+ border-color: #d1d5db;
+}
+
+.docsCtaButton {
+ width: auto;
+ height: 32px;
+ padding: 0 0.75rem;
+ gap: 0.35rem;
+ font-size: 0.75rem;
+ font-weight: 600;
+ color: rgba(52, 211, 153, 0.92);
+ line-height: 1;
+ white-space: nowrap;
+ display: inline-flex;
+ align-items: center;
+ border-radius: 6px;
+}
+
+[data-theme='light'] .docsCtaButton {
+ color: #047857;
+ background: rgba(16, 185, 129, 0.12);
+ border-color: rgba(5, 150, 105, 0.45);
+}
+
+[data-theme='light'] .docsCtaButton:hover {
+ background: rgba(16, 185, 129, 0.16);
+ border-color: rgba(5, 150, 105, 0.6);
+ color: #065f46;
+}
+
+.docsCtaIcon {
+ width: 16px;
+ height: 16px;
+}
+
+.docsSocialIconHome {
+ width: 18px;
+ height: 18px;
+ color: rgba(226, 232, 240, 0.92);
+}
+
+[data-theme='light'] .docsSocialIconHome {
+ color: #0f172a;
+}
+
+.docsSocialIconDiscord {
+ width: 18px;
+ height: 18px;
+ color: #5865f2;
+}
+
+.docsSocialIconGitHub {
+ width: 18px;
+ height: 18px;
+ color: rgba(226, 232, 240, 0.9);
+}
+
+[data-theme='light'] .docsSocialIconGitHub {
+ color: #0f172a;
+}
+
+.docsTabList {
+ display: inline-flex;
+ align-items: flex-end;
+ gap: 1.2rem;
+ padding: 0;
+}
+
+.docsTab {
+ position: relative;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ text-decoration: none;
+ font-size: 0.88rem;
+ font-weight: 500;
+ color: #b2b2b2;
+ padding: 0.5rem 0rem;
+ letter-spacing: 0.005em;
+ transition: color 0.15s ease;
+ white-space: nowrap;
+}
+
+.docsTab:hover {
+ color: #b2b2b2;
+ text-decoration: none;
+}
+
+.docsTab:hover::after {
+ background: rgba(75, 85, 99, 0.5);
+}
+
+.docsTab::after {
+ content: "";
+ position: absolute;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ height: 2px;
+ border-radius: 2px;
+ background: transparent;
+ transition: background 0.15s ease;
+}
+
+.docsTabActive {
+ color: #f2f2f2;
+}
+
+.docsTabActive:hover {
+ color: #f2f2f2;
+}
+
+.docsTabActive:hover::after {
+ background: #10b981;
+}
+
+.docsTabActive::after {
+ background: #10b981;
+}
+
+[data-theme='light'] .docsTab {
+ color: rgba(15, 23, 42, 0.6);
+}
+
+[data-theme='light'] .docsTab:hover {
+ color: rgba(15, 23, 42, 0.6);
+}
+
+[data-theme='light'] .docsTab:hover::after {
+ background: rgba(75, 85, 99, 0.3);
+}
+
+[data-theme='light'] .docsTabActive {
+ color: #059669;
+}
+
+[data-theme='light'] .docsTabActive:hover {
+ color: #059669;
+}
+
+[data-theme='light'] .docsTabActive:hover::after {
+ background: #10b981;
+}
+
+@media (max-width: 1024px) {
+ .docsNavbar {
+ display: none;
+ }
+}
diff --git a/website/src/components/ops/Observability.tsx b/website/src/components/ops/Observability.tsx
index 243e469cb..9facc55af 100644
--- a/website/src/components/ops/Observability.tsx
+++ b/website/src/components/ops/Observability.tsx
@@ -683,7 +683,6 @@ const TabItem = ({
onClick: () => void;
}) => {
return (
- // biome-ignore lint/a11y/useKeyWithClickEvents: ignore
{/* Feature 1 - Centralized Coordination */}
- {/* biome-ignore lint/a11y/useKeyWithClickEvents: ignore */}
- {/* biome-ignore lint/a11y/useKeyWithClickEvents: ignore */}
- {/* biome-ignore lint/a11y/useKeyWithClickEvents: ignore */}
{
{/* Shared Memory System */}
- {/* biome-ignore lint/a11y/useKeyWithClickEvents: ignore */}
handleFeatureClick("memory", e)}
@@ -226,7 +225,6 @@ export const MobileCodeBlock = ({ isVisible }: MobileCodeBlockProps) => {
{/* Dynamic Agent Selection */}
- {/* biome-ignore lint/a11y/useKeyWithClickEvents: ignore */}
.menu__link {
+ font-size: 0.75rem !important;
+ font-weight: 700 !important;
+ text-transform: uppercase !important;
+ letter-spacing: 0.05em !important;
+ color: #ffffff !important;
+}
+
+[data-theme="dark"] .theme-doc-sidebar-item-link-level-1 > .menu__link {
+ color: #ffffff !important;
+}
+
+.theme-doc-sidebar-item-link-level-1 > .menu__link--active {
+ color: #ffffff !important;
+ border-left: 2px solid rgb(16, 185, 129) !important;
+}
+
+[data-theme="dark"] .theme-doc-sidebar-item-link-level-1 > .menu__link--active {
+ color: #ffffff !important;
+ border-left: 2px solid rgb(16, 185, 129) !important;
+}
+
/* Custom Search Bar Styling */
.navbar__search-input {
background-color: rgba(255, 255, 255, 0.06) !important;
@@ -5499,7 +5523,7 @@ nav.table-of-contents .table-of-contents__link--active,
.DocSearch-Modal {
box-shadow: none !important;
- margin-top: 40px !important;
+ margin-top: 85px !important;
padding: 0 5px;
}
@@ -5571,6 +5595,30 @@ nav.table-of-contents .table-of-contents__link--active,
display: inline-flex !important;
}
+.menu__caret svg {
+ width: 12px !important;
+ height: 12px !important;
+}
+
+/* Caret ::before pseudo-element - consistent icon size */
+.menu__caret::before {
+ background-size: 2rem 2rem !important;
+ width: 2rem !important;
+ height: 2rem !important;
+}
+
+/* Nested menu caret - same size as parent */
+.menu__list .menu__list .menu__caret svg {
+ width: 12px !important;
+ height: 12px !important;
+}
+
+.menu__list .menu__list .menu__caret::before {
+ background-size: 1.5rem 1.5rem !important;
+ width: 1.5rem !important;
+ height: 1.5rem !important;
+}
+
.menu__list-item-collapsible .menu__caret {
transform: rotate(-90deg);
}
diff --git a/website/src/css/layout.css b/website/src/css/layout.css
index 1b05ed890..1274f0862 100644
--- a/website/src/css/layout.css
+++ b/website/src/css/layout.css
@@ -204,6 +204,11 @@ div[class^="announcementBar_"] button {
/* border-right: none !important; */
margin-top: 0 !important;
margin-left: 0;
+ position: sticky;
+ top: 100px;
+ height: calc(100vh - 100px);
+ align-self: flex-start;
+ overflow: hidden;
}
/* Target docSidebarContainer by attribute selector */
diff --git a/website/src/pages/index.tsx b/website/src/pages/index.tsx
index 506ce5368..1b1369cba 100644
--- a/website/src/pages/index.tsx
+++ b/website/src/pages/index.tsx
@@ -8,12 +8,10 @@ import { FeatureShowcase } from "../components/feature-showcase";
import { FeaturedBlog } from "../components/featured-blog";
import { Hero } from "../components/hero";
import { Integrations } from "../components/integrations";
-import LivePreview from "../components/live-preview";
import Ops from "../components/ops";
import { Rag } from "../components/rag";
import { SupervisorAgent } from "../components/supervisor-agent";
import { Testimonials } from "../components/testimonials";
-import { TwoBlocks } from "../components/two-blocks";
import { DotPattern } from "../components/ui/dot-pattern";
import { Workflows } from "../components/workflows";
export default function Home(): JSX.Element {
@@ -75,7 +73,6 @@ export default function Home(): JSX.Element {
-
diff --git a/website/src/theme/DocRoot/Layout/Main/index.tsx b/website/src/theme/DocRoot/Layout/Main/index.tsx
index 7d687ad14..0dcad0efc 100644
--- a/website/src/theme/DocRoot/Layout/Main/index.tsx
+++ b/website/src/theme/DocRoot/Layout/Main/index.tsx
@@ -1,14 +1,10 @@
-import Link from "@docusaurus/Link";
import { useActiveDocContext } from "@docusaurus/plugin-content-docs/client";
import { useLocation } from "@docusaurus/router";
import { useDocsSidebar } from "@docusaurus/theme-common/internal";
-import { DiscordLogo } from "@site/static/img/logos/discord";
-import { GitHubLogo } from "@site/static/img/logos/github";
import type { Props } from "@theme/DocRoot/Layout/Main";
import clsx from "clsx";
import React, { useMemo } from "react";
-import { ArrowRightIcon, HomeIcon } from "@heroicons/react/24/outline";
import styles from "./styles.module.css";
export default function DocRootLayoutMain({
@@ -22,8 +18,6 @@ export default function DocRootLayoutMain({
const activeDocId = activeDoc?.id;
const activeDocPath = activeDoc?.path ?? location.pathname;
- // No nav content in header anymore per spec; only icons.
-
const sectionLabel = useMemo(() => {
if (!sidebar?.items || (!activeDocId && !activeDocPath)) {
return null;
@@ -70,108 +64,6 @@ export default function DocRootLayoutMain({
(hiddenSidebarContainer || !sidebar) && styles.docMainContainerEnhanced,
)}
>
-
-
-
-
- VoltAgent Docs
-
-
- Observability
-
-
- Actions & Triggers
-
-
- Evaluation
-
-
- Prompt Engineering
-
-
- Deployment
-
-
- Recipes & Guides
-
-
-
-
-
-
Try VoltOps
-
-
-
-
-
-
-
-
-
-
-
-
-
(
-
-);
-
function useShowAnnouncementBar() {
const { isActive } = useAnnouncementBar();
const [showAnnouncementBar, setShowAnnouncementBar] = useState(isActive);
@@ -50,55 +22,24 @@ function useShowAnnouncementBar() {
export default function DocSidebarDesktopContent({ path, sidebar, className }) {
const showAnnouncementBar = useShowAnnouncementBar();
- const location = useLocation();
- const isVoltOpsDoc = location.pathname.includes("/observability-docs/");
return (
-
- {/* Desktop header - hidden on mobile */}
-
-
-
-
-
-
-
-
{isVoltOpsDoc ? "voltops" : "voltagent"}
-
- {isVoltOpsDoc ? "Observability" : "Framework"}
-
-
Docs
-
-
-
-
-
-
-
- {!isVoltOpsDoc &&
v1.0.x
}
-
-
-
-
-
+
);
}
diff --git a/website/src/theme/DocSidebar/Desktop/Content/styles.module.css b/website/src/theme/DocSidebar/Desktop/Content/styles.module.css
index 253d71913..30998e85b 100644
--- a/website/src/theme/DocSidebar/Desktop/Content/styles.module.css
+++ b/website/src/theme/DocSidebar/Desktop/Content/styles.module.css
@@ -1,175 +1,13 @@
-.contentWrapper {
- display: flex;
- flex-direction: column;
- height: 100%;
-}
-
-.sidebarHeader {
- display: flex;
- flex-direction: column;
- gap: 1rem;
- padding: 0.875rem 1rem;
- flex-shrink: 0;
-}
-
-.logoRow {
- display: flex;
- align-items: center;
- justify-content: space-between;
- gap: 0.75rem;
- min-height: 24px;
-}
-
-.sidebarLogo {
- text-decoration: none;
- display: block;
- flex: 1;
- min-width: 0;
-}
-
-.logoContainer {
- display: flex;
- align-items: baseline;
- gap: 0.375rem;
- flex-wrap: nowrap;
-}
-
-.logoIcon {
- display: flex;
- align-items: center;
- justify-content: center;
- flex-shrink: 0;
-}
-
-.boltIcon {
- width: 0.75rem;
- height: 0.75rem;
- color: #00d992;
-}
-
-.logoText {
- font-size: 1.2rem;
- font-weight: 700;
- color: #00d992;
-}
-
-.frameworkText {
- font-size: 0.75rem;
- color: #9ca3af;
- margin-left: 0.25rem;
- white-space: nowrap;
-}
-
-.docsText {
- font-size: 0.75rem;
- font-weight: 600;
- color: #10b981;
- white-space: nowrap;
-}
-
-.versionBadge {
- display: inline-flex;
- align-items: center;
- padding: 0.1875rem 0.375rem;
- background-color: rgba(16, 185, 129, 0.1);
- border: 1px solid rgba(16, 185, 129, 0.3);
- border-radius: 4px;
- font-size: 0.6875rem;
- font-weight: 600;
- color: #10b981;
- white-space: nowrap;
- flex-shrink: 0;
-}
-
-[data-theme='dark'] .versionBadge {
- background-color: rgba(16, 185, 129, 0.15);
- border-color: rgba(16, 185, 129, 0.4);
-}
-
-.searchRow {
- display: flex;
- align-items: center;
- gap: 0.5rem;
-}
-
-.searchContainer {
- position: relative;
- flex: 1;
-}
-
-.searchContainer :global(.DocSearch-Button) {
- width: 100% !important;
- height: 32px !important;
- padding: 0 0.625rem !important;
- border-radius: 6px !important;
- background-color: #fafafa !important;
- border: 1px solid rgba(0, 0, 0, 0.1) !important;
- font-size: 0.8125rem !important;
- box-shadow: none !important;
-}
-
-.searchContainer :global(.DocSearch-Button):hover {
- background-color: rgba(0, 0, 0, 0.02) !important;
- border-color: rgba(0, 0, 0, 0.1) !important;
- box-shadow: none !important;
-}
-
-.searchContainer :global(.DocSearch-Button-Placeholder) {
- color: #9ca3af !important;
- font-size: 0.8125rem !important;
-}
-
-.searchContainer :global(.DocSearch-Search-Icon) {
- color: #9ca3af !important;
- width: 14px !important;
- height: 14px !important;
-}
-
-[data-theme='dark'] .searchContainer :global(.DocSearch-Button) {
- background-color: #aaaaaa0d !important;
- border-color: rgba(255, 255, 255, 0.1) !important;
- box-shadow: none !important;
-}
-
-[data-theme='dark'] .searchContainer :global(.DocSearch-Button):hover {
- background-color: rgba(255, 255, 255, 0.08) !important;
- border-color: rgba(255, 255, 255, 0.1) !important;
- box-shadow: none !important;
-}
-
-.searchContainer :global(.DocSearch-Button-Keys) {
- background-color: rgba(16, 185, 129, 0.1) !important;
- border: 1px solid rgba(16, 185, 129, 0.3) !important;
- border-radius: 4px !important;
- padding: 0.1875rem 0.375rem !important;
- display: inline-flex !important;
- align-items: center !important;
-}
-
-.searchContainer :global(.DocSearch-Button-Key) {
- color: #10b981 !important;
- font-size: 0.6875rem !important;
- font-weight: 600 !important;
-}
-
-[data-theme='dark'] .searchContainer :global(.DocSearch-Button-Keys) {
- background-color: rgba(16, 185, 129, 0.15) !important;
- border-color: rgba(16, 185, 129, 0.4) !important;
-}
-
-[data-theme='dark'] .searchContainer :global(.DocSearch-Button-Key) {
- color: #10b981 !important;
-}
-
@media (min-width: 997px) {
- .menu {
+ .menu {
flex-grow: 1;
padding: 0 1rem 1rem 1rem;
overflow-y: auto;
+ height: 100%;
}
@supports (scrollbar-gutter: stable) {
.menu {
- padding: 0 1rem 1rem 1rem;
+ padding: 0 1rem 1rem 1rem;
scrollbar-gutter: stable;
}
}
@@ -179,9 +17,7 @@
}
}
-/* Hide sidebar header on mobile */
-@media (max-width: 996px) {
- .sidebarHeader {
- display: none !important;
- }
+/* Add top padding to sidebar menu list */
+:global(.theme-doc-sidebar-menu.menu__list) {
+ padding-top: 0.5rem;
}
diff --git a/website/src/theme/Navbar/index.js b/website/src/theme/Navbar/index.js
index 8bc20a11f..f2f325993 100644
--- a/website/src/theme/Navbar/index.js
+++ b/website/src/theme/Navbar/index.js
@@ -18,12 +18,11 @@ export default function Navbar() {
const isMobile = windowSize === "mobile";
- if (isDocsPage) {
- if (isMobile) {
- return
;
- }
- return null;
+ // Mobile docs pages: show DocNavbar
+ if (isDocsPage && isMobile) {
+ return
;
}
+ // All other cases (including desktop docs): show CustomNavbar
return
;
}
diff --git a/website/src/theme/TOC/index.js b/website/src/theme/TOC/index.js
index 07d34d523..5f364301d 100644
--- a/website/src/theme/TOC/index.js
+++ b/website/src/theme/TOC/index.js
@@ -49,16 +49,7 @@ export default function TOC({ toc, ...props }) {
}));
return (
-