Repository: devtron-labs/dashboard
Pull request #2567: feat: add redirection for activating license and revmap login page
Author: login: arunjaindev
Created: 2025-03-20T13:38:17Z | Merged: 2025-03-21T15:54:23Z

# Description

Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.

Fixes # (issue)

## Type of change

- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] This change requires a documentation update

# How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

- [ ] Test A
- [ ] Test B


# Checklist:

* [ ] The title of the PR states what changed and the related issues number (used for the release note).
* [ ] Does this PR require documentation updates?
* [ ] I've updated documentation as required by this PR.
* [ ] I have performed a self-review of my own code
* [ ] I have commented my code, particularly in hard-to-understand areas





Diff:
diff --git a/.env b/.env
index cad6c999ab..33b565c573 100644
--- a/.env
+++ b/.env
@@ -32,8 +32,6 @@ ENABLE_RESTART_WORKLOAD=false
 ENABLE_SCOPED_VARIABLES=true
 DEFAULT_CI_TRIGGER_TYPE_MANUAL=false
 ANNOUNCEMENT_BANNER_MSG=
-LOGIN_PAGE_IMAGE=
-LOGIN_PAGE_IMAGE_BG=
 HIDE_DEFAULT_CLUSTER=false
 GLOBAL_API_TIMEOUT=60000
 TRIGGER_API_TIMEOUT=60000
diff --git a/.storybook/preview-head.html b/.storybook/preview-head.html
index feeca97843..0e149c5def 100644
--- a/.storybook/preview-head.html
+++ b/.storybook/preview-head.html
@@ -1 +1 @@
-<link rel="stylesheet" href="./index.css" />
\ No newline at end of file
+<link rel="stylesheet" href="../index.css" />
\ No newline at end of file
diff --git a/config.md b/config.md
index 30f6d8aa43..6027a1b381 100644
--- a/config.md
+++ b/config.md
@@ -31,8 +31,6 @@
 | HIDE_EXCLUDE_INCLUDE_GIT_COMMITS             | "true"     | Hide exclude include git commits                                                                                 |
 | HIDE_GITOPS_OR_HELM_OPTION                   | "false"    | Enable GitOps and Helm option                                                                                    |
 | LOGIN_DT_LOGO                                | ""         | Devtron logo for login page                                                                                      |
-| LOGIN_PAGE_IMAGE                             | ""         | Login page image url                                                                                             |
-| LOGIN_PAGE_IMAGE_BG                          | ""         | Login page image background color code                                                                           |
 | ORGANIZATION_NAME                            | ""         | Name of the organization                                                                                         |
 | POSTHOG_ENABLED                              | "true"     | PostHog integration status                                                                                       |
 | POSTHOG_TOKEN                                | XXXXXXXX   | PostHog API token                                                                                                |
diff --git a/src/App.tsx b/src/App.tsx
index 99721814f8..705b840d1b 100755
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -46,6 +46,7 @@ import { validateToken } from './services/service'
 const NavigationRoutes = lazy(() => import('./components/common/navigation/NavigationRoutes'))
 const Login = lazy(() => import('./components/login/Login'))
 const GenericDirectApprovalModal = importComponentFromFELibrary('GenericDirectApprovalModal')
+const ActivateLicense = importComponentFromFELibrary('ActivateLicense', null, 'function')
 
 export default function App() {
     const onlineToastRef = useRef(null)
@@ -159,15 +160,12 @@ export default function App() {
     }
 
     useEffect(() => {
-        if (typeof Storage !== 'undefined') {
-            // TODO (Arun): Remove in next packet
-            localStorage.removeItem('undefined')
-        }
+
         if (navigator.serviceWorker) {
             navigator.serviceWorker.addEventListener('controllerchange', handleControllerChange)
         }
         // If not K8S_CLIENT then validateToken otherwise directly redirect
-        if (!window._env_.K8S_CLIENT) {
+        if (!window._env_.K8S_CLIENT && location.pathname !== CommonURLS.LICENSE_AUTH) {
             // By Passing validations for direct email approval notifications
             if (isDirectApprovalNotification) {
                 redirectToDirectApprovalNotification()
@@ -340,6 +338,11 @@ export default function App() {
                                                 />
                                             </Route>
                                         )}
+                                        {ActivateLicense && (
+                                            <Route path={CommonURLS.LICENSE_AUTH}>
+                                                <ActivateLicense />
+                                            </Route>
+                                        )}
                                         {!window._env_.K8S_CLIENT && <Route path="/login" component={Login} />}
                                         <Route path="/" render={() => <NavigationRoutes />} />
                                         <Redirect
diff --git a/src/components/common/navigation/NavigationRoutes.tsx b/src/components/common/navigation/NavigationRoutes.tsx
index 004e28f5da..4e6fa6b60b 100644
--- a/src/components/common/navigation/NavigationRoutes.tsx
+++ b/src/components/common/navigation/NavigationRoutes.tsx
@@ -121,6 +121,7 @@ const ViewIsPipelineRBACConfigured: FunctionComponent<{
     handleUpdatePipelineRBACViewSelectedTab: (selectedTab: ViewIsPipelineRBACConfiguredRadioTabs) => void
 }> = importComponentFromFELibrary('ViewIsPipelineRBACConfigured', null, 'function')
 const LicenseInfoDialog = importComponentFromFELibrary('LicenseInfoDialog', null, 'function')
+const EnterpriseLicenseBar = importComponentFromFELibrary('EnterpriseLicenseBar', null, 'function')
 
 export default function NavigationRoutes() {
     const history = useHistory()
@@ -128,7 +129,6 @@ export default function NavigationRoutes() {
     const match = useRouteMatch()
     const [serverMode, setServerMode] = useState<MainContext['serverMode']>(undefined)
     const [pageState, setPageState] = useState(ViewType.LOADING)
-    const [pageOverflowEnabled, setPageOverflowEnabled] = useState<boolean>(true)
     const [currentServerInfo, setCurrentServerInfo] = useState<MainContext['currentServerInfo']>({
         serverInfo: undefined,
         fetchingServerInfo: false,
@@ -161,8 +161,12 @@ export default function NavigationRoutes() {
     const [userPreferences, setUserPreferences] = useState<UserPreferencesType>(null)
     const [userPreferencesError, setUserPreferencesError] = useState<ServerErrors>(null)
     const [isLicenseInfoDialogOpen, setIsLicenseInfoDialogOpen] = useState<boolean>(false)
-    const { showThemeSwitcherDialog, handleThemeSwitcherDialogVisibilityChange, handleThemePreferenceChange, appTheme } =
-        useTheme()
+    const {
+        showThemeSwitcherDialog,
+        handleThemeSwitcherDialogVisibilityChange,
+        handleThemePreferenceChange,
+        appTheme,
+    } = useTheme()
 
     const { isAirgapped, isManifestScanningEnabled, canOnlyViewPermittedEnvOrgLevel } = environmentDataState
 
@@ -484,7 +488,6 @@ export default function NavigationRoutes() {
             value={{
                 serverMode,
                 setServerMode,
-                setPageOverflowEnabled,
                 isHelpGettingStartedClicked,
                 showCloseButtonAfterGettingStartedClicked,
                 loginCount,
@@ -546,129 +549,133 @@ export default function NavigationRoutes() {
                 )}
                 {serverMode && (
                     <div
-                        className={`main bg__primary ${appTheme === AppThemeType.light ? 'dc__no-border' : 'border__primary-translucent'} m-8 br-6 ${
-                            pageOverflowEnabled ? '' : 'main__overflow-disabled'
-                        }`}
+                        className={`main flexbox-col bg__primary ${appTheme === AppThemeType.light ? 'dc__no-border' : 'border__primary-translucent'} m-8 br-6 dc__overflow-hidden`}
                     >
-                        <Suspense
-                            fallback={
-                                <DevtronProgressing parentClasses="h-100 flex bg__primary" classes="icon-dim-80" />
-                            }
-                        >
-                            <ErrorBoundary>
-                                <Switch>
-                                    <Route key={URLS.RESOURCE_BROWSER} path={URLS.RESOURCE_BROWSER}>
-                                        <ResourceBrowser />
-                                    </Route>
-                                    <Route
-                                        path={URLS.GLOBAL_CONFIG}
-                                        render={(props) => <GlobalConfig {...props} isSuperAdmin={isSuperAdmin} />}
-                                    />
-                                    {!window._env_.K8S_CLIENT && [
-                                        <Route
-                                            key={URLS.APP}
-                                            path={URLS.APP}
-                                            render={() => (
-                                                <AppRouter
-                                                    isSuperAdmin={isSuperAdmin}
-                                                    appListCount={appListCount}
-                                                    loginCount={loginCount}
-                                                />
-                                            )}
-                                        />,
-                                        <Route key={URLS.APPLICATION_GROUP} path={URLS.APPLICATION_GROUP}>
-                                            <AppGroupRoute isSuperAdmin={isSuperAdmin} />
-                                        </Route>,
-                                        <Route
-                                            key={URLS.CHARTS}
-                                            path={URLS.CHARTS}
-                                            render={() => <Charts isSuperAdmin={isSuperAdmin} />}
-                                        />,
-                                        <Route
-                                            key={URLS.BULK_EDITS}
-                                            path={URLS.BULK_EDITS}
-                                            render={(props) => <BulkEdit {...props} serverMode={serverMode} />}
-                                        />,
+                        {/* To be replaced with Announcement Banner */}
+                        {EnterpriseLicenseBar && <EnterpriseLicenseBar />}
+                        <div className="flexbox-col flex-grow-1 dc__overflow-auto">
+                            <Suspense
+                                fallback={
+                                    <DevtronProgressing parentClasses="h-100 flex bg__primary" classes="icon-dim-80" />
+                                }
+                            >
+                                <ErrorBoundary>
+                                    <Switch>
+                                        <Route key={URLS.RESOURCE_BROWSER} path={URLS.RESOURCE_BROWSER}>
+                                            <ResourceBrowser />
+                                        </Route>
                                         <Route
-                                            key={URLS.SECURITY}
-                                            path={URLS.SECURITY}
-                                            render={(props) => <Security {...props} serverMode={serverMode} />}
-                                        />,
-                                        ...(!window._env_.HIDE_RESOURCE_WATCHER && ResourceWatcherRouter
-                                            ? [
-                                                  <Route key={URLS.RESOURCE_WATCHER} path={URLS.RESOURCE_WATCHER}>
-                                                      <ResourceWatcherRouter />
-                                                  </Route>,
-                                              ]
-                                            : []),
-                                        ...(!window._env_.HIDE_RELEASES && SoftwareDistributionHub
-                                            ? [
-                                                  <Route
-                                                      key={URLS.SOFTWARE_DISTRIBUTION_HUB}
-                                                      path={URLS.SOFTWARE_DISTRIBUTION_HUB}
-                                                  >
-                                                      <ImageSelectionUtilityProvider
-                                                          value={{
-                                                              getModuleInfo,
-                                                          }}
+                                            path={URLS.GLOBAL_CONFIG}
+                                            render={(props) => <GlobalConfig {...props} isSuperAdmin={isSuperAdmin} />}
+                                        />
+                                        {!window._env_.K8S_CLIENT && [
+                                            <Route
+                                                key={URLS.APP}
+                                                path={URLS.APP}
+                                                render={() => (
+                                                    <AppRouter
+                                                        isSuperAdmin={isSuperAdmin}
+                                                        appListCount={appListCount}
+                                                        loginCount={loginCount}
+                                                    />
+                                                )}
+                                            />,
+                                            <Route key={URLS.APPLICATION_GROUP} path={URLS.APPLICATION_GROUP}>
+                                                <AppGroupRoute isSuperAdmin={isSuperAdmin} />
+                                            </Route>,
+                                            <Route
+                                                key={URLS.CHARTS}
+                                                path={URLS.CHARTS}
+                                                render={() => <Charts isSuperAdmin={isSuperAdmin} />}
+                                            />,
+                                            <Route
+                                                key={URLS.BULK_EDITS}
+                                                path={URLS.BULK_EDITS}
+                                                render={(props) => <BulkEdit {...props} serverMode={serverMode} />}
+                                            />,
+                                            <Route
+                                                key={URLS.SECURITY}
+                                                path={URLS.SECURITY}
+                                                render={(props) => <Security {...props} serverMode={serverMode} />}
+                                            />,
+                                            ...(!window._env_.HIDE_RESOURCE_WATCHER && ResourceWatcherRouter
+                                                ? [
+                                                      <Route key={URLS.RESOURCE_WATCHER} path={URLS.RESOURCE_WATCHER}>
+                                                          <ResourceWatcherRouter />
+                                                      </Route>,
+                                                  ]
+                                                : []),
+                                            ...(!window._env_.HIDE_RELEASES && SoftwareDistributionHub
+                                                ? [
+                                                      <Route
+                                                          key={URLS.SOFTWARE_DISTRIBUTION_HUB}
+                                                          path={URLS.SOFTWARE_DISTRIBUTION_HUB}
                                                       >
-                                                          <SoftwareDistributionHubRenderProvider
-                                                              renderers={{
-                                                                  ReleaseConfigurations: Configurations,
+                                                          <ImageSelectionUtilityProvider
+                                                              value={{
+                                                                  getModuleInfo,
                                                               }}
                                                           >
-                                                              <SoftwareDistributionHub />
-                                                          </SoftwareDistributionHubRenderProvider>
-                                                      </ImageSelectionUtilityProvider>
-                                                  </Route>,
-                                              ]
-                                            : []),
-                                        ...(!window._env_.HIDE_NETWORK_STATUS_INTERFACE && NetworkStatusInterface
-                                            ? [
-                                                  <Route
-                                                      key={CommonURLS.NETWORK_STATUS_INTERFACE}
-                                                      path={CommonURLS.NETWORK_STATUS_INTERFACE}
-                                                  >
-                                                      <NetworkStatusInterface />
-                                                  </Route>,
-                                              ]
-                                            : []),
-                                        ...(currentServerInfo.serverInfo?.installationType !== 'enterprise'
-                                            ? [
-                                                  <Route key={URLS.STACK_MANAGER} path={URLS.STACK_MANAGER}>
-                                                      <DevtronStackManager
-                                                          serverInfo={currentServerInfo.serverInfo}
-                                                          getCurrentServerInfo={getCurrentServerInfo}
-                                                          isSuperAdmin={isSuperAdmin}
-                                                      />
-                                                  </Route>,
-                                              ]
-                                            : []),
-                                        <Route key={URLS.GETTING_STARTED} exact path={`/${URLS.GETTING_STARTED}`}>
-                                            <OnboardingGuide
-                                                loginCount={loginCount}
-                                                isSuperAdmin={isSuperAdmin}
-                                                serverMode={serverMode}
-                                                isGettingStartedClicked={isGettingStartedClicked}
+                                                              <SoftwareDistributionHubRenderProvider
+                                                                  renderers={{
+                                                                      ReleaseConfigurations: Configurations,
+                                                                  }}
+                                                              >
+                                                                  <SoftwareDistributionHub />
+                                                              </SoftwareDistributionHubRenderProvider>
+                                                          </ImageSelectionUtilityProvider>
+                                                      </Route>,
+                                                  ]
+                                                : []),
+                                            ...(!window._env_.HIDE_NETWORK_STATUS_INTERFACE && NetworkStatusInterface
+                                                ? [
+                                                      <Route
+                                                          key={CommonURLS.NETWORK_STATUS_INTERFACE}
+                                                          path={CommonURLS.NETWORK_STATUS_INTERFACE}
+                                                      >
+                                                          <NetworkStatusInterface />
+                                                      </Route>,
+                                                  ]
+                                                : []),
+                                            ...(currentServerInfo.serverInfo?.installationType !== 'enterprise'
+                                                ? [
+                                                      <Route key={URLS.STACK_MANAGER} path={URLS.STACK_MANAGER}>
+                                                          <DevtronStackManager
+                                                              serverInfo={currentServerInfo.serverInfo}
+                                                              getCurrentServerInfo={getCurrentServerInfo}
+                                                              isSuperAdmin={isSuperAdmin}
+                                                          />
+                                                      </Route>,
+                                                  ]
+                                                : []),
+                                            <Route key={URLS.GETTING_STARTED} exact path={`/${URLS.GETTING_STARTED}`}>
+                                                <OnboardingGuide
+                                                    loginCount={loginCount}
+                                                    isSuperAdmin={isSuperAdmin}
+                                                    serverMode={serverMode}
+                                                    isGettingStartedClicked={isGettingStartedClicked}
+                                                />
+                                            </Route>,
+                                        ]}
+                                        {/* TODO: Check why its coming as empty in case route is in other library */}
+                                        {!window._env_.K8S_CLIENT && (
+                                            <Route path={URLS.JOB} key={URLS.JOB}>
+                                                <AppContext.Provider value={contextValue}>
+                                                    <Jobs />
+                                                </AppContext.Provider>
+                                            </Route>
+                                        )}
+                                        <Route>
+                                            <RedirectUserWithSentry
+                                                isFirstLoginUser={
+                                                    isSuperAdmin && loginCount === 0 && appListCount === 0
+                                                }
                                             />
-                                        </Route>,
-                                    ]}
-                                    {/* TODO: Check why its coming as empty in case route is in other library */}
-                                    {!window._env_.K8S_CLIENT && (
-                                        <Route path={URLS.JOB} key={URLS.JOB}>
-                                            <AppContext.Provider value={contextValue}>
-                                                <Jobs />
-                                            </AppContext.Provider>
                                         </Route>
-                                    )}
-                                    <Route>
-                                        <RedirectUserWithSentry
-                                            isFirstLoginUser={isSuperAdmin && loginCount === 0 && appListCount === 0}
-                                        />
-                                    </Route>
-                                </Switch>
-                            </ErrorBoundary>
-                        </Suspense>
+                                    </Switch>
+                                </ErrorBoundary>
+                            </Suspense>
+                        </div>
                     </div>
                 )}
             </main>
diff --git a/src/components/common/navigation/navigation.scss b/src/components/common/navigation/navigation.scss
index 4af4d2af00..bbb09a61c7 100644
--- a/src/components/common/navigation/navigation.scss
+++ b/src/components/common/navigation/navigation.scss
@@ -27,11 +27,6 @@
 
 .main {
     height: calc(100vh - 16px);
-    overflow-y: auto;
-}
-
-.main__overflow-disabled {
-    overflow-y: hidden !important;
 }
 
 .title-container {
diff --git a/src/components/login/Login.tsx b/src/components/login/Login.tsx
index f4b5fc5be0..ad2c8f07e0 100644
--- a/src/components/login/Login.tsx
+++ b/src/components/login/Login.tsx
@@ -33,11 +33,10 @@ import {
     useUserEmail,
     PasswordField,
     useSearchString,
-    getComponentSpecificThemeClass,
-    AppThemeType,
     useAsync,
     SSOProviderIcon,
     Icon,
+    LoginBanner,
 } from '@devtron-labs/devtron-fe-common-lib'
 import { importComponentFromFELibrary } from '@Components/common'
 import { ReactComponent as Help } from '@Icons/ic-help-outline.svg'
@@ -328,21 +327,11 @@ const Login = () => {
     )
 
     return (
-        <div className={`login bg__white flex ${getComponentSpecificThemeClass(AppThemeType.light)}`}>
-            <div
-                className="w-50 login__bg"
-                style={window?._env_?.LOGIN_PAGE_IMAGE_BG ? { backgroundColor: window._env_.LOGIN_PAGE_IMAGE_BG } : {}}
-            >
-                <div
-                    className="login__image w-100 h-100vh mh-600"
-                    style={
-                        window?._env_?.LOGIN_PAGE_IMAGE
-                            ? { backgroundImage: `url(${window._env_.LOGIN_PAGE_IMAGE})` }
-                            : {}
-                    }
-                />
+        <div className="full-height-width login dc__grid-half bg__secondary">
+            <div className="flexbox p-12">
+                <LoginBanner />
             </div>
-            <div className="w-50 flex">
+            <div className="flex">
                 <div className="login-card__wrapper br-12 mw-420 bg__primary dc__border">
                     <div className="flexbox-col dc__gap-32 p-36">
                         {renderDevtronLogo()}
diff --git a/src/components/login/login.scss b/src/components/login/login.scss
index 35bc5bc50f..ee6e1f9196 100644
--- a/src/components/login/login.scss
+++ b/src/components/login/login.scss
@@ -16,17 +16,6 @@
 
  // Login css
 .login {
-    .login__bg {
-        // This is beyond color palette thus using hex code
-        background-color: #cee7ff;
-    }
-
-    .login__image {
-        background-image: url('../../assets//img//bg-login.png');
-        background-size: auto 100%;
-        background-position: right;
-        background-repeat: no-repeat;
-    }
 
     .login-card__wrapper {
         box-shadow: var(--shadow-overlay);
@@ -68,51 +57,6 @@
     font-size: 13px;
 }
 
-.text-input {
-    border-radius: 4px;
-    border: solid 1px var(--N200);
-    padding: 12px 16px;
-    font-weight: 400;
-    font-size: 12px;
-
-    &:focus {
-        outline: none;
-        border: solid 1px var(--N700);
-    }
-
-    &::-webkit-input-placeholder {
-        font-size: 14px;
-        color: var(--N400);
-    }
-
-    &:-ms-input-placeholder {
-        font-size: 14px;
-        color: var(--N400);
-    }
-
-    &::placeholder {
-        font-size: 14px;
-        color: var(--N400);
-    }
-}
-
-.text-input--username {
-    width: 100%;
-    height: 44px;
-    margin-bottom: 24px;
-}
-
-.text-input--pwd {
-    width: 100%;
-    height: 44px;
-}
-
-@media (min-width: 1440px) {
-    .text-input {
-        margin-bottom: 32px;
-    }
-}
-
 .sso-icons {
     position: relative;
     border-radius: 4px;
diff --git a/src/css/base.scss b/src/css/base.scss
index b198f35847..bb63cca77e 100644
--- a/src/css/base.scss
+++ b/src/css/base.scss
@@ -2325,11 +2325,21 @@ button.anchor {
     border-top-right-radius: 4px;
 }
 
+.dc__top-radius-12 {
+    border-top-left-radius: 12px;
+    border-top-right-radius: 12px;
+}
+
 .dc__bottom-radius-8 {
     border-bottom-left-radius: 8px;
     border-bottom-right-radius: 8px;
 }
 
+.dc__bottom-radius-12 {
+    border-bottom-left-radius: 12px;
+    border-bottom-right-radius: 12px;
+}
+
 .dc__top-radius-8 {
     border-top-right-radius: 8px;
     border-top-left-radius: 8px;
diff --git a/src/index.tsx b/src/index.tsx
index d1b579097a..6834a2b580 100644
--- a/src/index.tsx
+++ b/src/index.tsx
@@ -136,8 +136,6 @@ if (!window || !window._env_) {
         ENABLE_SCOPED_VARIABLES: true,
         DEFAULT_CI_TRIGGER_TYPE_MANUAL: false,
         ANNOUNCEMENT_BANNER_MSG: '',
-        LOGIN_PAGE_IMAGE: '',
-        LOGIN_PAGE_IMAGE_BG: '',
         HIDE_DEFAULT_CLUSTER: false,
         GLOBAL_API_TIMEOUT: 60000,
         TRIGGER_API_TIMEOUT: 60000,


Reviews:
user: login: AbhishekA1509
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-20T18:51:10Z
user: login: AbhishekA1509
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-20T18:54:42Z
user: login: AbhishekA1509
state: CHANGES_REQUESTED
author_association: MEMBER
submitted_at: 2025-03-20T18:57:55Z
user: login: AbhishekA1509
state: APPROVED
author_association: MEMBER
submitted_at: 2025-03-21T13:58:20Z

Review comments:
diff_hunk: @@ -340,6 +338,9 @@ export default function App() {
                                                 />
                                             </Route>
                                         )}
+                                        {ActivateLicense && (
+                                            <Route path={CommonURLS.LICENSE_AUTH} component={ActivateLicense} />
path: src/App.tsx
user: login: AbhishekA1509
body: Lets try to send it as children wherever possible for smooth migration to versions above
created_at: 2025-03-20T18:51:09Z
author_association: MEMBER
diff_hunk: @@ -27,11 +27,6 @@
 
 .main {
     height: calc(100vh - 16px);
-    overflow-y: auto;
path: src/components/common/navigation/navigation.scss
user: login: AbhishekA1509
body: I am hoping these changes are intentional and dev tested 🥶
created_at: 2025-03-20T18:54:41Z
author_association: MEMBER
diff_hunk: @@ -542,129 +545,148 @@ export default function NavigationRoutes() {
                 )}
                 {serverMode && (
                     <div
-                        className={`main bg__primary ${appTheme === AppThemeType.light ? 'dc__no-border' : 'border__primary-translucent'} m-8 br-6 ${
-                            pageOverflowEnabled ? '' : 'main__overflow-disabled'
-                        }`}
+                        className={`main flexbox-col bg__primary ${appTheme === AppThemeType.light ? 'dc__no-border' : 'border__primary-translucent'} m-8 br-6`}
                     >
-                        <Suspense
-                            fallback={
-                                <DevtronProgressing parentClasses="h-100 flex bg__primary" classes="icon-dim-80" />
-                            }
-                        >
-                            <ErrorBoundary>
-                                <Switch>
-                                    <Route key={URLS.RESOURCE_BROWSER} path={URLS.RESOURCE_BROWSER}>
-                                        <ResourceBrowser />
-                                    </Route>
-                                    <Route
-                                        path={URLS.GLOBAL_CONFIG}
-                                        render={(props) => <GlobalConfig {...props} isSuperAdmin={isSuperAdmin} />}
-                                    />
-                                    {!window._env_.K8S_CLIENT && [
-                                        <Route
-                                            key={URLS.APP}
-                                            path={URLS.APP}
-                                            render={() => (
-                                                <AppRouter
-                                                    isSuperAdmin={isSuperAdmin}
-                                                    appListCount={appListCount}
-                                                    loginCount={loginCount}
-                                                />
-                                            )}
-                                        />,
-                                        <Route key={URLS.APPLICATION_GROUP} path={URLS.APPLICATION_GROUP}>
-                                            <AppGroupRoute isSuperAdmin={isSuperAdmin} />
-                                        </Route>,
-                                        <Route
-                                            key={URLS.CHARTS}
-                                            path={URLS.CHARTS}
-                                            render={() => <Charts isSuperAdmin={isSuperAdmin} />}
-                                        />,
-                                        <Route
-                                            key={URLS.BULK_EDITS}
-                                            path={URLS.BULK_EDITS}
-                                            render={(props) => <BulkEdit {...props} serverMode={serverMode} />}
-                                        />,
-                                        <Route
-                                            key={URLS.SECURITY}
-                                            path={URLS.SECURITY}
-                                            render={(props) => <Security {...props} serverMode={serverMode} />}
-                                        />,
-                                        ...(!window._env_.HIDE_RESOURCE_WATCHER && ResourceWatcherRouter
-                                            ? [
-                                                  <Route key={URLS.RESOURCE_WATCHER} path={URLS.RESOURCE_WATCHER}>
-                                                      <ResourceWatcherRouter />
-                                                  </Route>,
-                                              ]
-                                            : []),
-                                        ...(!window._env_.HIDE_RELEASES && SoftwareDistributionHub
-                                            ? [
-                                                  <Route
-                                                      key={URLS.SOFTWARE_DISTRIBUTION_HUB}
-                                                      path={URLS.SOFTWARE_DISTRIBUTION_HUB}
-                                                  >
-                                                      <ImageSelectionUtilityProvider
-                                                          value={{
-                                                              getModuleInfo,
-                                                          }}
-                                                      >
-                                                          <SoftwareDistributionHubRenderProvider
-                                                              renderers={{
-                                                                  ReleaseConfigurations: Configurations,
-                                                              }}
-                                                          >
-                                                              <SoftwareDistributionHub />
-                                                          </SoftwareDistributionHubRenderProvider>
-                                                      </ImageSelectionUtilityProvider>
-                                                  </Route>,
-                                              ]
-                                            : []),
-                                        ...(!window._env_.HIDE_NETWORK_STATUS_INTERFACE && NetworkStatusInterface
-                                            ? [
-                                                  <Route
-                                                      key={CommonURLS.NETWORK_STATUS_INTERFACE}
-                                                      path={CommonURLS.NETWORK_STATUS_INTERFACE}
-                                                  >
-                                                      <NetworkStatusInterface />
-                                                  </Route>,
-                                              ]
-                                            : []),
-                                        ...(currentServerInfo.serverInfo?.installationType !== 'enterprise'
-                                            ? [
-                                                  <Route key={URLS.STACK_MANAGER} path={URLS.STACK_MANAGER}>
-                                                      <DevtronStackManager
-                                                          serverInfo={currentServerInfo.serverInfo}
-                                                          getCurrentServerInfo={getCurrentServerInfo}
-                                                          isSuperAdmin={isSuperAdmin}
-                                                      />
-                                                  </Route>,
-                                              ]
-                                            : []),
-                                        <Route key={URLS.GETTING_STARTED} exact path={`/${URLS.GETTING_STARTED}`}>
-                                            <OnboardingGuide
-                                                loginCount={loginCount}
-                                                isSuperAdmin={isSuperAdmin}
-                                                serverMode={serverMode}
-                                                isGettingStartedClicked={isGettingStartedClicked}
-                                            />
-                                        </Route>,
-                                    ]}
-                                    {/* TODO: Check why its coming as empty in case route is in other library */}
-                                    {!window._env_.K8S_CLIENT && (
-                                        <Route path={URLS.JOB} key={URLS.JOB}>
-                                            <AppContext.Provider value={contextValue}>
-                                                <Jobs />
-                                            </AppContext.Provider>
-                                        </Route>
-                                    )}
-                                    <Route>
-                                        <RedirectUserWithSentry
-                                            isFirstLoginUser={isSuperAdmin && loginCount === 0 && appListCount === 0}
+                        <>
path: src/components/common/navigation/NavigationRoutes.tsx
user: login: AbhishekA1509
body: Useless fragment
created_at: 2025-03-20T18:57:43Z
author_association: MEMBER

PR comments:
user: login: sonarqubecloud[bot]
created_at: 2025-03-21T12:29:47Z
body: ## [![Quality Gate Passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-passed-20px.png 'Quality Gate Passed')](https://sonarcloud.io/dashboard?id=devtron-labs_dashboard&pullRequest=2567) **Quality Gate passed**  
Issues  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 New issues](https://sonarcloud.io/project/issues?id=devtron-labs_dashboard&pullRequest=2567&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/accepted-16px.png '') [0 Accepted issues](https://sonarcloud.io/project/issues?id=devtron-labs_dashboard&pullRequest=2567&issueStatuses=ACCEPTED)

Measures  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=devtron-labs_dashboard&pullRequest=2567&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=devtron-labs_dashboard&pullRequest=2567&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=devtron-labs_dashboard&pullRequest=2567&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=devtron-labs_dashboard&pullRequest=2567)


author_association: NONE