From a3a2e5c319f09c3800fe8ad62432db496c3e1145 Mon Sep 17 00:00:00 2001 From: Corwin Smith Date: Tue, 4 Oct 2022 23:02:21 -0600 Subject: [PATCH 01/21] downloads header --- .../pages/gopher-downloads-front-light.svg | 9 + public/images/pages/linux-penguin.svg | 3 + public/images/pages/macos-logo.svg | 3 + public/images/pages/source-branch.svg | 3 + public/images/pages/windows-logo.svg | 3 + src/components/UI/homepage/DownloadsHero.tsx | 253 ++++++++++++++++++ src/components/UI/homepage/index.ts | 1 + src/pages/downloads.md | 1 - src/pages/downloads.tsx | 33 +++ 9 files changed, 308 insertions(+), 1 deletion(-) create mode 100644 public/images/pages/gopher-downloads-front-light.svg create mode 100644 public/images/pages/linux-penguin.svg create mode 100644 public/images/pages/macos-logo.svg create mode 100644 public/images/pages/source-branch.svg create mode 100644 public/images/pages/windows-logo.svg create mode 100644 src/components/UI/homepage/DownloadsHero.tsx delete mode 100644 src/pages/downloads.md create mode 100644 src/pages/downloads.tsx diff --git a/public/images/pages/gopher-downloads-front-light.svg b/public/images/pages/gopher-downloads-front-light.svg new file mode 100644 index 000000000000..41c29843069b --- /dev/null +++ b/public/images/pages/gopher-downloads-front-light.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/pages/linux-penguin.svg b/public/images/pages/linux-penguin.svg new file mode 100644 index 000000000000..f66b859b43a1 --- /dev/null +++ b/public/images/pages/linux-penguin.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/pages/macos-logo.svg b/public/images/pages/macos-logo.svg new file mode 100644 index 000000000000..6c6180ff5e3c --- /dev/null +++ b/public/images/pages/macos-logo.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/pages/source-branch.svg b/public/images/pages/source-branch.svg new file mode 100644 index 000000000000..0ae94f6e2098 --- /dev/null +++ b/public/images/pages/source-branch.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/pages/windows-logo.svg b/public/images/pages/windows-logo.svg new file mode 100644 index 000000000000..13729fe7ff2b --- /dev/null +++ b/public/images/pages/windows-logo.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/UI/homepage/DownloadsHero.tsx b/src/components/UI/homepage/DownloadsHero.tsx new file mode 100644 index 000000000000..fc05f60d4400 --- /dev/null +++ b/src/components/UI/homepage/DownloadsHero.tsx @@ -0,0 +1,253 @@ +import { Box, Button, Heading, Image, Link, Stack, HStack, Text } from '@chakra-ui/react'; +import { FC } from 'react'; +import NextLink from 'next/link'; + +interface DownloadsHero { + currentBuildName: string + currentBuildVersion: string + linuxBuildURL: string + macOSBuildURL: string + releaseNotesURL: string + sourceCodeURL: string + windowsBuildURL: string +} + +export const DownloadsHero: FC = ({ + currentBuildName, + currentBuildVersion, + linuxBuildURL, + macOSBuildURL, + releaseNotesURL, + sourceCodeURL, + windowsBuildURL +}) => { + return ( + + + Gopher greeting + + + + + Download Go Ethereum + + + + {currentBuildName} ({currentBuildVersion}) + + + + 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. + + + + + + + + + + + + + + + + + + + + + Release notes for {currentBuildName} {currentBuildVersion} + + + + + ); +}; diff --git a/src/components/UI/homepage/index.ts b/src/components/UI/homepage/index.ts index 861cb5112f93..a75a03c2af2e 100644 --- a/src/components/UI/homepage/index.ts +++ b/src/components/UI/homepage/index.ts @@ -1,3 +1,4 @@ +export * from './DownloadsHero'; export * from './Gopher'; export * from './HomeHero'; export * from './HomeSection'; diff --git a/src/pages/downloads.md b/src/pages/downloads.md deleted file mode 100644 index 0f700ee2a131..000000000000 --- a/src/pages/downloads.md +++ /dev/null @@ -1 +0,0 @@ -beep diff --git a/src/pages/downloads.tsx b/src/pages/downloads.tsx new file mode 100644 index 000000000000..caf41e9eb183 --- /dev/null +++ b/src/pages/downloads.tsx @@ -0,0 +1,33 @@ +import { Stack } from '@chakra-ui/react'; +import type { NextPage } from 'next'; + +import { DownloadsHero } from '../components/UI/homepage'; + +import { + +} from '../constants'; + +const DownloadsPage: NextPage = ({}) => { + return ( + <> + {/* TODO: add PageMetadata */} + +
+ + +

Hello

+
+
+ + ) +} + +export default DownloadsPage \ No newline at end of file From c921c775efa8acb343c3fe2d445e9793de4860af Mon Sep 17 00:00:00 2001 From: Corwin Smith Date: Thu, 6 Oct 2022 13:38:42 -0600 Subject: [PATCH 02/21] create DownloadsSection component --- .../{homepage => downloads}/DownloadsHero.tsx | 0 .../UI/downloads/DownloadsSection.tsx | 47 +++++++++ src/components/UI/downloads/index.ts | 2 + src/components/UI/homepage/index.ts | 1 - src/pages/downloads.tsx | 97 +++++++++++++++++-- 5 files changed, 140 insertions(+), 7 deletions(-) rename src/components/UI/{homepage => downloads}/DownloadsHero.tsx (100%) create mode 100644 src/components/UI/downloads/DownloadsSection.tsx create mode 100644 src/components/UI/downloads/index.ts diff --git a/src/components/UI/homepage/DownloadsHero.tsx b/src/components/UI/downloads/DownloadsHero.tsx similarity index 100% rename from src/components/UI/homepage/DownloadsHero.tsx rename to src/components/UI/downloads/DownloadsHero.tsx diff --git a/src/components/UI/downloads/DownloadsSection.tsx b/src/components/UI/downloads/DownloadsSection.tsx new file mode 100644 index 000000000000..19cee95f3900 --- /dev/null +++ b/src/components/UI/downloads/DownloadsSection.tsx @@ -0,0 +1,47 @@ +import { Heading, Image, Stack } from '@chakra-ui/react'; +import { FC } from 'react'; + +interface Props { + children?: React.ReactNode; + imgSrc?: string; + imgAltText?: string; + sectionTitle: string +} + +export const DownloadsSection: FC = ({ + children, + imgSrc, + imgAltText, + sectionTitle, +}) => { + return ( + + {!!imgSrc && ( + + {/* TODO: use NextImage */} + {imgAltText} + + )} + + + + {sectionTitle} + + + + + {children} + + + ) +} \ No newline at end of file diff --git a/src/components/UI/downloads/index.ts b/src/components/UI/downloads/index.ts new file mode 100644 index 000000000000..3296aa793397 --- /dev/null +++ b/src/components/UI/downloads/index.ts @@ -0,0 +1,2 @@ +export * from './DownloadsHero'; +export * from './DownloadsSection' \ No newline at end of file diff --git a/src/components/UI/homepage/index.ts b/src/components/UI/homepage/index.ts index a75a03c2af2e..861cb5112f93 100644 --- a/src/components/UI/homepage/index.ts +++ b/src/components/UI/homepage/index.ts @@ -1,4 +1,3 @@ -export * from './DownloadsHero'; export * from './Gopher'; export * from './HomeHero'; export * from './HomeSection'; diff --git a/src/pages/downloads.tsx b/src/pages/downloads.tsx index caf41e9eb183..3e1bda1b5c6a 100644 --- a/src/pages/downloads.tsx +++ b/src/pages/downloads.tsx @@ -1,11 +1,15 @@ -import { Stack } from '@chakra-ui/react'; +import { + Code, + Link, + ListItem, + Stack, + Text, + UnorderedList, +} from '@chakra-ui/react'; import type { NextPage } from 'next'; -import { DownloadsHero } from '../components/UI/homepage'; - -import { +import { DownloadsHero, DownloadsSection } from '../components/UI/downloads'; -} from '../constants'; const DownloadsPage: NextPage = ({}) => { return ( @@ -14,6 +18,7 @@ const DownloadsPage: NextPage = ({}) => {
+ {/* TODO: replace hardcoded strings with build information */} { 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'} /> -

Hello

+ + + + + If you're looking for a specific release, operating system or architecture, below you will find: + + + + + + All stable and develop builds of Geth and tools + + + + + Archives for non-primary processor architectures + + + + + Android library archives and iOS XCode frameworks + + + + + + 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{' '} + + OpenPGP + {' '} + Signatures for details). + + + + + + + + You can import the build server public keys by grabbing the individual keys directly from the keyserver network: + + + gpg --recv-keys F9585DE6 C2FF8BBF 9BA28146 7B9E2481 D2A67EAC + + + + + + Similarly you can import all the developer public keys by grabbing them directly from the keyserver network: + + + + gpg --recv-keys E058A81C 05A5DDF0 1CCB7DD2 + + + + + + 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: + + + + gpg --verify geth-linux-amd64-1.5.0-d0c820ac.tar.gz.asc + + +
From 0ee133cb817e6bd7b165a40d5c2c619e28c43817 Mon Sep 17 00:00:00 2001 From: Corwin Smith Date: Thu, 6 Oct 2022 14:46:06 -0600 Subject: [PATCH 03/21] add skeleton for all sections --- src/pages/downloads.tsx | 150 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 149 insertions(+), 1 deletion(-) diff --git a/src/pages/downloads.tsx b/src/pages/downloads.tsx index 3e1bda1b5c6a..b2ad5a12124c 100644 --- a/src/pages/downloads.tsx +++ b/src/pages/downloads.tsx @@ -1,8 +1,12 @@ import { + Button, Code, Link, ListItem, Stack, + Table, + Th, + Tr, Text, UnorderedList, } from '@chakra-ui/react'; @@ -10,6 +14,10 @@ import type { NextPage } from 'next'; import { DownloadsHero, DownloadsSection } from '../components/UI/downloads'; +import { + GETH_REPO_URL +} from '../constants' + const DownloadsPage: NextPage = ({}) => { return ( @@ -62,7 +70,6 @@ const DownloadsPage: NextPage = ({}) => { { + + + + These are the current and previous stable releases of go-ethereum, updated automatically when a new version is tagged in our{' '} + + GitHub repository. + + + + + + TABLE + + + + + + + + + + + These are the develop snapshots of go-ethereum, updated automatically when a new commit is pushed into our{' '} + + GitHub repository. + + + + + + TABLE + + + + + + + + + + + All the binaries available from this page are signed via our build server PGP keys: + + + + + + + + + + + +
+ + Build Server + + + + UniqueID + + + + OpenPGP Key + + + + Fingerprint + +
+
+
+ From cbfc1a70cd81cd7ab6c25f8eadfbc6aeb0b20086 Mon Sep 17 00:00:00 2001 From: Corwin Smith Date: Thu, 6 Oct 2022 22:15:51 -0600 Subject: [PATCH 04/21] add tabs --- .../UI/downloads/DownloadsTable.tsx | 113 ++++++++++++++++++ src/components/UI/downloads/index.ts | 3 +- src/pages/downloads.tsx | 14 +-- 3 files changed, 122 insertions(+), 8 deletions(-) create mode 100644 src/components/UI/downloads/DownloadsTable.tsx diff --git a/src/components/UI/downloads/DownloadsTable.tsx b/src/components/UI/downloads/DownloadsTable.tsx new file mode 100644 index 000000000000..83ae1ba097c3 --- /dev/null +++ b/src/components/UI/downloads/DownloadsTable.tsx @@ -0,0 +1,113 @@ +import { + Stack, + Tabs, + TabList, + Tab, + Text, +} from '@chakra-ui/react'; + +export const DownloadsTable = () => { + return ( + + + + + + LINUX + + + + + MACOS + + + + + WINDOWS + + + + + IOS + + + + + ANDROID + + + + + Test + + ) +} \ No newline at end of file diff --git a/src/components/UI/downloads/index.ts b/src/components/UI/downloads/index.ts index 3296aa793397..597af494c8a2 100644 --- a/src/components/UI/downloads/index.ts +++ b/src/components/UI/downloads/index.ts @@ -1,2 +1,3 @@ export * from './DownloadsHero'; -export * from './DownloadsSection' \ No newline at end of file +export * from './DownloadsSection' +export * from './DownloadsTable' \ No newline at end of file diff --git a/src/pages/downloads.tsx b/src/pages/downloads.tsx index b2ad5a12124c..bd44893997cb 100644 --- a/src/pages/downloads.tsx +++ b/src/pages/downloads.tsx @@ -12,7 +12,11 @@ import { } from '@chakra-ui/react'; import type { NextPage } from 'next'; -import { DownloadsHero, DownloadsSection } from '../components/UI/downloads'; +import { + DownloadsHero, + DownloadsSection, + DownloadsTable, +} from '../components/UI/downloads'; import { GETH_REPO_URL @@ -107,9 +111,7 @@ const DownloadsPage: NextPage = ({}) => { - - TABLE - + + - + These are the develop snapshots of go-ethereum, updated automatically when a new commit is pushed into our{' '} { - + - + All the binaries available from this page are signed via our build server PGP keys: @@ -215,7 +191,7 @@ const DownloadsPage: NextPage = ({}) => { - + You can import the build server public keys by grabbing the individual keys directly from the keyserver network: @@ -226,7 +202,7 @@ const DownloadsPage: NextPage = ({}) => { - + Similarly you can import all the developer public keys by grabbing them directly from the keyserver network: @@ -237,7 +213,7 @@ const DownloadsPage: NextPage = ({}) => { - + 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: diff --git a/src/theme/foundations/index.ts b/src/theme/foundations/index.ts index 06d0f4f4f026..b0e872689b84 100644 --- a/src/theme/foundations/index.ts +++ b/src/theme/foundations/index.ts @@ -1,2 +1,3 @@ export * from './colors'; +export * from './shadows'; export * from './sizes'; diff --git a/src/theme/foundations/shadows.ts b/src/theme/foundations/shadows.ts new file mode 100644 index 000000000000..d870a80e6b20 --- /dev/null +++ b/src/theme/foundations/shadows.ts @@ -0,0 +1,3 @@ +export const shadows = { + linkBoxShadow: '0 0 0 1px #11866f !important' +} \ No newline at end of file diff --git a/src/theme/index.ts b/src/theme/index.ts index ee49f0ac91ce..69069c203096 100644 --- a/src/theme/index.ts +++ b/src/theme/index.ts @@ -1,6 +1,6 @@ import { extendTheme } from '@chakra-ui/react'; -import { colors, sizes } from './foundations'; +import { colors, shadows, sizes } from './foundations'; import { Button, Link } from './components'; const overrides = { @@ -9,6 +9,7 @@ const overrides = { Button, Link }, + shadows, sizes, styles: { global: () => ({ @@ -65,6 +66,19 @@ const overrides = { fontSize: '13px', fontFamily: '"Inter", sans-serif' }, + 'downloads-button-label': { + fontFamily:'"JetBrains Mono", monospace', + color:'yellow.50', + fontSize:'xs', + textTransform:'uppercase', + }, + 'download-tab-label': { + fontFamily: '"JetBrains Mono", monospace', + fontWeight: 700, + textTransform: 'uppercase', + textAlign: 'center', + fontSize: 'sm', + }, // TODO: refactor w/ semantic tokens for light/dark mode 'link-light': {}, // TODO: refactor w/ semantic tokens for light/dark mode From b845d710984a02b348941e650c6369d16c2d1212 Mon Sep 17 00:00:00 2001 From: Corwin Smith Date: Sat, 8 Oct 2022 13:12:57 -0600 Subject: [PATCH 12/21] theme cleanup --- src/components/UI/downloads/DownloadsHero.tsx | 9 +--- .../UI/downloads/DownloadsSection.tsx | 4 +- .../UI/downloads/DownloadsTable.tsx | 6 ++- src/pages/downloads.tsx | 50 ++++++------------- src/theme/components/Link.ts | 16 ++++++ 5 files changed, 39 insertions(+), 46 deletions(-) diff --git a/src/components/UI/downloads/DownloadsHero.tsx b/src/components/UI/downloads/DownloadsHero.tsx index 4b492b5f555d..94dc1200f72c 100644 --- a/src/components/UI/downloads/DownloadsHero.tsx +++ b/src/components/UI/downloads/DownloadsHero.tsx @@ -148,14 +148,7 @@ export const DownloadsHero: FC = ({ Release notes for {currentBuildName} {currentBuildVersion} diff --git a/src/components/UI/downloads/DownloadsSection.tsx b/src/components/UI/downloads/DownloadsSection.tsx index aea02d397352..b3b647597da3 100644 --- a/src/components/UI/downloads/DownloadsSection.tsx +++ b/src/components/UI/downloads/DownloadsSection.tsx @@ -3,6 +3,7 @@ import { FC } from 'react'; interface Props { children?: React.ReactNode; + id: string; imgSrc?: string; imgAltText?: string; sectionTitle: string @@ -13,9 +14,10 @@ export const DownloadsSection: FC = ({ imgSrc, imgAltText, sectionTitle, + id }) => { return ( - + {!!imgSrc && ( {/* TODO: use NextImage */} diff --git a/src/components/UI/downloads/DownloadsTable.tsx b/src/components/UI/downloads/DownloadsTable.tsx index 97b4d4c74e38..7caa07300956 100644 --- a/src/components/UI/downloads/DownloadsTable.tsx +++ b/src/components/UI/downloads/DownloadsTable.tsx @@ -19,7 +19,11 @@ export const DownloadsTable: FC = ({ data }) => { return ( - + { imgSrc='/images/pages/gopher-home-side-desktop.svg' imgAltText='Gopher facing right' sectionTitle='Specific Versions' + id='specificversions' > @@ -72,16 +72,8 @@ const DownloadsPage: NextPage = ({}) => { 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{' '} OpenPGP {' '} @@ -90,21 +82,14 @@ const DownloadsPage: NextPage = ({}) => { - - + + These are the current and previous stable releases of go-ethereum, updated automatically when a new version is tagged in our{' '} GitHub repository. @@ -130,21 +115,14 @@ const DownloadsPage: NextPage = ({}) => { - - + + These are the develop snapshots of go-ethereum, updated automatically when a new commit is pushed into our{' '} GitHub repository. @@ -170,8 +148,8 @@ const DownloadsPage: NextPage = ({}) => { - - + + All the binaries available from this page are signed via our build server PGP keys: @@ -189,8 +167,8 @@ const DownloadsPage: NextPage = ({}) => { */} - - + + You can import the build server public keys by grabbing the individual keys directly from the keyserver network: @@ -201,7 +179,7 @@ const DownloadsPage: NextPage = ({}) => { - + Similarly you can import all the developer public keys by grabbing them directly from the keyserver network: diff --git a/src/theme/components/Link.ts b/src/theme/components/Link.ts index 2e747c4324c2..bffc9dd76d34 100644 --- a/src/theme/components/Link.ts +++ b/src/theme/components/Link.ts @@ -11,6 +11,22 @@ export const Link = { boxShadow: 'inset 0 0 0 3px #f0f2e2 !important' }, _active: { textDecoration: 'none', bg: 'brand.light.secondary', color: 'yellow.50' } + }, + href: { + color: 'brand.light.primary', + _hover: { + color: 'brand.light.body', + textDecorationColor: 'brand.light.body' + }, + _focus: { + color: 'brand.light.primary', + boxShadow: 'linkBoxShadow', + textDecoration: 'none' + }, + _pressed: { + color: 'brand.light.secondary', + textDecorationColor: 'brand.light.secondary' + } } } }; From 468c17d90b6aac255fc2185cfece769c9b97f723 Mon Sep 17 00:00:00 2001 From: Corwin Smith Date: Sat, 8 Oct 2022 14:32:07 -0600 Subject: [PATCH 13/21] update test data --- src/components/UI/DataTable.tsx | 1 + .../UI/downloads/DownloadsTable.tsx | 20 ++++++-- src/data/test/download-testdata.ts | 48 ++++++++++++++----- 3 files changed, 52 insertions(+), 17 deletions(-) diff --git a/src/components/UI/DataTable.tsx b/src/components/UI/DataTable.tsx index 6f0e5f3dfdec..adad5d0ce939 100644 --- a/src/components/UI/DataTable.tsx +++ b/src/components/UI/DataTable.tsx @@ -75,6 +75,7 @@ export const DataTable: FC = ({ {item[columnHeader.toLowerCase()]} diff --git a/src/components/UI/downloads/DownloadsTable.tsx b/src/components/UI/downloads/DownloadsTable.tsx index 7caa07300956..0c317e4bcef5 100644 --- a/src/components/UI/downloads/DownloadsTable.tsx +++ b/src/components/UI/downloads/DownloadsTable.tsx @@ -113,7 +113,9 @@ export const DownloadsTable: FC = ({ 'Kind', 'Arch', 'Size', - 'Published' + 'Published', + 'Signature', + 'Checksum (MD5)' ]} data={data} /> @@ -126,7 +128,9 @@ export const DownloadsTable: FC = ({ 'Kind', 'Arch', 'Size', - 'Published' + 'Published', + 'Signature', + 'Checksum (MD5)' ]} data={data} /> @@ -139,7 +143,9 @@ export const DownloadsTable: FC = ({ 'Kind', 'Arch', 'Size', - 'Published' + 'Published', + 'Signature', + 'Checksum (MD5)' ]} data={data} /> @@ -152,7 +158,9 @@ export const DownloadsTable: FC = ({ 'Kind', 'Arch', 'Size', - 'Published' + 'Published', + 'Signature', + 'Checksum (MD5)' ]} data={data} /> @@ -165,7 +173,9 @@ export const DownloadsTable: FC = ({ 'Kind', 'Arch', 'Size', - 'Published' + 'Published', + 'Signature', + 'Checksum (MD5)' ]} data={data} /> diff --git a/src/data/test/download-testdata.ts b/src/data/test/download-testdata.ts index 9ea4f97066d9..910e7c1936f5 100644 --- a/src/data/test/download-testdata.ts +++ b/src/data/test/download-testdata.ts @@ -5,7 +5,9 @@ export const testDownloadData = [ kind: 'archive', arch: '64-bit', size: '11.71 MB', - published: 'Last Wednesday at 11:11 AM' + published: 'Last Wednesday at 11:11 AM', + signature: 'Signature', + "checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af' }, { release: 'Geth 1.10.23', @@ -13,7 +15,9 @@ export const testDownloadData = [ kind: 'archive', arch: '64-bit', size: '11.71 MB', - published: 'Last Wednesday at 11:11 AM' + published: 'Last Wednesday at 11:11 AM', + signature: 'Signature', + "checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af' }, { release: 'Geth 1.10.23', @@ -21,7 +25,9 @@ export const testDownloadData = [ kind: 'archive', arch: '64-bit', size: '11.71 MB', - published: 'Last Wednesday at 11:11 AM' + published: 'Last Wednesday at 11:11 AM', + signature: 'Signature', + "checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af' }, { release: 'Geth 1.10.23', @@ -29,7 +35,9 @@ export const testDownloadData = [ kind: 'archive', arch: '64-bit', size: '11.71 MB', - published: 'Last Wednesday at 11:11 AM' + published: 'Last Wednesday at 11:11 AM', + signature: 'Signature', + "checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af' }, { release: 'Geth 1.10.23', @@ -37,7 +45,9 @@ export const testDownloadData = [ kind: 'archive', arch: '64-bit', size: '11.71 MB', - published: 'Last Wednesday at 11:11 AM' + published: 'Last Wednesday at 11:11 AM', + signature: 'Signature', + "checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af' }, { release: 'Geth 1.10.23', @@ -45,7 +55,9 @@ export const testDownloadData = [ kind: 'archive', arch: '64-bit', size: '11.71 MB', - published: 'Last Wednesday at 11:11 AM' + published: 'Last Wednesday at 11:11 AM', + signature: 'Signature', + "checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af' }, { release: 'Geth 1.10.23', @@ -53,7 +65,9 @@ export const testDownloadData = [ kind: 'archive', arch: '64-bit', size: '11.71 MB', - published: 'Last Wednesday at 11:11 AM' + published: 'Last Wednesday at 11:11 AM', + signature: 'Signature', + "checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af' }, { release: 'Geth 1.10.23', @@ -61,7 +75,9 @@ export const testDownloadData = [ kind: 'archive', arch: '64-bit', size: '11.71 MB', - published: 'Last Wednesday at 11:11 AM' + published: 'Last Wednesday at 11:11 AM', + signature: 'Signature', + "checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af' }, { release: 'Geth 1.10.23', @@ -69,7 +85,9 @@ export const testDownloadData = [ kind: 'archive', arch: '64-bit', size: '11.71 MB', - published: 'Last Wednesday at 11:11 AM' + published: 'Last Wednesday at 11:11 AM', + signature: 'Signature', + "checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af' }, { release: 'Geth 1.10.23', @@ -77,7 +95,9 @@ export const testDownloadData = [ kind: 'archive', arch: '64-bit', size: '11.71 MB', - published: 'Last Wednesday at 11:11 AM' + published: 'Last Wednesday at 11:11 AM', + signature: 'Signature', + "checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af' }, { release: 'Geth 1.10.23', @@ -85,7 +105,9 @@ export const testDownloadData = [ kind: 'archive', arch: '64-bit', size: '11.71 MB', - published: 'Last Wednesday at 11:11 AM' + published: 'Last Wednesday at 11:11 AM', + signature: 'Signature', + "checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af' }, { release: 'Geth 1.10.23', @@ -93,6 +115,8 @@ export const testDownloadData = [ kind: 'archive', arch: '64-bit', size: '11.71 MB', - published: 'Last Wednesday at 11:11 AM' + published: 'Last Wednesday at 11:11 AM', + signature: 'Signature', + "checksum (md5)": 'c93b0339413a8f2b95aa4b23b32d64af' }, ] \ No newline at end of file From d4fff5d11d8e4f235861bbf9bcaeab8ecb97f548 Mon Sep 17 00:00:00 2001 From: Corwin Smith Date: Sat, 8 Oct 2022 14:53:07 -0600 Subject: [PATCH 14/21] add pagination to builds --- src/pages/downloads.tsx | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/pages/downloads.tsx b/src/pages/downloads.tsx index db2a47757ab6..e8eaeaea43e9 100644 --- a/src/pages/downloads.tsx +++ b/src/pages/downloads.tsx @@ -7,6 +7,7 @@ import { UnorderedList, } from '@chakra-ui/react'; import type { NextPage } from 'next'; +import { useState } from 'react' import { DownloadsHero, @@ -23,6 +24,9 @@ import { testDownloadData } from '../data/test/download-testdata' const DownloadsPage: NextPage = ({}) => { + const [amountStableReleases, updateAmountStables] = useState(10) + const [amountDevelopBuilds, updateAmountDevelopBuilds] = useState(10) + return ( <> {/* TODO: add PageMetadata */} @@ -97,10 +101,12 @@ const DownloadsPage: NextPage = ({}) => { {/* TODO: swap test data for real data */} - + - + { + updateAmountStables(amountStableReleases+10) + }}> { {/* TODO: swap for real data */} - + - + { + updateAmountDevelopBuilds(amountDevelopBuilds+10) + }}> Date: Sat, 8 Oct 2022 16:37:55 -0600 Subject: [PATCH 15/21] test pgp data --- src/data/test/pgpbuild-testdata.ts | 32 ++++++++++++++++++++++++++ src/data/test/pgpdeveloper-testdata.ts | 20 ++++++++++++++++ src/pages/downloads.tsx | 22 +++++++++++++++--- 3 files changed, 71 insertions(+), 3 deletions(-) create mode 100644 src/data/test/pgpbuild-testdata.ts create mode 100644 src/data/test/pgpdeveloper-testdata.ts diff --git a/src/data/test/pgpbuild-testdata.ts b/src/data/test/pgpbuild-testdata.ts new file mode 100644 index 000000000000..a016016edff2 --- /dev/null +++ b/src/data/test/pgpbuild-testdata.ts @@ -0,0 +1,32 @@ +export const pgpBuildTestData = [ + { + "build server": "Android Builder", + "unique id": "Go Ethereum Android Builder ", + "openpgp key": "F9585DE6", + "fingerprint": "8272 1824 F4D7 46E0 B5A7 AB95 70AD 154B F958 5DE6" + }, + { + "build server": "iOS Builder", + "unique id": "Go Ethereum iOS Builder ", + "openpgp key": "F9585DE6", + "fingerprint": "8272 1824 F4D7 46E0 B5A7 AB95 70AD 154B F958 5DE6" + }, + { + "build server": "Linux Builder", + "unique id": "Go Ethereum Linux Builder ", + "openpgp key": "F9585DE6", + "fingerprint": "8272 1824 F4D7 46E0 B5A7 AB95 70AD 154B F958 5DE6" + }, + { + "build server": "macOS Builder", + "unique id": "Go Ethereum macOS Builder ", + "openpgp key": "F9585DE6", + "fingerprint": "8272 1824 F4D7 46E0 B5A7 AB95 70AD 154B F958 5DE6" + }, + { + "build server": "Windows Builder", + "unique id": "Go Ethereum Windows Builder ", + "openpgp key": "F9585DE6", + "fingerprint": "8272 1824 F4D7 46E0 B5A7 AB95 70AD 154B F958 5DE6" + }, +] \ No newline at end of file diff --git a/src/data/test/pgpdeveloper-testdata.ts b/src/data/test/pgpdeveloper-testdata.ts new file mode 100644 index 000000000000..85d16adfd612 --- /dev/null +++ b/src/data/test/pgpdeveloper-testdata.ts @@ -0,0 +1,20 @@ +export const pgpDeveloperTestData = [ + { + "developer": "Felix Lange", + "unique id": "Felix Lange ", + "openpgp key": "F9585DE6", + "fingerprint": "8272 1824 F4D7 46E0 B5A7 AB95 70AD 154B F958 5DE6" + }, + { + "developer": "Martin Holst Swende", + "unique id": "Martin Holst Swende ", + "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 ", + "openpgp key": "F9585DE6", + "fingerprint": "8272 1824 F4D7 46E0 B5A7 AB95 70AD 154B F958 5DE6" + }, +] \ No newline at end of file diff --git a/src/pages/downloads.tsx b/src/pages/downloads.tsx index e8eaeaea43e9..aee3751c081d 100644 --- a/src/pages/downloads.tsx +++ b/src/pages/downloads.tsx @@ -21,7 +21,8 @@ import { } from '../constants' import { testDownloadData } from '../data/test/download-testdata' - +import { pgpBuildTestData } from '../data/test/pgpbuild-testdata'; +import { pgpDeveloperTestData } from '../data/test/pgpdeveloper-testdata'; const DownloadsPage: NextPage = ({}) => { const [amountStableReleases, updateAmountStables] = useState(10) @@ -163,7 +164,8 @@ const DownloadsPage: NextPage = ({}) => { - {/* + {/* TODO: swap for real data */} + { 'OpenPGP Key', 'Fingerprint' ]} + data={pgpBuildTestData} + /> + + + {/* TODO: swap for real data */} + + - */} + From 075a62720829a30bc0a7ad071ea43060cf5cc75d Mon Sep 17 00:00:00 2001 From: Corwin Smith Date: Sun, 9 Oct 2022 08:52:57 -0600 Subject: [PATCH 16/21] fix border on scrollbar --- src/pages/downloads.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/downloads.tsx b/src/pages/downloads.tsx index aee3751c081d..3ab4de404bc0 100644 --- a/src/pages/downloads.tsx +++ b/src/pages/downloads.tsx @@ -165,7 +165,7 @@ const DownloadsPage: NextPage = ({}) => { {/* TODO: swap for real data */} - + Date: Sun, 9 Oct 2022 09:07:01 -0600 Subject: [PATCH 17/21] fix theme issue, and move default amount of builds to show to a constant --- src/constants.ts | 3 +++ src/pages/downloads.tsx | 9 +++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/constants.ts b/src/constants.ts index 92abc34178cb..6a67470b99a8 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -9,3 +9,6 @@ export const ETHEREUM_ORG_URL = 'https://ethereum.org'; export const ETHEREUM_ORG_RUN_A_NODE_URL = 'https://ethereum.org/en/run-a-node/'; export const ETHEREUM_FOUNDATION_URL = 'https://ethereum.foundation'; export const GETH_REPO_URL = 'https://github.com/ethereum/go-ethereum'; + +// Downloads +export const DEFAULT_BUILD_AMOUNT_TO_SHOW = 10; diff --git a/src/pages/downloads.tsx b/src/pages/downloads.tsx index 3ab4de404bc0..3e24ac53f57c 100644 --- a/src/pages/downloads.tsx +++ b/src/pages/downloads.tsx @@ -17,6 +17,7 @@ import { import { DataTable } from '../components/UI/DataTable'; import { + DEFAULT_BUILD_AMOUNT_TO_SHOW, GETH_REPO_URL } from '../constants' @@ -25,8 +26,8 @@ import { pgpBuildTestData } from '../data/test/pgpbuild-testdata'; import { pgpDeveloperTestData } from '../data/test/pgpdeveloper-testdata'; const DownloadsPage: NextPage = ({}) => { - const [amountStableReleases, updateAmountStables] = useState(10) - const [amountDevelopBuilds, updateAmountDevelopBuilds] = useState(10) + const [amountStableReleases, updateAmountStables] = useState(DEFAULT_BUILD_AMOUNT_TO_SHOW) + const [amountDevelopBuilds, updateAmountDevelopBuilds] = useState(DEFAULT_BUILD_AMOUNT_TO_SHOW) return ( <> @@ -105,7 +106,7 @@ const DownloadsPage: NextPage = ({}) => { - { + { updateAmountStables(amountStableReleases+10) }}> { - { + { updateAmountDevelopBuilds(amountDevelopBuilds+10) }}> Date: Sun, 9 Oct 2022 10:28:07 -0600 Subject: [PATCH 18/21] add todo items --- src/components/UI/DataTable.tsx | 10 ++++++++-- src/pages/downloads.tsx | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/components/UI/DataTable.tsx b/src/components/UI/DataTable.tsx index adad5d0ce939..832446f0e37a 100644 --- a/src/components/UI/DataTable.tsx +++ b/src/components/UI/DataTable.tsx @@ -21,9 +21,10 @@ export const DataTable: FC = ({ }) => { return ( = ({ return ( { columnHeaders.map((columnHeader, idx) => { + // TODO: Make the font size smaller (refer to design system) return ( {item[columnHeader.toLowerCase()]} diff --git a/src/pages/downloads.tsx b/src/pages/downloads.tsx index 3e24ac53f57c..1c10c384d86f 100644 --- a/src/pages/downloads.tsx +++ b/src/pages/downloads.tsx @@ -170,7 +170,7 @@ const DownloadsPage: NextPage = ({}) => { Date: Sun, 9 Oct 2022 12:58:42 -0600 Subject: [PATCH 19/21] table hover styles --- src/components/UI/DataTable.tsx | 24 ++++++++++-------------- src/pages/downloads.tsx | 4 +--- 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/src/components/UI/DataTable.tsx b/src/components/UI/DataTable.tsx index 832446f0e37a..c1a260293b38 100644 --- a/src/components/UI/DataTable.tsx +++ b/src/components/UI/DataTable.tsx @@ -21,8 +21,7 @@ export const DataTable: FC = ({ }) => { return ( = ({ background: "#11866f", }, }} - p={4} + pt={4} + pb={4} > - - +
+ { columnHeaders.map((columnHeader, idx) => { @@ -46,8 +43,8 @@ export const DataTable: FC = ({ { columnHeaders.map((columnHeader, idx) => { @@ -80,8 +76,8 @@ export const DataTable: FC = ({ return ( diff --git a/src/pages/downloads.tsx b/src/pages/downloads.tsx index 1c10c384d86f..ca4f53b9ded0 100644 --- a/src/pages/downloads.tsx +++ b/src/pages/downloads.tsx @@ -111,7 +111,6 @@ const DownloadsPage: NextPage = ({}) => { }}> { }}> { Similarly you can import all the developer public keys by grabbing them directly from the keyserver network: - {/* TODO: Thees are developer keys, do we need to change? */} + {/* TODO: These are developer keys, do we need to change? */} gpg --recv-keys E058A81C 05A5DDF0 1CCB7DD2 From 649d22ba37310748831e1a0a8c9a67c8b7319fa9 Mon Sep 17 00:00:00 2001 From: Corwin Smith Date: Mon, 10 Oct 2022 06:56:44 -0600 Subject: [PATCH 20/21] change requests --- src/components/UI/downloads/DownloadsHero.tsx | 146 +++++----------- .../UI/downloads/DownloadsSection.tsx | 2 +- .../UI/downloads/DownloadsTable.tsx | 160 ++++-------------- src/constants.ts | 56 +++++- src/pages/downloads.tsx | 26 +-- src/theme/components/Link.ts | 16 -- 6 files changed, 148 insertions(+), 258 deletions(-) diff --git a/src/components/UI/downloads/DownloadsHero.tsx b/src/components/UI/downloads/DownloadsHero.tsx index 94dc1200f72c..86c7d605e156 100644 --- a/src/components/UI/downloads/DownloadsHero.tsx +++ b/src/components/UI/downloads/DownloadsHero.tsx @@ -2,6 +2,8 @@ import { Box, Button, Image, Link, Stack, HStack, Text } from '@chakra-ui/react' import { FC } from 'react'; import NextLink from 'next/link'; +import { DOWNLOAD_HEADER_BUTTONS } from '../../../constants' + interface DownloadsHero { currentBuildName: string currentBuildVersion: string @@ -21,11 +23,16 @@ export const DownloadsHero: FC = ({ sourceCodeURL, windowsBuildURL }) => { + DOWNLOAD_HEADER_BUTTONS.linuxBuild.buildURL = linuxBuildURL + DOWNLOAD_HEADER_BUTTONS.macOSBuild.buildURL = macOSBuildURL + DOWNLOAD_HEADER_BUTTONS.windowsBuild.buildURL = windowsBuildURL + DOWNLOAD_HEADER_BUTTONS.sourceCode.buildURL = sourceCodeURL + return ( - - - + + + = ({ 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. - - - - - - - - - - - - - - - + { + Object.keys(DOWNLOAD_HEADER_BUTTONS).map((key: string, idx) => { + return ( + + + + ) + }) + } Release notes for {currentBuildName} {currentBuildVersion} diff --git a/src/components/UI/downloads/DownloadsSection.tsx b/src/components/UI/downloads/DownloadsSection.tsx index b3b647597da3..5e0fdf26a2b9 100644 --- a/src/components/UI/downloads/DownloadsSection.tsx +++ b/src/components/UI/downloads/DownloadsSection.tsx @@ -2,7 +2,7 @@ import { Box, Image, Stack } from '@chakra-ui/react'; import { FC } from 'react'; interface Props { - children?: React.ReactNode; + children: React.ReactNode; id: string; imgSrc?: string; imgAltText?: string; diff --git a/src/components/UI/downloads/DownloadsTable.tsx b/src/components/UI/downloads/DownloadsTable.tsx index 0c317e4bcef5..3de100ff3b3f 100644 --- a/src/components/UI/downloads/DownloadsTable.tsx +++ b/src/components/UI/downloads/DownloadsTable.tsx @@ -9,6 +9,11 @@ import { } from '@chakra-ui/react'; import { FC } from 'react'; +import { + DOWNLOAD_TABS, + DOWNLOAD_TAB_COLUMN_HEADERS +} from '../../../constants' + import { DataTable } from '../DataTable' interface Props { @@ -29,154 +34,61 @@ export const DownloadsTable: FC = ({ color='brand.light.primary' bg='green.50' > - - - LINUX - - - - - MACOS - - - - - WINDOWS - - - - - IOS - - - - - ANDROID - - + { + DOWNLOAD_TABS.map((tab, idx) => { + return ( + + + {tab} + + + ) + }) + } diff --git a/src/constants.ts b/src/constants.ts index 936cb1593662..59222639cba4 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -13,4 +13,58 @@ export const GO_URL = 'https://go.dev/'; // Downloads export const DEFAULT_BUILD_AMOUNT_TO_SHOW = 10; - +export const DOWNLOAD_HEADER_BUTTONS: {[index: string]: {name: string; image: string; imageAlt: string; buildURL: string;}} = { + linuxBuild: { + name: 'Linux', + image: '/images/pages/linux-penguin.svg', + imageAlt: 'Linux logo', + buildURL: '' + }, + macOSBuild: { + name: 'macOS', + image: '/images/pages/macos-logo.svg', + imageAlt: 'macOS logo', + buildURL: '' + }, + windowsBuild: { + name: 'Windows', + image: '/images/pages/windows-logo.svg', + imageAlt: 'Windows logo', + buildURL: '' + }, + sourceCode: { + name: 'Sources', + image: '/images/pages/source-branch.svg', + imageAlt: 'Source branch logo', + buildURL: '' + } +} +export const DOWNLOAD_TABS = [ + 'Linux', + 'macOS', + 'Windows', + 'iOS', + 'Android' +] +export const DOWNLOAD_TAB_COLUMN_HEADERS = [ + 'Release', + 'Commit', + 'Kind', + 'Arch', + 'Size', + 'Published', + 'Signature', + 'Checksum (MD5)' +] +export const DOWNLOAD_OPENPGP_BUILD_HEADERS = [ + 'Build Server', + 'Unique ID', + 'OpenPGP Key', + 'Fingerprint' +] +export const DOWNLOAD_OPENPGP_DEVELOPER_HEADERS = [ + 'Developer', + 'Unique ID', + 'OpenPGP Key', + 'Fingerprint' +] \ No newline at end of file diff --git a/src/pages/downloads.tsx b/src/pages/downloads.tsx index ca4f53b9ded0..e073e4d220a2 100644 --- a/src/pages/downloads.tsx +++ b/src/pages/downloads.tsx @@ -18,6 +18,8 @@ import { DataTable } from '../components/UI/DataTable'; import { DEFAULT_BUILD_AMOUNT_TO_SHOW, + DOWNLOAD_OPENPGP_BUILD_HEADERS, + DOWNLOAD_OPENPGP_DEVELOPER_HEADERS, GETH_REPO_URL } from '../constants' @@ -79,7 +81,7 @@ const DownloadsPage: NextPage = ({}) => { 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{' '} OpenPGP {' '} @@ -95,7 +97,7 @@ const DownloadsPage: NextPage = ({}) => { GitHub repository. @@ -116,7 +118,7 @@ const DownloadsPage: NextPage = ({}) => { textAlign='center' p={4} > - SHOW OLDER RELEASES + Show older releases @@ -129,7 +131,7 @@ const DownloadsPage: NextPage = ({}) => { GitHub repository. @@ -150,7 +152,7 @@ const DownloadsPage: NextPage = ({}) => { textAlign='center' p={4} > - SHOW OLDER RELEASES + Show older releases @@ -166,12 +168,7 @@ const DownloadsPage: NextPage = ({}) => { {/* TODO: swap for real data */} @@ -179,12 +176,7 @@ const DownloadsPage: NextPage = ({}) => { {/* TODO: swap for real data */} diff --git a/src/theme/components/Link.ts b/src/theme/components/Link.ts index d03e7ceb7d56..19f891399e4d 100644 --- a/src/theme/components/Link.ts +++ b/src/theme/components/Link.ts @@ -12,22 +12,6 @@ export const Link = { }, _active: { textDecoration: 'none', bg: 'brand.light.secondary', color: 'yellow.50' } }, - href: { - color: 'brand.light.primary', - _hover: { - color: 'brand.light.body', - textDecorationColor: 'brand.light.body' - }, - _focus: { - color: 'brand.light.primary', - boxShadow: 'linkBoxShadow', - textDecoration: 'none' - }, - _pressed: { - color: 'brand.light.secondary', - textDecorationColor: 'brand.light.secondary' - } - }, light: { textDecoration: 'underline', color: 'brand.light.primary', From 522996db84b4f32580849d5586f338e72ecc4baf Mon Sep 17 00:00:00 2001 From: Corwin Smith Date: Wed, 12 Oct 2022 19:45:55 -0500 Subject: [PATCH 21/21] change requests --- src/components/UI/downloads/DownloadsHero.tsx | 4 ++-- src/components/UI/downloads/DownloadsTable.tsx | 2 +- src/pages/downloads.tsx | 18 +++++++++++------- src/theme/components/Link.ts | 2 +- 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/components/UI/downloads/DownloadsHero.tsx b/src/components/UI/downloads/DownloadsHero.tsx index 86c7d605e156..67b30355be88 100644 --- a/src/components/UI/downloads/DownloadsHero.tsx +++ b/src/components/UI/downloads/DownloadsHero.tsx @@ -56,10 +56,10 @@ export const DownloadsHero: FC = ({ { - Object.keys(DOWNLOAD_HEADER_BUTTONS).map((key: string, idx) => { + Object.keys(DOWNLOAD_HEADER_BUTTONS).map((key: string) => { return ( diff --git a/src/components/UI/downloads/DownloadsTable.tsx b/src/components/UI/downloads/DownloadsTable.tsx index 3de100ff3b3f..6fc7288b3542 100644 --- a/src/components/UI/downloads/DownloadsTable.tsx +++ b/src/components/UI/downloads/DownloadsTable.tsx @@ -38,7 +38,7 @@ export const DownloadsTable: FC = ({ DOWNLOAD_TABS.map((tab, idx) => { return ( { +const DownloadsPage: NextPage = () => { const [amountStableReleases, updateAmountStables] = useState(DEFAULT_BUILD_AMOUNT_TO_SHOW) const [amountDevelopBuilds, updateAmountDevelopBuilds] = useState(DEFAULT_BUILD_AMOUNT_TO_SHOW) + const showMoreStableReleases = () => { + updateAmountStables(amountStableReleases+10) + } + + const showMoreDevelopBuilds = () => { + updateAmountDevelopBuilds(amountDevelopBuilds+10) + } + return ( <> {/* TODO: add PageMetadata */} @@ -108,9 +116,7 @@ const DownloadsPage: NextPage = ({}) => { - { - updateAmountStables(amountStableReleases+10) - }}> + { - { - updateAmountDevelopBuilds(amountDevelopBuilds+10) - }}> +
= ({ return (
{item[columnHeader.toLowerCase()]}