import { useRouter } from 'next/router' import dynamic from 'next/dynamic' import cx from 'classnames' import { LinkExternalIcon } from '@primer/octicons-react' import { Callout } from 'components/ui/Callout' import { DefaultLayout } from 'components/DefaultLayout' import { ArticleTitle } from 'components/article/ArticleTitle' import { useArticleContext } from 'components/context/ArticleContext' import { LearningTrackNav } from './LearningTrackNav' import { MarkdownContent } from 'components/ui/MarkdownContent' import { Lead } from 'components/ui/Lead' import { PermissionsStatement } from 'components/ui/PermissionsStatement' import { ArticleGridLayout } from './ArticleGridLayout' import { ArticleInlineLayout } from './ArticleInlineLayout' import { PlatformPicker } from 'components/article/PlatformPicker' import { ToolPicker } from 'components/article/ToolPicker' import { MiniTocs } from 'components/ui/MiniTocs' import { LearningTrackCard } from 'components/article/LearningTrackCard' import { RestRedirect } from 'src/rest/components/RestRedirect' import { Breadcrumbs } from 'components/page-header/Breadcrumbs' import { Link } from 'components/Link' import { useTranslation } from 'components/hooks/useTranslation' import { LinkPreviewPopover } from 'components/LinkPreviewPopover' const ClientSideRefresh = dynamic(() => import('components/ClientSideRefresh'), { ssr: false, }) const isDev = process.env.NODE_ENV === 'development' export const ArticlePage = () => { const router = useRouter() const { title, intro, effectiveDate, renderedPage, permissions, includesPlatformSpecificContent, includesToolSpecificContent, product, productVideoUrl, miniTocItems, currentLearningTrack, supportPortalVaIframeProps, currentLayout, } = useArticleContext() const isLearningPath = !!currentLearningTrack?.trackName const { t } = useTranslation(['pages']) const introProp = ( <> {intro && ( // Note the `_page-intro` is used by the popover preview cards // when it needs this text for in-page links. {intro} )} {permissions && } {includesPlatformSpecificContent && } {includesToolSpecificContent && } {product && ( )} ) const toc = ( <> {isLearningPath && } {miniTocItems.length > 1 && } ) const articleContents = (
{productVideoUrl && (
{t('video_from_transcript')}
)} {renderedPage} {effectiveDate && (
Effective as of:{' '}
)}
) return ( {isDev && } {router.pathname.includes('/rest/') && }
{currentLayout === 'inline' ? ( {title}} intro={introProp} toc={toc} > {articleContents} ) : ( {title}} intro={introProp} toc={toc} > {articleContents} )} {isLearningPath ? (
) : null}
) }