97 lines
2.8 KiB
TypeScript
97 lines
2.8 KiB
TypeScript
/// <reference path="../types/jsx.d.ts" />
|
|
import { React, Fragment, Marked } from "../deps.ts";
|
|
import Base from "./_base.tsx";
|
|
import type { IPackage } from "../db.ts";
|
|
import { sortVersions, getFile, getAbsolutePackageVersion } from "../utils.ts";
|
|
import PkgHeader from "./_pkgheader.tsx";
|
|
// function Package({ pkg }: { pkg: IPackage }) {
|
|
// const { name, versions, author } = pkg;
|
|
|
|
// const sorted = versions.sort(sortVersions);
|
|
|
|
// return (
|
|
// <div
|
|
// class="card margin"
|
|
// onClick={"window.location.href = '/package/" + name + "'"}
|
|
// >
|
|
// <div class="card-body">
|
|
// <h4 class="card-title">{name}</h4>
|
|
|
|
// <ul class="card-text">
|
|
// {versions.map((version) => (
|
|
// <li>{version}</li>
|
|
// ))}
|
|
// {author} {sorted[0]}
|
|
// </ul>
|
|
// </div>
|
|
// </div>
|
|
// );
|
|
// }
|
|
|
|
import { Main, Menu } from "./_default.tsx";
|
|
|
|
export default async function index({
|
|
pkg,
|
|
version,
|
|
}: {
|
|
pkg: IPackage;
|
|
version?: string;
|
|
}) {
|
|
if (!pkg)
|
|
return (
|
|
<Base>
|
|
<h1>Not found</h1>
|
|
</Base>
|
|
);
|
|
|
|
version = getAbsolutePackageVersion(pkg, version);
|
|
const readmeContent = await getFile(pkg.name, version, "README.md").then(
|
|
(res) => {
|
|
if (res)
|
|
return Marked.parse(new TextDecoder().decode(res.data))
|
|
.content as string;
|
|
else return undefined;
|
|
}
|
|
);
|
|
|
|
return (
|
|
<Base title={"DenReg - " + pkg.name}>
|
|
<Main>
|
|
<PkgHeader pkg={pkg} version={version} />
|
|
<div class="tabs">
|
|
<input id="tab1" type="radio" name="tabs" checked />
|
|
<label for="tab1">Readme</label>
|
|
|
|
<input id="tab2" type="radio" name="tabs" />
|
|
<label for="tab2">Versions</label>
|
|
<div class="content" id="content1">
|
|
{readmeContent !== undefined ? (
|
|
<div
|
|
style="overflow-x: hidden"
|
|
innerHTML={readmeContent}
|
|
/>
|
|
) : (
|
|
<div class="alert alert-warning">No README.md found!</div>
|
|
)}
|
|
</div>
|
|
|
|
<div class="content" id="content2">
|
|
<ul>
|
|
{pkg.versions.sort(sortVersions).map((version) => (
|
|
<li>
|
|
<a href={`./${pkg.name}@${version}`}>{version}</a>
|
|
</li>
|
|
))}
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</Main>
|
|
<Menu>
|
|
<a href={`/browse/${pkg.name}${version ? "@" + version : ""}/`}>
|
|
Browse Files
|
|
</a>
|
|
</Menu>
|
|
</Base>
|
|
);
|
|
}
|