import { SyntheticEvent, useState } from 'react' import cx from 'classnames' import { ChevronDownIcon, 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' import styles from './PatchNotes.module.scss' import { PlainLink } from './PlainLink' type Props = { context: GHESReleaseNotesContextT } export function GHESReleaseNotes({ context }: Props) { const router = useRouter() const { currentProduct } = useMainContext() const [focusedPatch, setFocusedPatch] = useState('') const { latestPatch, latestRelease, currentVersion, releaseNotes, releases, message } = context return (

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

{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} {release.patches.length === 1 ? 'release' : 'releases'}
  • ) }