import type { Metadata } from "next" import { getTranslations, getMessages, setRequestLocale } from "next-intl/server" import { Link } from "@/i18n/navigation" import Image from "next/image" import { ArrowRight, Terminal, HardDrive, Network, Package, Cpu, Database, Archive, Wrench, } from "lucide-react" 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.helpInfo.meta" }) return { title: t("title"), description: t("description"), keywords: [ "proxmox commands", "proxmox cli", "proxmox cheatsheet", "qm command", "pct command", "pveversion", "vzdump", "zpool", "proxmox reference", "proxmox commands list", ], alternates: { canonical: "https://proxmenux.com/docs/help-info" }, openGraph: { title: t("ogTitle"), description: t("ogDescription"), type: "article", url: "https://proxmenux.com/docs/help-info", }, twitter: { card: "summary_large_image", title: t("twitterTitle"), description: t("twitterDescription"), }, } } type Option = { icon: string; href: string; title: string; description: string } const ICONS: Record> = { Terminal, HardDrive, Network, Package, Cpu, Database, Archive, Wrench, } function OptionCard({ option }: { option: Option }) { const Icon = ICONS[option.icon] || Terminal return (
{option.title}
{option.description}
) } export default async function HelpAndInfoPage({ params, }: { params: Promise<{ locale: string }> }) { const { locale } = await params setRequestLocale(locale) const t = await getTranslations({ locale, namespace: "docs.helpInfo" }) const messages = (await getMessages({ locale })) as unknown as { docs: { helpInfo: { categories: { options: Option[] } } } } const options = messages.docs.helpInfo.categories.options const kbd = (chunks: React.ReactNode) => {chunks} return (
{t("intro.body")}

{t("opening.heading")}

{t.rich("opening.body", { kbd })}

{t("opening.imageAlt")}

{t("categories.heading")}

{options.map((o) => ( ))}
{t("tip.body")}
) }