From be5e86c590a139282366ce2b1a06ac0b28fad323 Mon Sep 17 00:00:00 2001 From: Jeremy Asuncion Date: Wed, 15 May 2024 10:16:46 -0700 Subject: [PATCH] feat: ML challenge page routing (#728) #705 - Adds routing for the ML challenge page at `/competition` (pending confirmation from @junxini) - Sets up skeleton page for ML challenge page with footer and header layout - Adds feature flag + redirect to 404 page when flag is disabled ## Demo image --------- Co-authored-by: Kira Evans --- .../app/components/Layout/TopNavigation.tsx | 55 ++++++++++++++----- .../components/MLChallenge/MLChallenge.tsx | 5 ++ .../app/components/MLChallenge/index.ts | 1 + .../data-portal/app/routes/competition.tsx | 23 ++++++++ .../data-portal/app/utils/featureFlags.ts | 6 +- .../public/locales/en/translation.json | 1 + 6 files changed, 77 insertions(+), 14 deletions(-) create mode 100644 frontend/packages/data-portal/app/components/MLChallenge/MLChallenge.tsx create mode 100644 frontend/packages/data-portal/app/components/MLChallenge/index.ts create mode 100644 frontend/packages/data-portal/app/routes/competition.tsx diff --git a/frontend/packages/data-portal/app/components/Layout/TopNavigation.tsx b/frontend/packages/data-portal/app/components/Layout/TopNavigation.tsx index c5a504d9f..f4f8184ac 100644 --- a/frontend/packages/data-portal/app/components/Layout/TopNavigation.tsx +++ b/frontend/packages/data-portal/app/components/Layout/TopNavigation.tsx @@ -1,15 +1,40 @@ import { useLocation } from '@remix-run/react' +import { useTranslation } from 'react-i18next' import { Link } from 'app/components/Link' -import { i18n } from 'app/i18n' +import { I18nKeys } from 'app/types/i18n' import { cns } from 'app/utils/cns' +import { useFeatureFlag } from 'app/utils/featureFlags' import { AboutAndHelpDropdown } from './AboutAndHelpDropdown' import { CryoETHomeLink } from './CryoETHomeLink' import { ToolsDropdown } from './ToolsDropdown' +interface TopNavLink { + isActive(pathname: string): boolean + label: I18nKeys + link: string +} + +const TOP_NAV_LINKS: TopNavLink[] = [ + { + isActive: (pathname) => + pathname.includes('/datasets') || pathname.includes('/runs'), + label: 'browseData', + link: '/browse-data/datasets', + }, + + { + isActive: (pathname) => pathname === '/competition', + label: 'competition', + link: '/competition', + }, +] + export function TopNavigation() { const { pathname } = useLocation() + const { t } = useTranslation() + const showMlChallenge = useFeatureFlag('mlChallenge') return (