import Image from "next/image"; import { Accordion, AccordionControl, AccordionItem, AccordionPanel, Center, Group, List, ListItem, Stack, Text, Title, } from "@mantine/core"; import { IconLanguage, IconLibrary, IconUsers } from "@tabler/icons-react"; import { setStaticParamsLocale } from "next-international/server"; import { getScopedI18n, getStaticParams } from "@homarr/translation/server"; import { getPackageAttributesAsync } from "~/versions/package-reader"; import logo from "../../../../../public/logo/logo.png"; import classes from "./accordion.module.css"; export async function generateMetadata() { const t = await getScopedI18n("management"); const metaTitle = `${t("metaTitle")} • Homarr`; return { title: metaTitle, }; } interface PageProps { params: { locale: string; }; } export default async function AboutPage({ params: { locale } }: PageProps) { setStaticParamsLocale(locale); const t = await getScopedI18n("management.page.about"); const attributes = await getPackageAttributesAsync(); return (
Homarr {t("version", { version: attributes.version })}
{t("text")} }> {t("accordion.contributors.title")} }> {t("accordion.translators.title")} }> {t("accordion.libraries.title")} {t("accordion.libraries.subtitle", { count: Object.keys(attributes.dependencies).length, })} {Object.entries(attributes.dependencies) .sort(([key1], [key2]) => key1.localeCompare(key2)) .map(([key, value]) => ( {value.includes("workspace:") ? ( {key} ) : ( {key} )} ))}
); } export function generateStaticParams() { return getStaticParams(); } export const dynamic = "force-static";