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'}
{release.patches.map((patch) => {
const isActive = patch.version === focusedPatch
return (
-
{patch.version}
{dayjs(patch.date).format('MMMM DD, YYYY')}
)
})}
)
}