meshtastic/src/pages/firmware/_components/FirmwareCard.tsx

59 lines
1.5 KiB
TypeScript
Raw Normal View History

2021-12-07 03:47:01 -08:00
import React from 'react';
2021-12-07 20:25:21 -08:00
import { Release } from '@site/src/utils/github';
2021-12-07 03:47:01 -08:00
2021-12-07 20:25:21 -08:00
export interface releaseCardProps {
2021-12-07 03:47:01 -08:00
variant: string;
description: string;
2021-12-07 20:25:21 -08:00
release?: Release[];
2021-12-07 03:47:01 -08:00
}
export const FirmwareCard = ({
variant,
description,
2021-12-07 20:25:21 -08:00
release,
}: releaseCardProps): JSX.Element => {
2021-12-07 03:47:01 -08:00
return (
<div className="card">
<div
className="card__header"
style={{ display: "flex", justifyContent: "space-between" }}
>
<h3>{variant}</h3>
2021-12-07 20:25:21 -08:00
{release?.length && <a href={release[0].html_url}>{release[0].name}</a>}
2021-12-07 03:47:01 -08:00
</div>
<div className="card__body">
<p>{description}</p>
</div>
<div className="card__footer">
2021-12-07 20:25:21 -08:00
{release?.length ? (
2021-12-07 03:47:01 -08:00
<>
<a
2021-12-07 20:25:21 -08:00
href={release[0].assets[1]?.browser_download_url}
2021-12-07 03:47:01 -08:00
className="button button--secondary button--block"
>
Download
</a>
<div className="margin-top--sm">
<h3>Older versions</h3>
2021-12-07 20:25:21 -08:00
{release.slice(1, 6).map((release) => {
2021-12-07 03:47:01 -08:00
return (
<div key={release.id}>
<a href={release.assets[1]?.browser_download_url}>
{release.name}
</a>
</div>
);
})}
</div>
</>
) : (
<button disabled className="button button--secondary button--block">
Loading...
</button>
)}
</div>
</div>
);
};