import type { Metadata } from "next" import { getTranslations, getMessages, setRequestLocale } from "next-intl/server" import Image from "next/image" import { Link } from "@/i18n/navigation" import { DocHeader } from "@/components/ui/doc-header" import { Callout } from "@/components/ui/callout" import CopyableCode from "@/components/CopyableCode" export async function generateMetadata({ params, }: { params: Promise<{ locale: string }> }): Promise { const { locale } = await params const t = await getTranslations({ locale, namespace: "docs.postInstall.basicSettings.meta" }) return { title: t("title"), description: t("description") } } type UpgradeRow = { version: string; script: string; codename: string } type UtilityItem = { pkg: string; desc: string } type UtilityGroup = { group: string; items: UtilityItem[] } type RelatedItem = { label: string; href: string; tail: string } const SCREENSHOTS = [ { pkg: "htop", alt: "htop interactive process viewer", src: "/basic/htop.png" }, { pkg: "btop", alt: "btop resource monitor", src: "/basic/btop.png" }, { pkg: "iftop", alt: "iftop bandwidth per connection", src: "/basic/iftop.png" }, { pkg: "iotop", alt: "iotop disk I/O per process", src: "/basic/iotop.png" }, { pkg: "iptraf-ng", alt: "iptraf-ng IP LAN monitor", src: "/basic/iptraf-ng.png" }, { pkg: "tmux", alt: "tmux terminal multiplexer", src: "/basic/tmux.png" }, ] export default async function PostInstallBasicSettingsPage({ params, }: { params: Promise<{ locale: string }> }) { const { locale } = await params setRequestLocale(locale) const t = await getTranslations({ locale, namespace: "docs.postInstall.basicSettings" }) const messages = (await getMessages({ locale })) as unknown as { docs: { postInstall: { basicSettings: { upgrade: { rows: UpgradeRow[]; doesItems: string[] } utilities: { groups: UtilityGroup[] } related: { items: RelatedItem[] } } } } } const upgradeRows = messages.docs.postInstall.basicSettings.upgrade.rows const doesItems = messages.docs.postInstall.basicSettings.upgrade.doesItems const utilityGroups = messages.docs.postInstall.basicSettings.utilities.groups const relatedItems = messages.docs.postInstall.basicSettings.related.items const code = (chunks: React.ReactNode) => {chunks} const strong = (chunks: React.ReactNode) => {chunks} const em = (chunks: React.ReactNode) => {chunks} const updateLink = (chunks: React.ReactNode) => ( {chunks} ) const uninstallLink = (chunks: React.ReactNode) => ( {chunks} ) return (
{t("intro.body")}

{t("upgrade.heading")}

{t.rich("upgrade.intro", { em })}

{upgradeRows.map((row) => ( ))}
{t("upgrade.headerVersion")} {t("upgrade.headerScript")} {t("upgrade.headerCodename")}
{row.version} {row.script} {row.codename}

{t("upgrade.officialTitle")}

{t("upgrade.officialBody")}

{t.rich("upgrade.officialOutro", { em })}

{t("upgrade.doesTitle")}

{t.rich("upgrade.doesIntro", { link: updateLink })}

    {doesItems.map((_, idx) => (
  • {t.rich(`upgrade.doesItems.${idx}`, { strong, em, code })}
  • ))}
{t.rich("upgrade.shortBody", { code, link: updateLink })} {t("upgrade.subBody")} {t.rich("upgrade.safetyBody", { code })}

{t("time.heading")}

{t.rich("time.intro", { code })}

{t.rich("time.depBody", { code })} {t.rich("time.revertBody", { link: uninstallLink })}

{t("languages.heading")}

{t.rich("languages.intro", { code, strong })}

{t("languages.writtenTitle")}

{t.rich("languages.revertBody", { code })}

{t("utilities.heading")}

{t.rich("utilities.intro", { strong, code })}

{t("utilities.imageAlt")} {t.rich("utilities.reuseBody", { code, em })}

{t("utilities.listTitle")}

{utilityGroups.map((group) => (

{group.group}

{group.items.map((item) => (
{item.pkg}
{item.desc}
))}
))}

{t("utilities.actionTitle")}

{SCREENSHOTS.map((s) => (
{s.alt}
{s.pkg}
))}
{t.rich("utilities.noBulkBody", { strong })}

{t("related.heading")}

    {relatedItems.map((item) => (
  • {item.label} {item.tail}
  • ))}
) }