mirror of https://github.com/ethereum/go-ethereum
parent
0d41782d64
commit
8477cc30c4
Before Width: | Height: | Size: 834 B After Width: | Height: | Size: 837 B |
@ -0,0 +1,114 @@ |
|||||||
|
import { Box, Flex, Input, InputGroup, Link, Stack, Text } from '@chakra-ui/react'; |
||||||
|
import { FC } from 'react'; |
||||||
|
import NextLink from 'next/link'; |
||||||
|
|
||||||
|
import { HamburguerIcon, LensIcon, MoonIcon } from '../UI/icons'; |
||||||
|
import { DOCS_PAGE, DOWNLOADS_PAGE } from '../../constants'; |
||||||
|
|
||||||
|
export const Header: FC = () => { |
||||||
|
return ( |
||||||
|
<Flex |
||||||
|
mb={4} |
||||||
|
border='2px solid' |
||||||
|
borderColor='brand.light.primary' |
||||||
|
justifyContent='space-between' |
||||||
|
> |
||||||
|
<Stack |
||||||
|
p={4} |
||||||
|
justifyContent='center' |
||||||
|
alignItems='flex-start' |
||||||
|
borderRight={{ base: 'none', sm: '2px solid #11866f' }} |
||||||
|
flexGrow={2} |
||||||
|
> |
||||||
|
<Text |
||||||
|
fontFamily='"JetBrains Mono", monospace' |
||||||
|
fontWeight={700} |
||||||
|
fontSize={{ base: '0.86rem', sm: '1rem' }} |
||||||
|
> |
||||||
|
go-ethereum |
||||||
|
</Text> |
||||||
|
</Stack> |
||||||
|
|
||||||
|
<Flex> |
||||||
|
{/* DOWNLOADS */} |
||||||
|
<Stack |
||||||
|
p={4} |
||||||
|
justifyContent='center' |
||||||
|
borderRight='2px solid' |
||||||
|
borderColor='brand.light.primary' |
||||||
|
display={{ base: 'none', md: 'block' }} |
||||||
|
> |
||||||
|
<NextLink href={DOWNLOADS_PAGE} passHref> |
||||||
|
<Link _hover={{ textDecoration: 'none' }}> |
||||||
|
<Text |
||||||
|
fontFamily='"JetBrains Mono", monospace' |
||||||
|
fontWeight={700} |
||||||
|
fontSize={{ base: '0.86rem', sm: '1rem' }} |
||||||
|
color='brand.light.primary' |
||||||
|
textTransform='uppercase' |
||||||
|
> |
||||||
|
downloads |
||||||
|
</Text> |
||||||
|
</Link> |
||||||
|
</NextLink> |
||||||
|
</Stack> |
||||||
|
|
||||||
|
{/* DOCUMENTATION */} |
||||||
|
<Stack |
||||||
|
p={4} |
||||||
|
justifyContent='center' |
||||||
|
borderRight={{ base: 'none', md: '2px solid #11866f' }} |
||||||
|
display={{ base: 'none', md: 'block' }} |
||||||
|
> |
||||||
|
<NextLink href={DOCS_PAGE} passHref> |
||||||
|
<Link _hover={{ textDecoration: 'none' }}> |
||||||
|
<Text |
||||||
|
fontFamily='"JetBrains Mono", monospace' |
||||||
|
fontWeight={700} |
||||||
|
fontSize={{ base: '0.86rem', sm: '1rem' }} |
||||||
|
color='brand.light.primary' |
||||||
|
textTransform='uppercase' |
||||||
|
> |
||||||
|
documentation |
||||||
|
</Text> |
||||||
|
</Link> |
||||||
|
</NextLink> |
||||||
|
</Stack> |
||||||
|
|
||||||
|
{/* SEARCH */} |
||||||
|
<Stack |
||||||
|
p={4} |
||||||
|
display={{ base: 'none', md: 'block' }} |
||||||
|
borderRight={{ base: 'none', md: '2px solid #11866f' }} |
||||||
|
> |
||||||
|
<InputGroup> |
||||||
|
<Input |
||||||
|
variant='unstyled' |
||||||
|
placeholder='search' |
||||||
|
size='md' |
||||||
|
_placeholder={{ color: 'brand.light.primary', fontStyle: 'italic' }} |
||||||
|
/> |
||||||
|
|
||||||
|
<Stack pl={4} justifyContent='center' alignItems='center'> |
||||||
|
<LensIcon /> |
||||||
|
</Stack> |
||||||
|
</InputGroup> |
||||||
|
</Stack> |
||||||
|
|
||||||
|
{/* DARK MODE SWITCH */} |
||||||
|
<Box |
||||||
|
p={4} |
||||||
|
borderRight={{ base: '2px solid', lg: 'none' }} |
||||||
|
borderColor='brand.light.primary' |
||||||
|
> |
||||||
|
<MoonIcon /> |
||||||
|
</Box> |
||||||
|
|
||||||
|
{/* HAMBURGUER MENU */} |
||||||
|
<Box p={4} display={{ base: 'block', lg: 'none' }}> |
||||||
|
<HamburguerIcon /> |
||||||
|
</Box> |
||||||
|
</Flex> |
||||||
|
</Flex> |
||||||
|
); |
||||||
|
}; |
@ -1,99 +1,56 @@ |
|||||||
import { |
import { Stack, Tabs, TabList, Tab, Text, TabPanel, TabPanels } from '@chakra-ui/react'; |
||||||
Stack, |
|
||||||
Tabs, |
|
||||||
TabList, |
|
||||||
Tab, |
|
||||||
Text, |
|
||||||
TabPanel, |
|
||||||
TabPanels, |
|
||||||
} from '@chakra-ui/react'; |
|
||||||
import { FC } from 'react'; |
import { FC } from 'react'; |
||||||
|
|
||||||
import { |
import { DOWNLOAD_TABS, DOWNLOAD_TAB_COLUMN_HEADERS } from '../../../constants'; |
||||||
DOWNLOAD_TABS, |
|
||||||
DOWNLOAD_TAB_COLUMN_HEADERS |
|
||||||
} from '../../../constants' |
|
||||||
|
|
||||||
import { DataTable } from '../DataTable' |
import { DataTable } from '../../UI'; |
||||||
|
|
||||||
interface Props { |
interface Props { |
||||||
data: any |
data: any; |
||||||
} |
} |
||||||
|
|
||||||
export const DownloadsTable: FC<Props> = ({ |
export const DownloadsTable: FC<Props> = ({ data }) => { |
||||||
data |
|
||||||
}) => { |
|
||||||
return ( |
return ( |
||||||
<Stack |
<Stack sx={{ mt: '0 !important' }} borderBottom='2px solid' borderColor='brand.light.primary'> |
||||||
sx={{ mt: '0 !important' }} |
|
||||||
borderBottom='2px solid' |
|
||||||
borderColor='brand.light.primary' |
|
||||||
> |
|
||||||
<Tabs variant='unstyled'> |
<Tabs variant='unstyled'> |
||||||
<TabList |
<TabList color='brand.light.primary' bg='green.50'> |
||||||
color='brand.light.primary' |
{DOWNLOAD_TABS.map((tab, idx) => { |
||||||
bg='green.50' |
return ( |
||||||
> |
<Tab |
||||||
{ |
key={tab} |
||||||
DOWNLOAD_TABS.map((tab, idx) => { |
w={'20%'} |
||||||
return ( |
p={4} |
||||||
<Tab |
_selected={{ |
||||||
key={tab} |
bg: 'brand.light.primary', |
||||||
w={'20%'} |
color: 'yellow.50' |
||||||
p={4} |
}} |
||||||
_selected={{ |
borderBottom='2px solid' |
||||||
bg: 'brand.light.primary', |
borderRight={idx === DOWNLOAD_TABS.length - 1 ? 'none' : '2px solid'} |
||||||
color: 'yellow.50', |
borderColor='brand.light.primary' |
||||||
}} |
> |
||||||
borderBottom='2px solid' |
<Text textStyle='download-tab-label'>{tab}</Text> |
||||||
borderRight={ |
</Tab> |
||||||
idx === (DOWNLOAD_TABS.length - 1) |
); |
||||||
?'none' |
})} |
||||||
:'2px solid' |
|
||||||
} |
|
||||||
borderColor='brand.light.primary' |
|
||||||
> |
|
||||||
<Text textStyle='download-tab-label'> |
|
||||||
{tab} |
|
||||||
</Text> |
|
||||||
</Tab> |
|
||||||
) |
|
||||||
}) |
|
||||||
} |
|
||||||
</TabList> |
</TabList> |
||||||
<TabPanels> |
<TabPanels> |
||||||
<TabPanel p={0}> |
<TabPanel p={0}> |
||||||
<DataTable |
<DataTable columnHeaders={DOWNLOAD_TAB_COLUMN_HEADERS} data={data} /> |
||||||
columnHeaders={DOWNLOAD_TAB_COLUMN_HEADERS} |
|
||||||
data={data} |
|
||||||
/> |
|
||||||
</TabPanel> |
</TabPanel> |
||||||
<TabPanel p={0}> |
<TabPanel p={0}> |
||||||
<DataTable |
<DataTable columnHeaders={DOWNLOAD_TAB_COLUMN_HEADERS} data={data} /> |
||||||
columnHeaders={DOWNLOAD_TAB_COLUMN_HEADERS} |
|
||||||
data={data} |
|
||||||
/> |
|
||||||
</TabPanel> |
</TabPanel> |
||||||
<TabPanel p={0}> |
<TabPanel p={0}> |
||||||
<DataTable |
<DataTable columnHeaders={DOWNLOAD_TAB_COLUMN_HEADERS} data={data} /> |
||||||
columnHeaders={DOWNLOAD_TAB_COLUMN_HEADERS} |
|
||||||
data={data} |
|
||||||
/> |
|
||||||
</TabPanel> |
</TabPanel> |
||||||
<TabPanel p={0}> |
<TabPanel p={0}> |
||||||
<DataTable |
<DataTable columnHeaders={DOWNLOAD_TAB_COLUMN_HEADERS} data={data} /> |
||||||
columnHeaders={DOWNLOAD_TAB_COLUMN_HEADERS} |
|
||||||
data={data} |
|
||||||
/> |
|
||||||
</TabPanel> |
</TabPanel> |
||||||
<TabPanel p={0}> |
<TabPanel p={0}> |
||||||
<DataTable |
<DataTable columnHeaders={DOWNLOAD_TAB_COLUMN_HEADERS} data={data} /> |
||||||
columnHeaders={DOWNLOAD_TAB_COLUMN_HEADERS} |
|
||||||
data={data} |
|
||||||
/> |
|
||||||
</TabPanel> |
</TabPanel> |
||||||
</TabPanels> |
</TabPanels> |
||||||
</Tabs> |
</Tabs> |
||||||
</Stack> |
</Stack> |
||||||
) |
); |
||||||
} |
}; |
||||||
|
@ -1,3 +1,3 @@ |
|||||||
export * from './DownloadsHero'; |
export * from './DownloadsHero'; |
||||||
export * from './DownloadsSection' |
export * from './DownloadsSection'; |
||||||
export * from './DownloadsTable' |
export * from './DownloadsTable'; |
||||||
|
@ -0,0 +1,67 @@ |
|||||||
|
import { Box, Grid, GridItem, Image, Link, Stack, Text } from '@chakra-ui/react'; |
||||||
|
import { FC } from 'react'; |
||||||
|
import NextLink from 'next/link'; |
||||||
|
|
||||||
|
import { ETHEREUM_ORG_URL } from '../../../constants'; |
||||||
|
|
||||||
|
interface Props { |
||||||
|
children: React.ReactNode; |
||||||
|
} |
||||||
|
|
||||||
|
export const WhatIsEthereum: FC<Props> = ({ children }) => { |
||||||
|
return ( |
||||||
|
<Stack border='2px solid' borderColor='brand.light.primary'> |
||||||
|
<Grid |
||||||
|
templateColumns={{ base: 'repeat(1, 1fr)', md: 'repeat(2, 1fr)' }} |
||||||
|
borderBottom={{ base: 'none', md: '2px solid #11866f' }} |
||||||
|
> |
||||||
|
<GridItem |
||||||
|
borderRight={{ base: 'none', md: '2px solid #11866f' }} |
||||||
|
order={{ base: 2, md: 1 }} |
||||||
|
> |
||||||
|
<Stack |
||||||
|
p={4} |
||||||
|
borderBottom='2px solid' |
||||||
|
borderColor='brand.light.primary' |
||||||
|
sx={{ mt: '0 !important' }} |
||||||
|
> |
||||||
|
<Box as='h2' textStyle='h2'> |
||||||
|
What is Ethereum |
||||||
|
</Box> |
||||||
|
</Stack> |
||||||
|
|
||||||
|
<Stack |
||||||
|
p={4} |
||||||
|
borderBottom={{ base: '2px solid', md: 'none' }} |
||||||
|
borderColor='brand.light.primary' |
||||||
|
sx={{ mt: '0 !important' }} |
||||||
|
> |
||||||
|
{children} |
||||||
|
</Stack> |
||||||
|
</GridItem> |
||||||
|
|
||||||
|
<GridItem order={{ base: 1, md: 2 }}> |
||||||
|
<Stack |
||||||
|
justifyContent='center' |
||||||
|
alignItems='center' |
||||||
|
p={4} |
||||||
|
borderBottom={{ base: '2px solid', md: 'none' }} |
||||||
|
borderColor='brand.light.primary' |
||||||
|
h='100%' |
||||||
|
> |
||||||
|
{/* TODO: use NextImage */} |
||||||
|
<Image src='/images/pages/glyph-home-light.svg' alt='Ethereum glyph' /> |
||||||
|
</Stack> |
||||||
|
</GridItem> |
||||||
|
</Grid> |
||||||
|
|
||||||
|
<Stack sx={{ mt: '0 !important' }}> |
||||||
|
<NextLink href={ETHEREUM_ORG_URL} passHref> |
||||||
|
<Link variant='button-link-secondary' isExternal> |
||||||
|
<Text textStyle='home-section-link-label'>Learn more on Ethereum.org</Text> |
||||||
|
</Link> |
||||||
|
</NextLink> |
||||||
|
</Stack> |
||||||
|
</Stack> |
||||||
|
); |
||||||
|
}; |
@ -0,0 +1,64 @@ |
|||||||
|
import { Box, Grid, GridItem, Image, Link, Stack, Text } from '@chakra-ui/react'; |
||||||
|
import { FC } from 'react'; |
||||||
|
import NextLink from 'next/link'; |
||||||
|
|
||||||
|
import { ETHEREUM_ORG_RUN_A_NODE_URL } from '../../../constants'; |
||||||
|
|
||||||
|
interface Props { |
||||||
|
children: React.ReactNode; |
||||||
|
} |
||||||
|
|
||||||
|
export const WhyRunANode: FC<Props> = ({ children }) => { |
||||||
|
return ( |
||||||
|
<Stack border='2px solid' borderColor='brand.light.primary'> |
||||||
|
<Grid |
||||||
|
templateColumns={{ base: 'repeat(1, 1fr)', md: 'repeat(2, 1fr)' }} |
||||||
|
borderBottom={{ base: 'none', md: '2px solid #11866f' }} |
||||||
|
> |
||||||
|
<GridItem order={{ base: 1, md: 2 }}> |
||||||
|
<Stack |
||||||
|
p={4} |
||||||
|
borderBottom='2px solid' |
||||||
|
borderColor='brand.light.primary' |
||||||
|
sx={{ mt: '0 !important' }} |
||||||
|
> |
||||||
|
<Box as='h2' textStyle='h2'> |
||||||
|
Why run a node? |
||||||
|
</Box> |
||||||
|
</Stack> |
||||||
|
|
||||||
|
<Stack |
||||||
|
p={4} |
||||||
|
borderBottom={{ base: '2px solid', md: 'none' }} |
||||||
|
borderColor='brand.light.primary' |
||||||
|
sx={{ mt: '0 !important' }} |
||||||
|
> |
||||||
|
{children} |
||||||
|
</Stack> |
||||||
|
</GridItem> |
||||||
|
|
||||||
|
<GridItem rowSpan={2}> |
||||||
|
<Stack |
||||||
|
justifyContent='center' |
||||||
|
alignItems='center' |
||||||
|
p={4} |
||||||
|
borderBottom={{ base: '2px solid #11866f', md: 'none' }} |
||||||
|
borderRight={{ base: 'none', md: '2px solid #11866f' }} |
||||||
|
h='100%' |
||||||
|
> |
||||||
|
{/* TODO: use NextImage */} |
||||||
|
<Image src='/images/pages/gopher-home-nodes.svg' alt='Gopher staring at nodes' /> |
||||||
|
</Stack> |
||||||
|
</GridItem> |
||||||
|
</Grid> |
||||||
|
|
||||||
|
<Stack sx={{ mt: '0 !important' }}> |
||||||
|
<NextLink href={ETHEREUM_ORG_RUN_A_NODE_URL} passHref> |
||||||
|
<Link variant='button-link-secondary' isExternal> |
||||||
|
<Text textStyle='home-section-link-label'>Read more about running a node</Text> |
||||||
|
</Link> |
||||||
|
</NextLink> |
||||||
|
</Stack> |
||||||
|
</Stack> |
||||||
|
); |
||||||
|
}; |
@ -1,4 +1,6 @@ |
|||||||
export * from './Gopher'; |
export * from './Gopher'; |
||||||
export * from './HomeHero'; |
export * from './HomeHero'; |
||||||
export * from './HomeSection'; |
export * from './HomeSection'; |
||||||
|
export * from './WhatIsEthereum'; |
||||||
|
export * from './WhyRunANode'; |
||||||
export * from './QuickLinks'; |
export * from './QuickLinks'; |
||||||
|
@ -0,0 +1,16 @@ |
|||||||
|
import { createIcon } from '@chakra-ui/icons'; |
||||||
|
|
||||||
|
export const HamburguerIcon = createIcon({ |
||||||
|
displayName: 'HamburguerIcon', |
||||||
|
viewBox: '0 0 22 14', |
||||||
|
path: ( |
||||||
|
<svg width={22} height={14} fill='none' xmlns='http://www.w3.org/2000/svg'> |
||||||
|
<path |
||||||
|
fillRule='evenodd' |
||||||
|
clipRule='evenodd' |
||||||
|
d='M0 .5h22v.97H0V.5Zm0 6.017h22v.97H0v-.97Zm22 6.013H0v.97h22v-.97Z' |
||||||
|
fill='#11866F' |
||||||
|
/> |
||||||
|
</svg> |
||||||
|
) |
||||||
|
}); |
@ -0,0 +1,14 @@ |
|||||||
|
import { createIcon } from '@chakra-ui/icons'; |
||||||
|
|
||||||
|
export const LensIcon = createIcon({ |
||||||
|
displayName: 'LensIcon', |
||||||
|
viewBox: '0 0 17 18', |
||||||
|
path: ( |
||||||
|
<svg width={17} height={18} fill='none' xmlns='http://www.w3.org/2000/svg'> |
||||||
|
<path |
||||||
|
d='M12.15 11.192h-.768l-.272-.263a6.29 6.29 0 0 0 1.526-4.111 6.317 6.317 0 1 0-6.318 6.318 6.29 6.29 0 0 0 4.111-1.526l.263.272v.768l4.86 4.85L17 16.052l-4.85-4.86Zm-5.832 0a4.368 4.368 0 0 1-4.374-4.374 4.368 4.368 0 0 1 4.374-4.374 4.368 4.368 0 0 1 4.374 4.374 4.368 4.368 0 0 1-4.374 4.374Z' |
||||||
|
fill='#11866F' |
||||||
|
/> |
||||||
|
</svg> |
||||||
|
) |
||||||
|
}); |
@ -0,0 +1,14 @@ |
|||||||
|
import { createIcon } from '@chakra-ui/icons'; |
||||||
|
|
||||||
|
export const MoonIcon = createIcon({ |
||||||
|
displayName: 'MoonIcon', |
||||||
|
viewBox: '0 0 22 22', |
||||||
|
path: ( |
||||||
|
<svg width={22} height={22} fill='none' xmlns='http://www.w3.org/2000/svg'> |
||||||
|
<path |
||||||
|
d='M8.333.334C6.392.334 4.568.867 3 1.774c3.19 1.845 5.333 5.28 5.333 9.227 0 3.946-2.144 7.381-5.333 9.226a10.638 10.638 0 0 0 5.333 1.44C14.221 21.667 19 16.89 19 11.001 19 5.113 14.221.334 8.333.334Z' |
||||||
|
fill='#11866F' |
||||||
|
/> |
||||||
|
</svg> |
||||||
|
) |
||||||
|
}); |
@ -0,0 +1,3 @@ |
|||||||
|
export * from './HamburguerIcon'; |
||||||
|
export * from './LensIcon'; |
||||||
|
export * from './MoonIcon'; |
@ -0,0 +1,2 @@ |
|||||||
|
export * from './DataTable'; |
||||||
|
export * from './Header'; |
@ -1,32 +1,32 @@ |
|||||||
export const pgpBuildTestData = [ |
export const pgpBuildTestData = [ |
||||||
{ |
{ |
||||||
"build server": "Android Builder", |
'build server': 'Android Builder', |
||||||
"unique id": "Go Ethereum Android Builder <geth-ci@ethereum.org>", |
'unique id': 'Go Ethereum Android Builder <geth-ci@ethereum.org>', |
||||||
"openpgp key": "F9585DE6", |
'openpgp key': 'F9585DE6', |
||||||
"fingerprint": "8272 1824 F4D7 46E0 B5A7 AB95 70AD 154B F958 5DE6" |
fingerprint: '8272 1824 F4D7 46E0 B5A7 AB95 70AD 154B F958 5DE6' |
||||||
}, |
}, |
||||||
{ |
{ |
||||||
"build server": "iOS Builder", |
'build server': 'iOS Builder', |
||||||
"unique id": "Go Ethereum iOS Builder <geth-ci@ethereum.org>", |
'unique id': 'Go Ethereum iOS Builder <geth-ci@ethereum.org>', |
||||||
"openpgp key": "F9585DE6", |
'openpgp key': 'F9585DE6', |
||||||
"fingerprint": "8272 1824 F4D7 46E0 B5A7 AB95 70AD 154B F958 5DE6" |
fingerprint: '8272 1824 F4D7 46E0 B5A7 AB95 70AD 154B F958 5DE6' |
||||||
}, |
}, |
||||||
{ |
{ |
||||||
"build server": "Linux Builder", |
'build server': 'Linux Builder', |
||||||
"unique id": "Go Ethereum Linux Builder <geth-ci@ethereum.org>", |
'unique id': 'Go Ethereum Linux Builder <geth-ci@ethereum.org>', |
||||||
"openpgp key": "F9585DE6", |
'openpgp key': 'F9585DE6', |
||||||
"fingerprint": "8272 1824 F4D7 46E0 B5A7 AB95 70AD 154B F958 5DE6" |
fingerprint: '8272 1824 F4D7 46E0 B5A7 AB95 70AD 154B F958 5DE6' |
||||||
}, |
}, |
||||||
{ |
{ |
||||||
"build server": "macOS Builder", |
'build server': 'macOS Builder', |
||||||
"unique id": "Go Ethereum macOS Builder <geth-ci@ethereum.org>", |
'unique id': 'Go Ethereum macOS Builder <geth-ci@ethereum.org>', |
||||||
"openpgp key": "F9585DE6", |
'openpgp key': 'F9585DE6', |
||||||
"fingerprint": "8272 1824 F4D7 46E0 B5A7 AB95 70AD 154B F958 5DE6" |
fingerprint: '8272 1824 F4D7 46E0 B5A7 AB95 70AD 154B F958 5DE6' |
||||||
}, |
}, |
||||||
{ |
{ |
||||||
"build server": "Windows Builder", |
'build server': 'Windows Builder', |
||||||
"unique id": "Go Ethereum Windows Builder <geth-ci@ethereum.org>", |
'unique id': 'Go Ethereum Windows Builder <geth-ci@ethereum.org>', |
||||||
"openpgp key": "F9585DE6", |
'openpgp key': 'F9585DE6', |
||||||
"fingerprint": "8272 1824 F4D7 46E0 B5A7 AB95 70AD 154B F958 5DE6" |
fingerprint: '8272 1824 F4D7 46E0 B5A7 AB95 70AD 154B F958 5DE6' |
||||||
}, |
} |
||||||
] |
]; |
||||||
|
@ -1,20 +1,20 @@ |
|||||||
export const pgpDeveloperTestData = [ |
export const pgpDeveloperTestData = [ |
||||||
{ |
{ |
||||||
"developer": "Felix Lange", |
developer: 'Felix Lange', |
||||||
"unique id": "Felix Lange <fjl@ethereum.org>", |
'unique id': 'Felix Lange <fjl@ethereum.org>', |
||||||
"openpgp key": "F9585DE6", |
'openpgp key': 'F9585DE6', |
||||||
"fingerprint": "8272 1824 F4D7 46E0 B5A7 AB95 70AD 154B F958 5DE6" |
fingerprint: '8272 1824 F4D7 46E0 B5A7 AB95 70AD 154B F958 5DE6' |
||||||
}, |
}, |
||||||
{ |
{ |
||||||
"developer": "Martin Holst Swende", |
developer: 'Martin Holst Swende', |
||||||
"unique id": "Martin Holst Swende <martin.swende@ethereum.org>", |
'unique id': 'Martin Holst Swende <martin.swende@ethereum.org>', |
||||||
"openpgp key": "F9585DE6", |
'openpgp key': 'F9585DE6', |
||||||
"fingerprint": "8272 1824 F4D7 46E0 B5A7 AB95 70AD 154B F958 5DE6" |
fingerprint: '8272 1824 F4D7 46E0 B5A7 AB95 70AD 154B F958 5DE6' |
||||||
}, |
}, |
||||||
{ |
{ |
||||||
"developer": "Péter Szilágyi", |
developer: 'Péter Szilágyi', |
||||||
"unique id": "Péter Szilágyi <peter@ethereum.org>", |
'unique id': 'Péter Szilágyi <peter@ethereum.org>', |
||||||
"openpgp key": "F9585DE6", |
'openpgp key': 'F9585DE6', |
||||||
"fingerprint": "8272 1824 F4D7 46E0 B5A7 AB95 70AD 154B F958 5DE6" |
fingerprint: '8272 1824 F4D7 46E0 B5A7 AB95 70AD 154B F958 5DE6' |
||||||
}, |
} |
||||||
] |
]; |
||||||
|
@ -1,229 +1,214 @@ |
|||||||
import { |
import { Code, Link, ListItem, Stack, Text, UnorderedList } from '@chakra-ui/react'; |
||||||
Code, |
|
||||||
Link, |
|
||||||
ListItem, |
|
||||||
Stack, |
|
||||||
Text, |
|
||||||
UnorderedList, |
|
||||||
} from '@chakra-ui/react'; |
|
||||||
import type { NextPage } from 'next'; |
import type { NextPage } from 'next'; |
||||||
import { useState } from 'react' |
import { useState } from 'react'; |
||||||
|
|
||||||
import { |
import { DownloadsHero, DownloadsSection, DownloadsTable } from '../components/UI/downloads'; |
||||||
DownloadsHero, |
import { DataTable } from '../components/UI'; |
||||||
DownloadsSection, |
|
||||||
DownloadsTable, |
|
||||||
} from '../components/UI/downloads'; |
|
||||||
import { DataTable } from '../components/UI/DataTable'; |
|
||||||
|
|
||||||
import { |
import { |
||||||
DEFAULT_BUILD_AMOUNT_TO_SHOW, |
DEFAULT_BUILD_AMOUNT_TO_SHOW, |
||||||
DOWNLOAD_OPENPGP_BUILD_HEADERS, |
DOWNLOAD_OPENPGP_BUILD_HEADERS, |
||||||
DOWNLOAD_OPENPGP_DEVELOPER_HEADERS, |
DOWNLOAD_OPENPGP_DEVELOPER_HEADERS, |
||||||
GETH_REPO_URL |
GETH_REPO_URL |
||||||
} from '../constants' |
} from '../constants'; |
||||||
|
|
||||||
import { testDownloadData } from '../data/test/download-testdata' |
import { testDownloadData } from '../data/test/download-testdata'; |
||||||
import { pgpBuildTestData } from '../data/test/pgpbuild-testdata'; |
import { pgpBuildTestData } from '../data/test/pgpbuild-testdata'; |
||||||
import { pgpDeveloperTestData } from '../data/test/pgpdeveloper-testdata'; |
import { pgpDeveloperTestData } from '../data/test/pgpdeveloper-testdata'; |
||||||
|
|
||||||
const DownloadsPage: NextPage = () => { |
const DownloadsPage: NextPage = () => { |
||||||
const [amountStableReleases, updateAmountStables] = useState(DEFAULT_BUILD_AMOUNT_TO_SHOW) |
const [amountStableReleases, updateAmountStables] = useState(DEFAULT_BUILD_AMOUNT_TO_SHOW); |
||||||
const [amountDevelopBuilds, updateAmountDevelopBuilds] = useState(DEFAULT_BUILD_AMOUNT_TO_SHOW) |
const [amountDevelopBuilds, updateAmountDevelopBuilds] = useState(DEFAULT_BUILD_AMOUNT_TO_SHOW); |
||||||
|
|
||||||
const showMoreStableReleases = () => { |
const showMoreStableReleases = () => { |
||||||
updateAmountStables(amountStableReleases+10) |
updateAmountStables(amountStableReleases + 10); |
||||||
} |
}; |
||||||
|
|
||||||
const showMoreDevelopBuilds = () => { |
const showMoreDevelopBuilds = () => { |
||||||
updateAmountDevelopBuilds(amountDevelopBuilds+10) |
updateAmountDevelopBuilds(amountDevelopBuilds + 10); |
||||||
} |
}; |
||||||
|
|
||||||
return ( |
return ( |
||||||
<> |
<> |
||||||
{/* TODO: add PageMetadata */} |
{/* TODO: add PageMetadata */} |
||||||
|
|
||||||
<main> |
<main> |
||||||
<Stack spacing={4}> |
<Stack spacing={4}> |
||||||
{/* TODO: replace hardcoded strings with build information */} |
{/* TODO: replace hardcoded strings with build information */} |
||||||
<DownloadsHero |
<DownloadsHero |
||||||
currentBuildName={'Sentry Omega'} |
currentBuildName={'Sentry Omega'} |
||||||
currentBuildVersion={'v1.10.23'} |
currentBuildVersion={'v1.10.23'} |
||||||
linuxBuildURL={'https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.10.25-69568c55.tar.gz'} |
linuxBuildURL={ |
||||||
macOSBuildURL={'https://gethstore.blob.core.windows.net/builds/geth-darwin-amd64-1.10.25-69568c55.tar.gz'} |
'https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.10.25-69568c55.tar.gz' |
||||||
releaseNotesURL={''} |
} |
||||||
sourceCodeURL={'https://github.com/ethereum/go-ethereum/archive/v1.10.25.tar.gz'} |
macOSBuildURL={ |
||||||
windowsBuildURL={'https://gethstore.blob.core.windows.net/builds/geth-windows-amd64-1.10.25-69568c55.exe'} |
'https://gethstore.blob.core.windows.net/builds/geth-darwin-amd64-1.10.25-69568c55.tar.gz' |
||||||
/> |
} |
||||||
|
releaseNotesURL={''} |
||||||
<DownloadsSection |
sourceCodeURL={'https://github.com/ethereum/go-ethereum/archive/v1.10.25.tar.gz'} |
||||||
imgSrc='/images/pages/gopher-home-side-desktop.svg' |
windowsBuildURL={ |
||||||
imgAltText='Gopher facing right' |
'https://gethstore.blob.core.windows.net/builds/geth-windows-amd64-1.10.25-69568c55.exe' |
||||||
sectionTitle='Specific Versions' |
} |
||||||
id='specificversions' |
/> |
||||||
> |
|
||||||
<Stack p={4}> |
<DownloadsSection |
||||||
<Text textStyle='quick-link-text'> |
imgSrc='/images/pages/gopher-home-side-desktop.svg' |
||||||
If you're looking for a specific release, operating system or architecture, below you will find: |
imgAltText='Gopher facing right' |
||||||
</Text> |
sectionTitle='Specific Versions' |
||||||
|
id='specificversions' |
||||||
<UnorderedList px={4}> |
> |
||||||
<ListItem> |
<Stack p={4}> |
||||||
<Text textStyle='quick-link-text'> |
<Text textStyle='quick-link-text'> |
||||||
All stable and develop builds of Geth and tools |
If you're looking for a specific release, operating system or architecture, |
||||||
</Text> |
below you will find: |
||||||
</ListItem> |
</Text> |
||||||
<ListItem> |
|
||||||
<Text textStyle='quick-link-text'> |
<UnorderedList px={4}> |
||||||
Archives for non-primary processor architectures |
<ListItem> |
||||||
</Text> |
<Text textStyle='quick-link-text'> |
||||||
</ListItem> |
All stable and develop builds of Geth and tools |
||||||
<ListItem> |
</Text> |
||||||
<Text textStyle='quick-link-text'> |
</ListItem> |
||||||
Android library archives and iOS XCode frameworks |
<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> |
</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> |
</Link> |
||||||
</Text> |
</Stack> |
||||||
</Stack> |
</DownloadsSection> |
||||||
|
|
||||||
{/* TODO: swap test data for real data */} |
<DownloadsSection sectionTitle='Develop builds' id='developbuilds'> |
||||||
<DownloadsTable data={testDownloadData.slice(0, amountStableReleases)}/> |
<Stack p={4} borderBottom='2px solid' borderColor='brand.light.primary'> |
||||||
|
<Text textStyle='quick-link-text'> |
||||||
<Stack sx={{ mt: '0 !important' }}> |
These are the develop snapshots of go-ethereum, updated automatically when a new |
||||||
<Link as='button' variant='button-link-secondary' onClick={showMoreStableReleases}> |
commit is pushed into our{' '} |
||||||
<Text |
<Link href={GETH_REPO_URL} isExternal variant='light'> |
||||||
fontFamily='"JetBrains Mono", monospace' |
GitHub repository. |
||||||
fontWeight={700} |
</Link> |
||||||
textTransform='uppercase' |
|
||||||
textAlign='center' |
|
||||||
p={4} |
|
||||||
> |
|
||||||
Show older releases |
|
||||||
</Text> |
</Text> |
||||||
</Link> |
</Stack> |
||||||
</Stack> |
|
||||||
</DownloadsSection> |
{/* TODO: swap for real data */} |
||||||
|
<DownloadsTable data={testDownloadData.slice(0, amountDevelopBuilds)} /> |
||||||
<DownloadsSection sectionTitle='Develop builds' id='developbuilds'> |
|
||||||
<Stack p={4} borderBottom='2px solid' borderColor='brand.light.primary'> |
<Stack sx={{ mt: '0 !important' }}> |
||||||
<Text textStyle='quick-link-text'> |
<Link as='button' variant='button-link-secondary' onClick={showMoreDevelopBuilds}> |
||||||
These are the develop snapshots of go-ethereum, updated automatically when a new commit is pushed into our{' '} |
<Text |
||||||
<Link |
fontFamily='"JetBrains Mono", monospace' |
||||||
href={GETH_REPO_URL} |
fontWeight={700} |
||||||
isExternal |
textTransform='uppercase' |
||||||
variant='light' |
textAlign='center' |
||||||
> |
p={4} |
||||||
GitHub repository. |
> |
||||||
|
Show older releases |
||||||
|
</Text> |
||||||
</Link> |
</Link> |
||||||
</Text> |
</Stack> |
||||||
</Stack> |
</DownloadsSection> |
||||||
|
|
||||||
{/* TODO: swap for real data */} |
<DownloadsSection sectionTitle='OpenPGP Signatures' id='pgpsignatures'> |
||||||
<DownloadsTable data={testDownloadData.slice(0, amountDevelopBuilds)} /> |
<Stack p={4} borderBottom='2px solid' borderColor='brand.light.primary'> |
||||||
|
<Text textStyle='quick-link-text'> |
||||||
<Stack sx={{ mt: '0 !important' }}> |
All the binaries available from this page are signed via our build server PGP keys: |
||||||
<Link as='button' variant='button-link-secondary' onClick={showMoreDevelopBuilds}> |
</Text> |
||||||
<Text |
</Stack> |
||||||
fontFamily='"JetBrains Mono", monospace' |
|
||||||
fontWeight={700} |
{/* TODO: swap for real data */} |
||||||
textTransform='uppercase' |
<Stack borderBottom='2px solid' borderColor='brand.light.primary'> |
||||||
textAlign='center' |
<DataTable columnHeaders={DOWNLOAD_OPENPGP_BUILD_HEADERS} data={pgpBuildTestData} /> |
||||||
p={4} |
</Stack> |
||||||
> |
|
||||||
Show older releases |
{/* 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> |
</Text> |
||||||
</Link> |
|
||||||
</Stack> |
{/* TODO: These are developer keys, do we need to change? */} |
||||||
</DownloadsSection> |
<Code p={4}>gpg --recv-keys E058A81C 05A5DDF0 1CCB7DD2</Code> |
||||||
|
</Stack> |
||||||
<DownloadsSection sectionTitle='OpenPGP Signatures' id='pgpsignatures'> |
|
||||||
<Stack p={4} borderBottom='2px solid' borderColor='brand.light.primary'> |
<Stack p={4}> |
||||||
<Text textStyle='quick-link-text'> |
<Text textStyle='quick-link-text'> |
||||||
All the binaries available from this page are signed via our build server PGP keys: |
From the download listings above you should see a link both to the downloadable |
||||||
</Text> |
archives as well as detached signature files. To verify the authenticity of any |
||||||
</Stack> |
downloaded data, grab both files and then run: |
||||||
|
</Text> |
||||||
{/* TODO: swap for real data */} |
|
||||||
<Stack borderBottom='2px solid' borderColor='brand.light.primary'> |
{/* TODO: These keys depends on the binary */} |
||||||
<DataTable |
<Code p={4}>gpg --verify geth-linux-amd64-1.5.0-d0c820ac.tar.gz.asc</Code> |
||||||
columnHeaders={DOWNLOAD_OPENPGP_BUILD_HEADERS} |
</Stack> |
||||||
data={pgpBuildTestData} |
</DownloadsSection> |
||||||
/> |
</Stack> |
||||||
</Stack> |
</main> |
||||||
|
|
||||||
{/* 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 |
export default DownloadsPage; |
||||||
|
@ -1,3 +1,3 @@ |
|||||||
export const shadows = { |
export const shadows = { |
||||||
linkBoxShadow: '0 0 0 1px #11866f !important' |
linkBoxShadow: '0 0 0 1px #11866f !important' |
||||||
} |
}; |
||||||
|
Loading…
Reference in new issue