diff --git a/src/images/brands/publicHealth/Terra-PHG-Color.svg b/src/images/brands/publicHealth/Terra-PHG-Color.svg new file mode 100644 index 0000000000..f1cf47241b --- /dev/null +++ b/src/images/brands/publicHealth/Terra-PHG-Color.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/images/brands/publicHealth/Terra-PHG-White.svg b/src/images/brands/publicHealth/Terra-PHG-White.svg new file mode 100644 index 0000000000..811ffbfc32 --- /dev/null +++ b/src/images/brands/publicHealth/Terra-PHG-White.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/images/brands/publicHealth/Terra-PHG-background.png b/src/images/brands/publicHealth/Terra-PHG-background.png new file mode 100644 index 0000000000..5288398f1f Binary files /dev/null and b/src/images/brands/publicHealth/Terra-PHG-background.png differ diff --git a/src/libs/brands.ts b/src/libs/brands.ts index 7bfbbadf52..f9618b61d2 100644 --- a/src/libs/brands.ts +++ b/src/libs/brands.ts @@ -15,6 +15,9 @@ import fcLogo from 'src/images/brands/firecloud/FireCloud-Logo.svg'; import fcLogoWhite from 'src/images/brands/firecloud/FireCloud-Logo-White.svg'; import projectSingularLogo from 'src/images/brands/projectSingular/project-singular-logo-black.svg'; import projectSingularLogoWhite from 'src/images/brands/projectSingular/project-singular-logo-white.svg'; +import publicHealthBackground from 'src/images/brands/publicHealth/Terra-PHG-background.png'; +import publicHealthLogo from 'src/images/brands/publicHealth/Terra-PHG-Color.svg'; +import publicHealthLogoWhite from 'src/images/brands/publicHealth/Terra-PHG-White.svg'; import rareXLogo from 'src/images/brands/rareX/rarex-logo-color.svg'; import rareXLogoWhite from 'src/images/brands/rareX/rarex-logo-white.svg'; import terraLogo from 'src/images/brands/terra/logo.svg'; @@ -61,6 +64,23 @@ export interface BrandConfiguration { /** Optional URL for landing page background image */ landingPageBackground?: string; + landingPageCards?: { + /** Card link */ + link: string; + + /** Card title */ + title: string; + + /** Card body */ + body: string; + + /** Card link pathParams */ + linkPathParams?: object; + + /** Card link queryParams */ + linkQueryParams?: object; + }[]; + /** Optionally filter which datasets show up in the Data Catalog */ catalogDataCollectionsToInclude?: string[]; @@ -68,6 +88,24 @@ export interface BrandConfiguration { theme: Theme; } +export const landingPageCardsDefault = [ + { + link: 'workspaces', + title: 'View Workspaces', + body: 'Workspaces connect your data to popular analysis tools powered by the cloud. Use Workspaces to share data, code, and results easily and securely.', + }, + { + link: 'library-showcase', + title: 'View Examples', + body: 'Browse our gallery of showcase Workspaces to see how science gets done.', + }, + { + link: 'library-datasets', + title: 'Browse Data', + body: 'Access data from a rich ecosystem of data portals.', + }, +]; + const baseColors: Theme['colorPalette'] = { primary: '#74ae43', secondary: '#6d6e70', @@ -290,6 +328,61 @@ export const brands: Record = { colorPalette: { ...baseColors, primary: '#521b93', secondary: '#011c48', accent: '#521b93' }, }, }, + publicHealth: { + name: 'Terra for Public Health Genomics', + queryName: 'publicHealth', + welcomeHeader: 'Terra for Public Health Genomics', + description: + 'Terra is a secure cloud-based data platform enabling pathogen genomic data analysis in public health, clinical, and academic settings.', + hostName: 'publichealth.terra.bio', + docLinks: [ + { + link: 'https://dockstore.org/organizations/Theiagen', + text: 'Theiagen Workflow Repository', + }, + { + link: 'https://docs.google.com/document/d/e/2PACX-1vTPQC-bYMRxXQ4Gz9ESH_Eo-E6UXD2qOL7_3iMxJaQF3pOyW3tUyu7G9Nvk-JTf8xDkOyhftvd9L-sa/pub', + text: 'Terra Cloud Costs FAQs', + }, + { + link: 'mailto:publichealthgenomics@broadinstitute.org', + text: 'Contact us', + }, + { + link: 'https://support.terra.bio/hc/en-us', + text: 'Terra Support', + }, + ], + logos: { + color: publicHealthLogo, + white: publicHealthLogoWhite, + }, + landingPageBackground: publicHealthBackground, + landingPageCards: [ + { + link: 'workspaces', + title: 'My Workspaces', + body: 'Workspaces connect your data to popular analysis tools powered by the cloud. Use Workspaces to share data, code, and results easily and securely.', + }, + { + link: 'workspaces', + title: 'Examples', + body: 'Browse example pathogen genomic data and analysis tools together.', + linkPathParams: {}, + linkQueryParams: { tab: 'public', 'tagsFilter[]': 'pathogen genomics' }, + }, + ], + theme: { + colorPalette: { + ...baseColors, + primary: '#006DB6', + secondary: '#004D81', + accent: '#4D72AA', + light: '#E6F1F8', + dark: '#333F52', + }, + }, + }, rareX: { name: `The RARE${nonBreakingHyphen}X Data Analysis Platform`, queryName: `the rare${nonBreakingHyphen}x data analysis platform`, diff --git a/src/pages/LandingPage.js b/src/pages/LandingPage.js index 0bd41e3fc5..49ecf0d391 100644 --- a/src/pages/LandingPage.js +++ b/src/pages/LandingPage.js @@ -8,6 +8,7 @@ import hexButton from 'src/images/hex-button.svg'; import terraHero from 'src/images/terra-hero.png'; import { Ajax } from 'src/libs/ajax'; import { getEnabledBrand, isFirecloud, isTerra } from 'src/libs/brand-utils'; +import { landingPageCardsDefault } from 'src/libs/brands'; import colors from 'src/libs/colors'; import { withErrorHandling } from 'src/libs/error'; import Events from 'src/libs/events'; @@ -51,11 +52,11 @@ const makeRightArrowWithBackgroundIcon = () => [icon('arrowRight', { color: 'white' })] ); -const makeCard = (link, title, body) => +const makeCard = _.map(({ link, title, body, linkPathParams, linkQueryParams }) => h( Clickable, { - href: Nav.getLink(link), + href: Nav.getLink(link, linkPathParams, linkQueryParams), style: { ...Style.elements.card.container, ...styles.card }, hover: { boxShadow: '0 3px 7px 0 rgba(0,0,0,0.5), 0 5px 3px 0 rgba(0,0,0,0.2)' }, }, @@ -65,7 +66,8 @@ const makeCard = (link, title, body) => div({ style: { flexGrow: 1 } }), makeRightArrowWithBackgroundIcon(), ] - ); + ) +); const makeDocLinks = _.map(({ link, text }) => div({ style: { marginBottom: '1rem', fontSize: 18 } }, [ @@ -133,13 +135,7 @@ export const LandingPage = () => { ), // width is set to prevent text from overlapping the background image and decreasing legibility div({ style: { maxWidth: 'calc(100% - 460px)' } }, makeDocLinks(getEnabledBrand().docLinks)), - div({ style: { display: 'flex', margin: '2rem 0 1rem 0' } }, [ - makeCard('workspaces', 'View Workspaces', [ - 'Workspaces connect your data to popular analysis tools powered by the cloud. Use Workspaces to share data, code, and results easily and securely.', - ]), - makeCard('library-showcase', 'View Examples', 'Browse our gallery of showcase Workspaces to see how science gets done.'), - makeCard('library-datasets', 'Browse Data', 'Access data from a rich ecosystem of data portals.'), - ]), + div({ style: { display: 'flex', margin: '2rem 0 1rem 0' } }, makeCard(getEnabledBrand().landingPageCards || landingPageCardsDefault)), isTerra() && div( {