Merge pull request #12 from ethereum/downloads-mobile

Downloads mobile
pull/26459/head^2
Corwin Smith 2 years ago committed by GitHub
commit bf20f73003
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 9
      public/images/pages/gopher-downloads-front-light.svg
  2. 3
      public/images/pages/linux-penguin.svg
  3. 3
      public/images/pages/macos-logo.svg
  4. 3
      public/images/pages/source-branch.svg
  5. 3
      public/images/pages/windows-logo.svg
  6. 95
      src/components/UI/DataTable.tsx
  7. 107
      src/components/UI/downloads/DownloadsHero.tsx
  8. 44
      src/components/UI/downloads/DownloadsSection.tsx
  9. 99
      src/components/UI/downloads/DownloadsTable.tsx
  10. 3
      src/components/UI/downloads/index.ts
  11. 58
      src/constants.ts
  12. 122
      src/data/test/download-testdata.ts
  13. 32
      src/data/test/pgpbuild-testdata.ts
  14. 20
      src/data/test/pgpdeveloper-testdata.ts
  15. 1
      src/pages/downloads.md
  16. 229
      src/pages/downloads.tsx
  17. 1
      src/theme/foundations/index.ts
  18. 3
      src/theme/foundations/shadows.ts
  19. 13
      src/theme/foundations/textStyles.ts
  20. 3
      src/theme/index.ts

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 419 KiB

@ -0,0 +1,3 @@
<svg width="27" height="36" viewBox="0 0 27 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M26.305 28.2798C25.4843 27.6294 25.8036 26.1929 24.9516 25.4842C25.7768 20.5769 23.4638 16.2515 20.7061 13.4792C18.3916 11.1531 19.1378 8.88979 19.1378 6.93125C19.1378 3.80167 17.8231 0.5 13.8403 0.5C9.5829 0.5 8.41597 3.97083 8.37418 5.95125C8.27271 10.7083 9.35758 11.945 6.50887 15.4071C3.15729 19.4802 2.66335 23.5431 3.41992 25.6985C3.06626 26.101 2.58874 26.5473 1.69637 26.9163C-0.768819 27.9663 1.03829 29.7235 0.356336 30.9704C0.162343 31.3248 0.0698242 31.6952 0.0698242 32.0496C0.0698242 33.1433 0.959204 34.0898 2.57531 33.9483C4.75548 33.7588 6.76703 35.2681 8.06827 35.2681C9.2173 35.2681 10.1604 34.6294 10.5991 33.75C12.654 33.2556 15.1908 33.3183 17.2441 33.836C17.6127 34.8438 18.6125 35.5 19.7242 35.5C22.1581 35.5 22.6266 32.8035 25.4186 31.8906C26.4244 31.5625 26.9303 30.6088 26.9303 29.7206C26.9303 29.1519 26.7229 28.6108 26.305 28.2798ZM12.6554 13.0183C12.1794 13.0183 11.7855 12.6421 11.1632 12.19C10.3753 11.6183 9.57395 11.2888 9.58291 10.6879C9.58291 10.2752 10.1485 10.1483 10.8797 9.69479C11.6646 9.20917 11.9705 8.71625 12.7435 8.71625C13.5344 8.71625 13.7731 9.10708 14.8476 9.56063C15.9041 10.0083 16.6397 10.1833 16.6397 10.6879C16.6397 11.2056 15.534 11.576 14.9117 11.9538C13.997 12.505 13.5269 13.0183 12.6554 13.0183ZM15.14 5.41313C16.4562 5.61875 16.6039 7.87917 15.9742 8.99187L15.4445 8.78042C15.719 7.98854 15.7146 6.68479 14.7953 6.60167C14.2119 6.54917 13.8358 7.30167 13.7552 7.94625C13.5269 7.85292 13.2777 7.78583 12.9748 7.76104C13.0673 6.415 13.9567 5.22792 15.14 5.41313ZM10.0619 5.89583C11.0707 5.65083 11.6661 6.79708 11.6706 7.98854L11.208 8.26562C11.1453 7.76542 10.917 6.9575 10.344 7.12958C9.73064 7.31625 9.83062 8.70896 10.1723 8.99479L9.71572 9.24271C9.08897 8.21167 9.09046 6.13208 10.0619 5.89583ZM6.90581 33.9585C3.97653 32.6563 2.9812 32.9523 2.42161 32.9523C1.26213 32.9523 0.883099 32.1079 1.31884 31.3088C1.68891 30.6306 1.57401 29.9204 1.48298 29.3502C1.34271 28.4767 1.31734 28.1923 2.19628 27.816C3.41246 27.3115 3.95265 26.6625 4.35556 26.1769C5.48668 24.8104 6.62825 26.96 7.56389 28.8748C8.17124 30.1158 9.36653 30.7444 9.73512 32.1196C10.0739 33.3898 8.67562 34.746 6.90581 33.9585ZM17.3321 31.2256C15.2669 32.2071 12.636 32.6577 10.6678 31.6617C10.3768 30.8406 9.9112 30.3098 9.4098 29.776C10.2141 29.569 10.811 28.589 10.0962 27.6046C9.3337 26.5531 7.77579 25.8196 6.20147 24.6296C4.72862 23.5169 4.26304 20.7738 6.26862 17.7083C5.2912 20.4237 5.86273 22.9263 6.35368 23.6423C6.45515 22.2015 6.57155 19.7952 8.58608 16.9121C9.6023 15.4567 9.61723 13.5346 9.63961 12.3329L10.5648 12.9513C11.2453 13.4427 11.8153 13.9838 12.6331 13.9838C13.8418 13.9838 14.5103 13.3042 15.4415 12.7398C15.8056 12.521 16.3562 12.2994 16.8188 11.9917C17.5948 15.6025 20.8091 19.9454 20.9896 22.4188C21.7373 20.9137 20.7778 17.2942 20.7778 17.2942C22.0342 19.1681 22.1342 20.73 22.1894 22.6462C23.0684 22.9977 24.0115 23.9135 24.098 25.1196L23.7324 25.0788C23.5444 23.7385 19.8421 21.7698 19.5093 24.2927C17.7336 24.5567 18.3797 27.3056 18.0216 29.0877C17.8574 29.9029 17.553 30.5475 17.3321 31.2256ZM24.5636 31.1658C23.0937 31.72 22.1014 32.8969 21.4194 33.6275C20.1062 35.0363 18.3693 34.361 18.1842 33.0427C17.9887 31.634 18.7214 30.8654 19.0378 29.289C19.3258 27.8496 19.0035 25.6344 19.6809 25.3981C20.1212 27.9546 22.7639 26.8798 23.3668 26.1827C24.3472 26.1827 24.4293 26.5065 24.6486 27.4033C24.7859 27.9648 24.9754 28.4373 25.5112 28.9929C26.1349 29.6448 25.9439 30.6452 24.5636 31.1658ZM12.6256 12.1988C11.6541 12.1988 10.9274 11.5673 10.3365 11.0773C10.0336 10.8279 10.4111 10.3671 10.714 10.6179C11.2915 11.0963 11.8735 11.6023 12.6256 11.6023C13.5314 11.6023 14.3297 10.8454 15.4116 10.4283C15.7802 10.2869 15.9906 10.844 15.625 10.9854C14.5745 11.3894 13.7314 12.1988 12.6256 12.1988Z" fill="#F0F2E2"/>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

@ -0,0 +1,3 @@
<svg width="25" height="30" viewBox="0 0 25 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M25.0003 22.0095C24.0178 24.8596 21.0764 29.906 18.0463 29.961C16.0363 29.9997 15.39 28.7697 13.0924 28.7697C10.7961 28.7697 10.0773 29.9235 8.17728 29.9985C4.96217 30.1222 -0.000488281 22.7145 -0.000488281 16.2543C-0.000488281 10.3203 4.13465 7.37899 7.74726 7.32524C9.68483 7.29024 11.5149 8.63153 12.6962 8.63153C13.8825 8.63153 16.105 7.01898 18.4414 7.25523C19.4189 7.29649 22.1652 7.649 23.9278 10.2266C19.2514 13.2792 19.9802 19.6631 25.0003 22.0095ZM18.4726 0C14.94 0.142505 12.0574 3.84887 12.4599 6.91397C15.725 7.16773 18.8576 3.50761 18.4726 0Z" fill="#F0F2E2"/>
</svg>

After

Width:  |  Height:  |  Size: 687 B

@ -0,0 +1,3 @@
<svg width="22" height="30" viewBox="0 0 22 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M21.875 4.125C21.875 2.12279 20.2522 0.5 18.25 0.5C16.2478 0.5 14.625 2.12279 14.625 4.125C14.625 5.72363 15.6654 7.06488 17.1021 7.547C17.3051 12.7368 14.66 13.3035 11.0628 14.0611C8.99779 14.4961 6.66208 14.9976 4.95833 16.5805V7.52767C6.36363 7.02863 7.375 5.70188 7.375 4.125C7.375 2.12279 5.75221 0.5 3.75 0.5C1.74779 0.5 0.125 2.12279 0.125 4.125C0.125 5.70188 1.13638 7.02863 2.54167 7.52767V22.4711C1.13638 22.9714 0.125 24.2981 0.125 25.875C0.125 27.8772 1.74779 29.5 3.75 29.5C5.75221 29.5 7.375 27.8772 7.375 25.875C7.375 24.3102 6.37933 22.9895 4.99096 22.482C5.31721 17.7429 8.09637 17.1557 11.5607 16.4258C15.2316 15.6525 19.7459 14.6834 19.5103 7.51196C20.889 6.99842 21.875 5.68254 21.875 4.125ZM1.575 4.125C1.575 2.92513 2.55013 1.95 3.75 1.95C4.94988 1.95 5.925 2.92513 5.925 4.125C5.925 5.32488 4.94988 6.3 3.75 6.3C2.55013 6.3 1.575 5.32488 1.575 4.125ZM5.925 25.875C5.925 27.0749 4.94988 28.05 3.75 28.05C2.55013 28.05 1.575 27.0749 1.575 25.875C1.575 24.6751 2.55013 23.7 3.75 23.7C4.94988 23.7 5.925 24.6751 5.925 25.875ZM18.25 6.3C17.0501 6.3 16.075 5.32488 16.075 4.125C16.075 2.92513 17.0501 1.95 18.25 1.95C19.4499 1.95 20.425 2.92513 20.425 4.125C20.425 5.32488 19.4499 6.3 18.25 6.3Z" fill="#F0F2E2"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@ -0,0 +1,3 @@
<svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0.5 12V3.354L10.5 1.999V12H0.5ZM11.5 12H24.5V0L11.5 1.807V12ZM10.5 13H0.5V20.646L10.5 22.001V13ZM11.5 13V22.194L24.5 24V13H11.5Z" fill="#F0F2E2"/>
</svg>

After

Width:  |  Height:  |  Size: 260 B

@ -0,0 +1,95 @@
import {
Table,
Thead,
Tr,
Th,
TableContainer,
Text,
Tbody,
Td,
} from '@chakra-ui/react';
import { FC } from 'react';
interface Props {
columnHeaders: string[]
data: any
}
export const DataTable: FC<Props> = ({
columnHeaders,
data,
}) => {
return (
<TableContainer
// Note: This wont work on firefox, we are ok with this.
css={{
"&::-webkit-scrollbar": {
borderTop: '2px solid #11866f',
height: 18
},
"&::-webkit-scrollbar-thumb": {
background: "#11866f",
},
}}
pt={4}
pb={4}
>
<Table variant='unstyled'>
<Thead>
<Tr>
{
columnHeaders.map((columnHeader, idx) => {
return (
<Th
key={idx}
textTransform='none'
minW={'130.5px'}
px={4}
>
<Text
fontFamily='"JetBrains Mono", monospace'
fontWeight={700}
fontSize='md'
color='#868b87'
>
{columnHeader}
</Text>
</Th>
)
})
}
</Tr>
</Thead>
<Tbody>
{
data.map((item: any, idx: number) => {
return (
<Tr
key={idx}
// TODO: Get new background color from nuno for hover
transition={'all 0.5s'}
_hover={{background: 'green.50', transition: 'all 0.5s'}}
>
{
columnHeaders.map((columnHeader, idx) => {
// TODO: Make the font size smaller (refer to design system)
return (
<Td
key={idx}
px={4}
fontSize='13px'
>
{item[columnHeader.toLowerCase()]}
</Td>
)
})
}
</Tr>
)
})
}
</Tbody>
</Table>
</TableContainer>
)
}

@ -0,0 +1,107 @@
import { Box, Button, Image, Link, Stack, HStack, Text } from '@chakra-ui/react';
import { FC } from 'react';
import NextLink from 'next/link';
import { DOWNLOAD_HEADER_BUTTONS } from '../../../constants'
interface DownloadsHero {
currentBuildName: string
currentBuildVersion: string
linuxBuildURL: string
macOSBuildURL: string
releaseNotesURL: string
sourceCodeURL: string
windowsBuildURL: string
}
export const DownloadsHero: FC<DownloadsHero> = ({
currentBuildName,
currentBuildVersion,
linuxBuildURL,
macOSBuildURL,
releaseNotesURL,
sourceCodeURL,
windowsBuildURL
}) => {
DOWNLOAD_HEADER_BUTTONS.linuxBuild.buildURL = linuxBuildURL
DOWNLOAD_HEADER_BUTTONS.macOSBuild.buildURL = macOSBuildURL
DOWNLOAD_HEADER_BUTTONS.windowsBuild.buildURL = windowsBuildURL
DOWNLOAD_HEADER_BUTTONS.sourceCode.buildURL = sourceCodeURL
return (
<Stack border='3px solid' borderColor='brand.light.primary' py={4} px={4}>
<Stack alignItems='center'>
<Image src='/images/pages/gopher-downloads-front-light.svg' alt='Gopher plugged in' />
</Stack>
<Box mb={4}>
<Box
as='h1'
textStyle='h1'
>
Download go-ethereum
</Box>
<Text
// TODO: move text style to theme
fontFamily='"JetBrains Mono", monospace'
lineHeight='21px'
mb={8}
>
{currentBuildName} ({currentBuildVersion})
</Text>
<Text mb={4}>
You can download the latest 64-bit stable release of Geth for our primary platforms below. Packages for all supported platforms, as well as develop builds, can be found further down the page. If you&apos;re looking to install Geth and/or associated tools via your favorite package manager, please check our installation guide.
</Text>
{
Object.keys(DOWNLOAD_HEADER_BUTTONS).map((key: string) => {
return (
<NextLink
key={key}
href={DOWNLOAD_HEADER_BUTTONS[key].buildURL}
passHref
>
<Button
as='a'
variant='primary'
width={{ base: '100%' }}
p={8}
mb={4}
>
<HStack spacing={4}>
<Stack alignItems='center'>
<Image
src={DOWNLOAD_HEADER_BUTTONS[key].image}
alt={DOWNLOAD_HEADER_BUTTONS[key].imageAlt}
/>
</Stack>
<Box>
<Text textStyle='downloads-button-label'>
For {DOWNLOAD_HEADER_BUTTONS[key].name}
</Text>
<Text textStyle='downloads-button-label'>
geth {currentBuildName}
</Text>
</Box>
</HStack>
</Button>
</NextLink>
)
})
}
<Box textAlign={'center'}>
<Link
href={releaseNotesURL}
isExternal
variant='light'
>
Release notes for {currentBuildName} {currentBuildVersion}
</Link>
</Box>
</Box>
</Stack>
);
};

@ -0,0 +1,44 @@
import { Box, Image, Stack } from '@chakra-ui/react';
import { FC } from 'react';
interface Props {
children: React.ReactNode;
id: string;
imgSrc?: string;
imgAltText?: string;
sectionTitle: string
}
export const DownloadsSection: FC<Props> = ({
children,
imgSrc,
imgAltText,
sectionTitle,
id
}) => {
return (
<Stack border='2px solid' borderColor='brand.light.primary' id={id}>
{!!imgSrc && (
<Stack alignItems='center' p={4} borderBottom='2px solid' borderColor='brand.light.primary'>
{/* TODO: use NextImage */}
<Image src={imgSrc} alt={imgAltText} />
</Stack>
)}
<Stack
p={4}
borderBottom='2px solid'
borderColor='brand.light.primary'
sx={{ mt: '0 !important' }}
>
<Box as='h2' textStyle='h2'>
{sectionTitle}
</Box>
</Stack>
<Stack spacing={4}>
{children}
</Stack>
</Stack>
)
}

@ -0,0 +1,99 @@
import {
Stack,
Tabs,
TabList,
Tab,
Text,
TabPanel,
TabPanels,
} from '@chakra-ui/react';
import { FC } from 'react';
import {
DOWNLOAD_TABS,
DOWNLOAD_TAB_COLUMN_HEADERS
} from '../../../constants'
import { DataTable } from '../DataTable'
interface Props {
data: any
}
export const DownloadsTable: FC<Props> = ({
data
}) => {
return (
<Stack
sx={{ mt: '0 !important' }}
borderBottom='2px solid'
borderColor='brand.light.primary'
>
<Tabs variant='unstyled'>
<TabList
color='brand.light.primary'
bg='green.50'
>
{
DOWNLOAD_TABS.map((tab, idx) => {
return (
<Tab
key={tab}
w={'20%'}
p={4}
_selected={{
bg: 'brand.light.primary',
color: 'yellow.50',
}}
borderBottom='2px solid'
borderRight={
idx === (DOWNLOAD_TABS.length - 1)
?'none'
:'2px solid'
}
borderColor='brand.light.primary'
>
<Text textStyle='download-tab-label'>
{tab}
</Text>
</Tab>
)
})
}
</TabList>
<TabPanels>
<TabPanel p={0}>
<DataTable
columnHeaders={DOWNLOAD_TAB_COLUMN_HEADERS}
data={data}
/>
</TabPanel>
<TabPanel p={0}>
<DataTable
columnHeaders={DOWNLOAD_TAB_COLUMN_HEADERS}
data={data}
/>
</TabPanel>
<TabPanel p={0}>
<DataTable
columnHeaders={DOWNLOAD_TAB_COLUMN_HEADERS}
data={data}
/>
</TabPanel>
<TabPanel p={0}>
<DataTable
columnHeaders={DOWNLOAD_TAB_COLUMN_HEADERS}
data={data}
/>
</TabPanel>
<TabPanel p={0}>
<DataTable
columnHeaders={DOWNLOAD_TAB_COLUMN_HEADERS}
data={data}
/>
</TabPanel>
</TabPanels>
</Tabs>
</Stack>
)
}

@ -0,0 +1,3 @@
export * from './DownloadsHero';
export * from './DownloadsSection'
export * from './DownloadsTable'

@ -10,3 +10,61 @@ export const ETHEREUM_ORG_RUN_A_NODE_URL = 'https://ethereum.org/en/run-a-node/'
export const ETHEREUM_FOUNDATION_URL = 'https://ethereum.foundation';
export const GETH_REPO_URL = 'https://github.com/ethereum/go-ethereum';
export const GO_URL = 'https://go.dev/';
// Downloads
export const DEFAULT_BUILD_AMOUNT_TO_SHOW = 10;
export const DOWNLOAD_HEADER_BUTTONS: {[index: string]: {name: string; image: string; imageAlt: string; buildURL: string;}} = {
linuxBuild: {
name: 'Linux',
image: '/images/pages/linux-penguin.svg',
imageAlt: 'Linux logo',
buildURL: ''
},
macOSBuild: {
name: 'macOS',
image: '/images/pages/macos-logo.svg',
imageAlt: 'macOS logo',
buildURL: ''
},
windowsBuild: {
name: 'Windows',
image: '/images/pages/windows-logo.svg',
imageAlt: 'Windows logo',
buildURL: ''
},
sourceCode: {
name: 'Sources',
image: '/images/pages/source-branch.svg',
imageAlt: 'Source branch logo',
buildURL: ''
}
}
export const DOWNLOAD_TABS = [
'Linux',
'macOS',
'Windows',
'iOS',
'Android'
]
export const DOWNLOAD_TAB_COLUMN_HEADERS = [
'Release',
'Commit',
'Kind',
'Arch',
'Size',
'Published',
'Signature',
'Checksum (MD5)'
]
export const DOWNLOAD_OPENPGP_BUILD_HEADERS = [
'Build Server',
'Unique ID',
'OpenPGP Key',
'Fingerprint'
]
export const DOWNLOAD_OPENPGP_DEVELOPER_HEADERS = [
'Developer',
'Unique ID',
'OpenPGP Key',
'Fingerprint'
]

@ -0,0 +1,122 @@
export const testDownloadData = [
{
release: 'Geth 1.10.23',
commit: 'd901d853…',
kind: 'archive',
arch: '64-bit',
size: '11.71 MB',
published: 'Last Wednesday at 11:11 AM',
signature: 'Signature',
"checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af'
},
{
release: 'Geth 1.10.23',
commit: 'd901d853…',
kind: 'archive',
arch: '64-bit',
size: '11.71 MB',
published: 'Last Wednesday at 11:11 AM',
signature: 'Signature',
"checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af'
},
{
release: 'Geth 1.10.23',
commit: 'd901d853…',
kind: 'archive',
arch: '64-bit',
size: '11.71 MB',
published: 'Last Wednesday at 11:11 AM',
signature: 'Signature',
"checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af'
},
{
release: 'Geth 1.10.23',
commit: 'd901d853…',
kind: 'archive',
arch: '64-bit',
size: '11.71 MB',
published: 'Last Wednesday at 11:11 AM',
signature: 'Signature',
"checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af'
},
{
release: 'Geth 1.10.23',
commit: 'd901d853…',
kind: 'archive',
arch: '64-bit',
size: '11.71 MB',
published: 'Last Wednesday at 11:11 AM',
signature: 'Signature',
"checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af'
},
{
release: 'Geth 1.10.23',
commit: 'd901d853…',
kind: 'archive',
arch: '64-bit',
size: '11.71 MB',
published: 'Last Wednesday at 11:11 AM',
signature: 'Signature',
"checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af'
},
{
release: 'Geth 1.10.23',
commit: 'd901d853…',
kind: 'archive',
arch: '64-bit',
size: '11.71 MB',
published: 'Last Wednesday at 11:11 AM',
signature: 'Signature',
"checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af'
},
{
release: 'Geth 1.10.23',
commit: 'd901d853…',
kind: 'archive',
arch: '64-bit',
size: '11.71 MB',
published: 'Last Wednesday at 11:11 AM',
signature: 'Signature',
"checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af'
},
{
release: 'Geth 1.10.23',
commit: 'd901d853…',
kind: 'archive',
arch: '64-bit',
size: '11.71 MB',
published: 'Last Wednesday at 11:11 AM',
signature: 'Signature',
"checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af'
},
{
release: 'Geth 1.10.23',
commit: 'd901d853…',
kind: 'archive',
arch: '64-bit',
size: '11.71 MB',
published: 'Last Wednesday at 11:11 AM',
signature: 'Signature',
"checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af'
},
{
release: 'Geth 1.10.23',
commit: 'd901d853…',
kind: 'archive',
arch: '64-bit',
size: '11.71 MB',
published: 'Last Wednesday at 11:11 AM',
signature: 'Signature',
"checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af'
},
{
release: 'Geth 1.10.23',
commit: 'd901d853…',
kind: 'archive',
arch: '64-bit',
size: '11.71 MB',
published: 'Last Wednesday at 11:11 AM',
signature: 'Signature',
"checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af'
},
]

@ -0,0 +1,32 @@
export const pgpBuildTestData = [
{
"build server": "Android Builder",
"unique id": "Go Ethereum Android Builder <geth-ci@ethereum.org>",
"openpgp key": "F9585DE6",
"fingerprint": "8272 1824 F4D7 46E0 B5A7 AB95 70AD 154B F958 5DE6"
},
{
"build server": "iOS Builder",
"unique id": "Go Ethereum iOS Builder <geth-ci@ethereum.org>",
"openpgp key": "F9585DE6",
"fingerprint": "8272 1824 F4D7 46E0 B5A7 AB95 70AD 154B F958 5DE6"
},
{
"build server": "Linux Builder",
"unique id": "Go Ethereum Linux Builder <geth-ci@ethereum.org>",
"openpgp key": "F9585DE6",
"fingerprint": "8272 1824 F4D7 46E0 B5A7 AB95 70AD 154B F958 5DE6"
},
{
"build server": "macOS Builder",
"unique id": "Go Ethereum macOS Builder <geth-ci@ethereum.org>",
"openpgp key": "F9585DE6",
"fingerprint": "8272 1824 F4D7 46E0 B5A7 AB95 70AD 154B F958 5DE6"
},
{
"build server": "Windows Builder",
"unique id": "Go Ethereum Windows Builder <geth-ci@ethereum.org>",
"openpgp key": "F9585DE6",
"fingerprint": "8272 1824 F4D7 46E0 B5A7 AB95 70AD 154B F958 5DE6"
},
]

@ -0,0 +1,20 @@
export const pgpDeveloperTestData = [
{
"developer": "Felix Lange",
"unique id": "Felix Lange <fjl@ethereum.org>",
"openpgp key": "F9585DE6",
"fingerprint": "8272 1824 F4D7 46E0 B5A7 AB95 70AD 154B F958 5DE6"
},
{
"developer": "Martin Holst Swende",
"unique id": "Martin Holst Swende <martin.swende@ethereum.org>",
"openpgp key": "F9585DE6",
"fingerprint": "8272 1824 F4D7 46E0 B5A7 AB95 70AD 154B F958 5DE6"
},
{
"developer": "Péter Szilágyi",
"unique id": "Péter Szilágyi <peter@ethereum.org>",
"openpgp key": "F9585DE6",
"fingerprint": "8272 1824 F4D7 46E0 B5A7 AB95 70AD 154B F958 5DE6"
},
]

@ -0,0 +1,229 @@
import {
Code,
Link,
ListItem,
Stack,
Text,
UnorderedList,
} from '@chakra-ui/react';
import type { NextPage } from 'next';
import { useState } from 'react'
import {
DownloadsHero,
DownloadsSection,
DownloadsTable,
} from '../components/UI/downloads';
import { DataTable } from '../components/UI/DataTable';
import {
DEFAULT_BUILD_AMOUNT_TO_SHOW,
DOWNLOAD_OPENPGP_BUILD_HEADERS,
DOWNLOAD_OPENPGP_DEVELOPER_HEADERS,
GETH_REPO_URL
} from '../constants'
import { testDownloadData } from '../data/test/download-testdata'
import { pgpBuildTestData } from '../data/test/pgpbuild-testdata';
import { pgpDeveloperTestData } from '../data/test/pgpdeveloper-testdata';
const DownloadsPage: NextPage = () => {
const [amountStableReleases, updateAmountStables] = useState(DEFAULT_BUILD_AMOUNT_TO_SHOW)
const [amountDevelopBuilds, updateAmountDevelopBuilds] = useState(DEFAULT_BUILD_AMOUNT_TO_SHOW)
const showMoreStableReleases = () => {
updateAmountStables(amountStableReleases+10)
}
const showMoreDevelopBuilds = () => {
updateAmountDevelopBuilds(amountDevelopBuilds+10)
}
return (
<>
{/* TODO: add PageMetadata */}
<main>
<Stack spacing={4}>
{/* TODO: replace hardcoded strings with build information */}
<DownloadsHero
currentBuildName={'Sentry Omega'}
currentBuildVersion={'v1.10.23'}
linuxBuildURL={'https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.10.25-69568c55.tar.gz'}
macOSBuildURL={'https://gethstore.blob.core.windows.net/builds/geth-darwin-amd64-1.10.25-69568c55.tar.gz'}
releaseNotesURL={''}
sourceCodeURL={'https://github.com/ethereum/go-ethereum/archive/v1.10.25.tar.gz'}
windowsBuildURL={'https://gethstore.blob.core.windows.net/builds/geth-windows-amd64-1.10.25-69568c55.exe'}
/>
<DownloadsSection
imgSrc='/images/pages/gopher-home-side-desktop.svg'
imgAltText='Gopher facing right'
sectionTitle='Specific Versions'
id='specificversions'
>
<Stack p={4}>
<Text textStyle='quick-link-text'>
If you&apos;re looking for a specific release, operating system or architecture, below you will find:
</Text>
<UnorderedList px={4}>
<ListItem>
<Text textStyle='quick-link-text'>
All stable and develop builds of Geth and tools
</Text>
</ListItem>
<ListItem>
<Text textStyle='quick-link-text'>
Archives for non-primary processor architectures
</Text>
</ListItem>
<ListItem>
<Text textStyle='quick-link-text'>
Android library archives and iOS XCode frameworks
</Text>
</ListItem>
</UnorderedList>
<Text textStyle='quick-link-text'>
Please select your desired platform from the lists below and download your bundle of choice. Please be aware that the MD5 checksums are provided by our binary hosting platform (Azure Blobstore) to help check for download errors. For security guarantees please verify any downloads via the attached PGP signature files (see{' '}
<Link
href={'#pgpsignatures'}
variant='light'
>
OpenPGP
</Link>{' '}
Signatures for details).
</Text>
</Stack>
</DownloadsSection>
<DownloadsSection sectionTitle='Stable releases' id='stablereleases'>
<Stack p={4} borderBottom='2px solid' borderColor='brand.light.primary'>
<Text textStyle='quick-link-text'>
These are the current and previous stable releases of go-ethereum, updated automatically when a new version is tagged in our{' '}
<Link
href={GETH_REPO_URL}
isExternal
variant='light'
>
GitHub repository.
</Link>
</Text>
</Stack>
{/* TODO: swap test data for real data */}
<DownloadsTable data={testDownloadData.slice(0, amountStableReleases)}/>
<Stack sx={{ mt: '0 !important' }}>
<Link as='button' variant='button-link-secondary' onClick={showMoreStableReleases}>
<Text
fontFamily='"JetBrains Mono", monospace'
fontWeight={700}
textTransform='uppercase'
textAlign='center'
p={4}
>
Show older releases
</Text>
</Link>
</Stack>
</DownloadsSection>
<DownloadsSection sectionTitle='Develop builds' id='developbuilds'>
<Stack p={4} borderBottom='2px solid' borderColor='brand.light.primary'>
<Text textStyle='quick-link-text'>
These are the develop snapshots of go-ethereum, updated automatically when a new commit is pushed into our{' '}
<Link
href={GETH_REPO_URL}
isExternal
variant='light'
>
GitHub repository.
</Link>
</Text>
</Stack>
{/* TODO: swap for real data */}
<DownloadsTable data={testDownloadData.slice(0, amountDevelopBuilds)} />
<Stack sx={{ mt: '0 !important' }}>
<Link as='button' variant='button-link-secondary' onClick={showMoreDevelopBuilds}>
<Text
fontFamily='"JetBrains Mono", monospace'
fontWeight={700}
textTransform='uppercase'
textAlign='center'
p={4}
>
Show older releases
</Text>
</Link>
</Stack>
</DownloadsSection>
<DownloadsSection sectionTitle='OpenPGP Signatures' id='pgpsignatures'>
<Stack p={4} borderBottom='2px solid' borderColor='brand.light.primary'>
<Text textStyle='quick-link-text'>
All the binaries available from this page are signed via our build server PGP keys:
</Text>
</Stack>
{/* TODO: swap for real data */}
<Stack borderBottom='2px solid' borderColor='brand.light.primary'>
<DataTable
columnHeaders={DOWNLOAD_OPENPGP_BUILD_HEADERS}
data={pgpBuildTestData}
/>
</Stack>
{/* TODO: swap for real data */}
<Stack>
<DataTable
columnHeaders={DOWNLOAD_OPENPGP_DEVELOPER_HEADERS}
data={pgpDeveloperTestData}
/>
</Stack>
</DownloadsSection>
<DownloadsSection sectionTitle='Importing keys and verifying builds' id='importingkeys'>
<Stack p={4} borderBottom='2px solid' borderColor='brand.light.primary'>
<Text textStyle='quick-link-text'>
You can import the build server public keys by grabbing the individual keys directly from the keyserver network:
</Text>
{/* TODO: These keys depends on the binary */}
<Code p={4}>
gpg --recv-keys F9585DE6 C2FF8BBF 9BA28146 7B9E2481 D2A67EAC
</Code>
</Stack>
<Stack p={4} borderBottom='2px solid' borderColor='brand.light.primary'>
<Text textStyle='quick-link-text'>
Similarly you can import all the developer public keys by grabbing them directly from the keyserver network:
</Text>
{/* TODO: These are developer keys, do we need to change? */}
<Code p={4}>
gpg --recv-keys E058A81C 05A5DDF0 1CCB7DD2
</Code>
</Stack>
<Stack p={4}>
<Text textStyle='quick-link-text'>
From the download listings above you should see a link both to the downloadable archives as well as detached signature files. To verify the authenticity of any downloaded data, grab both files and then run:
</Text>
{/* TODO: These keys depends on the binary */}
<Code p={4}>
gpg --verify geth-linux-amd64-1.5.0-d0c820ac.tar.gz.asc
</Code>
</Stack>
</DownloadsSection>
</Stack>
</main>
</>
)
}
export default DownloadsPage

@ -1,3 +1,4 @@
export * from './colors';
export * from './shadows';
export * from './sizes';
export * from './textStyles';

@ -0,0 +1,3 @@
export const shadows = {
linkBoxShadow: '0 0 0 1px #11866f !important'
}

@ -53,6 +53,19 @@ export const textStyles = {
fontSize: '13px',
fontFamily: '"Inter", sans-serif'
},
'downloads-button-label': {
fontFamily:'"JetBrains Mono", monospace',
color:'yellow.50',
fontSize:'xs',
textTransform:'uppercase',
},
'download-tab-label': {
fontFamily: '"JetBrains Mono", monospace',
fontWeight: 700,
textTransform: 'uppercase',
textAlign: 'center',
fontSize: 'sm',
},
// TODO: refactor w/ semantic tokens for light/dark mode
'link-light': {},
// TODO: refactor w/ semantic tokens for light/dark mode

@ -1,6 +1,6 @@
import { extendTheme } from '@chakra-ui/react';
import { colors, sizes, textStyles } from './foundations';
import { colors, shadows, sizes, textStyles } from './foundations';
import { Button, Link } from './components';
const overrides = {
@ -9,6 +9,7 @@ const overrides = {
Button,
Link
},
shadows,
sizes,
styles: {
global: () => ({

Loading…
Cancel
Save