From 45c7a003a068376a53d614643b348ac47f32ba00 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 14 Jul 2025 07:27:56 +0000 Subject: [PATCH 1/2] Add next page button with dynamic navigation in documentation layout Co-authored-by: joaquim.verges --- .../Document/AutoNextPageButton.tsx | 25 ++++++ .../components/Document/NextPageButton.tsx | 16 ++++ .../src/components/Document/PageFooter.tsx | 14 +++- .../Document/utils/getNextPageFromSidebar.ts | 80 +++++++++++++++++++ .../src/components/Layouts/DocLayout.tsx | 11 ++- 5 files changed, 142 insertions(+), 4 deletions(-) create mode 100644 apps/portal/src/components/Document/AutoNextPageButton.tsx create mode 100644 apps/portal/src/components/Document/NextPageButton.tsx create mode 100644 apps/portal/src/components/Document/utils/getNextPageFromSidebar.ts diff --git a/apps/portal/src/components/Document/AutoNextPageButton.tsx b/apps/portal/src/components/Document/AutoNextPageButton.tsx new file mode 100644 index 00000000000..6b47ef19853 --- /dev/null +++ b/apps/portal/src/components/Document/AutoNextPageButton.tsx @@ -0,0 +1,25 @@ +"use client"; + +import { usePathname } from "next/navigation"; +import type { SidebarLink } from "@/components/others/Sidebar"; +import { NextPageButton } from "./NextPageButton"; +import { getNextPageFromSidebar } from "./utils/getNextPageFromSidebar"; + +export function AutoNextPageButton({ + sidebarLinks, +}: { sidebarLinks: SidebarLink[] }) { + const pathname = usePathname(); + + // Don't show next button on home page + if (pathname === "/") { + return null; + } + + const nextPage = getNextPageFromSidebar(sidebarLinks, pathname); + + if (!nextPage) { + return null; + } + + return ; +} diff --git a/apps/portal/src/components/Document/NextPageButton.tsx b/apps/portal/src/components/Document/NextPageButton.tsx new file mode 100644 index 00000000000..6fe845a6c13 --- /dev/null +++ b/apps/portal/src/components/Document/NextPageButton.tsx @@ -0,0 +1,16 @@ +import Link from "next/link"; +import { ArrowRightIcon } from "lucide-react"; + +export function NextPageButton(props: { href: string; name: string }) { + return ( + +
Next: {props.name}
+
+ +
+ + ); +} diff --git a/apps/portal/src/components/Document/PageFooter.tsx b/apps/portal/src/components/Document/PageFooter.tsx index e79bd444dca..148ad0d3f9b 100644 --- a/apps/portal/src/components/Document/PageFooter.tsx +++ b/apps/portal/src/components/Document/PageFooter.tsx @@ -9,12 +9,22 @@ import { Feedback } from "../others/Feedback"; import { Subscribe } from "../others/Subscribe"; import { DocLink } from "."; import { AutoEditPageButton } from "./AutoEditPageButton"; +import { AutoNextPageButton } from "./AutoNextPageButton"; +import type { SidebarLink } from "../others/Sidebar"; -export function PageFooter(props: { editPageButton?: true }) { +export function PageFooter(props: { + editPageButton?: true; + sidebarLinks?: SidebarLink[]; +}) { return (