import { SyntheticEvent, useState } from 'react' import cx from 'classnames' import { ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, LinkExternalIcon, } from '@primer/octicons-react' import { useMainContext } from 'components/context/MainContext' import dayjs from 'dayjs' import { useRouter } from 'next/router' import { Link } from 'components/Link' import { MarkdownContent } from 'components/ui/MarkdownContent' import { GHESReleaseNotesContextT } from './types' import { GHESReleaseNotePatch } from './GHESReleaseNotePatch' type Props = { context: GHESReleaseNotesContextT } export function GHESReleaseNotes({ context }: Props) { const router = useRouter() const { currentProduct } = useMainContext() const [focusedPatch, setFocusedPatch] = useState('') const { prevRelease, nextRelease, latestPatch, latestRelease, currentVersion, releaseNotes, releases, message, } = context return (
{prevRelease ? ( {prevRelease} ) : (
)}

{currentVersion.planTitle} {currentVersion.currentRelease} release notes

{nextRelease ? ( {nextRelease} ) : (
)}
{releaseNotes.map((patch) => { return ( { setFocusedPatch(patch.version) }} /> ) })}
) } const CollapsibleReleaseSection = ({ release, releaseLink, focusedPatch, }: { release: GHESReleaseNotesContextT['releases'][0] releaseLink: string focusedPatch: string }) => { const defaultIsOpen = true const [isOpen, setIsOpen] = useState(defaultIsOpen) const onToggle = (e: SyntheticEvent) => { const newIsOpen = (e.target as HTMLDetailsElement).open setIsOpen(newIsOpen) } return (
  • {release.version}
    {release.patches.length} releases
  • ) }