diff --git a/src/app/release-notes/[version]/page.tsx b/src/app/release-notes/[version]/page.tsx index 8992c4f..fd3e332 100644 --- a/src/app/release-notes/[version]/page.tsx +++ b/src/app/release-notes/[version]/page.tsx @@ -1,5 +1,6 @@ "use client"; +import React, { useState, useCallback } from 'react'; import Footer from "@/components/footer"; import { Navigation } from "@/components/navigation"; import ReleaseNote from "@/components/release-note"; @@ -7,6 +8,50 @@ import { Button } from "@/components/ui/button"; import { releaseNotes } from "@/lib/release-notes"; import Link from "next/link"; import { redirect, useParams } from "next/navigation"; +import { ChevronLeft, ChevronRight, ChevronDown } from 'lucide-react'; + +const VersionList = React.memo(({ currentVersion }: { currentVersion: string }) => { + const [isOpen, setIsOpen] = useState(false); + + const toggleDropdown = useCallback(() => { + setIsOpen(prev => !prev); + }, []); + + return ( +
+
+ + {isOpen && ( +
+ {releaseNotes.map((note) => ( + + {note.version} + + ))} +
+ )} +
+
+ ); +}); + +VersionList.displayName = 'VersionList'; export default function ReleaseNotePage() { const params = useParams<{ version: string }>(); @@ -16,7 +61,9 @@ export default function ReleaseNotePage() { return redirect(`/release-notes/${releaseNotes[0].version}`); } - const releaseNote = releaseNotes.find((note) => note.version === version); + const currentIndex = releaseNotes.findIndex((note) => note.version === version); + const releaseNote = releaseNotes[currentIndex]; + if (!releaseNote) { return (
@@ -33,9 +80,37 @@ export default function ReleaseNotePage() {
); } + + const prevNote = releaseNotes[currentIndex + 1]; + const nextNote = releaseNotes[currentIndex - 1]; + return ( -
- +
+ + +
+ +
+ +
+ {prevNote && ( + + + + )} + {nextNote && ( + + + + )} +
+