import type { Metadata } from "next" import { getTranslations, getMessages, setRequestLocale } from "next-intl/server" import { DocHeader } from "@/components/ui/doc-header" import { Callout } from "@/components/ui/callout" export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { const { locale } = await params const t = await getTranslations({ locale, namespace: "docs.externalRepositories.meta" }) return { title: t("title"), description: t("description"), openGraph: { title: t("ogTitle"), description: t("ogDescription"), type: "article", url: "https://macrimi.github.io/ProxMenux/docs/external-repositories", }, } } type RepoItem = { name: string; url: string; description: string; usedIn: string } export default async function ExternalRepositoriesPage({ params }: { params: Promise<{ locale: string }> }) { const { locale } = await params setRequestLocale(locale) const t = await getTranslations({ locale, namespace: "docs.externalRepositories" }) const messages = (await getMessages({ locale })) as unknown as { docs: { externalRepositories: { integrated: { items: RepoItem[] } attribution: { items: string[] } candidate: { items: string[] } } } } const block = messages.docs.externalRepositories const repos = block.integrated.items const attributionItems = block.attribution.items const candidateItems = block.candidate.items const strong = (chunks: React.ReactNode) => {chunks} return (
{t("practice.body")}

{t("integrated.heading")}

{repos.map((r) => (
{r.name}
{r.description}
{t("integrated.usedInLabel")} {r.usedIn}
))}

{t("attribution.heading")}

    {attributionItems.map((_, idx) => (
  • {t(`attribution.items.${idx}`)}
  • ))}
{t.rich("report.body", { strong })}

{t("suggest.heading")}

{t("suggest.intro")}

{t("suggest.discussionTitle")}
{t("suggest.discussionBody")}
{t("suggest.issueTitle")}
{t("suggest.issueBody")}
    {candidateItems.map((_, idx) => (
  • {t(`candidate.items.${idx}`)}
  • ))}
) }