diff --git a/web/src/RouteDefinitions.ts b/web/src/RouteDefinitions.ts index c0ea8f453..68d4d78dd 100644 --- a/web/src/RouteDefinitions.ts +++ b/web/src/RouteDefinitions.ts @@ -37,6 +37,8 @@ export interface CODERoutes { toCODESpaceAccessControl: (args: Required>) => string toCODESpaceSettings: (args: Required>) => string + toCODEPipelines: (args: Required>) => string + toCODESecrets: (args: Required>) => string toCODEGlobalSettings: () => string toCODEUsers: () => string @@ -72,6 +74,8 @@ export const routes: CODERoutes = { toCODESpaceAccessControl: ({ space }) => `/access-control/${space}`, toCODESpaceSettings: ({ space }) => `/settings/${space}`, + toCODEPipelines: ({ space }) => `/pipelines/${space}`, + toCODESecrets: ({ space }) => `/secrets/${space}`, toCODEGlobalSettings: () => '/settings', toCODEUsers: () => '/users', diff --git a/web/src/RouteDestinations.tsx b/web/src/RouteDestinations.tsx index 667d5a8d4..03017d772 100644 --- a/web/src/RouteDestinations.tsx +++ b/web/src/RouteDestinations.tsx @@ -5,6 +5,8 @@ import { SignUp } from 'pages/SignUp/SignUp' import Repository from 'pages/Repository/Repository' import { routes, pathProps } from 'RouteDefinitions' import RepositoriesListing from 'pages/RepositoriesListing/RepositoriesListing' +import PipelineList from 'pages/PipelineList/PipelineList' +import SecretList from 'pages/SecretList/SecretList' import { LayoutWithSideNav, LayoutWithoutSideNav } from 'layouts/layout' import RepositoryFileEdit from 'pages/RepositoryFileEdit/RepositoryFileEdit' import RepositoryCommits from 'pages/RepositoryCommits/RepositoryCommits' @@ -25,11 +27,14 @@ import ChangePassword from 'pages/ChangePassword/ChangePassword' import SpaceAccessControl from 'pages/SpaceAccessControl/SpaceAccessControl' import SpaceSettings from 'pages/SpaceSettings/SpaceSettings' import { useStrings } from 'framework/strings' +import { useFeatureFlag } from 'hooks/useFeatureFlag' export const RouteDestinations: React.FC = React.memo(function RouteDestinations() { const { getString } = useStrings() const repoPath = `${pathProps.space}/${pathProps.repoName}` + const { OPEN_SOURCE_PIPELINES, OPEN_SOURCE_SECRETS } = useFeatureFlag() + return ( @@ -143,12 +148,28 @@ export const RouteDestinations: React.FC = React.memo(function RouteDestinations - + + {OPEN_SOURCE_PIPELINES && ( + + + + + + )} + + {OPEN_SOURCE_SECRETS && ( + + + + + + )} + => featureFlags diff --git a/web/src/i18n/strings.en.yaml b/web/src/i18n/strings.en.yaml index 1cac276ef..cfe1ff7e5 100644 --- a/web/src/i18n/strings.en.yaml +++ b/web/src/i18n/strings.en.yaml @@ -90,6 +90,8 @@ pageTitle: users: Users userProfile: User Profile changePassword: Change Password + pipelines: Pipelines + secrets: Secrets repos: name: Repo Name data: Repo Data diff --git a/web/src/layouts/menu/DefaultMenu.tsx b/web/src/layouts/menu/DefaultMenu.tsx index 4331d7198..5e6d96e19 100644 --- a/web/src/layouts/menu/DefaultMenu.tsx +++ b/web/src/layouts/menu/DefaultMenu.tsx @@ -7,6 +7,7 @@ import { useStrings } from 'framework/strings' import { routes } from 'RouteDefinitions' import type { TypesSpace } from 'services/code' import { SpaceSelector } from 'components/SpaceSelector/SpaceSelector' +import { useFeatureFlag } from 'hooks/useFeatureFlag' import { NavMenuItem } from './NavMenuItem' import css from './DefaultMenu.module.scss' @@ -22,6 +23,8 @@ export const DefaultMenu: React.FC = () => { [routeMatch] ) + const { OPEN_SOURCE_PIPELINES, OPEN_SOURCE_SECRETS } = useFeatureFlag() + return ( @@ -125,6 +128,28 @@ export const DefaultMenu: React.FC = () => { + {OPEN_SOURCE_PIPELINES && ( + + {/* icon is placeholder */} + + + )} + + {OPEN_SOURCE_SECRETS && ( + + {/* icon is placeholder */} + + + )} + { + const { getString } = useStrings() + + return ( + + + + ) +} + +export default PipelineList diff --git a/web/src/pages/SecretList/SecretList.module.scss b/web/src/pages/SecretList/SecretList.module.scss new file mode 100644 index 000000000..d1b1df197 --- /dev/null +++ b/web/src/pages/SecretList/SecretList.module.scss @@ -0,0 +1,4 @@ +.main { + min-height: var(--page-min-height, 100%); + background-color: var(--primary-bg) !important; +} diff --git a/web/src/pages/SecretList/SecretList.module.scss.d.ts b/web/src/pages/SecretList/SecretList.module.scss.d.ts new file mode 100644 index 000000000..9e614bf2d --- /dev/null +++ b/web/src/pages/SecretList/SecretList.module.scss.d.ts @@ -0,0 +1,6 @@ +/* eslint-disable */ +// this is an auto-generated file +declare const styles: { + readonly main: string +} +export default styles diff --git a/web/src/pages/SecretList/SecretList.tsx b/web/src/pages/SecretList/SecretList.tsx new file mode 100644 index 000000000..da1e9e9e2 --- /dev/null +++ b/web/src/pages/SecretList/SecretList.tsx @@ -0,0 +1,16 @@ +import React from 'react' +import { Container, PageHeader } from '@harness/uicore' +import { useStrings } from 'framework/strings' +import css from './SecretList.module.scss' + +const PipelineList = () => { + const { getString } = useStrings() + + return ( + + + + ) +} + +export default PipelineList