import { asc } from "drizzle-orm"; import type { Metadata } from "next"; import { getTranslations } from "next-intl/server"; import { ContentCard, EmptyState } from "@/components/public/ui"; import { db, WebsiteBadges } from "@/lib/db"; export async function generateMetadata(): Promise { const t = await getTranslations("pages.badges"); return { title: t("title"), description: t("subtitle"), openGraph: { title: t("title"), description: t("subtitle"), type: "website", }, }; } // Canonical Habbo badge image CDN. A badge_key (e.g. "ADM") maps to a .gif here. const BADGE_IMG_BASE = "https://images.habbo.com/c_images/album1584"; export default async function BadgesPage() { const t = await getTranslations("pages.badges"); const badges = await db .select() .from(WebsiteBadges) .orderBy(asc(WebsiteBadges.badgeName)) .catch(() => []); return (
{badges.length === 0 ? ( {t("noBadges")} ) : (
{badges.map((badge) => (
{/* eslint-disable-next-line @next/next/no-img-element */} {badge.badgeName}

{badge.badgeName}

{badge.badgeKey}

{badge.badgeDescription}

))}
)}
); }