diff --git a/src/Assets/IconV2/ic-binoculars.svg b/src/Assets/IconV2/ic-binoculars.svg
new file mode 100644
index 000000000..2eb3697bf
--- /dev/null
+++ b/src/Assets/IconV2/ic-binoculars.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/src/Common/BreadCrumb/BreadCrumb.tsx b/src/Common/BreadCrumb/BreadCrumb.tsx
index 38d9bc5c5..f94cdd7ca 100644
--- a/src/Common/BreadCrumb/BreadCrumb.tsx
+++ b/src/Common/BreadCrumb/BreadCrumb.tsx
@@ -16,7 +16,7 @@
import React, { useMemo, useEffect } from 'react'
import { Link, useRouteMatch, useParams } from 'react-router-dom'
-import { useBreadcrumbContext } from './BreadcrumbStore'
+import { getBreadCrumbSeparator, useBreadcrumbContext } from './BreadcrumbStore'
import { ConditionalWrap } from '../Helper'
import { Breadcrumb, Breadcrumbs, UseBreadcrumbOptionalProps, UseBreadcrumbState } from './Types'
@@ -90,7 +90,7 @@ export function useBreadcrumb(props?: UseBreadcrumbOptionalProps, deps?: any[]):
export const BreadCrumb: React.FC = ({
breadcrumbs,
sep = '/',
- className = 'dc__devtron-breadcrumb__item',
+ className = 'dc__devtron-breadcrumb__item fs-16 fw-4 lh-1-5 dc__ellipsis-right dc__mxw-155',
}) => {
const { url } = useRouteMatch()
const filteredCrumbs = breadcrumbs.filter((crumb) => !!crumb.name)
@@ -114,9 +114,7 @@ export const BreadCrumb: React.FC = ({
{breadcrumb.name}
- {idx + 1 !== filteredCrumbs.length && breadcrumb.name && (
- {sep}
- )}
+ {idx + 1 !== filteredCrumbs.length && breadcrumb.name && getBreadCrumbSeparator()}
))}
>
diff --git a/src/Common/BreadCrumb/BreadcrumbStore.tsx b/src/Common/BreadCrumb/BreadcrumbStore.tsx
index cf91aad28..006488a62 100644
--- a/src/Common/BreadCrumb/BreadcrumbStore.tsx
+++ b/src/Common/BreadCrumb/BreadcrumbStore.tsx
@@ -22,9 +22,14 @@ const initialState = {
}
export const BreadcrumbText = ({ heading, isActive, shouldTruncate = false }: BreadcrumbTextProps) => (
- {heading}
+ {heading}
)
+export const getBreadCrumbSeparator = (sep: string = '/') => (
+ {sep}
+)
+
+
const Store = ({ children }) => {
const [state, setState] = useState(initialState)
return {children}
diff --git a/src/Common/Constants.ts b/src/Common/Constants.ts
index 22219c2e0..ce392ca05 100644
--- a/src/Common/Constants.ts
+++ b/src/Common/Constants.ts
@@ -49,6 +49,7 @@ export const PATTERNS = {
}
const GLOBAL_CONFIG_TEMPLATES_DEVTRON_APP = '/global-config/templates/devtron-apps'
+const OBSERVABILITY_ROOT = '/observability'
export const URLS = {
LOGIN: '/login',
@@ -88,6 +89,10 @@ export const URLS = {
GLOBAL_CONFIG_TEMPLATES_DEVTRON_APP_DETAIL: `${GLOBAL_CONFIG_TEMPLATES_DEVTRON_APP}/detail/:appId`,
LICENSE_AUTH: '/license-auth',
GLOBAL_CONFIG_EDIT_CLUSTER: '/global-config/cluster-env/edit/:clusterId',
+ // OBSERVABILITY
+ OBSERVABILITY: OBSERVABILITY_ROOT,
+ OBSERVABILITY_OVERVIEW: `${OBSERVABILITY_ROOT}/overview`,
+ OBSERVABILITY_CUSTOMER_LIST: `${OBSERVABILITY_ROOT}/tenants`,
} as const
export const ROUTES = {
diff --git a/src/Shared/Components/Icon/Icon.tsx b/src/Shared/Components/Icon/Icon.tsx
index 9182ed7c6..93836eaef 100644
--- a/src/Shared/Components/Icon/Icon.tsx
+++ b/src/Shared/Components/Icon/Icon.tsx
@@ -20,6 +20,7 @@ import { ReactComponent as ICAzureAks } from '@IconsV2/ic-azure-aks.svg'
import { ReactComponent as ICBgCluster } from '@IconsV2/ic-bg-cluster.svg'
import { ReactComponent as ICBgEnvironment } from '@IconsV2/ic-bg-environment.svg'
import { ReactComponent as ICBharatpe } from '@IconsV2/ic-bharatpe.svg'
+import { ReactComponent as ICBinoculars } from '@IconsV2/ic-binoculars.svg'
import { ReactComponent as ICBitbucket } from '@IconsV2/ic-bitbucket.svg'
import { ReactComponent as ICBookOpen } from '@IconsV2/ic-book-open.svg'
import { ReactComponent as ICBrain } from '@IconsV2/ic-brain.svg'
@@ -262,6 +263,7 @@ export const iconMap = {
'ic-bg-cluster': ICBgCluster,
'ic-bg-environment': ICBgEnvironment,
'ic-bharatpe': ICBharatpe,
+ 'ic-binoculars': ICBinoculars,
'ic-bitbucket': ICBitbucket,
'ic-book-open': ICBookOpen,
'ic-brain': ICBrain,