Files
homarr/apps/docs/src/lib/metadata.ts
T
+12 fcd7c979df feat!: release v2 (#6545)
Co-authored-by: Artur <145776561+arturict@users.noreply.github.com>
Co-authored-by: arturict <arturict@users.noreply.github.com>
Co-authored-by: Thomas <thomas@ajnart.fr>
Co-authored-by: Afonso Jorge Ramos <afonsojorgeramos@gmail.com>
Co-authored-by: Danura30082 <danura30082+github@gmail.com>
Co-authored-by: Kushie <122986913+kushiemoon-dev@users.noreply.github.com>
Co-authored-by: ajnart <thomas@ajnart.fr>
Co-authored-by: ajnart <thomas@ajnart.dev>
Co-authored-by: chenjun <chenjun@foxmail.com>
Co-authored-by: Wikibear <wikibear@users.noreply.github.com>
Co-authored-by: Bergasha <bergasha@gmail.com>
Co-authored-by: leafyelin <43306196+leafyelin@users.noreply.github.com>
Co-authored-by: Lucas Araujo <lucas.lra@gmail.com>
Co-authored-by: GreenMonito <86085570+GreenMonito@users.noreply.github.com>
Co-authored-by: Nerdy-Technician <roffo@nerdy-technician.social>
Co-authored-by: Jun <34545896+jcstrong@users.noreply.github.com>
Co-authored-by: Edmond Abraham <54119952+gitedmond@users.noreply.github.com>
Co-authored-by: thrawnx <tight.bulb9384@fastmail.com>
Co-authored-by: Chris <58918656+nordada@users.noreply.github.com>
Co-authored-by: yi111 <153097222+Yi-111-a@users.noreply.github.com>
Co-authored-by: Yanis <naamaneyanis@gmail.com>
Co-authored-by: Wikibear <me@sej.de>
Co-authored-by: alessiottavo <93441886+alessiottavo@users.noreply.github.com>
2026-10-02 21:00:14 +02:00

50 lines
1.4 KiB
TypeScript

import type { Metadata } from "next";
export const siteUrl = new URL(process.env.HOMARR_WEBSITE_URL ?? "https://homarr.dev");
export function canonicalUrl(pathname: string) {
return new URL(`${pathname.replace(/\/$/, "")}/`, siteUrl).href;
}
export function pageMetadata({
title,
description,
path,
publishedTime,
authors,
image: socialImage,
}: {
title: string;
description: string;
path: string;
publishedTime?: string;
authors?: string[];
image?: { url: string; width: number; height: number; alt: string };
}): Metadata {
const socialTitle = title === "Homarr documentation" ? title : `${title} | Homarr documentation`;
const image = socialImage
? { ...socialImage, url: new URL(socialImage.url, siteUrl).href }
: { url: new URL("/img/logo.png", siteUrl).href, width: 484, height: 329, alt: "Homarr" };
return {
title: { absolute: socialTitle },
description,
alternates: { canonical: canonicalUrl(path) },
authors: authors?.map((name) => ({ name })),
openGraph: {
title: socialTitle,
description,
url: canonicalUrl(path),
siteName: "Homarr",
locale: "en_US",
images: [image],
...(publishedTime ? { type: "article", publishedTime, authors } : { type: "website" }),
},
twitter: {
card: socialImage ? "summary_large_image" : "summary",
title: socialTitle,
description,
images: [{ url: image.url, alt: image.alt }],
},
};
}