mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-03-24 20:08:08 +00:00
* chore: update constants * feat: add releases data utils * chore: add fast-xml-parser * chore: update types * feat: fetch & parse all releases data * chore: update utils * wip: use real data on DataTable * chore: update yarn.lock * fix: getReleaseCommitHash * feat: filter data per downloads tab * chore: update DownloadsTable * chore: update DownloadsTable Props * fix: getReleaseArch.ts * feat: add fetchXMLData util * feat: add fetchLatestReleaseCommit util * feat: add getSortedReleases util * chore: comment wip primary release feature * fix: fetchXMLData * chore: add netlify.toml * fix: total number of releases count * fix: center showing latest releases text and use smaller font * chore: prettier * chore: update textStyles * fix: merge conflicts
95 lines
2.8 KiB
TypeScript
95 lines
2.8 KiB
TypeScript
import { Stack, Tabs, TabList, Tab, Text, TabPanel, TabPanels } from '@chakra-ui/react';
|
|
import { FC } from 'react';
|
|
|
|
import { DataTable } from '../../UI';
|
|
|
|
import { DOWNLOADS_TABLE_TABS, DOWNLOADS_TABLE_TAB_COLUMN_HEADERS } from '../../../constants';
|
|
import { ReleaseData } from '../../../types';
|
|
|
|
interface Props {
|
|
linuxData: ReleaseData[];
|
|
macOSData: ReleaseData[];
|
|
windowsData: ReleaseData[];
|
|
iOSData: ReleaseData[];
|
|
androidData: ReleaseData[];
|
|
amountOfReleasesToShow: number;
|
|
setTotalReleases: (idx: number) => void;
|
|
}
|
|
|
|
export const DownloadsTable: FC<Props> = ({
|
|
linuxData,
|
|
macOSData,
|
|
windowsData,
|
|
iOSData,
|
|
androidData,
|
|
amountOfReleasesToShow,
|
|
setTotalReleases
|
|
}) => {
|
|
const totalReleases = [
|
|
linuxData.length,
|
|
macOSData.length,
|
|
windowsData.length,
|
|
iOSData.length,
|
|
androidData.length
|
|
];
|
|
|
|
return (
|
|
<Stack sx={{ mt: '0 !important' }} borderBottom='2px solid' borderColor='primary'>
|
|
<Tabs variant='unstyled' onChange={idx => setTotalReleases(totalReleases[idx])}>
|
|
<TabList color='primary' bg='button-bg'>
|
|
{DOWNLOADS_TABLE_TABS.map((tab, idx) => {
|
|
return (
|
|
<Tab
|
|
key={tab}
|
|
w={'20%'}
|
|
p={4}
|
|
_selected={{
|
|
bg: 'primary',
|
|
color: 'bg'
|
|
}}
|
|
borderBottom='2px solid'
|
|
borderRight={idx === DOWNLOADS_TABLE_TABS.length - 1 ? 'none' : '2px solid'}
|
|
borderColor='primary'
|
|
>
|
|
<Text textStyle='download-tab-label'>{tab}</Text>
|
|
</Tab>
|
|
);
|
|
})}
|
|
</TabList>
|
|
|
|
<TabPanels>
|
|
<TabPanel p={0}>
|
|
<DataTable
|
|
columnHeaders={DOWNLOADS_TABLE_TAB_COLUMN_HEADERS}
|
|
data={linuxData.slice(0, amountOfReleasesToShow)}
|
|
/>
|
|
</TabPanel>
|
|
<TabPanel p={0}>
|
|
<DataTable
|
|
columnHeaders={DOWNLOADS_TABLE_TAB_COLUMN_HEADERS}
|
|
data={macOSData.slice(0, amountOfReleasesToShow)}
|
|
/>
|
|
</TabPanel>
|
|
<TabPanel p={0}>
|
|
<DataTable
|
|
columnHeaders={DOWNLOADS_TABLE_TAB_COLUMN_HEADERS}
|
|
data={windowsData.slice(0, amountOfReleasesToShow)}
|
|
/>
|
|
</TabPanel>
|
|
<TabPanel p={0}>
|
|
<DataTable
|
|
columnHeaders={DOWNLOADS_TABLE_TAB_COLUMN_HEADERS}
|
|
data={iOSData.slice(0, amountOfReleasesToShow)}
|
|
/>
|
|
</TabPanel>
|
|
<TabPanel p={0}>
|
|
<DataTable
|
|
columnHeaders={DOWNLOADS_TABLE_TAB_COLUMN_HEADERS}
|
|
data={androidData.slice(0, amountOfReleasesToShow)}
|
|
/>
|
|
</TabPanel>
|
|
</TabPanels>
|
|
</Tabs>
|
|
</Stack>
|
|
);
|
|
};
|