Merge pull request #20 from ethereum/header-desktop-layout
feat: homepage desktop layout & header component
This commit is contained in:
commit
45cfc58c9f
@ -12,6 +12,7 @@
|
||||
"format:fix": "prettier . --write --config .prettierrc --ignore-path .prettierignore --loglevel warn"
|
||||
},
|
||||
"dependencies": {
|
||||
"@chakra-ui/icons": "^2.0.11",
|
||||
"@chakra-ui/react": "^2.3.2",
|
||||
"@emotion/react": "^11.10.4",
|
||||
"@emotion/styled": "^11.10.4",
|
||||
|
@ -1,8 +1,8 @@
|
||||
<svg width="108" height="164" viewBox="0 0 108 164" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M54 162.125V121.846L104.955 92.708L54 162.125Z" stroke="#11866F" stroke-width="3" stroke-linejoin="round"/>
|
||||
<path d="M54 162.125V121.846L3.04493 92.708L54 162.125Z" stroke="#11866F" stroke-width="3" stroke-linejoin="round"/>
|
||||
<path d="M53.9998 111.908V60.9531L105.693 83.3225L53.9998 111.908Z" stroke="#11866F" stroke-width="3" stroke-linejoin="round"/>
|
||||
<path d="M54 111.908V60.9531L2.30645 83.3225L54 111.908Z" stroke="#11866F" stroke-width="3" stroke-linejoin="round"/>
|
||||
<path d="M105.693 83.1077L53.9998 1.875V60.5906L105.693 83.1077Z" stroke="#11866F" stroke-width="3" stroke-linejoin="round"/>
|
||||
<path d="M2.30645 83.1077L54 1.875V60.5906L2.30645 83.1077Z" stroke="#11866F" stroke-width="3" stroke-linejoin="round"/>
|
||||
<svg width="180" height="278" viewBox="0 0 180 278" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M90.0002 276.5V207.379L2.76453 157.376L90.0002 276.5Z" stroke="#11866F" stroke-width="2" stroke-linejoin="round"/>
|
||||
<path d="M90.0001 276.5V207.379L177.236 157.376L90.0001 276.5Z" stroke="#11866F" stroke-width="2" stroke-linejoin="round"/>
|
||||
<path d="M89.9999 190.325V102.883L1.5 141.27L89.9999 190.325Z" stroke="#11866F" stroke-width="2" stroke-linejoin="round"/>
|
||||
<path d="M90.0001 190.325V102.883L178.5 141.27L90.0001 190.325Z" stroke="#11866F" stroke-width="2" stroke-linejoin="round"/>
|
||||
<path d="M1.5 140.901L89.9999 1.5V102.26L1.5 140.901Z" stroke="#11866F" stroke-width="2" stroke-linejoin="round"/>
|
||||
<path d="M178.5 140.901L90.0001 1.5V102.26L178.5 140.901Z" stroke="#11866F" stroke-width="2" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 834 B After Width: | Height: | Size: 837 B |
@ -1,35 +1,23 @@
|
||||
import {
|
||||
Table,
|
||||
Thead,
|
||||
Tr,
|
||||
Th,
|
||||
TableContainer,
|
||||
Text,
|
||||
Tbody,
|
||||
Td,
|
||||
} from '@chakra-ui/react';
|
||||
import { Table, Thead, Tr, Th, TableContainer, Text, Tbody, Td } from '@chakra-ui/react';
|
||||
import { FC } from 'react';
|
||||
|
||||
interface Props {
|
||||
columnHeaders: string[]
|
||||
data: any
|
||||
columnHeaders: string[];
|
||||
data: any;
|
||||
}
|
||||
|
||||
export const DataTable: FC<Props> = ({
|
||||
columnHeaders,
|
||||
data,
|
||||
}) => {
|
||||
export const DataTable: FC<Props> = ({ columnHeaders, data }) => {
|
||||
return (
|
||||
<TableContainer
|
||||
// Note: This wont work on firefox, we are ok with this.
|
||||
css={{
|
||||
"&::-webkit-scrollbar": {
|
||||
'&::-webkit-scrollbar': {
|
||||
borderTop: '2px solid #11866f',
|
||||
height: 18
|
||||
},
|
||||
"&::-webkit-scrollbar-thumb": {
|
||||
background: "#11866f",
|
||||
},
|
||||
'&::-webkit-scrollbar-thumb': {
|
||||
background: '#11866f'
|
||||
}
|
||||
}}
|
||||
pt={4}
|
||||
pb={4}
|
||||
@ -37,59 +25,44 @@ export const DataTable: FC<Props> = ({
|
||||
<Table variant='unstyled'>
|
||||
<Thead>
|
||||
<Tr>
|
||||
{
|
||||
columnHeaders.map((columnHeader, idx) => {
|
||||
return (
|
||||
<Th
|
||||
key={idx}
|
||||
textTransform='none'
|
||||
minW={'130.5px'}
|
||||
px={4}
|
||||
{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'
|
||||
>
|
||||
<Text
|
||||
fontFamily='"JetBrains Mono", monospace'
|
||||
fontWeight={700}
|
||||
fontSize='md'
|
||||
color='#868b87'
|
||||
>
|
||||
{columnHeader}
|
||||
</Text>
|
||||
</Th>
|
||||
)
|
||||
})
|
||||
}
|
||||
{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>
|
||||
)
|
||||
})
|
||||
}
|
||||
{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>
|
||||
)
|
||||
}
|
||||
);
|
||||
};
|
||||
|
113
src/components/UI/Header.tsx
Normal file
113
src/components/UI/Header.tsx
Normal file
@ -0,0 +1,113 @@
|
||||
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' }}
|
||||
borderColor='brand.light.primary'
|
||||
flexGrow={2}
|
||||
>
|
||||
<Text textStyle='header-font'>
|
||||
go-ethereum
|
||||
</Text>
|
||||
</Stack>
|
||||
|
||||
<Flex>
|
||||
{/* DOWNLOADS */}
|
||||
<Stack
|
||||
p={4}
|
||||
justifyContent='center'
|
||||
borderRight='2px solid'
|
||||
borderColor='brand.light.primary'
|
||||
display={{ base: 'none', md: 'block' }}
|
||||
color='brand.light.primary'
|
||||
_hover={{
|
||||
textDecoration: 'none',
|
||||
bg: 'brand.light.primary',
|
||||
color: 'yellow.50 !important'
|
||||
}}
|
||||
>
|
||||
<NextLink href={DOWNLOADS_PAGE} passHref>
|
||||
<Link _hover={{ textDecoration: 'none' }}>
|
||||
<Text textStyle='header-font' textTransform='uppercase'>
|
||||
downloads
|
||||
</Text>
|
||||
</Link>
|
||||
</NextLink>
|
||||
</Stack>
|
||||
|
||||
{/* DOCUMENTATION */}
|
||||
<Stack
|
||||
p={4}
|
||||
justifyContent='center'
|
||||
borderRight={{ base: 'none', md: '2px solid' }}
|
||||
borderColor='brand.light.primary'
|
||||
display={{ base: 'none', md: 'block' }}
|
||||
color='brand.light.primary'
|
||||
_hover={{
|
||||
textDecoration: 'none',
|
||||
bg: 'brand.light.primary',
|
||||
color: 'yellow.50 !important'
|
||||
}}
|
||||
>
|
||||
<NextLink href={DOCS_PAGE} passHref>
|
||||
<Link _hover={{ textDecoration: 'none' }}>
|
||||
<Text textStyle='header-font' textTransform='uppercase'>
|
||||
documentation
|
||||
</Text>
|
||||
</Link>
|
||||
</NextLink>
|
||||
</Stack>
|
||||
|
||||
{/* SEARCH */}
|
||||
<Stack
|
||||
p={4}
|
||||
display={{ base: 'none', md: 'block' }}
|
||||
borderRight={{ base: 'none', md: '2px solid' }}
|
||||
borderColor='brand.light.primary'
|
||||
>
|
||||
<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', md: 'none' }}>
|
||||
<HamburguerIcon />
|
||||
</Box>
|
||||
</Flex>
|
||||
</Flex>
|
||||
);
|
||||
};
|
@ -2,16 +2,16 @@ 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'
|
||||
import { DOWNLOAD_HEADER_BUTTONS } from '../../../constants';
|
||||
|
||||
interface DownloadsHero {
|
||||
currentBuildName: string
|
||||
currentBuildVersion: string
|
||||
linuxBuildURL: string
|
||||
macOSBuildURL: string
|
||||
releaseNotesURL: string
|
||||
sourceCodeURL: string
|
||||
windowsBuildURL: string
|
||||
currentBuildName: string;
|
||||
currentBuildVersion: string;
|
||||
linuxBuildURL: string;
|
||||
macOSBuildURL: string;
|
||||
releaseNotesURL: string;
|
||||
sourceCodeURL: string;
|
||||
windowsBuildURL: string;
|
||||
}
|
||||
|
||||
export const DownloadsHero: FC<DownloadsHero> = ({
|
||||
@ -23,22 +23,19 @@ export const DownloadsHero: FC<DownloadsHero> = ({
|
||||
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
|
||||
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' />
|
||||
<Image src='/images/pages/gopher-downloads-front-light.svg' alt='Gopher plugged in' />
|
||||
</Stack>
|
||||
|
||||
<Box mb={4}>
|
||||
<Box
|
||||
as='h1'
|
||||
textStyle='h1'
|
||||
>
|
||||
<Box as='h1' textStyle='h1'>
|
||||
Download go-ethereum
|
||||
</Box>
|
||||
|
||||
@ -52,52 +49,37 @@ export const DownloadsHero: FC<DownloadsHero> = ({
|
||||
</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're looking to install Geth and/or associated tools via your favorite package manager, please check our installation guide.
|
||||
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'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>
|
||||
)
|
||||
})
|
||||
}
|
||||
{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'
|
||||
>
|
||||
<Link href={releaseNotesURL} isExternal variant='light'>
|
||||
Release notes for {currentBuildName} {currentBuildVersion}
|
||||
</Link>
|
||||
</Box>
|
||||
|
@ -6,16 +6,10 @@ interface Props {
|
||||
id: string;
|
||||
imgSrc?: string;
|
||||
imgAltText?: string;
|
||||
sectionTitle: string
|
||||
sectionTitle: string;
|
||||
}
|
||||
|
||||
export const DownloadsSection: FC<Props> = ({
|
||||
children,
|
||||
imgSrc,
|
||||
imgAltText,
|
||||
sectionTitle,
|
||||
id
|
||||
}) => {
|
||||
export const DownloadsSection: FC<Props> = ({ children, imgSrc, imgAltText, sectionTitle, id }) => {
|
||||
return (
|
||||
<Stack border='2px solid' borderColor='brand.light.primary' id={id}>
|
||||
{!!imgSrc && (
|
||||
@ -36,9 +30,7 @@ export const DownloadsSection: FC<Props> = ({
|
||||
</Box>
|
||||
</Stack>
|
||||
|
||||
<Stack spacing={4}>
|
||||
{children}
|
||||
</Stack>
|
||||
<Stack spacing={4}>{children}</Stack>
|
||||
</Stack>
|
||||
)
|
||||
}
|
||||
);
|
||||
};
|
||||
|
@ -1,99 +1,56 @@
|
||||
import {
|
||||
Stack,
|
||||
Tabs,
|
||||
TabList,
|
||||
Tab,
|
||||
Text,
|
||||
TabPanel,
|
||||
TabPanels,
|
||||
} from '@chakra-ui/react';
|
||||
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 { DOWNLOAD_TABS, DOWNLOAD_TAB_COLUMN_HEADERS } from '../../../constants';
|
||||
|
||||
import { DataTable } from '../DataTable'
|
||||
import { DataTable } from '../../UI';
|
||||
|
||||
interface Props {
|
||||
data: any
|
||||
data: any;
|
||||
}
|
||||
|
||||
export const DownloadsTable: FC<Props> = ({
|
||||
data
|
||||
}) => {
|
||||
export const DownloadsTable: FC<Props> = ({ data }) => {
|
||||
return (
|
||||
<Stack
|
||||
sx={{ mt: '0 !important' }}
|
||||
borderBottom='2px solid'
|
||||
borderColor='brand.light.primary'
|
||||
>
|
||||
<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 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}
|
||||
/>
|
||||
<DataTable columnHeaders={DOWNLOAD_TAB_COLUMN_HEADERS} data={data} />
|
||||
</TabPanel>
|
||||
<TabPanel p={0}>
|
||||
<DataTable
|
||||
columnHeaders={DOWNLOAD_TAB_COLUMN_HEADERS}
|
||||
data={data}
|
||||
/>
|
||||
<DataTable columnHeaders={DOWNLOAD_TAB_COLUMN_HEADERS} data={data} />
|
||||
</TabPanel>
|
||||
<TabPanel p={0}>
|
||||
<DataTable
|
||||
columnHeaders={DOWNLOAD_TAB_COLUMN_HEADERS}
|
||||
data={data}
|
||||
/>
|
||||
<DataTable columnHeaders={DOWNLOAD_TAB_COLUMN_HEADERS} data={data} />
|
||||
</TabPanel>
|
||||
<TabPanel p={0}>
|
||||
<DataTable
|
||||
columnHeaders={DOWNLOAD_TAB_COLUMN_HEADERS}
|
||||
data={data}
|
||||
/>
|
||||
<DataTable columnHeaders={DOWNLOAD_TAB_COLUMN_HEADERS} data={data} />
|
||||
</TabPanel>
|
||||
<TabPanel p={0}>
|
||||
<DataTable
|
||||
columnHeaders={DOWNLOAD_TAB_COLUMN_HEADERS}
|
||||
data={data}
|
||||
/>
|
||||
<DataTable columnHeaders={DOWNLOAD_TAB_COLUMN_HEADERS} data={data} />
|
||||
</TabPanel>
|
||||
</TabPanels>
|
||||
</Tabs>
|
||||
</Stack>
|
||||
)
|
||||
}
|
||||
);
|
||||
};
|
||||
|
@ -1,3 +1,3 @@
|
||||
export * from './DownloadsHero';
|
||||
export * from './DownloadsSection'
|
||||
export * from './DownloadsTable'
|
||||
export * from './DownloadsSection';
|
||||
export * from './DownloadsTable';
|
||||
|
@ -3,7 +3,14 @@ import { FC } from 'react';
|
||||
|
||||
export const Gopher: FC = () => {
|
||||
return (
|
||||
<Stack alignItems='center' p={4} border='2px solid' borderColor='brand.light.primary'>
|
||||
<Stack
|
||||
justifyContent='center'
|
||||
alignItems='center'
|
||||
p={4}
|
||||
border='2px solid'
|
||||
borderColor='brand.light.primary'
|
||||
h='100%'
|
||||
>
|
||||
<Image src='/images/pages/gopher-home-side-mobile.svg' alt='Gopher greeting' />
|
||||
</Stack>
|
||||
);
|
||||
|
@ -6,13 +6,22 @@ import { DOCS_PAGE, DOWNLOADS_PAGE } from '../../../constants';
|
||||
|
||||
export const HomeHero: FC = () => {
|
||||
return (
|
||||
<Stack border='2px solid' borderColor='brand.light.primary' px={4} py={{ base: 8, md: 5 }}>
|
||||
<Stack
|
||||
border='2px solid'
|
||||
borderColor='brand.light.primary'
|
||||
px={4}
|
||||
py={{ base: 8, md: 24, lg: 48 }}
|
||||
flexGrow={1}
|
||||
>
|
||||
<Box mb={4}>
|
||||
<Box
|
||||
as='h1'
|
||||
textStyle='h1'
|
||||
mb={{ base: 2, md: 4 }}
|
||||
textAlign={{ base: 'center', md: 'left' }}
|
||||
fontSize={{ base: '3rem', md: '6rem'}}
|
||||
lineHeight={{ md: '6rem' }}
|
||||
fontWeight='500'
|
||||
>
|
||||
go-ethereum
|
||||
</Box>
|
||||
|
@ -20,7 +20,7 @@ export const HomeSection: FC<Props> = ({
|
||||
children
|
||||
}) => {
|
||||
return (
|
||||
<Stack border='2px solid' borderColor='brand.light.primary'>
|
||||
<Stack border='2px solid' borderColor='brand.light.primary' h='100%'>
|
||||
{!!imgSrc && (
|
||||
<Stack alignItems='center' p={4} borderBottom='2px solid' borderColor='brand.light.primary'>
|
||||
{/* TODO: use NextImage */}
|
||||
@ -45,6 +45,7 @@ export const HomeSection: FC<Props> = ({
|
||||
borderBottom='2px solid'
|
||||
borderColor='brand.light.primary'
|
||||
sx={{ mt: '0 !important' }}
|
||||
h='100%'
|
||||
>
|
||||
{children}
|
||||
</Stack>
|
||||
|
@ -13,7 +13,10 @@ export const QuickLinks: FC = () => {
|
||||
</Box>
|
||||
</Stack>
|
||||
|
||||
<Grid templateColumns='repeat(2, 1fr)' sx={{ mt: '0 !important' }}>
|
||||
<Grid
|
||||
templateColumns={{ base: 'repeat(2, 1fr)', md: '1fr auto' }}
|
||||
sx={{ mt: '0 !important' }}
|
||||
>
|
||||
{/* get started */}
|
||||
<GridItem
|
||||
borderRight='2px solid'
|
||||
|
67
src/components/UI/homepage/WhatIsEthereum.tsx
Normal file
67
src/components/UI/homepage/WhatIsEthereum.tsx
Normal file
@ -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>
|
||||
);
|
||||
};
|
64
src/components/UI/homepage/WhyRunANode.tsx
Normal file
64
src/components/UI/homepage/WhyRunANode.tsx
Normal file
@ -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 './HomeHero';
|
||||
export * from './HomeSection';
|
||||
export * from './WhatIsEthereum';
|
||||
export * from './WhyRunANode';
|
||||
export * from './QuickLinks';
|
||||
|
16
src/components/UI/icons/HamburguerIcon.tsx
Normal file
16
src/components/UI/icons/HamburguerIcon.tsx
Normal file
@ -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>
|
||||
)
|
||||
});
|
14
src/components/UI/icons/LensIcon.tsx
Normal file
14
src/components/UI/icons/LensIcon.tsx
Normal file
@ -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>
|
||||
)
|
||||
});
|
14
src/components/UI/icons/MoonIcon.tsx
Normal file
14
src/components/UI/icons/MoonIcon.tsx
Normal file
@ -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>
|
||||
)
|
||||
});
|
3
src/components/UI/icons/index.ts
Normal file
3
src/components/UI/icons/index.ts
Normal file
@ -0,0 +1,3 @@
|
||||
export * from './HamburguerIcon';
|
||||
export * from './LensIcon';
|
||||
export * from './MoonIcon';
|
2
src/components/UI/index.ts
Normal file
2
src/components/UI/index.ts
Normal file
@ -0,0 +1,2 @@
|
||||
export * from './DataTable';
|
||||
export * from './Header';
|
@ -1,14 +1,17 @@
|
||||
import { Container } from '@chakra-ui/react';
|
||||
import { FC } from 'react';
|
||||
|
||||
import { Header } from '../UI';
|
||||
|
||||
interface Props {
|
||||
children?: React.ReactNode;
|
||||
}
|
||||
|
||||
// TODO: if mobile, getMobileLayout, else getDesktopLayout
|
||||
export const Layout: FC<Props> = ({ children }) => {
|
||||
return (
|
||||
<Container maxW={{ sm: 'container.sm' }} my={7}>
|
||||
<Container maxW={{ base: 'container.sm', md: 'container.2xl' }} my={7}>
|
||||
<Header />
|
||||
|
||||
{children}
|
||||
</Container>
|
||||
);
|
||||
|
@ -13,7 +13,9 @@ 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;}} = {
|
||||
export const DOWNLOAD_HEADER_BUTTONS: {
|
||||
[index: string]: { name: string; image: string; imageAlt: string; buildURL: string };
|
||||
} = {
|
||||
linuxBuild: {
|
||||
name: 'Linux',
|
||||
image: '/images/pages/linux-penguin.svg',
|
||||
@ -38,14 +40,8 @@ export const DOWNLOAD_HEADER_BUTTONS: {[index: string]: {name: string; image: st
|
||||
imageAlt: 'Source branch logo',
|
||||
buildURL: ''
|
||||
}
|
||||
}
|
||||
export const DOWNLOAD_TABS = [
|
||||
'Linux',
|
||||
'macOS',
|
||||
'Windows',
|
||||
'iOS',
|
||||
'Android'
|
||||
]
|
||||
};
|
||||
export const DOWNLOAD_TABS = ['Linux', 'macOS', 'Windows', 'iOS', 'Android'];
|
||||
export const DOWNLOAD_TAB_COLUMN_HEADERS = [
|
||||
'Release',
|
||||
'Commit',
|
||||
@ -55,16 +51,16 @@ export const DOWNLOAD_TAB_COLUMN_HEADERS = [
|
||||
'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'
|
||||
]
|
||||
];
|
||||
|
@ -7,7 +7,7 @@ export const testDownloadData = [
|
||||
size: '11.71 MB',
|
||||
published: 'Last Wednesday at 11:11 AM',
|
||||
signature: 'Signature',
|
||||
"checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af'
|
||||
'checksum (md5)': 'c93b0339413a8f2b95aa4b23b32d64af'
|
||||
},
|
||||
{
|
||||
release: 'Geth 1.10.23',
|
||||
@ -17,7 +17,7 @@ export const testDownloadData = [
|
||||
size: '11.71 MB',
|
||||
published: 'Last Wednesday at 11:11 AM',
|
||||
signature: 'Signature',
|
||||
"checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af'
|
||||
'checksum (md5)': 'c93b0339413a8f2b95aa4b23b32d64af'
|
||||
},
|
||||
{
|
||||
release: 'Geth 1.10.23',
|
||||
@ -27,7 +27,7 @@ export const testDownloadData = [
|
||||
size: '11.71 MB',
|
||||
published: 'Last Wednesday at 11:11 AM',
|
||||
signature: 'Signature',
|
||||
"checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af'
|
||||
'checksum (md5)': 'c93b0339413a8f2b95aa4b23b32d64af'
|
||||
},
|
||||
{
|
||||
release: 'Geth 1.10.23',
|
||||
@ -37,7 +37,7 @@ export const testDownloadData = [
|
||||
size: '11.71 MB',
|
||||
published: 'Last Wednesday at 11:11 AM',
|
||||
signature: 'Signature',
|
||||
"checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af'
|
||||
'checksum (md5)': 'c93b0339413a8f2b95aa4b23b32d64af'
|
||||
},
|
||||
{
|
||||
release: 'Geth 1.10.23',
|
||||
@ -47,7 +47,7 @@ export const testDownloadData = [
|
||||
size: '11.71 MB',
|
||||
published: 'Last Wednesday at 11:11 AM',
|
||||
signature: 'Signature',
|
||||
"checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af'
|
||||
'checksum (md5)': 'c93b0339413a8f2b95aa4b23b32d64af'
|
||||
},
|
||||
{
|
||||
release: 'Geth 1.10.23',
|
||||
@ -57,7 +57,7 @@ export const testDownloadData = [
|
||||
size: '11.71 MB',
|
||||
published: 'Last Wednesday at 11:11 AM',
|
||||
signature: 'Signature',
|
||||
"checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af'
|
||||
'checksum (md5)': 'c93b0339413a8f2b95aa4b23b32d64af'
|
||||
},
|
||||
{
|
||||
release: 'Geth 1.10.23',
|
||||
@ -67,7 +67,7 @@ export const testDownloadData = [
|
||||
size: '11.71 MB',
|
||||
published: 'Last Wednesday at 11:11 AM',
|
||||
signature: 'Signature',
|
||||
"checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af'
|
||||
'checksum (md5)': 'c93b0339413a8f2b95aa4b23b32d64af'
|
||||
},
|
||||
{
|
||||
release: 'Geth 1.10.23',
|
||||
@ -77,7 +77,7 @@ export const testDownloadData = [
|
||||
size: '11.71 MB',
|
||||
published: 'Last Wednesday at 11:11 AM',
|
||||
signature: 'Signature',
|
||||
"checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af'
|
||||
'checksum (md5)': 'c93b0339413a8f2b95aa4b23b32d64af'
|
||||
},
|
||||
{
|
||||
release: 'Geth 1.10.23',
|
||||
@ -87,7 +87,7 @@ export const testDownloadData = [
|
||||
size: '11.71 MB',
|
||||
published: 'Last Wednesday at 11:11 AM',
|
||||
signature: 'Signature',
|
||||
"checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af'
|
||||
'checksum (md5)': 'c93b0339413a8f2b95aa4b23b32d64af'
|
||||
},
|
||||
{
|
||||
release: 'Geth 1.10.23',
|
||||
@ -97,7 +97,7 @@ export const testDownloadData = [
|
||||
size: '11.71 MB',
|
||||
published: 'Last Wednesday at 11:11 AM',
|
||||
signature: 'Signature',
|
||||
"checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af'
|
||||
'checksum (md5)': 'c93b0339413a8f2b95aa4b23b32d64af'
|
||||
},
|
||||
{
|
||||
release: 'Geth 1.10.23',
|
||||
@ -107,7 +107,7 @@ export const testDownloadData = [
|
||||
size: '11.71 MB',
|
||||
published: 'Last Wednesday at 11:11 AM',
|
||||
signature: 'Signature',
|
||||
"checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af'
|
||||
'checksum (md5)': 'c93b0339413a8f2b95aa4b23b32d64af'
|
||||
},
|
||||
{
|
||||
release: 'Geth 1.10.23',
|
||||
@ -117,6 +117,6 @@ export const testDownloadData = [
|
||||
size: '11.71 MB',
|
||||
published: 'Last Wednesday at 11:11 AM',
|
||||
signature: 'Signature',
|
||||
"checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af'
|
||||
},
|
||||
]
|
||||
'checksum (md5)': 'c93b0339413a8f2b95aa4b23b32d64af'
|
||||
}
|
||||
];
|
||||
|
@ -1,32 +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': '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': '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': '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': '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"
|
||||
},
|
||||
]
|
||||
'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'
|
||||
}
|
||||
];
|
||||
|
@ -1,20 +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: '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: '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"
|
||||
},
|
||||
]
|
||||
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'
|
||||
}
|
||||
];
|
||||
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Geth fundamentals
|
||||
description: Documentation for foundational Geth topics
|
||||
description: Documentation for foundational Geth topics
|
||||
---
|
||||
|
||||
## Geth fundamentals
|
||||
@ -12,4 +12,3 @@ This is where you will find information about how to manage a Geth node and unde
|
||||
For example, the pages here will help you to understand the underlying architecture of your Geth node, how to start it in different configurations using command line options, how to sync the blockchain and how to manage accounts. There is a page on security practices that will help you to keep your Geth node safe from adversaries.
|
||||
|
||||
Note also that there is a page explaining common log messages that are often queried on the Geth discord and Github - this will help users to interpret the messages displayed to the console and know what actions to take.
|
||||
|
||||
|
@ -1,229 +1,214 @@
|
||||
import {
|
||||
Code,
|
||||
Link,
|
||||
ListItem,
|
||||
Stack,
|
||||
Text,
|
||||
UnorderedList,
|
||||
} from '@chakra-ui/react';
|
||||
import { Code, Link, ListItem, Stack, Text, UnorderedList } from '@chakra-ui/react';
|
||||
import type { NextPage } from 'next';
|
||||
import { useState } from 'react'
|
||||
import { useState } from 'react';
|
||||
|
||||
import {
|
||||
DownloadsHero,
|
||||
DownloadsSection,
|
||||
DownloadsTable,
|
||||
} from '../components/UI/downloads';
|
||||
import { DataTable } from '../components/UI/DataTable';
|
||||
import { DownloadsHero, DownloadsSection, DownloadsTable } from '../components/UI/downloads';
|
||||
import { DataTable } from '../components/UI';
|
||||
|
||||
import {
|
||||
DEFAULT_BUILD_AMOUNT_TO_SHOW,
|
||||
DOWNLOAD_OPENPGP_BUILD_HEADERS,
|
||||
DOWNLOAD_OPENPGP_DEVELOPER_HEADERS,
|
||||
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 { 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 [amountStableReleases, updateAmountStables] = useState(DEFAULT_BUILD_AMOUNT_TO_SHOW);
|
||||
const [amountDevelopBuilds, updateAmountDevelopBuilds] = useState(DEFAULT_BUILD_AMOUNT_TO_SHOW);
|
||||
|
||||
const showMoreStableReleases = () => {
|
||||
updateAmountStables(amountStableReleases+10)
|
||||
}
|
||||
updateAmountStables(amountStableReleases + 10);
|
||||
};
|
||||
|
||||
const showMoreDevelopBuilds = () => {
|
||||
updateAmountDevelopBuilds(amountDevelopBuilds+10)
|
||||
}
|
||||
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'}
|
||||
/>
|
||||
{/* TODO: add PageMetadata */}
|
||||
|
||||
<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're looking for a specific release, operating system or architecture, below you will find:
|
||||
</Text>
|
||||
<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'
|
||||
}
|
||||
/>
|
||||
|
||||
<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
|
||||
<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're looking for a specific release, operating system or architecture,
|
||||
below you will find:
|
||||
</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>
|
||||
<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>
|
||||
|
||||
{/* 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 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>
|
||||
</Link>
|
||||
</Stack>
|
||||
</DownloadsSection>
|
||||
</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>
|
||||
<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 for real data */}
|
||||
<Stack borderBottom='2px solid' borderColor='brand.light.primary'>
|
||||
<DataTable
|
||||
columnHeaders={DOWNLOAD_OPENPGP_BUILD_HEADERS}
|
||||
data={pgpBuildTestData}
|
||||
/>
|
||||
</Stack>
|
||||
{/* TODO: swap test data for real data */}
|
||||
<DownloadsTable data={testDownloadData.slice(0, amountStableReleases)} />
|
||||
|
||||
{/* TODO: swap for real data */}
|
||||
<Stack>
|
||||
<DataTable
|
||||
columnHeaders={DOWNLOAD_OPENPGP_DEVELOPER_HEADERS}
|
||||
data={pgpDeveloperTestData}
|
||||
/>
|
||||
</Stack>
|
||||
</DownloadsSection>
|
||||
<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='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>
|
||||
<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: These keys depends on the binary */}
|
||||
<Code p={4}>
|
||||
gpg --recv-keys F9585DE6 C2FF8BBF 9BA28146 7B9E2481 D2A67EAC
|
||||
</Code>
|
||||
</Stack>
|
||||
{/* TODO: swap for real data */}
|
||||
<DownloadsTable data={testDownloadData.slice(0, amountDevelopBuilds)} />
|
||||
|
||||
<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>
|
||||
<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>
|
||||
|
||||
{/* TODO: These are developer keys, do we need to change? */}
|
||||
<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'>
|
||||
<Text textStyle='quick-link-text'>
|
||||
All the binaries available from this page are signed via our build server PGP keys:
|
||||
</Text>
|
||||
</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: swap for real data */}
|
||||
<Stack borderBottom='2px solid' borderColor='brand.light.primary'>
|
||||
<DataTable columnHeaders={DOWNLOAD_OPENPGP_BUILD_HEADERS} data={pgpBuildTestData} />
|
||||
</Stack>
|
||||
|
||||
{/* 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>
|
||||
{/* 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,16 +1,22 @@
|
||||
import { Link, Stack, Text } from '@chakra-ui/react';
|
||||
import { Box, Grid, GridItem, Link, Stack, Text } from '@chakra-ui/react';
|
||||
import type { NextPage } from 'next';
|
||||
|
||||
import { Gopher, HomeHero, HomeSection, QuickLinks } from '../components/UI/homepage';
|
||||
import {
|
||||
Gopher,
|
||||
HomeHero,
|
||||
HomeSection,
|
||||
QuickLinks,
|
||||
WhatIsEthereum,
|
||||
WhyRunANode
|
||||
} from '../components/UI/homepage';
|
||||
|
||||
import {
|
||||
CONTRIBUTING_PAGE,
|
||||
DOCS_PAGE,
|
||||
ETHEREUM_FOUNDATION_URL,
|
||||
ETHEREUM_ORG_RUN_A_NODE_URL,
|
||||
ETHEREUM_ORG_URL,
|
||||
GETH_REPO_URL,
|
||||
GO_URL,
|
||||
GO_URL
|
||||
} from '../constants';
|
||||
|
||||
const HomePage: NextPage = ({}) => {
|
||||
@ -22,118 +28,128 @@ const HomePage: NextPage = ({}) => {
|
||||
<Stack spacing={4}>
|
||||
<HomeHero />
|
||||
|
||||
{/* SECTION: What is Geth */}
|
||||
<HomeSection
|
||||
imgSrc='/images/pages/gopher-home-front.svg'
|
||||
imgAltText='Gopher greeting'
|
||||
sectionTitle='What is Geth'
|
||||
linkLabel='Get started with Geth'
|
||||
buttonHref={`${DOCS_PAGE}/getting-started`}
|
||||
>
|
||||
<Text fontFamily='"Inter", sans-serif' lineHeight='26px'>
|
||||
Geth (go-ethereum) is a{' '}
|
||||
<Link href={GO_URL} isExternal variant='light'>
|
||||
Go
|
||||
</Link>{' '}
|
||||
implementation of{' '}
|
||||
<Link href={ETHEREUM_ORG_URL} isExternal variant='light'>
|
||||
Ethereum
|
||||
</Link>{' '}
|
||||
- a gateway into the decentralized web.
|
||||
</Text>
|
||||
<Grid templateColumns={{ base: 'repeat(1, 1fr)', lg: 'repeat(2, 1fr)' }} gap={4}>
|
||||
<GridItem rowSpan={2}>
|
||||
{/* SECTION: What is Geth */}
|
||||
<HomeSection
|
||||
imgSrc='/images/pages/gopher-home-front.svg'
|
||||
imgAltText='Gopher greeting'
|
||||
sectionTitle='What is Geth'
|
||||
linkLabel='Get started with Geth'
|
||||
buttonHref={`${DOCS_PAGE}/getting-started`}
|
||||
>
|
||||
<Text fontFamily='"Inter", sans-serif' lineHeight='26px'>
|
||||
Geth (go-ethereum) is a{' '}
|
||||
<Link href={GO_URL} isExternal variant='light'>
|
||||
Go
|
||||
</Link>{' '}
|
||||
implementation of{' '}
|
||||
<Link href={ETHEREUM_ORG_URL} isExternal variant='light'>
|
||||
Ethereum
|
||||
</Link>{' '}
|
||||
- a gateway into the decentralized web.
|
||||
</Text>
|
||||
|
||||
<Text fontFamily='"Inter", sans-serif' lineHeight='26px'>
|
||||
Geth has been a core part of Etheruem since the very beginning. Geth was one of the
|
||||
original Ethereum implementations making it the most battle-hardened and tested
|
||||
client.
|
||||
</Text>
|
||||
<Text fontFamily='"Inter", sans-serif' lineHeight='26px'>
|
||||
Geth has been a core part of Etheruem since the very beginning. Geth was one of
|
||||
the original Ethereum implementations making it the most battle-hardened and
|
||||
tested client.
|
||||
</Text>
|
||||
|
||||
<Text fontFamily='"Inter", sans-serif' lineHeight='26px'>
|
||||
Geth is an Ethereum{' '}
|
||||
<Text as='span' fontStyle='italic'>
|
||||
execution client
|
||||
</Text>{' '}
|
||||
meaning it handles transactions, deployment and execution of smart contracts and
|
||||
contains an embedded computer known as the{' '}
|
||||
<Text as='span' fontStyle='italic'>
|
||||
Ethereum Virtual Machine
|
||||
</Text>
|
||||
.
|
||||
</Text>
|
||||
<Text fontFamily='"Inter", sans-serif' lineHeight='26px'>
|
||||
Geth is an Ethereum{' '}
|
||||
<Text as='span' fontStyle='italic'>
|
||||
execution client
|
||||
</Text>{' '}
|
||||
meaning it handles transactions, deployment and execution of smart contracts and
|
||||
contains an embedded computer known as the{' '}
|
||||
<Text as='span' fontStyle='italic'>
|
||||
Ethereum Virtual Machine
|
||||
</Text>
|
||||
.
|
||||
</Text>
|
||||
|
||||
<Text fontFamily='"Inter", sans-serif' lineHeight='26px'>
|
||||
Running Geth alongside a consensus client turns a computer into an Ethereum node.
|
||||
</Text>
|
||||
</HomeSection>
|
||||
<Text fontFamily='"Inter", sans-serif' lineHeight='26px'>
|
||||
Running Geth alongside a consensus client turns a computer into an Ethereum node.
|
||||
</Text>
|
||||
</HomeSection>
|
||||
</GridItem>
|
||||
|
||||
{/* SECTION: What is Ethereum */}
|
||||
<HomeSection
|
||||
imgSrc='/images/pages/glyph-home-light.svg'
|
||||
imgAltText='Ethereum glyph'
|
||||
sectionTitle='What is Ethereum'
|
||||
linkLabel='Learn more on Ethereum.org'
|
||||
buttonHref={ETHEREUM_ORG_URL}
|
||||
>
|
||||
<Text fontFamily='"Inter", sans-serif' lineHeight='26px'>
|
||||
Ethereum is a technology for building apps and organizations, holding assets,
|
||||
transacting and communicating without being controlled by a central authority. It is
|
||||
the base of a new, decentralized internet.
|
||||
</Text>
|
||||
</HomeSection>
|
||||
<GridItem>
|
||||
{/* SECTION: What is Ethereum (has different styles than the other sections so it uses a different component) */}
|
||||
<WhatIsEthereum>
|
||||
<Text fontFamily='"Inter", sans-serif' lineHeight='26px'>
|
||||
Ethereum is a technology for building apps and organizations, holding assets,
|
||||
transacting and communicating without being controlled by a central authority. It
|
||||
is the base of a new, decentralized internet.
|
||||
</Text>
|
||||
</WhatIsEthereum>
|
||||
</GridItem>
|
||||
|
||||
{/* SECTION: Why run a Node */}
|
||||
<HomeSection
|
||||
imgSrc='/images/pages/gopher-home-nodes.svg'
|
||||
imgAltText='Gopher staring at nodes'
|
||||
sectionTitle='Why run a node?'
|
||||
linkLabel='Read more about running a node'
|
||||
buttonHref={ETHEREUM_ORG_RUN_A_NODE_URL}
|
||||
>
|
||||
<Text fontFamily='"Inter", sans-serif' lineHeight='26px'>
|
||||
Running your own node enables you to use Ethereum in a truly private, self-sufficient
|
||||
and trustless manner. You don't need to trust information you receive because you
|
||||
can verify the data yourself using your Geth instance.
|
||||
</Text>
|
||||
<GridItem>
|
||||
{/* SECTION: Why run a node (has different styles than the other sections so it uses a different component) */}
|
||||
<WhyRunANode>
|
||||
<Text fontFamily='"Inter", sans-serif' lineHeight='26px'>
|
||||
Running your own node enables you to use Ethereum in a truly private,
|
||||
self-sufficient and trustless manner. You don't need to trust information you
|
||||
receive because you can verify the data yourself using your Geth instance.
|
||||
</Text>
|
||||
|
||||
<Text fontFamily='"Inter", sans-serif' lineHeight='26px' fontWeight={700}>
|
||||
“Don't trust, verify”
|
||||
</Text>
|
||||
</HomeSection>
|
||||
<Text fontFamily='"Inter", sans-serif' lineHeight='26px' fontWeight={700}>
|
||||
“Don't trust, verify”
|
||||
</Text>
|
||||
</WhyRunANode>
|
||||
</GridItem>
|
||||
</Grid>
|
||||
|
||||
{/* SECTION:Contribute to Geth */}
|
||||
<HomeSection
|
||||
sectionTitle='Contribute to Geth'
|
||||
linkLabel='Read our contribution guidelines'
|
||||
buttonHref={CONTRIBUTING_PAGE}
|
||||
>
|
||||
<Text fontFamily='"Inter", sans-serif' lineHeight='26px'>
|
||||
We welcome contributions from anyone on the internet, and are grateful for even the
|
||||
smallest of fixes! If you'd like to contribute to the Geth source code, please
|
||||
fork the{' '}
|
||||
<Link href={GETH_REPO_URL} isExternal variant='light'>
|
||||
Github repository
|
||||
</Link>
|
||||
, fix, commit and send a pull request for the maintainers to review and merge into the
|
||||
main code base.
|
||||
</Text>
|
||||
</HomeSection>
|
||||
<Grid templateColumns={{ base: 'repeat(1, 1fr)', md: 'repeat(2, 1fr)' }} gap={4}>
|
||||
<GridItem>
|
||||
{/* SECTION: Contribute to Geth */}
|
||||
<HomeSection
|
||||
sectionTitle='Contribute to Geth'
|
||||
linkLabel='Read our contribution guidelines'
|
||||
buttonHref={CONTRIBUTING_PAGE}
|
||||
>
|
||||
<Text fontFamily='"Inter", sans-serif' lineHeight='26px'>
|
||||
We welcome contributions from anyone on the internet, and are grateful for even
|
||||
the smallest of fixes! If you'd like to contribute to the Geth source code,
|
||||
please fork the{' '}
|
||||
<Link href={GETH_REPO_URL} isExternal variant='light'>
|
||||
Github repository
|
||||
</Link>
|
||||
, fix, commit and send a pull request for the maintainers to review and merge into
|
||||
the main code base.
|
||||
</Text>
|
||||
</HomeSection>
|
||||
</GridItem>
|
||||
|
||||
{/* SECTION: About the Team */}
|
||||
<HomeSection
|
||||
sectionTitle='About the Team'
|
||||
linkLabel='Read more about the Ethereum Foundation'
|
||||
buttonHref={ETHEREUM_FOUNDATION_URL}
|
||||
>
|
||||
<Text fontFamily='"Inter", sans-serif' lineHeight='26px'>
|
||||
The Geth team comprises 10 developers distributed across the world. The Geth team is
|
||||
funded directly by The Ethereum Foundation.
|
||||
</Text>
|
||||
</HomeSection>
|
||||
<GridItem>
|
||||
{/* SECTION: About the Team */}
|
||||
<HomeSection
|
||||
sectionTitle='About the Team'
|
||||
linkLabel='Read more about the Ethereum Foundation'
|
||||
buttonHref={ETHEREUM_FOUNDATION_URL}
|
||||
>
|
||||
<Text fontFamily='"Inter", sans-serif' lineHeight='26px'>
|
||||
The Geth team comprises 10 developers distributed across the world. The Geth team
|
||||
is funded directly by The Ethereum Foundation.
|
||||
</Text>
|
||||
</HomeSection>
|
||||
</GridItem>
|
||||
</Grid>
|
||||
|
||||
{/* TODO: replace with animated/video version */}
|
||||
<Gopher />
|
||||
<Grid templateColumns={{ base: 'repeat(1, 1fr)', md: '300px 1fr' }} gap={4}>
|
||||
<GridItem w='auto'>
|
||||
<Box h='100%'>
|
||||
{/* TODO: replace with animated/video version */}
|
||||
<Gopher />
|
||||
</Box>
|
||||
</GridItem>
|
||||
|
||||
<QuickLinks />
|
||||
<GridItem>
|
||||
<QuickLinks />
|
||||
</GridItem>
|
||||
</Grid>
|
||||
</Stack>
|
||||
</main>
|
||||
</>
|
||||
|
@ -1,3 +1,3 @@
|
||||
export const shadows = {
|
||||
linkBoxShadow: '0 0 0 1px #11866f !important'
|
||||
}
|
||||
};
|
||||
|
@ -1,6 +1,7 @@
|
||||
export const sizes = {
|
||||
container: {
|
||||
sm: '480px',
|
||||
md: '768px',
|
||||
lg: '1096px',
|
||||
xl: '1200px',
|
||||
'2xl': '1536px'
|
||||
|
@ -15,6 +15,11 @@ export const textStyles = {
|
||||
letterSpacing: '4%',
|
||||
color: 'brand.light.body'
|
||||
},
|
||||
'header-font': {
|
||||
fontFamily: '"JetBrains Mono", monospace',
|
||||
fontWeight: 700,
|
||||
fontSize: { base: '0.86rem', sm: '1rem' }
|
||||
},
|
||||
'homepage-description': {
|
||||
fontFamily: '"JetBrains Mono", monospace',
|
||||
fontWeight: 700,
|
||||
@ -54,17 +59,17 @@ export const textStyles = {
|
||||
fontFamily: '"Inter", sans-serif'
|
||||
},
|
||||
'downloads-button-label': {
|
||||
fontFamily:'"JetBrains Mono", monospace',
|
||||
color:'yellow.50',
|
||||
fontSize:'xs',
|
||||
textTransform:'uppercase',
|
||||
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',
|
||||
fontSize: 'sm'
|
||||
},
|
||||
// TODO: refactor w/ semantic tokens for light/dark mode
|
||||
'link-light': {},
|
||||
|
19
yarn.lock
19
yarn.lock
@ -243,6 +243,13 @@
|
||||
compute-scroll-into-view "1.0.14"
|
||||
copy-to-clipboard "3.3.1"
|
||||
|
||||
"@chakra-ui/icon@3.0.11":
|
||||
version "3.0.11"
|
||||
resolved "https://registry.yarnpkg.com/@chakra-ui/icon/-/icon-3.0.11.tgz#a51dda24bed2f2ed77b4136ada8f22d3249c9870"
|
||||
integrity sha512-RG4jf/XmBdaxOYI5J5QstEtTCPoVlmrQ/XiWhvN0LTgAnmZIqVwFl3Uw+satArdStHAs0GmJZg/E/soFTWuFmw==
|
||||
dependencies:
|
||||
"@chakra-ui/shared-utils" "2.0.2"
|
||||
|
||||
"@chakra-ui/icon@3.0.9":
|
||||
version "3.0.9"
|
||||
resolved "https://registry.yarnpkg.com/@chakra-ui/icon/-/icon-3.0.9.tgz#ba127d9eefd727f62e9bce07a23eca39ae506744"
|
||||
@ -250,6 +257,13 @@
|
||||
dependencies:
|
||||
"@chakra-ui/shared-utils" "2.0.1"
|
||||
|
||||
"@chakra-ui/icons@^2.0.11":
|
||||
version "2.0.11"
|
||||
resolved "https://registry.yarnpkg.com/@chakra-ui/icons/-/icons-2.0.11.tgz#3faf53c499c7c61c65b6e5ff4b0933f48b9ba416"
|
||||
integrity sha512-WjxrFMt9hHpuZlnBh4fhtGOkIVlwYwHNmwq4sJGxYWlg8UnEhVJMoOojheJDy/d3Gp9+ApetlK3vt8fV/rZamg==
|
||||
dependencies:
|
||||
"@chakra-ui/icon" "3.0.11"
|
||||
|
||||
"@chakra-ui/image@2.0.10":
|
||||
version "2.0.10"
|
||||
resolved "https://registry.yarnpkg.com/@chakra-ui/image/-/image-2.0.10.tgz#712c0e1c579d959225bd8316d8d8f66cbeb95bb8"
|
||||
@ -629,6 +643,11 @@
|
||||
resolved "https://registry.yarnpkg.com/@chakra-ui/shared-utils/-/shared-utils-2.0.1.tgz#41e314e42c96039e8ffb265e73145cf755813ab4"
|
||||
integrity sha512-NXDBl/u4wrSNp0ON5R3r3evkRurrAz2yuO7neooaG+O5HEenVouGqm4CsXd6lUAPmjwiGzA0LQFNCt0Hj92dXg==
|
||||
|
||||
"@chakra-ui/shared-utils@2.0.2":
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/@chakra-ui/shared-utils/-/shared-utils-2.0.2.tgz#1df08133194c12ac4df9302604ec37784c2bb026"
|
||||
integrity sha512-wC58Fh6wCnFFQyiebVZ0NI7PFW9+Vch0QE6qN7iR+bLseOzQY9miYuzPJ1kMYiFd6QTOmPJkI39M3wHqrPYiOg==
|
||||
|
||||
"@chakra-ui/skeleton@2.0.15":
|
||||
version "2.0.15"
|
||||
resolved "https://registry.yarnpkg.com/@chakra-ui/skeleton/-/skeleton-2.0.15.tgz#fd41383bf84319e47c6ea1f4f3138f5f5e0dabca"
|
||||
|
Loading…
Reference in New Issue
Block a user