import type { ReleaseRow, RepositoryRow } from "../../db/index.ts"; import { formatDate } from "../../lib/formatDate.ts"; import type { SessionUser } from "../../middleware/session.ts"; import { markdownToPlaintext, renderMarkdown, } from "../../services/markdown.ts"; import { Layout } from "../layout.tsx"; import { Pagination, type PaginationInfo } from "../Pagination.tsx"; import { RepoHeader } from "../repos/RepoHeader.tsx"; import { RepoNav } from "../repos/RepoNav.tsx"; interface ReleaseListProps { user: SessionUser | null; repo: RepositoryRow; releases: (ReleaseRow & { asset_count: number })[]; pagination: PaginationInfo; } function NotesPreview({ notes }: { notes: string }) { const plaintext = markdownToPlaintext(notes); return (
{plaintext}
{renderMarkdown(notes) as "safe"}
); } export function ReleaseList({ user, repo, releases, pagination, }: ReleaseListProps) { return (

Releases

{user?.isAdmin && ( New release )}
{releases.length === 0 ? (

No releases yet.

) : (
    {releases.map((release) => (
  • {release.name}
    {release.asset_count > 0 && ( {release.asset_count} asset {release.asset_count !== 1 ? "s" : ""} )} {release.include_source_code === 1 && ( source archives )}
    {!!release.tag_name && ( {release.tag_name} )}
    {!!release.notes && (

    Release Notes

    )}
  • ))}
)}
); }