Skip to content

Commit 5bb7a10

Browse files
committed
refactor(PreviousReleasesTable): use responsive table
1 parent 17793ff commit 5bb7a10

File tree

1 file changed

+53
-54
lines changed

1 file changed

+53
-54
lines changed

apps/site/components/Releases/PreviousReleasesTable.tsx

Lines changed: 53 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
'use client';
22

33
import Badge from '@node-core/ui-components/Common/Badge';
4+
import ResponsiveTable from '@node-core/ui-components/Common/ResponsiveTable';
45
import { useTranslations } from 'next-intl';
56
import type { FC } from 'react';
67
import { useState } from 'react';
@@ -26,61 +27,59 @@ const PreviousReleasesTable: FC = () => {
2627

2728
const [currentModal, setCurrentModal] = useState<string | undefined>();
2829

29-
return (
30-
<table id="tbVersions">
31-
<thead>
32-
<tr>
33-
<th>{t('components.downloadReleasesTable.version')}</th>
34-
<th>{t('components.downloadReleasesTable.codename')}</th>
35-
<th>{t('components.downloadReleasesTable.firstReleased')}</th>
36-
<th>{t('components.downloadReleasesTable.lastUpdated')}</th>
37-
<th>{t('components.downloadReleasesTable.status')}</th>
38-
<th></th>
39-
</tr>
40-
</thead>
41-
42-
<tbody>
43-
{releaseData.map(release => (
44-
<>
45-
<tr key={release.major}>
46-
<td data-label="Version">v{release.major}</td>
47-
48-
<td data-label="LTS">{release.codename || '-'}</td>
49-
50-
<td data-label="Date">
51-
<FormattedTime date={release.currentStart} />
52-
</td>
30+
const columns = [
31+
{ key: 'version', header: t('components.downloadReleasesTable.version') },
32+
{ key: 'codename', header: t('components.downloadReleasesTable.codename') },
33+
{
34+
key: 'firstReleased',
35+
header: t('components.downloadReleasesTable.firstReleased'),
36+
},
37+
{
38+
key: 'lastUpdated',
39+
header: t('components.downloadReleasesTable.lastUpdated'),
40+
},
41+
{ key: 'status', header: t('components.downloadReleasesTable.status') },
42+
{ key: 'details', header: '' },
43+
];
44+
45+
const data = releaseData.map(release => ({
46+
version: `v${release.major}`,
47+
codename: release.codename || '-',
48+
firstReleased: <FormattedTime date={release.currentStart} />,
49+
lastUpdated: <FormattedTime date={release.releaseDate} />,
50+
status: (
51+
<Badge kind={BADGE_KIND_MAP[release.status]} size="small">
52+
{release.status}
53+
{release.status === 'End-of-life' ? ' (EoL)' : ''}
54+
</Badge>
55+
),
56+
details: (
57+
<LinkWithArrow
58+
className="cursor-pointer"
59+
onClick={() => setCurrentModal(release.version)}
60+
>
61+
{t('components.downloadReleasesTable.details')}
62+
</LinkWithArrow>
63+
),
64+
}));
5365

54-
<td data-label="Date">
55-
<FormattedTime date={release.releaseDate} />
56-
</td>
57-
58-
<td data-label="Status">
59-
<Badge kind={BADGE_KIND_MAP[release.status]} size="small">
60-
{release.status}
61-
{release.status === 'End-of-life' ? ' (EoL)' : ''}
62-
</Badge>
63-
</td>
64-
65-
<td>
66-
<LinkWithArrow
67-
className="cursor-pointer"
68-
onClick={() => setCurrentModal(release.version)}
69-
>
70-
{t('components.downloadReleasesTable.details')}
71-
</LinkWithArrow>
72-
</td>
73-
</tr>
74-
75-
<ReleaseModal
76-
release={release}
77-
open={currentModal === release.version}
78-
onOpenChange={open => open || setCurrentModal(undefined)}
79-
/>
80-
</>
81-
))}
82-
</tbody>
83-
</table>
66+
return (
67+
<>
68+
<ResponsiveTable
69+
data={data}
70+
columns={columns}
71+
getRowId={data => data.version}
72+
getRowLabel={data => data.version}
73+
/>
74+
{releaseData.map(release => (
75+
<ReleaseModal
76+
key={release.version}
77+
release={release}
78+
open={currentModal === release.version}
79+
onOpenChange={open => open || setCurrentModal(undefined)}
80+
/>
81+
))}
82+
</>
8483
);
8584
};
8685

0 commit comments

Comments
 (0)