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} )} {formatDate(release.created_at)} {!!release.notes && ( Release Notes )} ))} )} ); }
No releases yet.
Release Notes