import type { ReactNode } from "react";
import Link from "next/link";
import { cn } from "@/utils/ui";
import { getSectionTitle, groupAndOrderChanges } from "../utils";
import type { Release } from "../utils";
export function ReleaseArticle({
variant,
isLatest,
children,
}: {
variant: "list" | "detail";
isLatest?: boolean;
children: ReactNode;
}) {
if (variant === "list") {
return (
{children}
);
}
return {children};
}
export function ReleaseMeta({ release }: { release: Release }) {
return (
{release.version} — {release.date}
);
}
const titleSizes: Record<"h1" | "h2", string> = {
h1: "text-4xl",
h2: "text-2xl",
};
export function ReleaseTitle({
as: As,
href,
children,
}: {
as: "h1" | "h2";
href?: string;
children: ReactNode;
}) {
return (
{href ? (
{children}
) : (
children
)}
);
}
export function ReleaseDescription({ children }: { children: ReactNode }) {
return (
{children}
);
}
export function ReleaseChanges({ release }: { release: Release }) {
const { grouped, orderedTypes } = groupAndOrderChanges({
changes: release.changes,
});
return (
{orderedTypes.map((type) => (
{getSectionTitle(type)}:
{grouped[type].map((change) => (
-
{change.text}
))}
))}
);
}