From 2f78318c0ce98d593b4d9a382c01839a3a011665 Mon Sep 17 00:00:00 2001 From: Beckett Frey Date: Thu, 20 Aug 2026 12:41:18 -0500 Subject: [PATCH] Give the docs viewer a single scroll context /docs inset the pdoc bundle in a bordered card inside a viewport-height region, then hung the Footer off the end of it. pdoc already ships two scrolling panes of its own, so that stacked a third: the window scrolled to reach the Footer, and doing so slid the whole docs card out of view. Hand the bundle the full viewport below the navbar and drop the Footer from this route, leaving only the two panes pdoc intends. Point the frame at voxkit.html directly -- index.html is a meta-refresh stub, and in a frame that hop lands in session history and swallows the first Back press. The page no longer needs client state, so it renders on the server with real metadata. Closes #15 --- app/docs/page.tsx | 54 +++++++++++++++++++++++++++++------------------ app/globals.css | 11 ++++++++++ 2 files changed, 44 insertions(+), 21 deletions(-) diff --git a/app/docs/page.tsx b/app/docs/page.tsx index f4db611..66790d4 100644 --- a/app/docs/page.tsx +++ b/app/docs/page.tsx @@ -1,27 +1,39 @@ -"use client"; -import { Footer, Navbar } from "../../layout"; +import type { Metadata } from "next"; +import { Navbar } from "../../layout"; +export const metadata: Metadata = { + title: "VoxKit API Documentation", + description: + "Generated API reference for the VoxKit Python package: storage, analyzers, engines, and configuration.", +}; + +/** + * The pdoc bundle in `public/docs` is already a complete documentation site, + * with a sidebar pane and a content pane that scroll independently. This route + * hands it the whole viewport below the navbar instead of insetting it in a + * card, so those two are the only scrollbars on the page. + * + * `Footer` is deliberately absent. As a sibling of a viewport-height region it + * put a third, outer scrollbar on the window, and scrolling it slid the entire + * docs pane out of view. + */ export default function DocsPage() { return ( - <> -
- - - {/* Documentation iframe container */} -
-
- {/* Iframe wrapper with styling */} -
-