import Image from "next/image"; import { Accordion, AccordionControl, AccordionItem, AccordionPanel, AspectRatio, Avatar, Card, Center, Flex, 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 { createMetaTitle } from "~/metadata"; import { getPackageAttributesAsync } from "~/versions/package-reader"; import contributorsData from "../../../../../../../static-data/contributors.json"; import translatorsData from "../../../../../../../static-data/translators.json"; import logo from "../../../../../public/logo/logo.png"; import classes from "./about.module.css"; export async function generateMetadata() { const t = await getScopedI18n("management"); return { title: createMetaTitle(t("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.contributors.subtitle", { count: contributorsData.length, })} {contributorsData.map((contributor) => ( ))} }> {t("accordion.translators.title")} {t("accordion.translators.subtitle", { count: translatorsData.length, })} {translatorsData.map((translator) => ( ))} }> {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} )} ))}
); } interface GenericContributorLinkCardProps { name: string; link: string; image: string; } const GenericContributorLinkCard = ({ name, image, link }: GenericContributorLinkCardProps) => { return ( {name} ); }; export function generateStaticParams() { return getStaticParams(); } export const dynamic = "force-static";