From d9019eac3ed905149cd322a13eee6660e709256d Mon Sep 17 00:00:00 2001 From: Max Goisser Date: Sat, 4 Nov 2023 14:44:35 +0100 Subject: [PATCH] Add GitHub repository to sidebar --- pages/modules/[module].tsx | 42 +++++++++++++++++++++++++++----------- 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/pages/modules/[module].tsx b/pages/modules/[module].tsx index 3972567dbea3..6de8cf72606b 100644 --- a/pages/modules/[module].tsx +++ b/pages/modules/[module].tsx @@ -15,6 +15,7 @@ import { VersionInfo, } from '../../data/moduleStaticProps' import { formatDistance, parseISO } from 'date-fns' +import { faGlobe } from '@fortawesome/free-solid-svg-icons' interface ModulePageProps { metadata: Metadata @@ -36,6 +37,11 @@ const ModulePage: NextPage = ({ }) => { const router = useRouter() const { module } = router.query + // There may be multiple GitHub repositories specified for a module, but for now + // the UI will only display information about the first one in the list. + const firstGithubRepository = metadata.repository?.find((repo) => + repo.startsWith('github:') + ) const [triggeredShowAllVersions, setTriggeredShowAllVersions] = useState(false) @@ -63,9 +69,10 @@ const ModulePage: NextPage = ({ const versionInfo = versionInfos.find((n) => n.version === selectedVersion) - const githubLink = metadata.repository - ?.find((repo) => repo.startsWith('github:')) - ?.replace('github:', 'https://github.com/') + const githubLink = firstGithubRepository?.replace( + 'github:', + 'https://github.com/' + ) const releaseNotesLink = githubLink ? `${githubLink}/releases/tag/v${selectedVersion}` : undefined @@ -91,8 +98,8 @@ const ModulePage: NextPage = ({ {module} {selectedVersion} -
-
+
+

Install

@@ -319,18 +326,29 @@ const ModulePage: NextPage = ({

-
-

Metadata

+
+

Metadata

-

Homepage

-
+ {metadata.homepage !== githubLink ? ( - {metadata.homepage} + + Homepage -
+ ) : null} +
+

Maintainers

@@ -338,7 +356,7 @@ const ModulePage: NextPage = ({
    {metadata.maintainers.map(({ name, email, github }) => (
  • - + {email && (