From 0f98d8095fdad33cecc9afb46e2ddfa859412c93 Mon Sep 17 00:00:00 2001 From: Amrit Kashyap Borah Date: Sun, 20 Oct 2024 17:17:17 +0530 Subject: [PATCH 01/24] feat(repo)!: restructure into a monorepo --- .deepsource.toml | 23 - .gitignore | 17 +- .husky/pre-commit | 4 +- .lintstagedrc | 5 - .env => apps/web/.env | 0 .env.development => apps/web/.env.development | 0 .env.k8sApp => apps/web/.env.k8sApp | 0 .env.production => apps/web/.env.production | 0 .eslintignore => apps/web/.eslintignore | 0 .eslintrc.js => apps/web/.eslintrc.js | 0 {.storybook => apps/web/.storybook}/main.ts | 0 .../web/.storybook}/preview-head.html | 0 .../web/.storybook}/preview.tsx | 0 config.md => apps/web/config.md | 0 env.sh => apps/web/env.sh | 0 favicon.ico => apps/web/favicon.ico | Bin index.html => apps/web/index.html | 0 linter.py => apps/web/linter.py | 0 manifest.json => apps/web/manifest.json | 0 .../web/nginx-default.conf | 0 nginx.conf => apps/web/nginx.conf | 0 apps/web/package.json | 158 + sentry.sh => apps/web/sentry.sh | 0 {src => apps/web/src}/App.tsx | 0 .../ExternalFlux/ExternalFluxAppDetails.tsx | 0 .../ExternalFluxAppDetailsRoute.tsx | 0 .../Pages/App/Details/ExternalFlux/index.tsx | 0 .../App/Details/ExternalFlux/service.tsx | 0 .../Pages/App/Details/ExternalFlux/types.tsx | 0 .../Pages/App/Details/ExternalFlux/utils.tsx | 0 .../AppConfigurations/AppConfig.constants.ts | 0 .../AppConfigurations/AppConfig.service.ts | 0 .../Details/AppConfigurations/AppConfig.tsx | 0 .../AppConfigurations/AppConfig.types.ts | 0 .../AppConfigurations/AppConfig.utils.ts | 0 .../AppConfiguration.provider.tsx | 0 .../MainContent/AppComposeRouter.tsx | 0 .../DeploymentConfigCompare.tsx | 0 .../DeploymentConfigCompare/index.ts | 0 .../DeploymentConfigCompare/service.utils.ts | 0 .../DeploymentConfigCompare/utils.ts | 0 .../Navigation/AppConfigurationCheckBox.tsx | 0 .../Navigation/AppNavigation.tsx | 0 .../Navigation/EnvConfigurationsNav.tsx | 0 .../Navigation/EnvSelect.utils.tsx | 0 .../Navigation/EnvironmentOverrideRouter.tsx | 0 .../Navigation/Navigation.helper.tsx | 0 .../Details/AppConfigurations/appConfig.scss | 0 .../Pages/Applications/DevtronApps/service.ts | 0 .../Applications/DevtronApps/service.types.ts | 0 .../Authorization/APITokens/APITokenList.tsx | 0 .../APITokens/ApiTokens.component.tsx | 0 .../APITokens/CreateAPIToken.tsx | 0 .../APITokens/DeleteAPITokenModal.tsx | 0 .../Authorization/APITokens/EditAPIToken.tsx | 0 .../APITokens/ExpirationDate.tsx | 0 .../APITokens/GenerateActionButton.tsx | 0 .../Authorization/APITokens/GenerateModal.tsx | 0 .../APITokens/RegenerateModal.tsx | 0 .../APITokens/__mocks__/ApiTokens.mock.ts | 0 .../APITokens/__tests__/ApiTokens.test.tsx | 0 .../Authorization/APITokens/apiToken.scss | 0 .../Authorization/APITokens/apiToken.type.ts | 0 .../Authorization/APITokens/apiToken.utils.ts | 0 .../Authorization/APITokens/index.ts | 0 .../Authorization/APITokens/service.ts | 0 .../APITokens/validationRules.ts | 0 .../Authorization/Authorization.component.tsx | 0 .../Authorization/AuthorizationProvider.tsx | 0 .../PermissionGroupAddEdit.component.tsx | 0 .../AddEdit/PermissionGroupForm.tsx | 0 .../PermissionGroups/AddEdit/index.ts | 0 .../List/ExportPermissionGroupsToCsv.tsx | 0 .../List/NoPermissionGroups.tsx | 0 .../List/PermissionGroupContainer.tsx | 0 .../List/PermissionGroupList.component.tsx | 0 .../List/PermissionGroupListHeader.tsx | 0 .../List/PermissionGroupRow.tsx | 0 .../List/PermissionGroupTable.tsx | 0 .../PermissionGroups/List/constants.ts | 0 .../PermissionGroups/List/index.ts | 0 .../PermissionGroups/List/types.ts | 0 .../PermissionGroups.component.tsx | 0 .../Authorization/PermissionGroups/index.ts | 0 .../Authorization/README.md | 0 .../SSOLoginServices/SSOLogin.component.tsx | 0 .../SSOLoginServices/constants.ts | 0 .../Authorization/SSOLoginServices/index.ts | 0 .../SSOLoginServices/sampleSSOConfig.json | 0 .../Authorization/SSOLoginServices/service.ts | 0 .../SSOLoginServices/ssoConfig.types.tsx | 0 .../SSOLoginServices/ssoLogin.scss | 0 .../Authorization/SSOLoginServices/utils.tsx | 0 .../AppPermissions/AppPermissionDetail.tsx | 0 .../AppPermissions.component.tsx | 0 .../AppPermissions/DirectPermission.tsx | 0 .../components/AppPermissions/common.tsx | 0 .../components/AppPermissions/constants.ts | 0 .../Shared/components/AppPermissions/index.ts | 0 .../Shared/components/AppPermissions/types.ts | 0 .../Shared/components/AppPermissions/utils.ts | 0 .../BulkSelection/BulkDeleteModal.tsx | 0 .../BulkSelectionActionWidget.tsx | 0 .../BulkSelectionClearConfirmationModal.tsx | 0 .../BulkSelection/BulkSelectionModal.tsx | 0 .../components/BulkSelection/constants.ts | 0 .../Shared/components/BulkSelection/index.ts | 0 .../Shared/components/BulkSelection/types.ts | 0 .../useAuthorizationBulkSelection.tsx | 0 .../ChartPermission.component.tsx | 0 .../components/ChartPermission/constants.ts | 0 .../components/ChartPermission/index.ts | 0 .../components/ChartPermission/types.ts | 0 .../K8sObjectPermissions/K8sListItemCard.tsx | 0 .../K8sPermissionModal.tsx | 0 .../K8sObjectPermissions/K8sPermissionRow.tsx | 0 .../K8sPermissions.component.tsx | 0 .../K8sObjectPermissions/constants.ts | 0 .../components/K8sObjectPermissions/types.ts | 0 .../components/K8sObjectPermissions/utils.tsx | 0 .../PermissionConfigurationForm.component.tsx | 0 .../PermissionConfigurationFormProvider.tsx | 0 .../PermissionConfigurationForm/index.ts | 0 .../PermissionConfigurationForm/types.ts | 0 .../SuperAdminInfoBar.component.tsx | 0 .../components/SuperAdminInfoBar/index.ts | 0 ...UserPermissionGroupsSelector.component.tsx | 0 .../UserPermissionGroupsSelector/index.ts | 0 .../Authorization/UserAndGroupPermissions.tsx | 0 .../UserPermissions/AddEdit/UserForm.tsx | 0 .../UserPermissionAddEdit.component.tsx | 0 .../UserPermissions/AddEdit/index.ts | 0 .../List/ExportUserPermissionsToCsv.tsx | 0 .../UserPermissions/List/NoUsers.tsx | 0 .../List/UserPermissionContainer.tsx | 0 .../List/UserPermissionList.component.tsx | 0 .../List/UserPermissionListHeader.tsx | 0 .../List/UserPermissionRow.tsx | 0 .../List/UserPermissionTable.tsx | 0 .../UserPermissions/List/constants.ts | 0 .../UserPermissions/List/index.ts | 0 .../UserPermissions/List/types.tsx | 0 .../UserPermissions/SSONotConfiguredState.tsx | 0 .../UserPermissions.component.tsx | 0 .../UserPermissions/constants.ts | 0 .../Authorization/UserPermissions/index.ts | 0 .../Authorization/UserPermissions/utils.ts | 0 .../Authorization/authorization.scss | 0 .../Authorization/authorization.service.ts | 0 .../Authorization/constants.ts | 0 .../Authorization/index.ts | 0 .../Authorization/libUtils.ts | 0 .../Authorization/types.ts | 0 .../Authorization/utils.ts | 0 .../BuildInfra/BuildInfra.tsx | 0 .../BuildInfra/ProfileForm.tsx | 0 .../GlobalConfigurations/BuildInfra/index.ts | 0 .../BuildInfra/styles.scss | 0 .../GlobalConfigurations/BuildInfra/types.tsx | 0 .../ClusterEnvironmentDrawer.tsx | 0 .../ClusterEnvironmentDrawer/index.ts | 0 .../ClusterEnvironmentDrawer/schema.ts | 0 .../ClusterEnvironmentDrawer/types.ts | 0 .../ClusterEnvironmentDrawer/utils.ts | 0 .../DeploymentChartsRouter.component.tsx | 0 .../List/DeploymentChartsList.component.tsx | 0 .../List/DeploymentChartsListHeader.tsx | 0 .../List/DownloadChartButton.tsx | 0 .../DeploymentCharts/List/UploadButton.tsx | 0 .../List/UploadChartModal.tsx | 0 .../DeploymentCharts/List/index.tsx | 0 .../DeploymentCharts/List/service.tsx | 0 .../DeploymentCharts/List/styles.scss | 0 .../DeploymentCharts/index.tsx | 0 .../DeploymentCharts/types.ts | 0 .../src}/Pages/GlobalConfigurations/index.ts | 0 {src => apps/web/src}/Pages/Releases/.gitkeep | 0 .../ConfigMapSecret.components.tsx | 0 .../ConfigMapSecret.constants.ts | 0 .../ConfigMapSecret.container.tsx | 0 .../ConfigMapSecret.reducer.ts | 0 .../ConfigMapSecret/ConfigMapSecret.scss | 0 .../ConfigMapSecret.service.ts | 0 .../ConfigMapSecret/ConfigMapSecret.types.ts | 0 .../ConfigMapSecret.wrapper.tsx | 0 .../ConfigMapSecretDataEditor.container.tsx | 0 .../ConfigMapSecretDeleteModal.tsx | 0 .../ConfigMapSecret/ConfigMapSecretForm.tsx | 0 .../ProtectedConfigMapSecretDetails.tsx | 0 .../Shared/ConfigMapSecret/Secret.utils.tsx | 0 .../EnvironmentOverride.tsx | 0 .../EnvironmentOverrides.types.ts | 0 .../environmentOverride.scss | 0 .../Shared/EnvironmentOverride/service.ts | 0 .../EnvironmentOverview.constants.ts | 0 .../EnvironmentOverviewTable.component.tsx | 0 .../EnvironmentOverviewTable.scss | 0 .../EnvironmentOverviewTable.types.ts | 0 .../Shared/EnvironmentOverviewTable/index.ts | 0 .../LinkedCIDetailsModal/LinkedCIAppList.tsx | 0 .../LinkedCIDetailsModal/LinkedCIDetail.tsx | 0 .../LinkedCIDetailsModal.tsx | 0 .../Shared/LinkedCIDetailsModal/constants.ts | 0 .../Shared/LinkedCIDetailsModal/index.ts | 0 .../LinkedCIDetailsModal/linkedCIAppList.scss | 0 .../Shared/LinkedCIDetailsModal/service.ts | 0 .../Shared/LinkedCIDetailsModal/types.ts | 0 .../Shared/LinkedCIDetailsModal/utils.ts | 0 .../OrganizationFrame.component.tsx | 0 .../OrganizationTextLogo.tsx | 0 .../Pages/Shared/OrganizationFrame/index.ts | 0 {src => apps/web/src}/Pages/Shared/index.ts | 0 {src => apps/web/src}/Pages/index.ts | 0 .../fonts/glyphicons-halflings-regular.eot | Bin .../fonts/glyphicons-halflings-regular.svg | 0 .../fonts/glyphicons-halflings-regular.ttf | Bin .../fonts/glyphicons-halflings-regular.woff | Bin .../fonts/glyphicons-halflings-regular.woff2 | Bin .../assets/gif/latest-version-celebration.gif | Bin .../src}/assets/gif/no-eligible-commit.gif | Bin .../web/src}/assets/gif/uploading.gif | Bin .../web/src}/assets/ic-info-filled-border.svg | 0 .../web/src}/assets/icons/LoginSprite.svg | 0 .../web/src}/assets/icons/RectangleLine.svg | 0 .../src}/assets/icons/appstatus/bg-blue.svg | 0 .../src}/assets/icons/appstatus/bg-gray.svg | 0 .../src}/assets/icons/appstatus/bg-white.svg | 0 .../src}/assets/icons/appstatus/degraded.svg | 0 .../src}/assets/icons/appstatus/healthy.svg | 0 .../icons/appstatus/ic-appstatus-failed.svg | 0 .../src}/assets/icons/appstatus/ic-check.svg | 0 .../icons/appstatus/ic-chevron-down.svg | 0 .../src}/assets/icons/appstatus/ic-cpu.svg | 0 .../assets/icons/appstatus/ic-heart-green.svg | 0 .../assets/icons/appstatus/ic-menu-dots.svg | 0 .../src}/assets/icons/appstatus/ic-ram.svg | 0 .../assets/icons/appstatus/ic-sort-down.svg | 0 .../assets/icons/appstatus/info-filled.svg | 0 .../src}/assets/icons/appstatus/missing.svg | 0 .../assets/icons/appstatus/notdeployed.svg | 0 .../icons/appstatus/progressing-rotating.svg | 0 .../src}/assets/icons/appstatus/suspended.svg | 0 .../src}/assets/icons/appstatus/unknown.svg | 0 .../web/src}/assets/icons/argo-cd-app.svg | 0 .../src}/assets/icons/cluster-overview.svg | 0 .../web/src}/assets/icons/container.svg | 0 {src => apps/web/src}/assets/icons/drag.svg | 0 .../web/src}/assets/icons/git/azure.svg | 0 .../web/src}/assets/icons/git/bitbucket.svg | 0 .../web/src}/assets/icons/git/docker.svg | 0 .../web/src}/assets/icons/git/git.svg | 0 .../web/src}/assets/icons/git/github.svg | 0 .../web/src}/assets/icons/git/gitlab.svg | 0 .../assets/icons/go-to-buildanddeploy.svg | 0 .../src}/assets/icons/go-to-envoverride.svg | 0 .../web/src}/assets/icons/helm-app.svg | 0 {src => apps/web/src}/assets/icons/ic-CD.svg | 0 {src => apps/web/src}/assets/icons/ic-CI.svg | 0 .../web/src}/assets/icons/ic-CILinked.svg | 0 .../web/src}/assets/icons/ic-CIWebhook.svg | 0 .../web/src}/assets/icons/ic-abort.svg | 0 .../web/src}/assets/icons/ic-activity.svg | 0 {src => apps/web/src}/assets/icons/ic-add.svg | 0 .../src}/assets/icons/ic-alert-triangle.svg | 0 .../web/src}/assets/icons/ic-app-group.svg | 0 .../assets/icons/ic-appstatus-cancelled.svg | 0 .../web/src}/assets/icons/ic-argocd-app.svg | 0 .../assets/icons/ic-arrow-anticlockwise.svg | 0 .../src}/assets/icons/ic-arrow-backward.svg | 0 .../src}/assets/icons/ic-arrow-clockwise.svg | 0 .../icons/ic-arrow-counter-clockwise.svg | 0 .../web/src}/assets/icons/ic-arrow-down.svg | 0 .../src}/assets/icons/ic-arrow-forward.svg | 0 .../web/src}/assets/icons/ic-arrow-left.svg | 0 .../src}/assets/icons/ic-arrow-line-down.svg | 0 .../src}/assets/icons/ic-arrow-line-up.svg | 0 .../web/src}/assets/icons/ic-arrow-right.svg | 0 .../src}/assets/icons/ic-arrow-square-out.svg | 0 .../src}/assets/icons/ic-arrow-up-down.svg | 0 .../assets/icons/ic-arrows-left-right.svg | 0 .../src}/assets/icons/ic-arrows_clockwise.svg | 0 .../web/src}/assets/icons/ic-asterisk.svg | 0 .../src}/assets/icons/ic-aws-codecommit.svg | 0 .../web/src}/assets/icons/ic-aws-ses.svg | 0 .../web/src}/assets/icons/ic-azure.svg | 0 .../web/src}/assets/icons/ic-back.svg | 0 .../web/src}/assets/icons/ic-bell.svg | 0 .../web/src}/assets/icons/ic-book-open.svg | 0 {src => apps/web/src}/assets/icons/ic-bot.svg | 0 .../web/src}/assets/icons/ic-branch-main.svg | 0 .../web/src}/assets/icons/ic-branch.svg | 0 .../web/src}/assets/icons/ic-briefcase.svg | 0 .../web/src}/assets/icons/ic-browser.svg | 0 {src => apps/web/src}/assets/icons/ic-bug.svg | 0 .../web/src}/assets/icons/ic-builpack.svg | 0 .../web/src}/assets/icons/ic-bulb.svg | 0 .../web/src}/assets/icons/ic-bulk-check.svg | 0 .../web/src}/assets/icons/ic-calendar.svg | 0 .../web/src}/assets/icons/ic-camera.svg | 0 .../src}/assets/icons/ic-caret-left-small.svg | 0 .../web/src}/assets/icons/ic-cd-stage.svg | 0 .../web/src}/assets/icons/ic-celebration.svg | 0 .../web/src}/assets/icons/ic-charts.svg | 0 .../src}/assets/icons/ic-chat-circle-dots.svg | 0 .../assets/icons/ic-check-circle-green.svg | 0 .../web/src}/assets/icons/ic-check-circle.svg | 0 .../web/src}/assets/icons/ic-check.svg | 0 .../assets/icons/ic-checkbox-intermediate.svg | 0 .../assets/icons/ic-checkbox-selected.svg | 0 .../assets/icons/ic-checkbox-unselected.svg | 0 .../web/src}/assets/icons/ic-checks.svg | 0 .../web/src}/assets/icons/ic-chevron-down.svg | 0 .../src}/assets/icons/ic-clair-to-trivy.svg | 0 .../web/src}/assets/icons/ic-clair.svg | 0 .../assets/icons/ic-clean-brush-medium.svg | 0 .../web/src}/assets/icons/ic-clean-brush.svg | 0 .../icons/ic-clock-counterclockwise.svg | 0 .../web/src}/assets/icons/ic-clock.svg | 0 .../web/src}/assets/icons/ic-close-circle.svg | 0 .../web/src}/assets/icons/ic-close.svg | 0 .../web/src}/assets/icons/ic-cloud.svg | 0 .../web/src}/assets/icons/ic-cloudwatch.png | Bin .../web/src}/assets/icons/ic-cluster.svg | 0 .../web/src}/assets/icons/ic-code-commit.svg | 0 .../web/src}/assets/icons/ic-commit.svg | 0 .../web/src}/assets/icons/ic-compare.svg | 0 .../web/src}/assets/icons/ic-compass.svg | 0 .../web/src}/assets/icons/ic-connected.svg | 0 .../web/src}/assets/icons/ic-copy.svg | 0 .../web/src}/assets/icons/ic-coralogix.png | Bin .../src}/assets/icons/ic-cordon-medium.svg | 0 .../web/src}/assets/icons/ic-cordon.svg | 0 {src => apps/web/src}/assets/icons/ic-cpu.svg | 0 .../web/src}/assets/icons/ic-cross.svg | 0 .../web/src}/assets/icons/ic-cube.svg | 0 .../web/src}/assets/icons/ic-datadog.png | Bin .../src}/assets/icons/ic-default-chart.svg | 0 .../web/src}/assets/icons/ic-delete-dots.svg | 0 .../assets/icons/ic-delete-interactive.svg | 0 .../web/src}/assets/icons/ic-delete.svg | 0 .../web/src}/assets/icons/ic-deploy.svg | 0 .../web/src}/assets/icons/ic-devtron-app.svg | 0 .../assets/icons/ic-devtron-blue-outline.svg | 0 .../web/src}/assets/icons/ic-devtron.svg | 0 .../web/src}/assets/icons/ic-disconnected.svg | 0 .../web/src}/assets/icons/ic-discord-fill.svg | 0 .../src}/assets/icons/ic-discord-online.svg | 0 .../assets/icons/ic-docker-with-image.svg | 0 .../web/src}/assets/icons/ic-document.svg | 0 .../src}/assets/icons/ic-down-arrow-full.svg | 0 .../web/src}/assets/icons/ic-download.svg | 0 .../src}/assets/icons/ic-dropdown-filled.svg | 0 {src => apps/web/src}/assets/icons/ic-ecr.svg | 0 .../web/src}/assets/icons/ic-edit-file.svg | 0 .../web/src}/assets/icons/ic-edit-lines.svg | 0 .../web/src}/assets/icons/ic-edit.svg | 0 .../web/src}/assets/icons/ic-empty-data.svg | 0 {src => apps/web/src}/assets/icons/ic-env.svg | 0 .../src}/assets/icons/ic-environment-list.svg | 0 .../src}/assets/icons/ic-environment-temp.svg | 0 .../web/src}/assets/icons/ic-ephemeral.svg | 0 .../assets/icons/ic-error-exclamation.svg | 0 .../web/src}/assets/icons/ic-error-medium.svg | 0 .../web/src}/assets/icons/ic-error.svg | 0 .../assets/icons/ic-exit-fullscreen-2.svg | 0 .../web/src}/assets/icons/ic-expand.svg | 0 .../web/src}/assets/icons/ic-feedback.svg | 0 .../web/src}/assets/icons/ic-file-code.svg | 0 .../src}/assets/icons/ic-file-download.svg | 0 .../web/src}/assets/icons/ic-file-text.svg | 0 .../web/src}/assets/icons/ic-file.svg | 0 .../web/src}/assets/icons/ic-files.svg | 0 .../web/src}/assets/icons/ic-filter.svg | 0 .../web/src}/assets/icons/ic-fluxcd-app.svg | 0 .../web/src}/assets/icons/ic-fluxcd.svg | 0 .../src}/assets/icons/ic-folder-filled.svg | 0 .../web/src}/assets/icons/ic-folder.svg | 0 .../web/src}/assets/icons/ic-fullscreen-2.svg | 0 .../src}/assets/icons/ic-generated-image.svg | 0 .../icons/ic-google-artifact-registry.svg | 0 .../icons/ic-google-container-registry.svg | 0 .../web/src}/assets/icons/ic-google.svg | 0 .../web/src}/assets/icons/ic-grafana.png | Bin .../web/src}/assets/icons/ic-graph.svg | 0 .../src}/assets/icons/ic-grid-view-blue.svg | 0 .../web/src}/assets/icons/ic-grid-view.svg | 0 .../assets/icons/ic-group-filter-applied.svg | 0 .../web/src}/assets/icons/ic-group-filter.svg | 0 .../web/src}/assets/icons/ic-helmchart.svg | 0 .../web/src}/assets/icons/ic-help-green.svg | 0 .../web/src}/assets/icons/ic-help-outline.svg | 0 .../web/src}/assets/icons/ic-help.svg | 0 .../web/src}/assets/icons/ic-hibernate-2.svg | 0 .../web/src}/assets/icons/ic-hibernate-3.svg | 0 .../web/src}/assets/icons/ic-hibernate.svg | 0 .../assets/icons/ic-info-filled-purple.svg | 0 .../web/src}/assets/icons/ic-info-filled.svg | 0 .../assets/icons/ic-info-outline-grey.svg | 0 .../assets/icons/ic-info-outline-purple.svg | 0 .../web/src}/assets/icons/ic-info-outline.svg | 0 .../src}/assets/icons/ic-info-outlined.svg | 0 .../web/src}/assets/icons/ic-info-warn.svg | 0 .../web/src}/assets/icons/ic-input.svg | 0 .../web/src}/assets/icons/ic-job-node.svg | 0 .../web/src}/assets/icons/ic-k8s-job.svg | 0 .../web/src}/assets/icons/ic-key-bulb.svg | 0 {src => apps/web/src}/assets/icons/ic-key.svg | 0 .../web/src}/assets/icons/ic-kibana.png | Bin .../web/src}/assets/icons/ic-ldap.svg | 0 .../web/src}/assets/icons/ic-lego-block.svg | 0 .../web/src}/assets/icons/ic-lines.svg | 0 .../web/src}/assets/icons/ic-link.svg | 0 .../web/src}/assets/icons/ic-linked.svg | 0 .../web/src}/assets/icons/ic-list-view.svg | 0 .../src}/assets/icons/ic-locked-filled.svg | 0 .../web/src}/assets/icons/ic-locked.svg | 0 .../web/src}/assets/icons/ic-logs.svg | 0 .../web/src}/assets/icons/ic-loki.png | Bin .../web/src}/assets/icons/ic-mail.svg | 0 .../src}/assets/icons/ic-medium-delete.svg | 0 .../src}/assets/icons/ic-medium-hibernate.svg | 0 .../assets/icons/ic-medium-unhibernate.svg | 0 .../web/src}/assets/icons/ic-megaphone.svg | 0 .../web/src}/assets/icons/ic-memory.svg | 0 .../web/src}/assets/icons/ic-message.svg | 0 .../web/src}/assets/icons/ic-microsoft.svg | 0 .../web/src}/assets/icons/ic-minus.svg | 0 .../web/src}/assets/icons/ic-monitoring.svg | 0 .../web/src}/assets/icons/ic-more-option.svg | 0 .../src}/assets/icons/ic-nav-applications.svg | 0 .../web/src}/assets/icons/ic-nav-bug.svg | 0 .../web/src}/assets/icons/ic-nav-code.svg | 0 .../web/src}/assets/icons/ic-nav-devtron.svg | 0 .../web/src}/assets/icons/ic-nav-gear.svg | 0 .../web/src}/assets/icons/ic-nav-helm.svg | 0 .../web/src}/assets/icons/ic-nav-rocket.svg | 0 .../web/src}/assets/icons/ic-nav-search.svg | 0 .../web/src}/assets/icons/ic-nav-security.svg | 0 .../web/src}/assets/icons/ic-nav-stack.svg | 0 .../web/src}/assets/icons/ic-newrelic.png | Bin .../assets/icons/ic-node-build-linked.svg | 0 .../web/src}/assets/icons/ic-note.svg | 0 .../web/src}/assets/icons/ic-object.svg | 0 .../web/src}/assets/icons/ic-oidc.svg | 0 .../web/src}/assets/icons/ic-onboarding.svg | 0 .../web/src}/assets/icons/ic-open-box.svg | 0 .../web/src}/assets/icons/ic-open-in-new.svg | 0 .../web/src}/assets/icons/ic-openshift.svg | 0 .../src}/assets/icons/ic-outline-check.svg | 0 .../web/src}/assets/icons/ic-paper-rocket.svg | 0 .../web/src}/assets/icons/ic-pause.svg | 0 .../web/src}/assets/icons/ic-pencil.svg | 0 .../web/src}/assets/icons/ic-person.svg | 0 .../src}/assets/icons/ic-pipeline-linked.svg | 0 .../web/src}/assets/icons/ic-play-filled.svg | 0 .../web/src}/assets/icons/ic-play-media.svg | 0 .../web/src}/assets/icons/ic-play-medium.svg | 0 .../web/src}/assets/icons/ic-play.svg | 0 .../web/src}/assets/icons/ic-plc-chart.svg | 0 .../web/src}/assets/icons/ic-plugin.svg | 0 .../web/src}/assets/icons/ic-progressing.svg | 0 .../web/src}/assets/icons/ic-quay.svg | 0 .../web/src}/assets/icons/ic-question.svg | 0 .../web/src}/assets/icons/ic-resource.svg | 0 .../web/src}/assets/icons/ic-restore.svg | 0 .../web/src}/assets/icons/ic-rocket-fail.svg | 0 .../web/src}/assets/icons/ic-rollback.svg | 0 .../web/src}/assets/icons/ic-sample-app.svg | 0 .../web/src}/assets/icons/ic-save.svg | 0 .../web/src}/assets/icons/ic-scale-down.svg | 0 .../src}/assets/icons/ic-scale-objects.svg | 0 .../web/src}/assets/icons/ic-search.svg | 0 .../web/src}/assets/icons/ic-secure.svg | 0 .../src}/assets/icons/ic-select-cluster.svg | 0 .../src}/assets/icons/ic-selected-corner.png | Bin .../web/src}/assets/icons/ic-settings.svg | 0 .../assets/icons/ic-shield-protect-fill.svg | 0 .../web/src}/assets/icons/ic-skip.svg | 0 .../web/src}/assets/icons/ic-slant-bulb.svg | 0 .../web/src}/assets/icons/ic-smiley-party.svg | 0 .../web/src}/assets/icons/ic-smtp.svg | 0 .../src}/assets/icons/ic-sort-arrow-down.svg | 0 .../web/src}/assets/icons/ic-sort-arrow.svg | 0 .../web/src}/assets/icons/ic-sort-down.svg | 0 .../web/src}/assets/icons/ic-sort-up.svg | 0 .../web/src}/assets/icons/ic-sort.svg | 0 .../web/src}/assets/icons/ic-source-build.svg | 0 .../web/src}/assets/icons/ic-source-job.svg | 0 .../assets/icons/ic-source-linked-build.svg | 0 .../src}/assets/icons/ic-source-webhook.svg | 0 .../web/src}/assets/icons/ic-source.svg | 0 .../web/src}/assets/icons/ic-sparkles.svg | 0 .../web/src}/assets/icons/ic-spraycan.svg | 0 .../web/src}/assets/icons/ic-stamp.svg | 0 .../web/src}/assets/icons/ic-stop-filled.svg | 0 .../web/src}/assets/icons/ic-stop.svg | 0 .../web/src}/assets/icons/ic-storage.svg | 0 .../src}/assets/icons/ic-success-outline.svg | 0 .../ic-success-with-light-background.svg | 0 .../web/src}/assets/icons/ic-success.svg | 0 {src => apps/web/src}/assets/icons/ic-tag.svg | 0 .../src}/assets/icons/ic-terminal-fill.svg | 0 .../src}/assets/icons/ic-terminal-line.svg | 0 .../web/src}/assets/icons/ic-tilde.svg | 0 .../web/src}/assets/icons/ic-timeout-red.svg | 0 .../web/src}/assets/icons/ic-timer.svg | 0 .../src}/assets/icons/ic-trivy-to-clair.svg | 0 .../web/src}/assets/icons/ic-trivy.svg | 0 .../web/src}/assets/icons/ic-unhibernate.svg | 0 .../src}/assets/icons/ic-update-animated.svg | 0 .../web/src}/assets/icons/ic-upload-blue.svg | 0 .../web/src}/assets/icons/ic-upload.svg | 0 .../web/src}/assets/icons/ic-user-circle.svg | 0 .../web/src}/assets/icons/ic-users.svg | 0 .../web/src}/assets/icons/ic-var-initial.svg | 0 .../src}/assets/icons/ic-variable-equal.svg | 0 .../web/src}/assets/icons/ic-variable.svg | 0 .../assets/icons/ic-view-variable-toggle.svg | 0 .../src}/assets/icons/ic-view-variables.svg | 0 .../src}/assets/icons/ic-virtual-cluster.svg | 0 .../src}/assets/icons/ic-visibility-off.svg | 0 .../assets/icons/ic-visibility-on-filter.svg | 0 .../src}/assets/icons/ic-visibility-on.svg | 0 .../web/src}/assets/icons/ic-warning-y5.svg | 0 .../web/src}/assets/icons/ic-warning-y6.svg | 0 .../web/src}/assets/icons/ic-warning.svg | 0 .../web/src}/assets/icons/ic-workflow.svg | 0 .../web/src}/assets/icons/ic-world-black.svg | 0 .../web/src}/assets/icons/ic-world.svg | 0 .../src}/assets/icons/img-folder-empty.svg | 0 .../web/src}/assets/icons/info-filled.svg | 0 .../web/src}/assets/icons/inject-tag.svg | 0 .../web/src}/assets/icons/logo/logo-dt.svg | 0 .../src}/assets/icons/mdeditor/ic-bold.svg | 0 .../assets/icons/mdeditor/ic-checked-list.svg | 0 .../src}/assets/icons/mdeditor/ic-code.svg | 0 .../src}/assets/icons/mdeditor/ic-header.svg | 0 .../src}/assets/icons/mdeditor/ic-image.svg | 0 .../src}/assets/icons/mdeditor/ic-italic.svg | 0 .../src}/assets/icons/mdeditor/ic-link.svg | 0 .../assets/icons/mdeditor/ic-ordered-list.svg | 0 .../src}/assets/icons/mdeditor/ic-quote.svg | 0 .../icons/mdeditor/ic-strikethrough.svg | 0 .../icons/mdeditor/ic-unordered-list.svg | 0 .../web/src}/assets/icons/misc/addWhite.svg | 0 .../icons/misc/arrow-chevron-down-black.svg | 0 .../assets/icons/misc/arrow-solid-right.svg | 0 .../src}/assets/icons/misc/arrowSquareOut.svg | 0 .../web/src}/assets/icons/misc/branch.svg | 0 .../web/src}/assets/icons/misc/branchBlue.svg | 0 .../web/src}/assets/icons/misc/checkGreen.svg | 0 .../web/src}/assets/icons/misc/delete.svg | 0 .../web/src}/assets/icons/misc/deploy.svg | 0 .../web/src}/assets/icons/misc/docker.svg | 0 .../web/src}/assets/icons/misc/editBlack.svg | 0 .../web/src}/assets/icons/misc/editWhite.svg | 0 .../web/src}/assets/icons/misc/errorInfo.svg | 0 .../web/src}/assets/icons/misc/regex.svg | 0 .../web/src}/assets/icons/misc/rollback.svg | 0 .../web/src}/assets/icons/misc/sort-down.svg | 0 .../web/src}/assets/icons/misc/sort-up.svg | 0 .../web/src}/assets/icons/misc/sort.svg | 0 .../web/src}/assets/icons/misc/webhook.svg | 0 .../src}/assets/icons/navigation-sprite.svg | 0 .../web/src}/assets/icons/scanner.svg | 0 .../assets/icons/tools/ic-link-alerts.png | Bin .../src}/assets/icons/tools/ic-link-bugs.png | Bin .../src}/assets/icons/tools/ic-link-chat.png | Bin .../assets/icons/tools/ic-link-confluence.png | Bin .../assets/icons/tools/ic-link-document.png | Bin .../assets/icons/tools/ic-link-folder.png | Bin .../src}/assets/icons/tools/ic-link-jira.png | Bin .../icons/tools/ic-link-performance.png | Bin .../assets/icons/tools/ic-link-report.png | Bin .../assets/icons/tools/ic-link-swagger.png | Bin .../assets/icons/tools/ic-link-webpage.png | Bin .../web/src}/assets/img/Empty-folder.png | Bin .../web/src}/assets/img/about-devtron@2x.png | Bin .../src}/assets/img/app-not-configured.png | Bin .../web/src}/assets/img/app-not-deployed.png | Bin {src => apps/web/src}/assets/img/bg-login.png | Bin .../web/src}/assets/img/bug_fixing.svg | 0 .../web/src}/assets/img/change-source.png | Bin .../web/src}/assets/img/cm-cs-empty-state.png | Bin .../web/src}/assets/img/empty-applist@2x.png | Bin .../assets/img/empty-externallinks@2x.png | Bin .../web/src}/assets/img/empty-joblist@2x.png | Bin .../web/src}/assets/img/empty-noresult@2x.png | Bin .../web/src}/assets/img/empty-pre-deploy.png | Bin .../web/src}/assets/img/external-ci.png | Bin .../web/src}/assets/img/guide-create-app.png | Bin .../web/src}/assets/img/guide-onboard.png | Bin .../assets/img/guided-chart-repository.png | Bin .../src}/assets/img/guided-helm-cluster.png | Bin .../src}/assets/img/guided-helm-collage.png | Bin .../src}/assets/img/guided-helm-search.png | Bin .../web/src}/assets/img/helm-collage.png | Bin .../web/src}/assets/img/ic-build-deploy.png | Bin .../src}/assets/img/ic-checklist-app@2x.png | Bin .../src}/assets/img/ic-checklist-chart@2x.png | Bin .../assets/img/ic-checklist-sample-app@2x.png | Bin .../src}/assets/img/ic-dockerfile-in-use.png | Bin .../assets/img/ic-empty-chartgroup@2x.png | Bin .../src}/assets/img/ic-empty-checklist.png | Bin .../assets/img/ic-empty-custom-charts.png | Bin .../assets/img/ic-empty-dep-metrics@2x.png | Bin .../web/src}/assets/img/ic-empty-done@2x.png | Bin .../src}/assets/img/ic-empty-ea--security.png | Bin .../assets/img/ic-empty-ea-app-detail.png | Bin .../src}/assets/img/ic-empty-ea-charts.png | Bin .../web/src}/assets/img/ic-empty-error@2x.png | Bin .../assets/img/ic-empty-generate-token.png | Bin .../assets/img/ic-empty-notifications.png | Bin .../assets/img/ic-empty-scanner-disabled.png | Bin .../web/src}/assets/img/ic-empty-tests.svg | 0 .../src}/assets/img/ic-empty-workflow@3x.png | Bin .../web/src}/assets/img/ic-error-hosturl.png | Bin .../src}/assets/img/ic-error-prometheus.png | Bin .../img/ic-feature-deploymentgroups@3x.png | Bin .../web/src}/assets/img/ic-help-outline.svg | 0 .../src}/assets/img/ic-loading-failure.png | Bin .../assets/img/ic-mechanical-operation.svg | 0 .../src}/assets/img/ic-more-extensions.png | Bin .../assets/img/ic-no-chart-in-clusters@2x.png | Bin .../assets/img/ic-no-cluster-select@2x.png | Bin .../web/src}/assets/img/ic-not-authorized.svg | 0 .../web/src}/assets/img/ic-pipeline-ci@2x.png | Bin .../src}/assets/img/ic-pipeline-deploy@2x.png | Bin .../web/src}/assets/img/ic-preview.png | Bin .../web/src}/assets/img/ic-success@2x.png | Bin .../assets/img/ic-vulnerability-not-found.svg | 0 .../src}/assets/img/ic_upload_chart_error.png | Bin .../src}/assets/img/install-devtron-full.png | Bin .../assets/img/install-devtron-full@2x.png | Bin .../assets/img/install-devtron-full@3x.png | Bin {src => apps/web/src}/assets/img/lifebuoy.png | Bin .../web/src}/assets/img/linked-cd-bulk-ci.png | Bin .../web/src}/assets/img/linked-ci.png | Bin .../src}/assets/img/login-bg-independence.png | Bin .../web/src}/assets/img/mail-icon.svg | 0 {src => apps/web/src}/assets/img/nav-logo.svg | 0 .../src}/assets/img/no-approved-images@2x.png | Bin .../web/src}/assets/img/no-artifact@2x.png | Bin .../assets/img/no-cluster-empty-state.png | Bin .../src}/assets/img/no-eligible-commit.png | Bin .../src}/assets/img/no-pending-action@2x.png | Bin .../web/src}/assets/img/no_vulnerability.png | Bin .../src}/assets/img/node-app-thumbnail.png | Bin .../web/src}/assets/img/not-scanned.png | Bin .../web/src}/assets/img/page-not-found.png | Bin .../assets/img/paper-rocket-deployment.png | Bin .../web/src}/assets/img/pipeline-deploy.png | Bin .../web/src}/assets/img/post-build-empty.png | Bin .../src}/assets/img/post-deployment-empty.png | Bin .../web/src}/assets/img/pre-build-empty.png | Bin .../src}/assets/img/pre-deployment-empty.png | Bin .../src}/assets/img/select-image-source.png | Bin .../web/src}/assets/img/slack-logo.svg | 0 {src => apps/web/src}/assets/img/terminal.png | Bin .../web/src}/assets/img/terminal@2x.png | Bin .../web/src}/assets/img/warning-medium.svg | 0 {src => apps/web/src}/assets/img/webhook.svg | 0 {src => apps/web/src}/assets/logo/logo.png | Bin .../components/AppSelector/AppSelector.tsx | 0 .../AppSelector/AppSelectorUtil.tsx | 0 .../components/AppSelector/ChartSelector.tsx | 0 .../web/src}/components/AppSelector/index.ts | 0 .../ApplicationGroup/AppGroup.service.ts | 0 .../ApplicationGroup/AppGroup.types.ts | 0 .../ApplicationGroup/AppGroup.utils.ts | 0 .../AppGroupAppFilter.components.tsx | 0 .../ApplicationGroup/AppGroupAppFilter.tsx | 0 .../ApplicationGroup/AppGroupDetailsRoute.tsx | 0 .../ApplicationGroup/AppGroupRoute.tsx | 0 .../components/ApplicationGroup/Constants.ts | 0 .../ApplicationGroup/CreateAppGroup.tsx | 0 .../Details/EnvCDDetails/EnvCDDetails.tsx | 0 .../__mock__/EnvCDDetails.mock.ts | 0 .../__test__/EnvCDDetails.test.tsx | 0 .../Details/EnvCIDetails/EnvCIDetails.tsx | 0 .../__mock__/EnvCIDetails.mock.ts | 0 .../__test__/EnvCIDetails.test.tsx | 0 .../EnvironmentConfig/ApplicationRoutes.tsx | 0 .../Details/EnvironmentConfig/EnvConfig.tsx | 0 .../__mock__/EnvConfig.mock.ts | 0 .../__test__/ApplicationRoutes.test.tsx | 0 .../__test__/EnvConfig.test.tsx | 0 .../AllExpandableDropdown.tsx | 0 .../EnvironmentOverview.tsx | 0 .../EnvironmentOverview/HibernateModal.tsx | 0 .../HibernateStatusListDrawer.tsx | 0 .../HibernateStatusRow.tsx | 0 .../RestartStatusListDrawer.tsx | 0 .../RestartWorkloadModal.tsx | 0 .../__mock__/EnvironmentOverview.mock.ts | 0 .../__test__/EnvironmentOverview.test.tsx | 0 .../Details/EnvironmentOverview/constants.ts | 0 .../EnvironmentOverview/envOverview.scss | 0 .../Details/EnvironmentOverview/service.ts | 0 .../Details/TriggerView/BulkCDTrigger.tsx | 0 .../Details/TriggerView/BulkCITrigger.tsx | 0 .../Details/TriggerView/BulkSourceChange.tsx | 0 .../Details/TriggerView/EnvTriggerView.scss | 0 .../Details/TriggerView/EnvTriggerView.tsx | 0 .../TriggerView/SourceUpdateResponseModal.tsx | 0 .../TriggerView/TriggerModalTableRow.tsx | 0 .../TriggerView/TriggerResponseModal.tsx | 0 .../Details/TriggerView/constants.ts | 0 .../Details/TriggerView/types.ts | 0 .../Details/TriggerView/utils.ts | 0 .../ApplicationGroup/EnvEmptyStates.tsx | 0 .../ApplicationGroup/EnvSelector.tsx | 0 .../List/EnvironmentListView.tsx | 0 .../List/EnvironmentsList.scss | 0 .../List/EnvironmentsList.tsx | 0 .../List/__mocks__/EnvironmentList.mock.ts | 0 .../__tests__/EnvironmentListView.test.tsx | 0 .../CIPipelineN/AdvancedConfigOptions.tsx | 0 .../web/src}/components/CIPipelineN/Build.tsx | 0 .../components/CIPipelineN/CIPipeline.tsx | 0 .../CIPipelineN/ConditionContainer.tsx | 0 .../src}/components/CIPipelineN/Constants.tsx | 0 .../CreatePluginFormContent.tsx | 0 .../CreatePluginFormField.tsx | 0 .../CreatePluginInputVariableContainer.tsx | 0 .../CreatePluginModal.component.tsx | 0 .../CreatePluginModal/CreatePluginModal.scss | 0 .../CreatePluginModal/constants.ts | 0 .../CIPipelineN/CreatePluginModal/index.ts | 0 .../CIPipelineN/CreatePluginModal/service.tsx | 0 .../CIPipelineN/CreatePluginModal/types.ts | 0 .../CIPipelineN/CreatePluginModal/utils.tsx | 0 .../CIPipelineN/CustomImageTag.type.ts | 0 .../CIPipelineN/CustomImageTags.tsx | 0 .../CustomInputOutputVariables.tsx | 0 .../CIPipelineN/CustomInputVariableSelect.tsx | 0 .../components/CIPipelineN/CustomScript.tsx | 0 .../CIPipelineN/CustomScriptCard.tsx | 0 .../components/CIPipelineN/DockerArgs.tsx | 0 .../CIPipelineN/EnvironmentList.tsx | 0 .../CIPipelineN/InputPluginSelect.tsx | 0 .../components/CIPipelineN/MountFromHost.tsx | 0 .../components/CIPipelineN/MultiplsPort.tsx | 0 .../CIPipelineN/OutputDirectoryPath.tsx | 0 .../PluginDetailHeader/CreatePluginButton.tsx | 0 .../PluginDetailHeader.component.tsx | 0 .../PluginVersionSelect.tsx | 0 .../CIPipelineN/PluginDetailHeader/index.ts | 0 .../CIPipelineN/PluginDetailHeader/utils.ts | 0 .../src}/components/CIPipelineN/PreBuild.tsx | 0 .../src}/components/CIPipelineN/Sidebar.tsx | 0 .../CIPipelineN/TaskDetailComponent.tsx | 0 .../CIPipelineN/TaskFieldTippyDescription.tsx | 0 .../src}/components/CIPipelineN/TaskList.tsx | 0 .../src}/components/CIPipelineN/TaskTitle.tsx | 0 .../CIPipelineN/TaskTypeDetailComponent.tsx | 0 .../CIPipelineN/VariableContainer.tsx | 0 .../CIPipelineN/ciPipeline.utils.tsx | 0 .../web/src}/components/CIPipelineN/types.ts | 0 .../components/ClusterNodes/ClusterEvents.tsx | 0 .../ClusterNodes/ClusterManifest.tsx | 0 .../ClusterNodes/ClusterNodeEmptyStates.tsx | 0 .../ClusterNodes/ClusterOverview.tsx | 0 .../ClusterNodes/ClusterSelectionList.tsx | 0 .../ClusterNodes/ClusterTerminal.tsx | 0 .../ClusterNodes/ColumnSelector.tsx | 0 .../NodeActions/CordonNodeModal.tsx | 0 .../NodeActions/DeleteNodeModal.tsx | 0 .../NodeActions/DrainNodeModal.tsx | 0 .../NodeActions/EditTaintsModal.tsx | 0 .../NodeActions/NodeActionsMenu.tsx | 0 .../NodeActions/validationRules.ts | 0 .../components/ClusterNodes/NodeDetails.tsx | 0 .../ClusterNodes/NodeDetailsList.tsx | 0 .../ClusterNodes/NodeListSearchFilter.tsx | 0 .../__mocks__/ClusterManifest.mock.ts | 0 .../__mocks__/clusterAbout.mock.tsx | 0 .../__tests__/ClusterManifest.test.tsx | 0 .../ClusterNodes/__tests__/NodeList.test.tsx | 0 .../components/ClusterNodes/clusterNodes.scss | 0 .../ClusterNodes/clusterNodes.service.tsx | 0 .../src}/components/ClusterNodes/constants.ts | 0 .../web/src}/components/ClusterNodes/types.ts | 0 .../web/src}/components/Hotjar/Hotjar.tsx | 0 .../web/src}/components/Jobs/Constants.ts | 0 .../Jobs/ExpandedRow/ExpandedRow.scss | 0 .../Jobs/ExpandedRow/ExpandedRow.tsx | 0 .../components/Jobs/JobDetails/JobDetails.tsx | 0 .../Jobs/JobList/JobListContainer.tsx | 0 .../Jobs/JobList/JobListFilters.tsx | 0 .../components/Jobs/JobList/JobListView.tsx | 0 .../src}/components/Jobs/JobList/JobsList.tsx | 0 .../web/src}/components/Jobs/Jobs.tsx | 0 .../src}/components/Jobs/JobsEmptyState.tsx | 0 .../web/src}/components/Jobs/Service.ts | 0 .../web/src}/components/Jobs/Types.ts | 0 .../web/src}/components/Jobs/Utils.ts | 0 .../src}/components/LogViewer/LogViewer.scss | 0 .../src}/components/LogViewer/LogViewer.tsx | 0 .../components/ResourceBrowser/Constants.ts | 0 .../ResourceBrowser/PageHeader.buttons.tsx | 0 .../ResourceBrowser/ResourceBrowser.scss | 0 .../ResourceBrowser.service.tsx | 0 .../ResourceBrowser/ResourceBrowser.tsx | 0 .../ResourceBrowser/ResourceBrowserRouter.tsx | 0 .../ResourceList/AdminTerminal.tsx | 0 .../ResourceList/ClusterSelector.tsx | 0 .../ResourceList/ConnectingToClusterState.tsx | 0 .../ResourceList/CreateResource.tsx | 0 .../ResourceList/DeleteResourcePopup.tsx | 0 .../ResourceList/EventList.tsx | 0 .../ResourceList/K8SResourceList.tsx | 0 .../ResourceList/K8SResourceTabComponent.tsx | 0 .../ResourceBrowserActionMenu.tsx | 0 .../ResourceList/ResourceFilterOptions.tsx | 0 .../ResourceList/ResourceList.component.tsx | 0 .../ResourceList/ResourceList.tsx | 0 .../ResourceList/ResourceListEmptyState.tsx | 0 .../ResourceBrowser/ResourceList/Sidebar.tsx | 0 .../ResourceList/__tests__/Sidebar.test.tsx | 0 .../ResourceBrowser/ResourceList/index.ts | 0 .../src}/components/ResourceBrowser/Types.ts | 0 .../src}/components/ResourceBrowser/Utils.tsx | 0 .../components/__mocks__/monaco-editor.js | 0 .../components/__mocks__/xterm-webfont.js | 0 .../web/src}/components/app/LogFilter.test.ts | 0 .../web/src}/components/app/LogFilter.ts | 0 .../app/Overview/EnvironmentList.tsx | 0 .../components/app/Overview/Overview.scss | 0 .../src}/components/app/Overview/Overview.tsx | 0 .../app/Overview/TagChipsContainer.tsx | 0 .../src}/components/app/Overview/constants.ts | 0 .../src}/components/app/Overview/utils.tsx | 0 .../src}/components/app/ResourceTreeNodes.tsx | 0 .../src}/components/app/ResponsiveDrawer.tsx | 0 .../web/src}/components/app/WebWorker.ts | 0 .../src}/components/app/appLabelCommon.tsx | 0 .../web/src}/components/app/config.tsx | 0 .../src}/components/app/create/CreateApp.tsx | 0 .../src}/components/app/create/createApp.scss | 0 .../src}/components/app/create/service.tsx | 0 .../components/app/create/validationRules.ts | 0 .../app/details/AboutAppInfoModal.tsx | 0 .../app/details/AboutTagEditModal.tsx | 0 .../src}/components/app/details/AppHeader.tsx | 0 .../web/src}/components/app/details/app.scss | 0 .../app/details/appConfig/constants.ts | 0 .../app/details/appDetails/AppDetails.tsx | 0 .../details/appDetails/AppDetailsCDButton.tsx | 0 .../app/details/appDetails/AppMetrics.tsx | 0 .../app/details/appDetails/AppSecurity.tsx | 0 .../app/details/appDetails/AppStatusCard.tsx | 0 .../details/appDetails/DeployedCommitCard.tsx | 0 .../appDetails/DeploymentStatusCard.tsx | 0 .../DeploymentStatusDetailModal.tsx | 0 .../app/details/appDetails/GraphsModal.tsx | 0 .../app/details/appDetails/IssuesCard.tsx | 0 .../details/appDetails/IssuesListingModal.tsx | 0 .../details/appDetails/LastUpdatedCard.tsx | 0 .../app/details/appDetails/LoadingCard.tsx | 0 .../app/details/appDetails/Readme.md | 0 .../appDetails/SecurityVulnerabilityCard.tsx | 0 .../app/details/appDetails/SourceInfo.tsx | 0 .../appDetails/__mocks__/appDetails.mock.ts | 0 .../appDetails/__tests__/GenericInfo.test.tsx | 0 .../app/details/appDetails/appDetails.scss | 0 .../details/appDetails/appDetails.service.ts | 0 .../app/details/appDetails/appDetails.type.ts | 0 .../app/details/appDetails/index.tsx | 0 .../app/details/appDetails/utils.tsx | 0 .../app/details/cIDetails/CIDetails.tsx | 0 .../details/cIDetails/CISecurity.utils.tsx | 0 .../app/details/cIDetails/Readme.md | 0 .../app/details/cIDetails/cIDetails.util.tsx | 0 .../app/details/cIDetails/ciDetails.scss | 0 .../app/details/cIDetails/types.tsx | 0 .../app/details/cdDetails/CDDetails.tsx | 0 .../app/details/cdDetails/cd.type.ts | 0 .../app/details/cdDetails/cdDetail.scss | 0 .../app/details/cdDetails/service.ts | 0 .../app/details/cdDetails/utils.tsx | 0 .../cicdHistory/History.components.tsx | 0 .../app/details/cicdHistory/types.tsx | 0 .../web/src}/components/app/details/main.tsx | 0 .../app/details/metrics/BenchmarkModal.tsx | 0 .../app/details/metrics/DeploymentMetrics.tsx | 0 .../app/details/metrics/DeploymentTable.tsx | 0 .../details/metrics/DeploymentTableModal.tsx | 0 .../metrics/deploymentMetrics.data.json | 0 .../details/metrics/deploymentMetrics.scss | 0 .../metrics/deploymentMetrics.service.ts | 0 .../details/metrics/deploymentMetrics.test.ts | 0 .../metrics/deploymentMetrics.types.ts | 0 .../metrics/deploymentMetrics.util.tsx | 0 .../app/details/testViewer/Contributing.md | 0 .../app/details/testViewer/List.tsx | 0 .../app/details/testViewer/Test.types.ts | 0 .../details/testViewer/TestRunDetails.scss | 0 .../app/details/testViewer/TestRunDetails.tsx | 0 .../app/details/testViewer/TestRunList.tsx | 0 .../app/details/testViewer/service.ts | 0 .../details/triggerView/BranchRegexModal.tsx | 0 .../details/triggerView/CIMaterialModal.tsx | 0 .../triggerView/CiWebhookDebuggingModal.tsx | 0 .../app/details/triggerView/Constants.ts | 0 .../triggerView/EmptyStateCIMaterial.tsx | 0 .../details/triggerView/MaterialSource.tsx | 0 .../PipelineConfigDiff.scss | 0 .../PipelineConfigDiff/PipelineConfigDiff.tsx | 0 .../PipelineConfigDiffStatusTile.tsx | 0 .../triggerView/PipelineConfigDiff/index.ts | 0 .../triggerView/PipelineConfigDiff/types.ts | 0 .../usePipelineDeploymentConfig.ts | 0 .../triggerView/PipelineConfigDiff/utils.tsx | 0 .../app/details/triggerView/TriggerView.tsx | 0 .../details/triggerView/TriggerView.utils.tsx | 0 .../__mocks__/trigger.view.mock.ts | 0 .../triggerView/__mocks__/workflow.mock.ts | 0 .../__mocks__/workflow.sequential.mock.ts | 0 .../__tests__/triggerview.test.tsx | 0 .../__tests__/workflow.service.test.ts | 0 .../triggerView/assets/cdMaterialFooter.png | Bin .../details/triggerView/assets/configDiff.png | Bin .../triggerView/assets/configHeader.png | Bin .../details/triggerView/cdMaterial.readme.md | 0 .../app/details/triggerView/cdMaterial.tsx | 0 .../details/triggerView/cdMaterials.utils.ts | 0 .../app/details/triggerView/ciMaterial.tsx | 0 .../details/triggerView/ciWebhook.service.ts | 0 .../details/triggerView/ciWebhookModal.css | 0 .../app/details/triggerView/config.ts | 0 .../app/details/triggerView/types.ts | 0 .../details/triggerView/workflow.service.ts | 0 .../details/triggerView/workflow/Workflow.tsx | 0 .../workflow/nodes/TriggerExternalCINode.tsx | 0 .../workflow/nodes/TriggerLinkedCINode.tsx | 0 .../triggerView/workflow/nodes/staticNode.tsx | 0 .../workflow/nodes/triggerCDNode.tsx | 0 .../workflow/nodes/triggerCINode.tsx | 0 .../workflow/nodes/triggerPrePostCDNode.tsx | 0 .../workflow/nodes/workflow.utils.tsx | 0 .../web/src}/components/app/grepSSEworker.ts | 0 .../src}/components/app/list-new/AppList.tsx | 0 .../app/list-new/AppListFilters.tsx | 0 .../components/app/list-new/AppListService.ts | 0 .../components/app/list-new/AppListType.ts | 0 .../src}/components/app/list-new/Constants.ts | 0 .../app/list-new/GenericAppList.tsx | 0 .../components/app/list-new/HelmAppList.tsx | 0 .../components/app/list-new/list.utils.ts | 0 .../app/list/DevtronAppListContainer.tsx | 0 .../src}/components/app/list/TriggerUrl.tsx | 0 .../src}/components/app/list/appList.modal.ts | 0 .../src}/components/app/list/constants.tsx | 0 .../components/app/list/emptyView/Empty.tsx | 0 .../components/app/list/emptyView/types.tsx | 0 .../app/list/expandedRow/ExpandedRow.tsx | 0 .../app/list/expandedRow/expandedRow.css | 0 .../components/app/list/expandedRow/types.tsx | 0 .../web/src}/components/app/list/list.scss | 0 .../web/src}/components/app/list/types.tsx | 0 .../web/src}/components/app/service.ts | 0 {src => apps/web/src}/components/app/types.ts | 0 .../web/src}/components/app/typing.d.ts | 0 .../src}/components/bulkEdits/BulkEdits.tsx | 0 .../src}/components/bulkEdits/bulkEdit.scss | 0 .../components/bulkEdits/bulkEdits.type.tsx | 0 .../components/bulkEdits/bulkedit.utils.tsx | 0 .../bulkEdits/bulkedits.service.tsx | 0 .../src}/components/bulkEdits/constants.ts | 0 .../src}/components/cdPipeline/BuildCD.tsx | 0 .../src}/components/cdPipeline/CDPipeline.tsx | 0 .../components/cdPipeline/DeleteCDNode.tsx | 0 .../cdPipeline/PullImageDigestToggle.tsx | 0 .../components/cdPipeline/cdPipeline.scss | 0 .../cdPipeline/cdPipeline.service.ts | 0 .../components/cdPipeline/cdPipeline.types.ts | 0 .../components/cdPipeline/cdpipeline.util.tsx | 0 .../web/src}/components/cdPipeline/types.ts | 0 .../components/cdPipeline/validationRules.ts | 0 .../src}/components/chartRepo/ChartRepo.tsx | 0 .../components/chartRepo/ChartRepoType.tsx | 0 .../src}/components/chartRepo/chartRepo.scss | 0 .../chartRepo/chartRepo.service.tsx | 0 .../components/chartRepo/chartRepo.types.ts | 0 .../src}/components/charts/AdvancedConfig.tsx | 0 .../charts/ChartGroupAdvanceDeploy.tsx | 0 .../charts/ChartGroupDeployments.tsx | 0 .../components/charts/ChartGroupDetails.tsx | 0 .../components/charts/ChartGroupUpdate.tsx | 0 .../components/charts/ChartHeaderFilters.tsx | 0 .../web/src}/components/charts/Charts.tsx | 0 .../components/charts/MultiChartSummary.tsx | 0 .../charts/SavedValues/SavedValuesList.tsx | 0 .../charts/SavedValues/savedValues.scss | 0 .../components/charts/SavedValues/types.ts | 0 .../charts/chartValues/ChartValues.tsx | 0 .../src}/components/charts/charts.helper.ts | 0 .../web/src}/components/charts/charts.scss | 0 .../src}/components/charts/charts.service.ts | 0 .../src}/components/charts/charts.types.tsx | 0 .../src}/components/charts/charts.util.tsx | 0 .../web/src}/components/charts/constants.ts | 0 .../dialogs/ValuesYamlConfirmDialog.tsx | 0 .../charts/discoverChartDetail/About.tsx | 0 .../ChartDeploymentList.tsx | 0 .../ChartVersionSelectorModal.tsx | 0 .../DiscoverChartDetails.scss | 0 .../DiscoverChartDetails.tsx | 0 .../charts/discoverChartDetail/constants.ts | 0 .../charts/discoverChartDetail/types.ts | 0 .../components/charts/list/AddChartSource.tsx | 0 .../components/charts/list/ChartGroup.tsx | 0 .../components/charts/list/ChartListPopUp.tsx | 0 .../charts/list/ChartListPopUpRow.tsx | 0 .../components/charts/list/DiscoverCharts.tsx | 0 .../web/src}/components/charts/list/list.scss | 0 .../charts/modal/ChartGroupBasicDeploy.tsx | 0 .../charts/modal/CreateChartGroup.tsx | 0 .../components/charts/modal/DeployChart.scss | 0 .../charts/modal/deployChart.types.ts | 0 .../src}/components/charts/useChartGroup.ts | 0 .../components/charts/util/ChartGroupCard.tsx | 0 .../components/charts/util/ChartSelect.tsx | 0 .../components/checkList/AllChartsCheck.tsx | 0 .../components/checkList/AllCheckModal.tsx | 0 .../components/checkList/AppCheckList.tsx | 0 .../components/checkList/ChartCheckList.tsx | 0 .../components/checkList/CustomAppDeploy.tsx | 0 .../checkList/GlobalAllCheckModal.tsx | 0 .../components/checkList/GlobalChartCheck.tsx | 0 .../components/checkList/SampleAppDeploy.tsx | 0 .../src}/components/checkList/checklist.scss | 0 .../components/checkList/checklist.service.ts | 0 .../components/checkList/checklist.type.ts | 0 .../src}/components/ciConfig/BuildContext.tsx | 0 .../components/ciConfig/CIAdvancedConfig.tsx | 0 .../components/ciConfig/CIBuildConfigDiff.tsx | 0 .../ciConfig/CIBuildpackBuildOptions.tsx | 0 .../src}/components/ciConfig/CIConfig.scss | 0 .../web/src}/components/ciConfig/CIConfig.tsx | 0 .../components/ciConfig/CIConfig.utils.ts | 0 .../components/ciConfig/CIConfigDiffView.tsx | 0 .../src}/components/ciConfig/CIConfigForm.tsx | 0 .../ciConfig/CIContainerRegistryConfig.tsx | 0 .../ciConfig/CICreateDockerfileOption.tsx | 0 .../ciConfig/CIDockerFileConfig.tsx | 0 .../ciConfig/CISelfDockerBuildOption.tsx | 0 .../CreateDockerFileLanguageOptions.tsx | 0 .../ciConfig/TargetPlatformSelector.tsx | 0 .../components/ciConfig/ciConfigConstant.ts | 0 .../web/src}/components/ciConfig/service.tsx | 0 .../web/src}/components/ciConfig/types.tsx | 0 .../web/src}/components/ciConfig/utils.tsx | 0 .../ciPipeline/CIPipelineAdvanced.tsx | 0 .../ciPipeline/ConfigureWebhook.tsx | 0 .../ciPipeline/ExternalCIPipeline.tsx | 0 .../ciPipeline/LinkedCIPipelineEdit.tsx | 0 .../ciPipeline/LinkedCIPipelineView.tsx | 0 .../web/src}/components/ciPipeline/Readme.md | 0 .../components/ciPipeline/SourceMaterials.tsx | 0 .../Webhook/WebhookDetailsModal.tsx | 0 .../components/ciPipeline/Webhook/types.ts | 0 .../ciPipeline/Webhook/webhook.service.ts | 0 .../ciPipeline/Webhook/webhook.utils.ts | 0 .../ciPipeline/Webhook/webhookDetails.scss | 0 .../ciPipeline/WebhookSelectorCondition.tsx | 0 .../components/ciPipeline/ciPipeline.scss | 0 .../ciPipeline/ciPipeline.service.ts | 0 .../web/src}/components/ciPipeline/types.ts | 0 .../components/ciPipeline/validationRules.ts | 0 .../web/src}/components/cluster/Cluster.md | 0 .../web/src}/components/cluster/Cluster.tsx | 0 .../components/cluster/ClusterCodeEditor.tsx | 0 .../cluster/ClusterComponentModal.tsx | 0 .../src}/components/cluster/ClusterForm.tsx | 0 .../cluster/ClusterInfoStepsModal.tsx | 0 .../cluster/ClusterInstallStatus.tsx | 0 .../cluster/UseNameListDropdown.tsx | 0 .../web/src}/components/cluster/cluster.scss | 0 .../components/cluster/cluster.service.ts | 0 .../src}/components/cluster/cluster.type.ts | 0 .../src}/components/cluster/cluster.util.ts | 0 .../web/src}/components/command/Command.tsx | 0 .../command/CommandErrorBoundary.tsx | 0 .../web/src}/components/command/Readme.md | 0 .../web/src}/components/command/command.css | 0 .../src}/components/command/command.types.ts | 0 .../src}/components/command/command.util.ts | 0 .../web/src}/components/command/index.ts | 0 .../components/common/Accordian/Accordian.tsx | 0 .../common/AppDetailsEmptyState.tsx | 0 .../components/common/Carousel/Carousel.scss | 0 .../components/common/Carousel/Carousel.tsx | 0 .../ClusterMetaDataBar/ClusterMetaData.scss | 0 .../ClusterMetaDataBar/ClusterMetaDataBar.tsx | 0 .../common/ClusterMetaDataBar/types.ts | 0 .../ClusterNotReachableDialog.tsx | 0 .../ClusterNotReachableDialog.type.ts | 0 .../common/ContentCard/ContentCard.scss | 0 .../common/ContentCard/ContentCard.tsx | 0 .../common/ContentCard/ContentCard.types.ts | 0 .../components/common/Contexts/AppContext.ts | 0 .../src}/components/common/Contexts/index.ts | 0 .../common/DatePickers/Calender.tsx | 0 .../DatePickers/DayPickerRangeController.tsx | 0 .../common/DatePickers/calendar.css | 0 .../DeploymentTypeIcon/DeploymentTypeIcon.tsx | 0 .../common/DeprecatedUpdateWarn.tsx | 0 .../Description/GenericDescription.scss | 0 .../common/Description/GenericDescription.tsx | 0 .../DynamicTabs/DynamicTabs.component.tsx | 0 .../common/DynamicTabs/DynamicTabs.scss | 0 .../common/DynamicTabs/DynamicTabs.timer.tsx | 0 .../common/DynamicTabs/DynamicTabs.tsx | 0 .../components/common/DynamicTabs/Types.ts | 0 .../components/common/DynamicTabs/Utils.ts | 0 .../__tests__/DynamicTabs.test.tsx | 0 .../components/common/DynamicTabs/index.ts | 0 .../components/common/DynamicTabs/useTabs.ts | 0 .../common/ExportToCsv/ExportToCsv.tsx | 0 .../common/ExportToCsv/constants.ts | 0 .../common/ExportToCsv/exportToCsv.scss | 0 .../FloatingVariablesSuggestions.tsx | 0 .../SuggestionItem.tsx | 0 .../Suggestions.tsx | 0 .../SuggestionsInfo.tsx | 0 .../FloatingVariablesSuggestions.test.tsx | 0 .../__tests__/Suggestions.test.tsx | 0 .../__tests__/SuggestionsInfo.test.tsx | 0 .../__tests__/SuggestionsItem.test.tsx | 0 .../__tests__/service.test.ts | 0 .../FloatingVariablesSuggestions/constants.ts | 0 .../FloatingVariablesSuggestions/mocks.ts | 0 .../FloatingVariablesSuggestions/service.ts | 0 .../FloatingVariablesSuggestions/types.ts | 0 .../components/common/GitInfoMaterial.tsx | 0 .../common/GitTabs/GitProviderTab.tsx | 0 .../common/GitTabs/GitProviderTabIcons.tsx | 0 .../components/common/GitTabs/constants.ts | 0 .../src}/components/common/GitTabs/types.ts | 0 .../src}/components/common/GitTabs/utils.tsx | 0 .../common/HiddenInput/HiddenInput.tsx | 0 .../components/common/HiddenInput/types.ts | 0 .../components/common/LazyImage/LazyImage.tsx | 0 .../web/src}/components/common/List/List.tsx | 0 .../web/src}/components/common/List/list.scss | 0 .../common/MultiSelect/MultiSelect.tsx | 0 .../components/common/MultiSelect/index.tsx | 0 .../src}/components/common/Select/Select.tsx | 0 .../src}/components/common/Select/select.css | 0 .../src}/components/common/Select/types.ts | 0 .../TLSConnectionForm.component.tsx | 0 .../TLSConnectionForm/TLSInputField.tsx | 0 .../common/TLSConnectionForm/index.ts | 0 .../common/TLSConnectionForm/types.ts | 0 .../common/TLSConnectionForm/utils.ts | 0 .../common/ValidateForm/ValidateForm.tsx | 0 .../common/ValidateForm/validateForm.css | 0 .../src}/components/common/awsRegionList.json | 0 .../common/eaEmptyState/EAEmptyState.tsx | 0 .../common/eaEmptyState/eaEmptyState.css | 0 .../src}/components/common/edge/colors.tsx | 0 .../common/edge/rectangularEdge.tsx | 0 .../components/common/edge/straightEdge.tsx | 0 .../common/emptyState/ChartEmptyState.tsx | 0 .../src}/components/common/errorBoundary.tsx | 0 .../common/formFields/CopyButton.tsx | 0 .../common/formFields/CustomPassword.tsx | 0 .../common/formFields/DevtronSwitch.tsx | 0 .../common/formFields/Typeahead.tsx | 0 .../common/formFields/Widgets/Widgets.scss | 0 .../common/formFields/Widgets/Widgets.tsx | 0 .../common/formFields/Widgets/Widgets.type.ts | 0 .../common/formFields/customPassword.css | 0 .../components/common/helpers/Helpers.tsx | 0 .../common/helpers/compareVersion.ts | 0 .../src}/components/common/helpers/isEmpty.ts | 0 .../components/common/helpers/isSubset.ts | 0 .../src}/components/common/helpers/time.ts | 0 .../src}/components/common/helpers/types.ts | 0 .../src}/components/common/helpers/utils.tsx | 0 .../components/common/helpers/workflowURL.ts | 0 .../components/common/hooks/FileReader.ts | 0 .../hooks/__tests__/FileReader.test.tsx | 0 .../src}/components/common/hooks/constants.ts | 0 .../web/src}/components/common/hooks/types.ts | 0 .../src}/components/common/icons/Icons.tsx | 0 .../web/src}/components/common/index.ts | 0 .../components/common/lineChart/lineChart.css | 0 .../components/common/lineChart/lineChart.tsx | 0 .../components/common/lineChart/types.tsx | 0 .../common/navigation/Navigation.tsx | 0 .../common/navigation/NavigationRoutes.tsx | 0 .../common/navigation/navigation.scss | 0 .../components/common/navigation/types.ts | 0 .../ChartSelectorDropdown.tsx | 0 .../deploymentConfig/DeploymentConfig.tsx | 0 .../DeploymentConfig.utils.ts | 0 .../DeploymentConfigReducer.ts | 0 .../DeploymentConfigFormCTA.tsx | 0 .../DeploymentConfigToolbar.tsx | 0 .../DeploymentTemplateEditorView.tsx | 0 .../DeploymentTemplateGUIView.tsx | 0 .../DeploymentTemplateOptionsTab.tsx | 0 .../DeploymentTemplateOverride.tsx | 0 .../DeploymentTemplateOverrideForm.tsx | 0 .../DeploymentTemplateReadOnlyEditorView.tsx | 0 .../DeploymentTemplateView.component.tsx | 0 .../components/deploymentConfig/Readme.md | 0 .../deploymentConfig/ReadmeConfig.tsx | 0 .../components/deploymentConfig/constants.tsx | 0 .../deploymentConfig/deploymentConfig.scss | 0 .../components/deploymentConfig/service.tsx | 0 .../components/deploymentConfig/types.tsx | 0 .../components/deploymentConfig/utils.tsx | 0 .../src}/components/dockerRegistry/Docker.tsx | 0 .../dockerRegistry/ManageRegistry.tsx | 0 .../dockerRegistry/creatableStyles.ts | 0 .../components/dockerRegistry/dockerType.tsx | 0 .../components/dockerRegistry/service.tsx | 0 .../external-apps/ExternalAppService.ts | 0 .../components/external-apps/ExternalApps.tsx | 0 .../externalArgoApps/ExternalArgoApp.tsx | 0 .../ExternalArgoAppDetail.tsx | 0 .../externalArgoApps/externalArgoApp.type.ts | 0 .../externalLinks/ExternalLinks.component.tsx | 0 .../externalLinks/ExternalLinks.service.ts | 0 .../externalLinks/ExternalLinks.tsx | 0 .../externalLinks/ExternalLinks.type.ts | 0 .../externalLinks/ExternalLinks.utils.ts | 0 .../ExternalLinksCRUD/AddExternalLink.scss | 0 .../ExternalLinksCRUD/AddExternalLink.tsx | 0 .../ExternalLinksCRUD/ConfigureLinkAction.tsx | 0 .../DeleteExternalLinkDialog.tsx | 0 .../ExternalLinksCRUD/IdentifierSelector.tsx | 0 .../externalLinks/ExternalLinksFilters.tsx | 0 .../externalLinks.component.scss | 0 .../externalLinks/externalLinks.scss | 0 .../components/gitOps/GitOpsConfiguration.tsx | 0 .../gitOps/UpdateConfirmationDialog.tsx | 0 .../gitOps/UserGitRepConfiguration.tsx | 0 .../src}/components/gitOps/UserGitRepo.tsx | 0 .../__tests__/GitOpsConfiguration.test.tsx | 0 .../web/src}/components/gitOps/constants.ts | 0 .../web/src}/components/gitOps/gitops.scss | 0 .../src}/components/gitOps/gitops.service.tsx | 0 .../web/src}/components/gitOps/gitops.type.ts | 0 .../web/src}/components/gitOps/utils.ts | 0 .../gitProvider/AddGitHostConfigModal.tsx | 0 .../components/gitProvider/GitProvider.tsx | 0 .../components/gitProvider/gitProvider.scss | 0 .../gitProvider/gitProvider.service.tsx | 0 .../gitProvider/gitProvider.util.tsx | 0 .../web/src}/components/gitProvider/types.ts | 0 .../GlobalConfiguration.tsx | 0 .../GlobalConfigurationProvider.tsx | 0 .../components/globalConfigurations/Readme.md | 0 .../globalConfiguration.type.ts | 0 .../globalConfigurations.scss | 0 .../components/globalConfigurations/types.ts | 0 .../web/src}/components/hostURL/HostURL.tsx | 0 .../web/src}/components/hostURL/hosturl.scss | 0 .../components/hostURL/hosturl.service.ts | 0 .../src}/components/hostURL/hosturl.type.ts | 0 .../hyperion/EnvironmentSelect.scss | 0 .../components/hyperion/EnvironmentSelect.tsx | 0 .../web/src}/components/login/Login.tsx | 0 .../web/src}/components/login/constants.ts | 0 .../web/src}/components/login/login.scss | 0 .../src}/components/login/login.service.ts | 0 .../web/src}/components/login/login.types.ts | 0 .../components/material/CreateMaterial.tsx | 0 .../src}/components/material/MaterialList.tsx | 0 .../src}/components/material/MaterialView.tsx | 0 .../web/src}/components/material/Readme.md | 0 .../components/material/UpdateMaterial.tsx | 0 .../web/src}/components/material/constants.ts | 0 .../src}/components/material/material.scss | 0 .../components/material/material.service.ts | 0 .../components/material/material.types.ts | 0 .../notifications/AddNotification.tsx | 0 .../notifications/ConfigurationTab.tsx | 0 .../notifications/CreateHeaderDetails.tsx | 0 .../notifications/ModifyRecipientsModal.tsx | 0 .../notifications/NotificationTab.tsx | 0 .../notifications/Notifications.tsx | 0 .../notifications/SESConfigModal.tsx | 0 .../notifications/SMTPConfigModal.tsx | 0 .../notifications/SlackConfigModal.tsx | 0 .../notifications/WebhookConfigModal.tsx | 0 .../notifications/notifications.scss | 0 .../notifications/notifications.service.ts | 0 .../notifications/notifications.util.tsx | 0 .../src}/components/notifications/types.tsx | 0 .../onboardingGuide/GuideCommonHeader.tsx | 0 .../OnboardingGuide.constants.ts | 0 .../onboardingGuide/OnboardingGuide.tsx | 0 .../onboardingGuide/OnboardingGuide.type.ts | 0 .../onboardingGuide/onboarding.utils.ts | 0 .../onboardingGuide/onboardingGuide.scss | 0 .../web/src}/components/project/Project.tsx | 0 .../src}/components/project/ProjectList.tsx | 0 .../web/src}/components/project/project.scss | 0 .../web/src}/components/project/service.ts | 0 .../web/src}/components/project/types.ts | 0 .../scopedVariables/DescriptionTab.tsx | 0 .../components/scopedVariables/Descriptor.tsx | 0 .../scopedVariables/DescriptorSearchBar.tsx | 0 .../scopedVariables/SavedVariables.tsx | 0 .../scopedVariables/SavedVariablesContent.tsx | 0 .../scopedVariables/ScopedVariables.tsx | 0 .../scopedVariables/ScopedVariablesEditor.tsx | 0 .../scopedVariables/ScopedVariablesLoader.tsx | 0 .../scopedVariables/UploadScopedVariables.tsx | 0 .../scopedVariables/VariablesList.tsx | 0 .../__tests__/Descriptor.test.tsx | 0 .../__tests__/DescriptorSearchBar.test.tsx | 0 .../__tests__/SavedVariables.test.tsx | 0 .../__tests__/ScopedVariables.test.tsx | 0 .../__tests__/ScopedVariablesEditor.test.tsx | 0 .../__tests__/ScopedVariablesLoader.test.tsx | 0 .../__tests__/UploadScopedVariables.test.tsx | 0 .../__tests__/VariablesList.test.tsx | 0 .../scopedVariables/__tests__/utils.test.tsx | 0 .../components/scopedVariables/constants.tsx | 0 .../src}/components/scopedVariables/mocks.ts | 0 .../components/scopedVariables/service.ts | 0 .../components/scopedVariables/styles.scss | 0 .../src}/components/scopedVariables/types.tsx | 0 .../src}/components/scopedVariables/utils.tsx | 0 .../security/AddCVEPolicy/ExposureList.tsx | 0 .../AddCVEPolicy/VulnerabilityExposure.tsx | 0 .../security/AddCVEPolicy/index.tsx | 0 .../src}/components/security/AddCveModal.tsx | 0 .../components/security/DeleteCVEModal.tsx | 0 .../web/src}/components/security/Readme.md | 0 .../web/src}/components/security/Security.tsx | 0 .../security/SecurityPoliciesTab.tsx | 0 .../components/security/SecurityPolicyApp.tsx | 0 .../security/SecurityPolicyCluster.tsx | 0 .../security/SecurityPolicyEdit.tsx | 0 .../security/SecurityPolicyEnvironment.tsx | 0 .../security/SecurityPolicyGlobal.tsx | 0 .../SecurityScansTab/SecurityScansTab.tsx | 0 .../security/SecurityScansTab/constants.tsx | 0 .../security/SecurityScansTab/types.tsx | 0 .../security/SecurityScansTab/utils.tsx | 0 .../src}/components/security/security.scss | 0 .../components/security/security.service.ts | 0 .../components/security/security.types.ts | 0 .../components/security/security.util.tsx | 0 .../components/util/KeyValueFileInput.tsx | 0 .../web/src}/components/util/URLUtil.ts | 0 .../v2/HelmAppOverview/HelmAppOverview.tsx | 0 .../v2/appDetails/AppDetails.component.tsx | 0 .../v2/appDetails/NodeTreeDetailTab.tsx | 0 .../v2/appDetails/ReleaseStatusEmptyState.tsx | 0 .../v2/appDetails/SyncError.component.tsx | 0 .../appDetails/__mocks__/index.store.mock.ts | 0 .../appDetails/__tests__/index.store.test.ts | 0 .../v2/appDetails/appDetails.api.ts | 0 .../components/v2/appDetails/appDetails.scss | 0 .../v2/appDetails/appDetails.store.ts | 0 .../v2/appDetails/appDetails.type.ts | 0 .../appDetails/ea/EAAppDetail.component.tsx | 0 .../components/v2/appDetails/index.store.ts | 0 .../k8Resource/K8Resource.component.tsx | 0 .../k8Resource/NodeTreeTabList.scss | 0 .../appDetails/k8Resource/NodeTreeTabList.tsx | 0 .../v2/appDetails/k8Resource/k8resources.scss | 0 .../nodeDetail/EphemeralContainerDrawer.tsx | 0 .../nodeDetail/NodeDetail.component.tsx | 0 .../nodeDetail/NodeDetailTabs/CopyToast.tsx | 0 .../CustomLogsModal/CustomLogsModal.tsx | 0 .../CustomLogsModal/customLogsModal.scss | 0 .../NodeDetailTabs/Events.component.tsx | 0 .../nodeDetail/NodeDetailTabs/EventsTable.tsx | 0 .../NodeDetailTabs/LogViewer.component.tsx | 0 .../NodeDetailTabs/Logs.component.tsx | 0 .../NodeDetailTabs/Manifest.component.tsx | 0 .../NodeDetailTabs/Summary.component.tsx | 0 .../NodeDetailTabs/Terminal.component.tsx | 0 .../nodeDetail/NodeDetailTabs/node.type.ts | 0 .../NodeDetailTabs/nodeDetailTab.scss | 0 .../NodeDetailTabs/terminal/Terminal.tsx | 0 .../terminal/TerminalWrapper.component.tsx | 0 .../__mocks__/terminalWrapper.mock.tsx | 0 .../__tests__/Terminal.component.test.tsx | 0 .../__tests__/TerminalWrapper.test.tsx | 0 .../NodeDetailTabs/terminal/constants.ts | 0 .../NodeDetailTabs/terminal/terminal.scss | 0 .../NodeDetailTabs/terminal/terminal.type.ts | 0 .../terminal/terminal.utils.tsx | 0 .../k8Resource/nodeDetail/nodeDetail.api.ts | 0 .../k8Resource/nodeDetail/nodeDetail.css | 0 .../k8Resource/nodeDetail/nodeDetail.type.ts | 0 .../k8Resource/nodeDetail/nodeDetail.util.ts | 0 .../k8Resource/nodeDetail/sampleConfig.json | 0 .../k8Resource/nodeType/Node.component.tsx | 0 .../nodeType/NodeDelete.component.tsx | 0 .../nodeType/NodeTree.component.tsx | 0 .../nodeType/PodHeader.component.tsx | 0 .../k8Resource/nodeType/PodPopup.tsx | 0 .../__mocks__/NodeTree.component.mock.ts | 0 .../__tests__/NodeTree.component.test.ts | 0 .../k8Resource/nodeType/nodeType.scss | 0 .../k8Resource/nodeType/nodeType.util.ts | 0 .../appDetails/k8Resource/nodeType/types.ts | 0 .../k8Resource/nodeType/useNodeTreeReducer.ts | 0 .../logAnalyzer/LogAnalyzer.component.tsx | 0 .../EnvironmentSelector.component.tsx | 0 .../appDetails/sourceInfo/environment.type.ts | 0 .../AppStatusDetailModal.tsx | 0 .../environmentStatus/ChartUsedCard.tsx | 0 .../ConfigStatusModal.component.tsx | 0 .../environmentStatus/CurrentSyncStatus.tsx | 0 .../EnvironmentStatus.component.tsx | 0 .../HelmAppConfigApplyStatusCard.tsx | 0 .../environmentStatus/NotesDrawer.tsx | 0 .../sourceInfo/environmentStatus/constants.ts | 0 .../environmentStatus/environmentStatus.scss | 0 .../environmentStatus/notesDrawer.type.ts | 0 .../rotatePods/RotatePodsModal.component.tsx | 0 .../rotatePods/RotateResponseModal.tsx | 0 .../rotatePods/rotatePodsModal.service.ts | 0 .../rotatePods/rotatePodsModal.type.ts | 0 .../ScaleWorkloadsModal.component.tsx | 0 .../scaleWorkloads/scaleWorkloadsModal.scss | 0 .../scaleWorkloadsModal.service.ts | 0 .../scaleWorkloadsModal.type.ts | 0 .../v2/appDetails/sourceInfo/sourceInfo.css | 0 .../v2/appDetails/sourceInfo/utils.tsx | 0 .../v2/assets/icons/ic-404-error.png | Bin .../components/v2/assets/icons/ic-abort.svg | 0 .../v2/assets/icons/ic-alert-triangle.svg | 0 .../v2/assets/icons/ic-cancelled.svg | 0 .../components/v2/assets/icons/ic-check.svg | 0 .../v2/assets/icons/ic-chevron-down.svg | 0 .../components/v2/assets/icons/ic-close.svg | 0 .../v2/assets/icons/ic-code-compare.svg | 0 .../components/v2/assets/icons/ic-compare.svg | 0 .../components/v2/assets/icons/ic-connect.svg | 0 .../components/v2/assets/icons/ic-copy.svg | 0 .../v2/assets/icons/ic-disconnect.svg | 0 .../v2/assets/icons/ic-dropdown-filled.svg | 0 .../components/v2/assets/icons/ic-edit.svg | 0 .../v2/assets/icons/ic-errorInfo.svg | 0 .../v2/assets/icons/ic-info-filled-gray.svg | 0 .../v2/assets/icons/ic-info-filled.svg | 0 .../v2/assets/icons/ic-info-outline-gray.svg | 0 .../components/v2/assets/icons/ic-locked.svg | 0 .../v2/assets/icons/ic-menu-dot.svg | 0 .../components/v2/assets/icons/ic-object.svg | 0 .../components/v2/assets/icons/ic-play.svg | 0 .../v2/assets/icons/ic-question.svg | 0 .../components/v2/assets/icons/ic-restore.svg | 0 .../v2/assets/icons/ic-scale-down.svg | 0 .../v2/assets/icons/ic-select-container.svg | 0 .../components/v2/assets/icons/ic-stop.svg | 0 .../ChartDeploymentHistory.component.tsx | 0 .../DockerImageDetails.tsx | 0 .../DockerListModal.tsx | 0 .../RollbackConfirmationDialog.tsx | 0 .../chartDeploymentHistory.scss | 0 .../chartDeploymentHistory.service.ts | 0 .../v2/common/ReactSelect.utils.tsx | 0 .../v2/common/ReactSelectCustomization.tsx | 0 .../src}/components/v2/common/message.ui.tsx | 0 .../devtronStackManager/AboutDevtronView.scss | 0 .../devtronStackManager/AboutDevtronView.tsx | 0 .../DevtronStackManager.component.tsx | 0 .../DevtronStackManager.service.tsx | 0 .../DevtronStackManager.tsx | 0 .../DevtronStackManager.type.ts | 0 .../DevtronStackManager.utils.ts | 0 .../SuccessModalComponent.tsx | 0 .../devtronStackManager.component.scss | 0 .../devtronStackManager.scss | 0 .../v2/headers/AppHeader.component.tsx | 0 .../v2/headers/ChartHeader.component.tsx | 0 .../v2/headers/EAHeader.component.tsx | 0 .../components/v2/headers/appHeader.type.ts | 0 .../src}/components/v2/headers/header.scss | 0 {src => apps/web/src}/components/v2/index.tsx | 0 .../components/v2/utils/tabUtils/link.type.ts | 0 .../components/v2/utils/tabUtils/tab.json.ts | 0 .../components/v2/utils/tabUtils/useTab.ts | 0 .../v2/utils/tableUtils/Table.util.tsx | 0 .../components/v2/utils/tableUtils/table.scss | 0 .../v2/utils/tableUtils/table.type.ts | 0 .../components/v2/utils/useSharedState.ts | 0 .../v2/values/ChartValues.component.tsx | 0 .../chartValuesDiff/ChartRepoSelector.tsx | 0 .../chartValuesDiff/ChartValuesEditor.tsx | 0 .../chartValuesDiff/ChartValuesGUIView.tsx | 0 .../ChartValuesView.component.tsx | 0 .../ChartValuesView.constants.ts | 0 .../ChartValuesView.reducer.ts | 0 .../chartValuesDiff/ChartValuesView.scss | 0 .../chartValuesDiff/ChartValuesView.tsx | 0 .../chartValuesDiff/ChartValuesView.type.ts | 0 .../chartValuesDiff/ChartValuesView.utils.ts | 0 .../chartValuesDiff/ChartValuesViewUtils.scss | 0 .../chartValuesDiff/ProjectUpdateModal.tsx | 0 .../v2/values/chartValuesDiff/constant.ts | 0 .../v2/values/common/chartValues.api.ts | 0 .../workflowEditor/CDSuccessModal.tsx | 0 .../workflowEditor/CreateWorkflow.tsx | 0 .../DeprecatedPipelineWarning.tsx | 0 .../workflowEditor/DeprecatedWarningModal.tsx | 0 .../workflowEditor/EmptyWorkflow.tsx | 0 .../NoGitOpsConfiguredWarning.tsx | 0 .../NoGitOpsRepoConfiguredWarning.tsx | 0 .../workflowEditor/PipelineSelect.tsx | 0 .../workflowEditor/SourceTypeCard.tsx | 0 .../workflowEditor/ToggleCDSelectButton.tsx | 0 .../components/workflowEditor/Workflow.tsx | 0 .../workflowEditor/WorkflowOptionsModal.tsx | 0 .../components/workflowEditor/constants.ts | 0 .../src}/components/workflowEditor/index.ts | 0 .../workflowEditor/nodes/CDNode.tsx | 0 .../workflowEditor/nodes/CINode.tsx | 0 .../workflowEditor/nodes/StaticNode.tsx | 0 .../workflowEditor/nodes/WebhookNode.tsx | 0 .../workflowEditor/nodes/WebhookTippyCard.tsx | 0 .../src}/components/workflowEditor/service.ts | 0 .../src}/components/workflowEditor/types.ts | 0 .../src}/components/workflowEditor/utils.tsx | 0 .../workflowEditor.constants.ts | 0 .../workflowEditor/workflowEditor.scss | 0 .../workflowEditor/workflowEditor.tsx | 0 .../web/src}/config/constantMessaging.ts | 0 {src => apps/web/src}/config/constants.ts | 0 {src => apps/web/src}/config/index.ts | 0 {src => apps/web/src}/config/routes.ts | 0 {src => apps/web/src}/config/searchWorker.ts | 0 {src => apps/web/src}/config/utils.ts | 0 {src => apps/web/src}/css/application.scss | 0 {src => apps/web/src}/css/base.scss | 0 {src => apps/web/src}/css/colorPalette.scss | 0 {src => apps/web/src}/css/forms.scss | 0 {src => apps/web/src}/css/formulae.scss | 0 {src => apps/web/src}/css/icons.scss | 0 {src => apps/web/src}/css/modal.scss | 0 {src => apps/web/src}/css/patternfly.scss | 0 {src => apps/web/src}/css/triggerView.scss | 0 {src => apps/web/src}/css/whiteCard.scss | 0 {src => apps/web/src}/css/workflow.scss | 0 {src => apps/web/src}/custom.d.ts | 0 {src => apps/web/src}/index.tsx | 0 {src => apps/web/src}/service-worker.ts | 0 .../web/src}/services/fetchWithFullRoute.ts | 0 {src => apps/web/src}/services/service.ts | 0 .../web/src}/services/service.types.ts | 0 {src => apps/web/src}/setupTests.js | 0 .../web/src}/stories/Button.stories.tsx | 0 .../web/src}/stories/SelectPicker.stories.tsx | 0 .../web/src}/stories/ToastManager.stories.tsx | 0 .../web/src}/stories/useForm.stories.tsx | 0 {src => apps/web/src}/uploadTestReport.py | 0 {src => apps/web/src}/util/MurmurHash3.ts | 0 {src => apps/web/src}/util/Subject.ts | 0 {src => apps/web/src}/util/Util.ts | 0 .../web/src}/util/__tests__/Subject.test.ts | 0 {src => apps/web/src}/vite-env.d.ts | 0 {src => apps/web/src}/yaml.worker.js | 0 .../web/tsconfig.jest.json | 0 tsconfig.json => apps/web/tsconfig.json | 0 vite.config.mts => apps/web/vite.config.mts | 1 - package.json | 164 +- packages/devtron-fe-common-lib/.eslintignore | 69 + packages/devtron-fe-common-lib/.eslintrc.cjs | 151 + packages/devtron-fe-common-lib/package.json | 114 + .../src/Assets/Icon/ic-abort.svg | 34 + .../src/Assets/Icon/ic-aborted.svg | 5 + .../src/Assets/Icon/ic-add.svg | 19 + .../Assets/Icon/ic-appstatus-cancelled.svg | 22 + .../src/Assets/Icon/ic-arrow-backward.svg | 19 + .../Icon/ic-arrow-counter-clockwise.svg | 21 + .../src/Assets/Icon/ic-arrow-down.svg | 19 + .../src/Assets/Icon/ic-arrow-forward.svg | 27 + .../src/Assets/Icon/ic-arrow-out.svg | 19 + .../src/Assets/Icon/ic-arrow-right.svg | 7 + .../src/Assets/Icon/ic-arrow-square-out.svg | 19 + .../src/Assets/Icon/ic-arrow-up-down.svg | 19 + .../src/Assets/Icon/ic-bold.svg | 19 + .../src/Assets/Icon/ic-book-open.svg | 19 + .../src/Assets/Icon/ic-bot.svg | 23 + .../src/Assets/Icon/ic-branch-main.svg | 34 + .../src/Assets/Icon/ic-branch.svg | 19 + .../src/Assets/Icon/ic-branch2.svg | 27 + .../src/Assets/Icon/ic-bug.svg | 7 + .../src/Assets/Icon/ic-calendar.svg | 19 + .../src/Assets/Icon/ic-calender-blank.svg | 19 + .../src/Assets/Icon/ic-caret-down.svg | 19 + .../src/Assets/Icon/ic-caret-left-small.svg | 19 + .../src/Assets/Icon/ic-charts.svg | 19 + .../src/Assets/Icon/ic-chat-circle-dots.svg | 23 + .../src/Assets/Icon/ic-check-all.svg | 21 + .../src/Assets/Icon/ic-check-circle.svg | 25 + .../src/Assets/Icon/ic-check-grey.svg | 21 + .../src/Assets/Icon/ic-check-square.svg | 20 + .../src/Assets/Icon/ic-check.svg | 21 + .../src/Assets/Icon/ic-checked-list.svg | 19 + .../src/Assets/Icon/ic-chevron-down.svg | 21 + .../src/Assets/Icon/ic-circle.svg | 9 + .../src/Assets/Icon/ic-clair.svg | 21 + .../src/Assets/Icon/ic-clock.svg | 19 + .../src/Assets/Icon/ic-close.svg | 25 + .../src/Assets/Icon/ic-code-commit.svg | 19 + .../src/Assets/Icon/ic-code.svg | 19 + .../src/Assets/Icon/ic-collapse-all.svg | 3 + .../src/Assets/Icon/ic-commit.svg | 23 + .../src/Assets/Icon/ic-compare.svg | 22 + .../src/Assets/Icon/ic-copy.svg | 19 + .../src/Assets/Icon/ic-cpu.svg | 20 + .../src/Assets/Icon/ic-cross.svg | 19 + .../src/Assets/Icon/ic-delete-interactive.svg | 19 + .../src/Assets/Icon/ic-diff-file-updated.svg | 10 + .../src/Assets/Icon/ic-disconnected.svg | 29 + .../src/Assets/Icon/ic-discord-fill.svg | 19 + .../src/Assets/Icon/ic-docker.svg | 19 + .../src/Assets/Icon/ic-download.svg | 21 + .../src/Assets/Icon/ic-drag.svg | 24 + .../src/Assets/Icon/ic-dropdown-filled.svg | 19 + .../src/Assets/Icon/ic-edit-file.svg | 20 + .../src/Assets/Icon/ic-enter.svg | 19 + .../src/Assets/Icon/ic-error-cross.svg | 24 + .../src/Assets/Icon/ic-error-exclamation.svg | 22 + .../src/Assets/Icon/ic-error-medium.svg | 22 + .../src/Assets/Icon/ic-error.svg | 4 + .../src/Assets/Icon/ic-errorInfo.svg | 23 + .../src/Assets/Icon/ic-exclamation.svg | 19 + .../src/Assets/Icon/ic-exit-fullscreen.svg | 19 + .../src/Assets/Icon/ic-expand-all.svg | 3 + .../src/Assets/Icon/ic-expand.svg | 19 + .../src/Assets/Icon/ic-feedback.svg | 19 + .../src/Assets/Icon/ic-file-text.svg | 19 + .../src/Assets/Icon/ic-files.svg | 19 + .../src/Assets/Icon/ic-filter-applied.svg | 20 + .../src/Assets/Icon/ic-filter.svg | 19 + .../src/Assets/Icon/ic-folder.svg | 19 + .../src/Assets/Icon/ic-fullscreen-2.svg | 19 + .../src/Assets/Icon/ic-fullscreen.svg | 19 + .../src/Assets/Icon/ic-header.svg | 21 + .../src/Assets/Icon/ic-help-outline.svg | 19 + .../src/Assets/Icon/ic-help.svg | 19 + .../src/Assets/Icon/ic-image.svg | 20 + .../src/Assets/Icon/ic-in-progress.svg | 10 + .../Assets/Icon/ic-info-filled-override.svg | 20 + .../src/Assets/Icon/ic-info-filled.svg | 20 + .../src/Assets/Icon/ic-info-outlined.svg | 29 + .../src/Assets/Icon/ic-italic.svg | 19 + .../src/Assets/Icon/ic-k8s-job.svg | 19 + .../src/Assets/Icon/ic-lego-block.svg | 36 + .../src/Assets/Icon/ic-lines.svg | 3 + .../src/Assets/Icon/ic-link.svg | 19 + .../src/Assets/Icon/ic-locked.svg | 5 + .../Assets/Icon/ic-mechanical-operation.svg | 84 + .../src/Assets/Icon/ic-megaphone.svg | 19 + .../src/Assets/Icon/ic-memory.svg | 19 + .../src/Assets/Icon/ic-message.svg | 19 + .../src/Assets/Icon/ic-minus.svg | 19 + .../src/Assets/Icon/ic-nav-rocket.svg | 19 + .../src/Assets/Icon/ic-onboarding.svg | 19 + .../src/Assets/Icon/ic-open-box.svg | 19 + .../src/Assets/Icon/ic-open-in-new.svg | 19 + .../src/Assets/Icon/ic-ordered-list.svg | 19 + .../src/Assets/Icon/ic-pencil.svg | 19 + .../src/Assets/Icon/ic-person.svg | 22 + .../src/Assets/Icon/ic-progressing.svg | 22 + .../src/Assets/Icon/ic-pull-request.svg | 19 + .../src/Assets/Icon/ic-pulsate-status.svg | 21 + .../src/Assets/Icon/ic-quote.svg | 19 + .../src/Assets/Icon/ic-regex.svg | 19 + .../src/Assets/Icon/ic-release-open.svg | 19 + .../src/Assets/Icon/ic-rocket-fail.svg | 20 + .../src/Assets/Icon/ic-rotate-devtron.svg | 119 + .../src/Assets/Icon/ic-search.svg | 22 + .../src/Assets/Icon/ic-sort-arrow-down.svg | 19 + .../src/Assets/Icon/ic-stamp.svg | 9 + .../src/Assets/Icon/ic-strikethrough.svg | 19 + .../src/Assets/Icon/ic-success.svg | 4 + .../src/Assets/Icon/ic-tag.svg | 20 + .../src/Assets/Icon/ic-timeout-red.svg | 21 + .../src/Assets/Icon/ic-timer.svg | 19 + .../src/Assets/Icon/ic-trivy.svg | 25 + .../src/Assets/Icon/ic-unordered-list.svg | 22 + .../Assets/Icon/ic-view-variable-toggle.svg | 24 + .../src/Assets/Icon/ic-visibility-on.svg | 20 + .../Icon/ic-vulnerability-not-found.svg | 65 + .../src/Assets/Icon/ic-warning.svg | 23 + .../src/Assets/Icon/ic-webhook.svg | 31 + .../src/Assets/Icon/ic-world.svg | 19 + .../src/Assets/Icon/inject-tag.svg | 21 + .../src/Assets/Img/app-not-deployed.png | Bin 0 -> 51038 bytes .../src/Assets/Img/delete-medium.svg | 26 + .../src/Assets/Img/empty-noresult@2x.png | Bin 0 -> 71740 bytes .../src/Assets/Img/ic-empty-error@2x.png | Bin 0 -> 26446 bytes .../src/Assets/Img/ic-loading-failure.png | Bin 0 -> 84391 bytes .../src/Assets/Img/ic-not-authorized.svg | 78 + .../src/Assets/Img/ic-not-found.svg | 176 + .../src/Assets/Img/ic-page-not-found.svg | 81 + .../src/Assets/Img/lifebuoy.png | Bin 0 -> 4564 bytes .../src/Assets/Img/no-artifact@2x.png | Bin 0 -> 25106 bytes .../src/Common/AddCDButton/AddCDButton.tsx | 83 + .../src/Common/AddCDButton/index.ts | 18 + .../src/Common/AddCDButton/types.ts | 53 + .../src/Common/AddCDButton/utils.tsx | 51 + .../devtron-fe-common-lib/src/Common/Api.ts | 267 + .../src/Common/AppStatus/AppStatus.tsx | 99 + .../src/Common/AppStatus/constants.ts | 53 + .../src/Common/AppStatus/index.ts | 18 + .../src/Common/AppStatus/types.ts | 28 + .../src/Common/AppStatus/utils.ts | 31 + .../src/Common/BreadCrumb/BreadCrumb.tsx | 124 + .../src/Common/BreadCrumb/BreadcrumbStore.tsx | 46 + .../src/Common/BreadCrumb/Types.ts | 50 + .../src/Common/CIPipeline.Types.ts | 285 + .../Common/ChartVersionAndTypeSelector.tsx | 96 + .../src/Common/Checkbox.tsx | 52 + .../ClipboardButton/ClipboardButton.tsx | 97 + .../__tests__/ClipboardButton.test.tsx | 59 + .../src/Common/ClipboardButton/types.ts | 25 + .../Common/CodeEditor/CodeEditor.reducer.ts | 49 + .../src/Common/CodeEditor/CodeEditor.tsx | 525 + .../src/Common/CodeEditor/codeEditor.scss | 173 + .../src/Common/CodeEditor/index.ts | 18 + .../src/Common/CodeEditor/types.ts | 127 + .../src/Common/Common.service.ts | 513 + .../src/Common/Constants.ts | 553 + .../src/Common/CustomInput/CustomInput.tsx | 156 + .../src/Common/CustomInput/Types.ts | 47 + .../src/Common/CustomInput/index.ts | 18 + .../CustomTagSelector/PropagateTagInfo.tsx | 60 + .../ResizableTagTextArea.tsx | 105 + .../Common/CustomTagSelector/TagDetails.tsx | 99 + .../CustomTagSelector/TagLabelSelect.tsx | 73 + .../TagLabelValueSelector.tsx | 210 + .../CustomTagSelector/TagSelector.utils.ts | 86 + .../src/Common/CustomTagSelector/Types.ts | 92 + .../CustomTagSelector/ValidationRules.ts | 70 + .../src/Common/CustomTagSelector/index.ts | 22 + .../DebouncedSearch/DebouncedSearch.tsx | 94 + .../src/Common/DebouncedSearch/Types.ts | 29 + .../src/Common/DebouncedSearch/Utils.ts | 35 + .../__tests__/DebouncedSearch.test.tsx | 77 + .../DeleteComponentModal/DeleteComponent.tsx | 116 + .../src/Common/DeleteComponentModal/types.ts | 34 + .../DevtronProgressing/DevtronProgressing.tsx | 25 + .../src/Common/DevtronProgressing/index.ts | 17 + .../src/Common/DevtronProgressing/types.ts | 20 + .../src/Common/Dialogs/ConfirmationDialog.tsx | 51 + .../src/Common/Dialogs/DeleteDialog.tsx | 134 + .../src/Common/Dialogs/DialogForm.tsx | 98 + .../src/Common/Dialogs/ForceDeleteDialog.tsx | 42 + .../src/Common/Dialogs/Types.ts | 80 + .../src/Common/Dialogs/index.ts | 20 + .../DraggableWrapper/DraggableButton.tsx | 30 + .../DraggableWrapper/DraggableWrapper.tsx | 137 + .../src/Common/DraggableWrapper/index.ts | 19 + .../src/Common/DraggableWrapper/types.ts | 50 + .../src/Common/Drawer/Drawer.scss | 56 + .../src/Common/Drawer/Drawer.tsx | 71 + .../Common/EmptyState/GenericEmptyState.tsx | 96 + .../EmptyState/GenericFilterEmptyState.tsx | 50 + .../src/Common/EmptyState/emptyState.scss | 95 + .../src/Common/EmptyState/types.ts | 37 + .../src/Common/ErrorPage.tsx | 83 + .../src/Common/ErrorScreenManager.tsx | 124 + .../src/Common/ErrorScreenNotAuthorized.tsx | 30 + .../GenericDescription/GenericDescription.tsx | 382 + .../src/Common/GenericDescription/constant.ts | 18 + .../genericDescription.scss | 148 + .../src/Common/GenericDescription/index.ts | 18 + .../src/Common/GenericDescription/types.ts | 31 + .../src/Common/Grid/Grid.tsx | 60 + .../src/Common/Grid/types.ts | 27 + .../src/Common/Helper.tsx | 939 ++ .../Hooks/UseClickOutside/UseClickOutside.tsx | 31 + .../UseRegisterShortcut.tsx | 22 + .../UseRegisterShortcutContext.tsx | 20 + .../UseRegisterShortcutProvider.tsx | 35 + .../Common/Hooks/UseRegisterShortcut/index.ts | 18 + .../Common/Hooks/UseRegisterShortcut/types.ts | 24 + .../Hooks/UseSuperAdmin/UseSuperAdmin.tsx | 40 + .../src/Common/Hooks/UseSuperAdmin/types.ts | 19 + .../Hooks/UseWindowSize/UseWindowSize.tsx | 45 + .../src/Common/Hooks/index.ts | 22 + .../src/Common/Hooks/useStateFilters/index.ts | 18 + .../src/Common/Hooks/useStateFilters/types.ts | 38 + .../Hooks/useStateFilters/useStateFilters.tsx | 122 + .../Common/Hooks/useUrlFilters/constants.ts | 25 + .../src/Common/Hooks/useUrlFilters/index.ts | 18 + .../src/Common/Hooks/useUrlFilters/types.ts | 77 + .../Hooks/useUrlFilters/useUrlFilters.ts | 166 + .../src/Common/ImageTags.Types.ts | 59 + .../src/Common/ImageTags.tsx | 583 + .../src/Common/InfoColorBar/InfoColourbar.tsx | 105 + .../Common/InfoColorBar/infoColourBar.scss | 44 + .../src/Common/Markdown/MarkDown.tsx | 111 + .../src/Common/Markdown/Types.ts | 23 + .../src/Common/Markdown/constant.ts | 63 + .../src/Common/Markdown/index.ts | 18 + .../src/Common/Markdown/markdown.scss | 79 + .../src/Common/Modals/Modal.tsx | 89 + .../src/Common/Modals/VisibleModal.tsx | 91 + .../src/Common/Modals/VisibleModal2.tsx | 67 + .../src/Common/MultiSelectCustomization.tsx | 218 + .../Common/Pagination/PageSizeSelector.tsx | 94 + .../src/Common/Pagination/Pagination.tsx | 142 + .../src/Common/Pagination/constants.ts | 22 + .../src/Common/Pagination/index.tsx | 20 + .../src/Common/Pagination/pagination.scss | 131 + .../src/Common/Pagination/types.ts | 71 + .../src/Common/Pagination/utils.tsx | 40 + .../src/Common/Policy.Types.ts | 88 + .../src/Common/PopupMenu.tsx | 219 + .../src/Common/Progressing.tsx | 66 + .../src/Common/RJSF/Form.tsx | 46 + .../src/Common/RJSF/common/FieldRow.tsx | 49 + .../src/Common/RJSF/common/types.ts | 26 + .../src/Common/RJSF/config.ts | 51 + .../src/Common/RJSF/constants.ts | 29 + .../src/Common/RJSF/index.ts | 20 + .../src/Common/RJSF/rjsfForm.scss | 89 + .../RJSF/templates/ArrayFieldItemTemplate.tsx | 47 + .../RJSF/templates/ArrayFieldTemplate.tsx | 100 + .../src/Common/RJSF/templates/BaseInput.tsx | 32 + .../templates/ButtonTemplates/AddButton.tsx | 47 + .../ButtonTemplates/RemoveButton.tsx | 26 + .../ButtonTemplates/SubmitButton.tsx | 30 + .../RJSF/templates/ButtonTemplates/index.ts | 19 + .../src/Common/RJSF/templates/Field.tsx | 77 + .../RJSF/templates/FieldErrorTemplate.tsx | 42 + .../RJSF/templates/ObjectFieldTemplate.tsx | 143 + .../src/Common/RJSF/templates/TitleField.tsx | 32 + .../templates/WrapIfAdditionalTemplate.tsx | 67 + .../src/Common/RJSF/templates/index.ts | 25 + .../src/Common/RJSF/types.ts | 41 + .../src/Common/RJSF/utils.tsx | 194 + .../src/Common/RJSF/widgets/Checkbox.tsx | 60 + .../src/Common/RJSF/widgets/Select.tsx | 93 + .../src/Common/RJSF/widgets/index.ts | 18 + .../src/Common/RadioGroup.tsx | 37 + .../src/Common/RadioGroup/RadioGroup.tsx | 103 + .../src/Common/RadioGroup/radioGroup.scss | 62 + .../src/Common/RadioGroupItem.tsx | 44 + .../src/Common/Reload.tsx | 42 + .../src/Common/ResizableTextarea.tsx | 89 + .../Common/SearchBar/SearchBar.component.tsx | 162 + .../src/Common/SearchBar/index.ts | 18 + .../src/Common/SearchBar/searchBar.scss | 45 + .../src/Common/SearchBar/types.ts | 67 + .../src/Common/SearchBar/utils.ts | 11 + .../SegmentedBarChart/SegmentedBarChart.tsx | 63 + .../src/Common/SegmentedBarChart/constants.ts | 21 + .../src/Common/SegmentedBarChart/index.ts | 18 + .../src/Common/SegmentedBarChart/styles.scss | 29 + .../src/Common/SegmentedBarChart/types.ts | 28 + .../src/Common/Select/Select.tsx | 268 + .../src/Common/Select/select.scss | 163 + .../src/Common/Select/types.ts | 47 + .../src/Common/ServerError.ts | 51 + .../SortableTableHeaderCell.tsx | 78 + .../Common/SortableTableHeaderCell/index.ts | 18 + .../Common/SortableTableHeaderCell/types.ts | 52 + .../src/Common/TippyCustomized.tsx | 194 + .../src/Common/Toggle/Toggle.scss | 122 + .../src/Common/Toggle/Toggle.tsx | 66 + .../ShortcutKeyComboTooltipContent.tsx | 18 + .../src/Common/Tooltip/Tooltip.tsx | 49 + .../src/Common/Tooltip/constants.tsx | 3 + .../src/Common/Tooltip/index.ts | 3 + .../src/Common/Tooltip/styles.scss | 19 + .../src/Common/Tooltip/types.ts | 79 + .../devtron-fe-common-lib/src/Common/Types.ts | 1000 ++ .../devtron-fe-common-lib/src/Common/index.ts | 72 + .../src/Common/utils.tsx | 3 + .../src/Pages/App/AppConfigurations/index.ts | 1 + .../src/Pages/App/AppConfigurations/utils.ts | 14 + .../src/Pages/App/index.ts | 1 + .../src/Pages/CDPipeline/index.tsx | 1 + .../src/Pages/CDPipeline/types.tsx | 89 + .../Authorization/constants.ts | 37 + .../Authorization/index.ts | 21 + .../Authorization/service.ts | 34 + .../UserRoleGroupTableRow.tsx | 99 + .../UserRoleGroupsTable.component.tsx | 73 + .../components/UserRoleGroupsTable/index.ts | 18 + .../components/UserRoleGroupsTable/types.ts | 60 + .../userRoleGroupsTable.scss | 39 + .../Authorization/shared/components/index.ts | 17 + .../Authorization/shared/index.ts | 17 + .../Authorization/types.ts | 90 + .../Authorization/utils.ts | 7 + .../BuildInfra/BuildInfraConfigForm.tsx | 143 + .../BuildInfra/BuildInfraDescriptionField.tsx | 60 + .../BuildInfra/BuildInfraFormAction.tsx | 120 + .../BuildInfra/BuildInfraFormItem.tsx | 71 + .../BuildInfra/BuildInfraProfileNameField.tsx | 48 + .../BuildInfra/Descriptor.tsx | 47 + .../BuildInfra/Footer.tsx | 72 + .../GlobalConfigurations/BuildInfra/Readme.md | 5 + .../BuildInfra/constants.tsx | 154 + .../GlobalConfigurations/BuildInfra/index.ts | 23 + .../BuildInfra/services.tsx | 183 + .../GlobalConfigurations/BuildInfra/types.tsx | 355 + .../GlobalConfigurations/BuildInfra/utils.tsx | 529 + .../DeploymentCharts/basicViewSchema.json | 73 + .../DeploymentCharts/index.ts | 2 + .../DeploymentCharts/types.ts | 26 + .../DeploymentCharts/utils.ts | 49 + .../ScopedVariables/index.ts | 17 + .../ScopedVariables/types.ts | 34 + .../src/Pages/GlobalConfigurations/index.ts | 20 + .../src/Pages/ResourceBrowser/Helper.tsx | 67 + .../ResourceBrowser/ResourceBrowser.Types.ts | 40 + .../src/Pages/ResourceBrowser/index.ts | 18 + .../devtron-fe-common-lib/src/Pages/index.ts | 20 + .../src/Shared/API/APIQueuing.ts | 86 + .../src/Shared/API/index.ts | 17 + .../APIResponseHandler/APIResponseHandler.tsx | 71 + .../APIResponseHandler/constants.tsx | 20 + .../Components/APIResponseHandler/index.ts | 18 + .../Components/APIResponseHandler/types.tsx | 75 + .../ActivityIndicator/ActivityIndicator.tsx | 27 + .../Components/ActivityIndicator/index.ts | 17 + .../Components/ActivityIndicator/types.ts | 21 + .../AnnouncementBanner/AnnouncementBanner.tsx | 83 + .../Components/AnnouncementBanner/index.ts | 18 + .../ArtifactInfoModal.component.tsx | 145 + .../Components/ArtifactInfoModal/index.tsx | 18 + .../Components/ArtifactInfoModal/types.ts | 34 + .../BulkSelection/BulkSelection.tsx | 97 + .../BulkSelectionDropdownItems.tsx | 50 + .../BulkSelection/BulkSelectionProvider.tsx | 204 + .../Components/BulkSelection/constants.tsx | 30 + .../Shared/Components/BulkSelection/index.ts | 20 + .../Shared/Components/BulkSelection/types.tsx | 85 + .../Components/Button/Button.component.tsx | 201 + .../src/Shared/Components/Button/button.scss | 234 + .../src/Shared/Components/Button/constants.ts | 35 + .../src/Shared/Components/Button/index.ts | 2 + .../src/Shared/Components/Button/types.ts | 146 + .../src/Shared/Components/Button/utils.ts | 30 + .../ButtonWithLoader/ButtonWithLoader.tsx | 61 + .../Components/ButtonWithLoader/index.ts | 17 + .../ButtonWithSelector/ButtonWithSelector.tsx | 81 + .../buttonWithSelector.scss | 27 + .../Components/ButtonWithSelector/index.ts | 17 + .../Components/ButtonWithSelector/types.ts | 28 + .../CICDHistory/AppStatusDetailsChart.tsx | 156 + .../Components/CICDHistory/Artifacts.tsx | 268 + .../Components/CICDHistory/CDEmptyState.tsx | 71 + .../CICDHistory/CiPipelineSourceConfig.tsx | 185 + .../CICDHistory/DeploymentDetailSteps.tsx | 179 + .../DeploymentHistoryConfigList.component.tsx | 112 + .../DeploymentHistoryDetailedView.tsx | 132 + .../DeploymentHistoryDiffView.tsx | 206 + .../DeploymentHistoryHeader.tsx | 174 + .../DeploymentHistorySidebar.tsx | 77 + .../DeploymentHistoryDiff/index.tsx | 19 + .../DeploymentHistoryDiff/styles.scss | 5 + .../DeploymentHistoryDiff/types.tsx | 56 + .../CICDHistory/DeploymentStatusBreakdown.tsx | 111 + .../CICDHistory/DeploymentStatusDetailRow.tsx | 220 + .../CICDHistory/ErrorInfoStatusBar.tsx | 46 + .../CICDHistory/History.components.tsx | 229 + .../CICDHistory/LogStageAccordion.tsx | 126 + .../Components/CICDHistory/LogsRenderer.scss | 65 + .../Components/CICDHistory/LogsRenderer.tsx | 626 + .../Shared/Components/CICDHistory/Sidebar.tsx | 415 + .../StatusFilterButtonComponent.scss | 21 + .../StatusFilterButtonComponent.tsx | 155 + .../Components/CICDHistory/TriggerOutput.tsx | 940 ++ .../Components/CICDHistory/cicdHistory.scss | 305 + .../Components/CICDHistory/constants.tsx | 84 + .../Shared/Components/CICDHistory/index.tsx | 32 + .../Shared/Components/CICDHistory/service.tsx | 306 + .../Shared/Components/CICDHistory/types.tsx | 784 + .../Shared/Components/CICDHistory/utils.tsx | 205 + .../Shared/Components/Collapse/Collapse.tsx | 6 + .../src/Shared/Components/Collapse/index.ts | 2 + .../src/Shared/Components/Collapse/types.ts | 7 + .../CollapsibleList.component.tsx | 104 + .../CollapsibleList/CollapsibleList.scss | 24 + .../CollapsibleList/CollapsibleList.types.ts | 98 + .../Components/CollapsibleList/index.ts | 2 + .../CommitChipCell/CommitChipCell.tsx | 40 + .../Shared/Components/CommitChipCell/index.ts | 18 + .../Shared/Components/CommitChipCell/types.ts | 22 + .../Components/DatePicker/DateTimePicker.tsx | 130 + .../Components/DatePicker/MonthlySelect.tsx | 38 + .../DatePicker/SingleDatePickerComponent.tsx | 77 + .../Components/DatePicker/TimeSelect.tsx | 54 + .../Shared/Components/DatePicker/constants.ts | 206 + .../Components/DatePicker/datePicker.scss | 103 + .../src/Shared/Components/DatePicker/index.ts | 23 + .../src/Shared/Components/DatePicker/types.ts | 144 + .../Shared/Components/DatePicker/utils.tsx | 115 + .../DeploymentConfigDiff.component.tsx | 29 + .../DeploymentConfigDiff.scss | 49 + .../DeploymentConfigDiff.types.ts | 128 + .../DeploymentConfigDiff.utils.tsx | 612 + .../DeploymentConfigDiffAccordion.tsx | 34 + .../DeploymentConfigDiffMain.tsx | 197 + .../DeploymentConfigDiffNavigation.tsx | 145 + .../Components/DeploymentConfigDiff/index.ts | 3 + .../DetectBottom/DetectBottom.component.tsx | 50 + .../Shared/Components/DetectBottom/index.ts | 17 + .../EditImageFormField.scss | 20 + .../EditImageFormField/EditImageFormField.tsx | 234 + .../EditImageFormField/constants.ts | 7 + .../Components/EditImageFormField/index.ts | 2 + .../Components/EditImageFormField/types.ts | 42 + .../EditableTextArea/EditableTextArea.tsx | 129 + .../Components/EditableTextArea/index.ts | 18 + .../Components/EditableTextArea/types.ts | 42 + .../EnvironmentSelector.component.tsx | 91 + .../EnvironmentSelector/constants.ts | 21 + .../Components/EnvironmentSelector/index.ts | 17 + .../Components/EnvironmentSelector/service.ts | 33 + .../Components/EnvironmentSelector/types.ts | 47 + .../Components/EnvironmentSelector/utils.ts | 61 + .../src/Shared/Components/Error/ErrorBar.tsx | 136 + .../src/Shared/Components/Error/index.tsx | 18 + .../src/Shared/Components/Error/types.tsx | 26 + .../src/Shared/Components/Error/utils.tsx | 30 + .../ExcludedImageNode/ExcludedImageNode.tsx | 32 + .../Components/ExcludedImageNode/index.ts | 17 + .../Components/ExcludedImageNode/types.ts | 19 + .../FeatureDescriptionModal.tsx | 90 + .../FeatureTitleWithInfo.tsx | 101 + .../Components/FeatureDescription/constant.ts | 25 + .../featureDescription.scss | 22 + .../Components/FeatureDescription/index.ts | 18 + .../Components/FeatureDescription/types.ts | 41 + .../Components/FeatureDescription/utils.ts | 26 + .../FilterChips/FilterChips.component.tsx | 141 + .../Shared/Components/FilterChips/index.ts | 18 + .../Shared/Components/FilterChips/types.ts | 86 + .../GenericSectionErrorState.component.tsx | 58 + .../GenericSectionErrorState/index.ts | 18 + .../GenericSectionErrorState/types.ts | 54 + .../GettingStartedCard/GettingStarted.tsx | 71 + .../GettingStartedCard/gettingStarted.scss | 38 + .../Components/GettingStartedCard/service.ts | 23 + .../Components/GettingStartedCard/types.ts | 34 + .../GitCommitInfoGeneric.tsx | 408 + .../GitMaterialInfoHeader.tsx | 66 + .../GitCommitInfoGeneric/constants.ts | 4 + .../gitCommitInfoGeneric.scss | 12 + .../Components/GitCommitInfoGeneric/index.tsx | 17 + .../Components/GitCommitInfoGeneric/types.tsx | 27 + .../HeaderWithCreateButon.tsx | 125 + .../HeaderWithCreateButton.scss | 35 + .../Header/HeaderWithCreateButton/index.ts | 17 + .../src/Shared/Components/Header/HelpNav.tsx | 154 + .../Shared/Components/Header/PageHeader.tsx | 271 + .../src/Shared/Components/Header/constants.ts | 53 + .../src/Shared/Components/Header/index.ts | 18 + .../Shared/Components/Header/pageHeader.css | 30 + .../src/Shared/Components/Header/service.ts | 52 + .../src/Shared/Components/Header/types.ts | 72 + .../src/Shared/Components/Header/utils.ts | 35 + .../IframeContainer.component.tsx | 41 + .../IframeContainer/IframeElement.scss | 24 + .../IframeContainer/IframeElement.tsx | 111 + .../Components/IframeContainer/index.ts | 17 + .../Components/IframeContainer/types.ts | 33 + .../ImageCard/ArtifactInfo/ArtifactInfo.tsx | 118 + .../ImageCard/ArtifactInfo/index.ts | 17 + .../ImageCard/ArtifactInfo/types.ts | 19 + .../Shared/Components/ImageCard/ImageCard.tsx | 60 + .../DeploymentEnvState/DeploymentEnvState.tsx | 43 + .../DeploymentEnvState/constants.tsx | 22 + .../DeploymentEnvState/index.ts | 17 + .../DeploymentEnvState/types.tsx | 28 + .../DeploymentEnvState/utils.tsx | 43 + .../SequentialCDCardTitle.tsx | 116 + .../ImageCard/SequentialCDCardTitle/index.ts | 17 + .../src/Shared/Components/ImageCard/index.ts | 19 + .../src/Shared/Components/ImageCard/types.ts | 59 + .../ImageCardAccordion/ImageCardAccordion.tsx | 129 + .../Components/ImageCardAccordion/index.ts | 17 + .../Components/ImageCardAccordion/types.ts | 47 + .../ImageChipCell/ImageChipCell.component.tsx | 67 + .../ImageChipCell/imageChipCell.scss | 25 + .../Shared/Components/ImageChipCell/index.ts | 18 + .../Shared/Components/ImageChipCell/types.ts | 34 + .../ImageWithFallback.component.tsx | 51 + .../Components/ImageWithFallback/index.ts | 18 + .../Components/ImageWithFallback/types.ts | 28 + .../InfoIconTippy/InfoIconTippy.tsx | 62 + .../Shared/Components/InfoIconTippy/index.ts | 18 + .../Components/KeyValueList/KeyValueList.tsx | 147 + .../Components/KeyValueList/constants.ts | 22 + .../Shared/Components/KeyValueList/index.ts | 18 + .../Shared/Components/KeyValueList/types.ts | 73 + .../KeyValueTable/KeyValueTable.component.tsx | 481 + .../KeyValueTable/KeyValueTable.scss | 111 + .../KeyValueTable/KeyValueTable.types.ts | 144 + .../Components/KeyValueTable/constants.ts | 2 + .../Shared/Components/KeyValueTable/index.ts | 18 + .../src/Shared/Components/LogoutCard.tsx | 59 + .../MaterialHistory.component.tsx | 102 + .../Components/MaterialHistory/index.ts | 18 + .../Components/MaterialHistory/types.ts | 25 + .../ModalSidebarPanel.component.tsx | 50 + .../Components/ModalSidebarPanel/index.ts | 18 + .../Components/ModalSidebarPanel/types.ts | 25 + .../Shared/Components/Plugin/PluginCard.tsx | 117 + .../Plugin/PluginCardSkeletonList.tsx | 49 + .../Plugin/PluginImageContainer.tsx | 28 + .../Shared/Components/Plugin/PluginList.tsx | 102 + .../Components/Plugin/PluginListContainer.tsx | 267 + .../Components/Plugin/PluginTagSelect.tsx | 118 + .../Components/Plugin/PluginTagsContainer.tsx | 35 + .../src/Shared/Components/Plugin/constants.ts | 29 + .../src/Shared/Components/Plugin/index.ts | 23 + .../Plugin/pluginListContainer.scss | 27 + .../src/Shared/Components/Plugin/service.tsx | 121 + .../src/Shared/Components/Plugin/types.ts | 251 + .../src/Shared/Components/Plugin/utils.tsx | 145 + .../Components/ReactSelect/constants.ts | 107 + .../Shared/Components/ReactSelect/index.ts | 18 + .../Shared/Components/ReactSelect/utils.tsx | 269 + .../ScannedByToolModal/ScannedByToolModal.tsx | 47 + .../Components/ScannedByToolModal/index.ts | 17 + .../Components/ScannedByToolModal/types.ts | 21 + .../Security/SecurityModal/SecurityModal.tsx | 187 + .../components/IndexedTextDisplay.tsx | 48 + .../SecurityModal/components/InfoCard.tsx | 40 + .../components/OpenDetailViewButton.tsx | 20 + .../SecurityModal/components/Table.tsx | 127 + .../SecurityModal/components/index.ts | 7 + .../SecurityModal/config/CodeScan.tsx | 506 + .../SecurityModal/config/EmptyState.tsx | 26 + .../SecurityModal/config/ImageScan.tsx | 383 + .../SecurityModal/config/InfoCard.tsx | 25 + .../config/KubernetesManifest.tsx | 124 + .../Security/SecurityModal/config/Sidebar.ts | 84 + .../Security/SecurityModal/config/Table.tsx | 33 + .../Security/SecurityModal/config/index.ts | 7 + .../Security/SecurityModal/constants.tsx | 92 + .../Security/SecurityModal/index.ts | 24 + .../Security/SecurityModal/service.ts | 33 + .../Security/SecurityModal/styles.scss | 18 + .../Security/SecurityModal/types.ts | 316 + .../Security/SecurityModal/utils.tsx | 271 + .../SecuritySummaryCard.tsx | 77 + .../Security/SecuritySummaryCard/index.tsx | 1 + .../Security/SecuritySummaryCard/types.tsx | 13 + .../Vulnerabilities/Vulnerabilities.tsx | 131 + .../Security/Vulnerabilities/index.ts | 18 + .../Security/Vulnerabilities/types.ts | 45 + .../Security/Vulnerabilities/utils.ts | 100 + .../src/Shared/Components/Security/index.tsx | 4 + .../src/Shared/Components/Security/utils.tsx | 25 + .../SelectPicker/FilterSelectPicker.tsx | 98 + .../SelectPicker/SelectPicker.component.tsx | 423 + .../Shared/Components/SelectPicker/common.tsx | 296 + .../Shared/Components/SelectPicker/index.ts | 20 + .../Shared/Components/SelectPicker/type.ts | 264 + .../Shared/Components/SelectPicker/utils.ts | 375 + .../Components/ShowMoreText/ShowMoreText.tsx | 72 + .../Shared/Components/ShowMoreText/index.ts | 1 + .../TabGroup/TabGroup.component.tsx | 134 + .../Components/TabGroup/TabGroup.helpers.tsx | 42 + .../Shared/Components/TabGroup/TabGroup.scss | 90 + .../Components/TabGroup/TabGroup.types.ts | 134 + .../Components/TabGroup/TabGroup.utils.ts | 37 + .../src/Shared/Components/TabGroup/index.ts | 2 + .../src/Shared/Components/index.ts | 58 + .../src/Shared/Helpers.tsx | 823 + .../Shared/Hooks/UseDownload/UseDownload.tsx | 101 + .../src/Shared/Hooks/UseDownload/index.tsx | 18 + .../src/Shared/Hooks/UseDownload/service.tsx | 19 + .../src/Shared/Hooks/UseDownload/types.tsx | 23 + .../src/Shared/Hooks/UsePrompt/UsePrompt.tsx | 43 + .../src/Shared/Hooks/UsePrompt/index.ts | 17 + .../src/Shared/Hooks/UsePrompt/types.ts | 22 + .../src/Shared/Hooks/index.ts | 20 + .../src/Shared/Hooks/useForm/index.ts | 2 + .../src/Shared/Hooks/useForm/useForm.ts | 244 + .../src/Shared/Hooks/useForm/useForm.types.ts | 83 + .../src/Shared/Hooks/useForm/useForm.utils.ts | 57 + .../Hooks/useGetResourceKindsOptions/index.ts | 18 + .../useGetResourceKindsOptions/service.ts | 99 + .../Hooks/useGetResourceKindsOptions/types.ts | 61 + .../useGetResourceKindsOptions.tsx | 65 + .../Hooks/useGetResourceKindsOptions/utils.ts | 33 + .../ImageSelectionUtility.tsx | 36 + .../Providers/ImageSelectionUtility/index.ts | 17 + .../Providers/ImageSelectionUtility/types.ts | 25 + .../Shared/Providers/MainContextProvider.tsx | 35 + .../UserEmailProvider/UserEmailProvider.tsx | 42 + .../Providers/UserEmailProvider/index.ts | 18 + .../Providers/UserEmailProvider/types.ts | 20 + .../src/Shared/Providers/index.ts | 19 + .../src/Shared/Providers/types.ts | 47 + .../Services/ToastManager/ToastContent.tsx | 24 + .../Services/ToastManager/constants.tsx | 72 + .../src/Shared/Services/ToastManager/index.ts | 3 + .../Services/ToastManager/toastManager.scss | 83 + .../ToastManager/toastManager.service.tsx | 130 + .../src/Shared/Services/ToastManager/types.ts | 42 + .../src/Shared/Services/app.service.ts | 62 + .../src/Shared/Services/app.types.ts | 274 + .../src/Shared/Services/common.service.ts | 24 + .../src/Shared/Services/index.ts | 21 + .../src/Shared/Services/types.ts | 45 + .../src/Shared/Services/utils.ts | 59 + .../src/Shared/Store/IndexStore.tsx | 391 + .../src/Shared/Store/index.tsx | 17 + .../src/Shared/constants.tsx | 492 + .../devtron-fe-common-lib/src/Shared/index.ts | 26 + .../devtron-fe-common-lib/src/Shared/types.ts | 684 + .../src/Shared/validations.tsx | 344 + .../devtron-fe-common-lib/src/custom.d.ts | 29 + packages/devtron-fe-common-lib/src/index.ts | 90 + .../devtron-fe-common-lib/src/yaml.worker.ts | 17 + packages/devtron-fe-common-lib/tsconfig.json | 62 + .../devtron-fe-common-lib/tsconfig.node.json | 10 + packages/devtron-fe-common-lib/vite.config.ts | 57 + packages/devtron-fe-lib/index.d.ts | 0 packages/devtron-fe-lib/index.js | 0 packages/devtron-fe-lib/package.json | 9 + pnpm-lock.yaml | 13642 ++++++++++++++++ pnpm-workspace.yaml | 3 + yarn.lock | 9875 ----------- 2233 files changed, 63940 insertions(+), 10071 deletions(-) delete mode 100644 .deepsource.toml delete mode 100644 .lintstagedrc rename .env => apps/web/.env (100%) rename .env.development => apps/web/.env.development (100%) rename .env.k8sApp => apps/web/.env.k8sApp (100%) rename .env.production => apps/web/.env.production (100%) rename .eslintignore => apps/web/.eslintignore (100%) rename .eslintrc.js => apps/web/.eslintrc.js (100%) rename {.storybook => apps/web/.storybook}/main.ts (100%) rename {.storybook => apps/web/.storybook}/preview-head.html (100%) rename {.storybook => apps/web/.storybook}/preview.tsx (100%) rename config.md => apps/web/config.md (100%) rename env.sh => apps/web/env.sh (100%) rename favicon.ico => apps/web/favicon.ico (100%) rename index.html => apps/web/index.html (100%) rename linter.py => apps/web/linter.py (100%) rename manifest.json => apps/web/manifest.json (100%) rename nginx-default.conf => apps/web/nginx-default.conf (100%) rename nginx.conf => apps/web/nginx.conf (100%) create mode 100644 apps/web/package.json rename sentry.sh => apps/web/sentry.sh (100%) rename {src => apps/web/src}/App.tsx (100%) rename {src => apps/web/src}/Pages/App/Details/ExternalFlux/ExternalFluxAppDetails.tsx (100%) rename {src => apps/web/src}/Pages/App/Details/ExternalFlux/ExternalFluxAppDetailsRoute.tsx (100%) rename {src => apps/web/src}/Pages/App/Details/ExternalFlux/index.tsx (100%) rename {src => apps/web/src}/Pages/App/Details/ExternalFlux/service.tsx (100%) rename {src => apps/web/src}/Pages/App/Details/ExternalFlux/types.tsx (100%) rename {src => apps/web/src}/Pages/App/Details/ExternalFlux/utils.tsx (100%) rename {src => apps/web/src}/Pages/Applications/DevtronApps/Details/AppConfigurations/AppConfig.constants.ts (100%) rename {src => apps/web/src}/Pages/Applications/DevtronApps/Details/AppConfigurations/AppConfig.service.ts (100%) rename {src => apps/web/src}/Pages/Applications/DevtronApps/Details/AppConfigurations/AppConfig.tsx (100%) rename {src => apps/web/src}/Pages/Applications/DevtronApps/Details/AppConfigurations/AppConfig.types.ts (100%) rename {src => apps/web/src}/Pages/Applications/DevtronApps/Details/AppConfigurations/AppConfig.utils.ts (100%) rename {src => apps/web/src}/Pages/Applications/DevtronApps/Details/AppConfigurations/AppConfiguration.provider.tsx (100%) rename {src => apps/web/src}/Pages/Applications/DevtronApps/Details/AppConfigurations/MainContent/AppComposeRouter.tsx (100%) rename {src => apps/web/src}/Pages/Applications/DevtronApps/Details/AppConfigurations/MainContent/DeploymentConfigCompare/DeploymentConfigCompare.tsx (100%) rename {src => apps/web/src}/Pages/Applications/DevtronApps/Details/AppConfigurations/MainContent/DeploymentConfigCompare/index.ts (100%) rename {src => apps/web/src}/Pages/Applications/DevtronApps/Details/AppConfigurations/MainContent/DeploymentConfigCompare/service.utils.ts (100%) rename {src => apps/web/src}/Pages/Applications/DevtronApps/Details/AppConfigurations/MainContent/DeploymentConfigCompare/utils.ts (100%) rename {src => apps/web/src}/Pages/Applications/DevtronApps/Details/AppConfigurations/Navigation/AppConfigurationCheckBox.tsx (100%) rename {src => apps/web/src}/Pages/Applications/DevtronApps/Details/AppConfigurations/Navigation/AppNavigation.tsx (100%) rename {src => apps/web/src}/Pages/Applications/DevtronApps/Details/AppConfigurations/Navigation/EnvConfigurationsNav.tsx (100%) rename {src => apps/web/src}/Pages/Applications/DevtronApps/Details/AppConfigurations/Navigation/EnvSelect.utils.tsx (100%) rename {src => apps/web/src}/Pages/Applications/DevtronApps/Details/AppConfigurations/Navigation/EnvironmentOverrideRouter.tsx (100%) rename {src => apps/web/src}/Pages/Applications/DevtronApps/Details/AppConfigurations/Navigation/Navigation.helper.tsx (100%) rename {src => apps/web/src}/Pages/Applications/DevtronApps/Details/AppConfigurations/appConfig.scss (100%) rename {src => apps/web/src}/Pages/Applications/DevtronApps/service.ts (100%) rename {src => apps/web/src}/Pages/Applications/DevtronApps/service.types.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/APITokens/APITokenList.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/APITokens/ApiTokens.component.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/APITokens/CreateAPIToken.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/APITokens/DeleteAPITokenModal.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/APITokens/EditAPIToken.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/APITokens/ExpirationDate.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/APITokens/GenerateActionButton.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/APITokens/GenerateModal.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/APITokens/RegenerateModal.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/APITokens/__mocks__/ApiTokens.mock.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/APITokens/__tests__/ApiTokens.test.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/APITokens/apiToken.scss (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/APITokens/apiToken.type.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/APITokens/apiToken.utils.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/APITokens/index.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/APITokens/service.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/APITokens/validationRules.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Authorization.component.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/AuthorizationProvider.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/PermissionGroups/AddEdit/PermissionGroupAddEdit.component.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/PermissionGroups/AddEdit/PermissionGroupForm.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/PermissionGroups/AddEdit/index.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/ExportPermissionGroupsToCsv.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/NoPermissionGroups.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/PermissionGroupContainer.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/PermissionGroupList.component.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/PermissionGroupListHeader.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/PermissionGroupRow.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/PermissionGroupTable.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/constants.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/index.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/types.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/PermissionGroups/PermissionGroups.component.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/PermissionGroups/index.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/README.md (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/SSOLoginServices/SSOLogin.component.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/SSOLoginServices/constants.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/SSOLoginServices/index.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/SSOLoginServices/sampleSSOConfig.json (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/SSOLoginServices/service.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/SSOLoginServices/ssoConfig.types.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/SSOLoginServices/ssoLogin.scss (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/SSOLoginServices/utils.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/AppPermissionDetail.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/AppPermissions.component.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/DirectPermission.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/common.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/constants.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/index.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/types.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/utils.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/BulkDeleteModal.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/BulkSelectionActionWidget.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/BulkSelectionClearConfirmationModal.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/BulkSelectionModal.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/constants.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/index.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/types.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/useAuthorizationBulkSelection.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/ChartPermission/ChartPermission.component.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/ChartPermission/constants.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/ChartPermission/index.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/ChartPermission/types.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/K8sListItemCard.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/K8sPermissionModal.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/K8sPermissionRow.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/K8sPermissions.component.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/constants.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/types.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/utils.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/PermissionConfigurationForm/PermissionConfigurationForm.component.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/PermissionConfigurationForm/PermissionConfigurationFormProvider.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/PermissionConfigurationForm/index.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/PermissionConfigurationForm/types.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/SuperAdminInfoBar/SuperAdminInfoBar.component.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/SuperAdminInfoBar/index.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/UserPermissionGroupsSelector/UserPermissionGroupsSelector.component.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/Shared/components/UserPermissionGroupsSelector/index.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/UserAndGroupPermissions.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/UserPermissions/AddEdit/UserForm.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/UserPermissions/AddEdit/UserPermissionAddEdit.component.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/UserPermissions/AddEdit/index.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/UserPermissions/List/ExportUserPermissionsToCsv.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/UserPermissions/List/NoUsers.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/UserPermissions/List/UserPermissionContainer.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/UserPermissions/List/UserPermissionList.component.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/UserPermissions/List/UserPermissionListHeader.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/UserPermissions/List/UserPermissionRow.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/UserPermissions/List/UserPermissionTable.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/UserPermissions/List/constants.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/UserPermissions/List/index.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/UserPermissions/List/types.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/UserPermissions/SSONotConfiguredState.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/UserPermissions/UserPermissions.component.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/UserPermissions/constants.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/UserPermissions/index.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/UserPermissions/utils.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/authorization.scss (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/authorization.service.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/constants.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/index.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/libUtils.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/types.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/Authorization/utils.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/BuildInfra/BuildInfra.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/BuildInfra/ProfileForm.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/BuildInfra/index.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/BuildInfra/styles.scss (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/BuildInfra/types.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/ClustersAndEnvironments/ClusterEnvironmentDrawer/ClusterEnvironmentDrawer.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/ClustersAndEnvironments/ClusterEnvironmentDrawer/index.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/ClustersAndEnvironments/ClusterEnvironmentDrawer/schema.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/ClustersAndEnvironments/ClusterEnvironmentDrawer/types.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/ClustersAndEnvironments/ClusterEnvironmentDrawer/utils.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/DeploymentCharts/DeploymentChartsRouter.component.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/DeploymentCharts/List/DeploymentChartsList.component.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/DeploymentCharts/List/DeploymentChartsListHeader.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/DeploymentCharts/List/DownloadChartButton.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/DeploymentCharts/List/UploadButton.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/DeploymentCharts/List/UploadChartModal.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/DeploymentCharts/List/index.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/DeploymentCharts/List/service.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/DeploymentCharts/List/styles.scss (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/DeploymentCharts/index.tsx (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/DeploymentCharts/types.ts (100%) rename {src => apps/web/src}/Pages/GlobalConfigurations/index.ts (100%) rename {src => apps/web/src}/Pages/Releases/.gitkeep (100%) rename {src => apps/web/src}/Pages/Shared/ConfigMapSecret/ConfigMapSecret.components.tsx (100%) rename {src => apps/web/src}/Pages/Shared/ConfigMapSecret/ConfigMapSecret.constants.ts (100%) rename {src => apps/web/src}/Pages/Shared/ConfigMapSecret/ConfigMapSecret.container.tsx (100%) rename {src => apps/web/src}/Pages/Shared/ConfigMapSecret/ConfigMapSecret.reducer.ts (100%) rename {src => apps/web/src}/Pages/Shared/ConfigMapSecret/ConfigMapSecret.scss (100%) rename {src => apps/web/src}/Pages/Shared/ConfigMapSecret/ConfigMapSecret.service.ts (100%) rename {src => apps/web/src}/Pages/Shared/ConfigMapSecret/ConfigMapSecret.types.ts (100%) rename {src => apps/web/src}/Pages/Shared/ConfigMapSecret/ConfigMapSecret.wrapper.tsx (100%) rename {src => apps/web/src}/Pages/Shared/ConfigMapSecret/ConfigMapSecretDataEditor.container.tsx (100%) rename {src => apps/web/src}/Pages/Shared/ConfigMapSecret/ConfigMapSecretDeleteModal.tsx (100%) rename {src => apps/web/src}/Pages/Shared/ConfigMapSecret/ConfigMapSecretForm.tsx (100%) rename {src => apps/web/src}/Pages/Shared/ConfigMapSecret/ProtectedConfigMapSecretDetails.tsx (100%) rename {src => apps/web/src}/Pages/Shared/ConfigMapSecret/Secret.utils.tsx (100%) rename {src => apps/web/src}/Pages/Shared/EnvironmentOverride/EnvironmentOverride.tsx (100%) rename {src => apps/web/src}/Pages/Shared/EnvironmentOverride/EnvironmentOverrides.types.ts (100%) rename {src => apps/web/src}/Pages/Shared/EnvironmentOverride/environmentOverride.scss (100%) rename {src => apps/web/src}/Pages/Shared/EnvironmentOverride/service.ts (100%) rename {src => apps/web/src}/Pages/Shared/EnvironmentOverviewTable/EnvironmentOverview.constants.ts (100%) rename {src => apps/web/src}/Pages/Shared/EnvironmentOverviewTable/EnvironmentOverviewTable.component.tsx (100%) rename {src => apps/web/src}/Pages/Shared/EnvironmentOverviewTable/EnvironmentOverviewTable.scss (100%) rename {src => apps/web/src}/Pages/Shared/EnvironmentOverviewTable/EnvironmentOverviewTable.types.ts (100%) rename {src => apps/web/src}/Pages/Shared/EnvironmentOverviewTable/index.ts (100%) rename {src => apps/web/src}/Pages/Shared/LinkedCIDetailsModal/LinkedCIAppList.tsx (100%) rename {src => apps/web/src}/Pages/Shared/LinkedCIDetailsModal/LinkedCIDetail.tsx (100%) rename {src => apps/web/src}/Pages/Shared/LinkedCIDetailsModal/LinkedCIDetailsModal.tsx (100%) rename {src => apps/web/src}/Pages/Shared/LinkedCIDetailsModal/constants.ts (100%) rename {src => apps/web/src}/Pages/Shared/LinkedCIDetailsModal/index.ts (100%) rename {src => apps/web/src}/Pages/Shared/LinkedCIDetailsModal/linkedCIAppList.scss (100%) rename {src => apps/web/src}/Pages/Shared/LinkedCIDetailsModal/service.ts (100%) rename {src => apps/web/src}/Pages/Shared/LinkedCIDetailsModal/types.ts (100%) rename {src => apps/web/src}/Pages/Shared/LinkedCIDetailsModal/utils.ts (100%) rename {src => apps/web/src}/Pages/Shared/OrganizationFrame/OrganizationFrame.component.tsx (100%) rename {src => apps/web/src}/Pages/Shared/OrganizationFrame/OrganizationTextLogo.tsx (100%) rename {src => apps/web/src}/Pages/Shared/OrganizationFrame/index.ts (100%) rename {src => apps/web/src}/Pages/Shared/index.ts (100%) rename {src => apps/web/src}/Pages/index.ts (100%) rename {src => apps/web/src}/assets/fonts/glyphicons-halflings-regular.eot (100%) rename {src => apps/web/src}/assets/fonts/glyphicons-halflings-regular.svg (100%) rename {src => apps/web/src}/assets/fonts/glyphicons-halflings-regular.ttf (100%) rename {src => apps/web/src}/assets/fonts/glyphicons-halflings-regular.woff (100%) rename {src => apps/web/src}/assets/fonts/glyphicons-halflings-regular.woff2 (100%) rename {src => apps/web/src}/assets/gif/latest-version-celebration.gif (100%) rename {src => apps/web/src}/assets/gif/no-eligible-commit.gif (100%) rename {src => apps/web/src}/assets/gif/uploading.gif (100%) rename {src => apps/web/src}/assets/ic-info-filled-border.svg (100%) rename {src => apps/web/src}/assets/icons/LoginSprite.svg (100%) rename {src => apps/web/src}/assets/icons/RectangleLine.svg (100%) rename {src => apps/web/src}/assets/icons/appstatus/bg-blue.svg (100%) rename {src => apps/web/src}/assets/icons/appstatus/bg-gray.svg (100%) rename {src => apps/web/src}/assets/icons/appstatus/bg-white.svg (100%) rename {src => apps/web/src}/assets/icons/appstatus/degraded.svg (100%) rename {src => apps/web/src}/assets/icons/appstatus/healthy.svg (100%) rename {src => apps/web/src}/assets/icons/appstatus/ic-appstatus-failed.svg (100%) rename {src => apps/web/src}/assets/icons/appstatus/ic-check.svg (100%) rename {src => apps/web/src}/assets/icons/appstatus/ic-chevron-down.svg (100%) rename {src => apps/web/src}/assets/icons/appstatus/ic-cpu.svg (100%) rename {src => apps/web/src}/assets/icons/appstatus/ic-heart-green.svg (100%) rename {src => apps/web/src}/assets/icons/appstatus/ic-menu-dots.svg (100%) rename {src => apps/web/src}/assets/icons/appstatus/ic-ram.svg (100%) rename {src => apps/web/src}/assets/icons/appstatus/ic-sort-down.svg (100%) rename {src => apps/web/src}/assets/icons/appstatus/info-filled.svg (100%) rename {src => apps/web/src}/assets/icons/appstatus/missing.svg (100%) rename {src => apps/web/src}/assets/icons/appstatus/notdeployed.svg (100%) rename {src => apps/web/src}/assets/icons/appstatus/progressing-rotating.svg (100%) rename {src => apps/web/src}/assets/icons/appstatus/suspended.svg (100%) rename {src => apps/web/src}/assets/icons/appstatus/unknown.svg (100%) rename {src => apps/web/src}/assets/icons/argo-cd-app.svg (100%) rename {src => apps/web/src}/assets/icons/cluster-overview.svg (100%) rename {src => apps/web/src}/assets/icons/container.svg (100%) rename {src => apps/web/src}/assets/icons/drag.svg (100%) rename {src => apps/web/src}/assets/icons/git/azure.svg (100%) rename {src => apps/web/src}/assets/icons/git/bitbucket.svg (100%) rename {src => apps/web/src}/assets/icons/git/docker.svg (100%) rename {src => apps/web/src}/assets/icons/git/git.svg (100%) rename {src => apps/web/src}/assets/icons/git/github.svg (100%) rename {src => apps/web/src}/assets/icons/git/gitlab.svg (100%) rename {src => apps/web/src}/assets/icons/go-to-buildanddeploy.svg (100%) rename {src => apps/web/src}/assets/icons/go-to-envoverride.svg (100%) rename {src => apps/web/src}/assets/icons/helm-app.svg (100%) rename {src => apps/web/src}/assets/icons/ic-CD.svg (100%) rename {src => apps/web/src}/assets/icons/ic-CI.svg (100%) rename {src => apps/web/src}/assets/icons/ic-CILinked.svg (100%) rename {src => apps/web/src}/assets/icons/ic-CIWebhook.svg (100%) rename {src => apps/web/src}/assets/icons/ic-abort.svg (100%) rename {src => apps/web/src}/assets/icons/ic-activity.svg (100%) rename {src => apps/web/src}/assets/icons/ic-add.svg (100%) rename {src => apps/web/src}/assets/icons/ic-alert-triangle.svg (100%) rename {src => apps/web/src}/assets/icons/ic-app-group.svg (100%) rename {src => apps/web/src}/assets/icons/ic-appstatus-cancelled.svg (100%) rename {src => apps/web/src}/assets/icons/ic-argocd-app.svg (100%) rename {src => apps/web/src}/assets/icons/ic-arrow-anticlockwise.svg (100%) rename {src => apps/web/src}/assets/icons/ic-arrow-backward.svg (100%) rename {src => apps/web/src}/assets/icons/ic-arrow-clockwise.svg (100%) rename {src => apps/web/src}/assets/icons/ic-arrow-counter-clockwise.svg (100%) rename {src => apps/web/src}/assets/icons/ic-arrow-down.svg (100%) rename {src => apps/web/src}/assets/icons/ic-arrow-forward.svg (100%) rename {src => apps/web/src}/assets/icons/ic-arrow-left.svg (100%) rename {src => apps/web/src}/assets/icons/ic-arrow-line-down.svg (100%) rename {src => apps/web/src}/assets/icons/ic-arrow-line-up.svg (100%) rename {src => apps/web/src}/assets/icons/ic-arrow-right.svg (100%) rename {src => apps/web/src}/assets/icons/ic-arrow-square-out.svg (100%) rename {src => apps/web/src}/assets/icons/ic-arrow-up-down.svg (100%) rename {src => apps/web/src}/assets/icons/ic-arrows-left-right.svg (100%) rename {src => apps/web/src}/assets/icons/ic-arrows_clockwise.svg (100%) rename {src => apps/web/src}/assets/icons/ic-asterisk.svg (100%) rename {src => apps/web/src}/assets/icons/ic-aws-codecommit.svg (100%) rename {src => apps/web/src}/assets/icons/ic-aws-ses.svg (100%) rename {src => apps/web/src}/assets/icons/ic-azure.svg (100%) rename {src => apps/web/src}/assets/icons/ic-back.svg (100%) rename {src => apps/web/src}/assets/icons/ic-bell.svg (100%) rename {src => apps/web/src}/assets/icons/ic-book-open.svg (100%) rename {src => apps/web/src}/assets/icons/ic-bot.svg (100%) rename {src => apps/web/src}/assets/icons/ic-branch-main.svg (100%) rename {src => apps/web/src}/assets/icons/ic-branch.svg (100%) rename {src => apps/web/src}/assets/icons/ic-briefcase.svg (100%) rename {src => apps/web/src}/assets/icons/ic-browser.svg (100%) rename {src => apps/web/src}/assets/icons/ic-bug.svg (100%) rename {src => apps/web/src}/assets/icons/ic-builpack.svg (100%) rename {src => apps/web/src}/assets/icons/ic-bulb.svg (100%) rename {src => apps/web/src}/assets/icons/ic-bulk-check.svg (100%) rename {src => apps/web/src}/assets/icons/ic-calendar.svg (100%) rename {src => apps/web/src}/assets/icons/ic-camera.svg (100%) rename {src => apps/web/src}/assets/icons/ic-caret-left-small.svg (100%) rename {src => apps/web/src}/assets/icons/ic-cd-stage.svg (100%) rename {src => apps/web/src}/assets/icons/ic-celebration.svg (100%) rename {src => apps/web/src}/assets/icons/ic-charts.svg (100%) rename {src => apps/web/src}/assets/icons/ic-chat-circle-dots.svg (100%) rename {src => apps/web/src}/assets/icons/ic-check-circle-green.svg (100%) rename {src => apps/web/src}/assets/icons/ic-check-circle.svg (100%) rename {src => apps/web/src}/assets/icons/ic-check.svg (100%) rename {src => apps/web/src}/assets/icons/ic-checkbox-intermediate.svg (100%) rename {src => apps/web/src}/assets/icons/ic-checkbox-selected.svg (100%) rename {src => apps/web/src}/assets/icons/ic-checkbox-unselected.svg (100%) rename {src => apps/web/src}/assets/icons/ic-checks.svg (100%) rename {src => apps/web/src}/assets/icons/ic-chevron-down.svg (100%) rename {src => apps/web/src}/assets/icons/ic-clair-to-trivy.svg (100%) rename {src => apps/web/src}/assets/icons/ic-clair.svg (100%) rename {src => apps/web/src}/assets/icons/ic-clean-brush-medium.svg (100%) rename {src => apps/web/src}/assets/icons/ic-clean-brush.svg (100%) rename {src => apps/web/src}/assets/icons/ic-clock-counterclockwise.svg (100%) rename {src => apps/web/src}/assets/icons/ic-clock.svg (100%) rename {src => apps/web/src}/assets/icons/ic-close-circle.svg (100%) rename {src => apps/web/src}/assets/icons/ic-close.svg (100%) rename {src => apps/web/src}/assets/icons/ic-cloud.svg (100%) rename {src => apps/web/src}/assets/icons/ic-cloudwatch.png (100%) rename {src => apps/web/src}/assets/icons/ic-cluster.svg (100%) rename {src => apps/web/src}/assets/icons/ic-code-commit.svg (100%) rename {src => apps/web/src}/assets/icons/ic-commit.svg (100%) rename {src => apps/web/src}/assets/icons/ic-compare.svg (100%) rename {src => apps/web/src}/assets/icons/ic-compass.svg (100%) rename {src => apps/web/src}/assets/icons/ic-connected.svg (100%) rename {src => apps/web/src}/assets/icons/ic-copy.svg (100%) rename {src => apps/web/src}/assets/icons/ic-coralogix.png (100%) rename {src => apps/web/src}/assets/icons/ic-cordon-medium.svg (100%) rename {src => apps/web/src}/assets/icons/ic-cordon.svg (100%) rename {src => apps/web/src}/assets/icons/ic-cpu.svg (100%) rename {src => apps/web/src}/assets/icons/ic-cross.svg (100%) rename {src => apps/web/src}/assets/icons/ic-cube.svg (100%) rename {src => apps/web/src}/assets/icons/ic-datadog.png (100%) rename {src => apps/web/src}/assets/icons/ic-default-chart.svg (100%) rename {src => apps/web/src}/assets/icons/ic-delete-dots.svg (100%) rename {src => apps/web/src}/assets/icons/ic-delete-interactive.svg (100%) rename {src => apps/web/src}/assets/icons/ic-delete.svg (100%) rename {src => apps/web/src}/assets/icons/ic-deploy.svg (100%) rename {src => apps/web/src}/assets/icons/ic-devtron-app.svg (100%) rename {src => apps/web/src}/assets/icons/ic-devtron-blue-outline.svg (100%) rename {src => apps/web/src}/assets/icons/ic-devtron.svg (100%) rename {src => apps/web/src}/assets/icons/ic-disconnected.svg (100%) rename {src => apps/web/src}/assets/icons/ic-discord-fill.svg (100%) rename {src => apps/web/src}/assets/icons/ic-discord-online.svg (100%) rename {src => apps/web/src}/assets/icons/ic-docker-with-image.svg (100%) rename {src => apps/web/src}/assets/icons/ic-document.svg (100%) rename {src => apps/web/src}/assets/icons/ic-down-arrow-full.svg (100%) rename {src => apps/web/src}/assets/icons/ic-download.svg (100%) rename {src => apps/web/src}/assets/icons/ic-dropdown-filled.svg (100%) rename {src => apps/web/src}/assets/icons/ic-ecr.svg (100%) rename {src => apps/web/src}/assets/icons/ic-edit-file.svg (100%) rename {src => apps/web/src}/assets/icons/ic-edit-lines.svg (100%) rename {src => apps/web/src}/assets/icons/ic-edit.svg (100%) rename {src => apps/web/src}/assets/icons/ic-empty-data.svg (100%) rename {src => apps/web/src}/assets/icons/ic-env.svg (100%) rename {src => apps/web/src}/assets/icons/ic-environment-list.svg (100%) rename {src => apps/web/src}/assets/icons/ic-environment-temp.svg (100%) rename {src => apps/web/src}/assets/icons/ic-ephemeral.svg (100%) rename {src => apps/web/src}/assets/icons/ic-error-exclamation.svg (100%) rename {src => apps/web/src}/assets/icons/ic-error-medium.svg (100%) rename {src => apps/web/src}/assets/icons/ic-error.svg (100%) rename {src => apps/web/src}/assets/icons/ic-exit-fullscreen-2.svg (100%) rename {src => apps/web/src}/assets/icons/ic-expand.svg (100%) rename {src => apps/web/src}/assets/icons/ic-feedback.svg (100%) rename {src => apps/web/src}/assets/icons/ic-file-code.svg (100%) rename {src => apps/web/src}/assets/icons/ic-file-download.svg (100%) rename {src => apps/web/src}/assets/icons/ic-file-text.svg (100%) rename {src => apps/web/src}/assets/icons/ic-file.svg (100%) rename {src => apps/web/src}/assets/icons/ic-files.svg (100%) rename {src => apps/web/src}/assets/icons/ic-filter.svg (100%) rename {src => apps/web/src}/assets/icons/ic-fluxcd-app.svg (100%) rename {src => apps/web/src}/assets/icons/ic-fluxcd.svg (100%) rename {src => apps/web/src}/assets/icons/ic-folder-filled.svg (100%) rename {src => apps/web/src}/assets/icons/ic-folder.svg (100%) rename {src => apps/web/src}/assets/icons/ic-fullscreen-2.svg (100%) rename {src => apps/web/src}/assets/icons/ic-generated-image.svg (100%) rename {src => apps/web/src}/assets/icons/ic-google-artifact-registry.svg (100%) rename {src => apps/web/src}/assets/icons/ic-google-container-registry.svg (100%) rename {src => apps/web/src}/assets/icons/ic-google.svg (100%) rename {src => apps/web/src}/assets/icons/ic-grafana.png (100%) rename {src => apps/web/src}/assets/icons/ic-graph.svg (100%) rename {src => apps/web/src}/assets/icons/ic-grid-view-blue.svg (100%) rename {src => apps/web/src}/assets/icons/ic-grid-view.svg (100%) rename {src => apps/web/src}/assets/icons/ic-group-filter-applied.svg (100%) rename {src => apps/web/src}/assets/icons/ic-group-filter.svg (100%) rename {src => apps/web/src}/assets/icons/ic-helmchart.svg (100%) rename {src => apps/web/src}/assets/icons/ic-help-green.svg (100%) rename {src => apps/web/src}/assets/icons/ic-help-outline.svg (100%) rename {src => apps/web/src}/assets/icons/ic-help.svg (100%) rename {src => apps/web/src}/assets/icons/ic-hibernate-2.svg (100%) rename {src => apps/web/src}/assets/icons/ic-hibernate-3.svg (100%) rename {src => apps/web/src}/assets/icons/ic-hibernate.svg (100%) rename {src => apps/web/src}/assets/icons/ic-info-filled-purple.svg (100%) rename {src => apps/web/src}/assets/icons/ic-info-filled.svg (100%) rename {src => apps/web/src}/assets/icons/ic-info-outline-grey.svg (100%) rename {src => apps/web/src}/assets/icons/ic-info-outline-purple.svg (100%) rename {src => apps/web/src}/assets/icons/ic-info-outline.svg (100%) rename {src => apps/web/src}/assets/icons/ic-info-outlined.svg (100%) rename {src => apps/web/src}/assets/icons/ic-info-warn.svg (100%) rename {src => apps/web/src}/assets/icons/ic-input.svg (100%) rename {src => apps/web/src}/assets/icons/ic-job-node.svg (100%) rename {src => apps/web/src}/assets/icons/ic-k8s-job.svg (100%) rename {src => apps/web/src}/assets/icons/ic-key-bulb.svg (100%) rename {src => apps/web/src}/assets/icons/ic-key.svg (100%) rename {src => apps/web/src}/assets/icons/ic-kibana.png (100%) rename {src => apps/web/src}/assets/icons/ic-ldap.svg (100%) rename {src => apps/web/src}/assets/icons/ic-lego-block.svg (100%) rename {src => apps/web/src}/assets/icons/ic-lines.svg (100%) rename {src => apps/web/src}/assets/icons/ic-link.svg (100%) rename {src => apps/web/src}/assets/icons/ic-linked.svg (100%) rename {src => apps/web/src}/assets/icons/ic-list-view.svg (100%) rename {src => apps/web/src}/assets/icons/ic-locked-filled.svg (100%) rename {src => apps/web/src}/assets/icons/ic-locked.svg (100%) rename {src => apps/web/src}/assets/icons/ic-logs.svg (100%) rename {src => apps/web/src}/assets/icons/ic-loki.png (100%) rename {src => apps/web/src}/assets/icons/ic-mail.svg (100%) rename {src => apps/web/src}/assets/icons/ic-medium-delete.svg (100%) rename {src => apps/web/src}/assets/icons/ic-medium-hibernate.svg (100%) rename {src => apps/web/src}/assets/icons/ic-medium-unhibernate.svg (100%) rename {src => apps/web/src}/assets/icons/ic-megaphone.svg (100%) rename {src => apps/web/src}/assets/icons/ic-memory.svg (100%) rename {src => apps/web/src}/assets/icons/ic-message.svg (100%) rename {src => apps/web/src}/assets/icons/ic-microsoft.svg (100%) rename {src => apps/web/src}/assets/icons/ic-minus.svg (100%) rename {src => apps/web/src}/assets/icons/ic-monitoring.svg (100%) rename {src => apps/web/src}/assets/icons/ic-more-option.svg (100%) rename {src => apps/web/src}/assets/icons/ic-nav-applications.svg (100%) rename {src => apps/web/src}/assets/icons/ic-nav-bug.svg (100%) rename {src => apps/web/src}/assets/icons/ic-nav-code.svg (100%) rename {src => apps/web/src}/assets/icons/ic-nav-devtron.svg (100%) rename {src => apps/web/src}/assets/icons/ic-nav-gear.svg (100%) rename {src => apps/web/src}/assets/icons/ic-nav-helm.svg (100%) rename {src => apps/web/src}/assets/icons/ic-nav-rocket.svg (100%) rename {src => apps/web/src}/assets/icons/ic-nav-search.svg (100%) rename {src => apps/web/src}/assets/icons/ic-nav-security.svg (100%) rename {src => apps/web/src}/assets/icons/ic-nav-stack.svg (100%) rename {src => apps/web/src}/assets/icons/ic-newrelic.png (100%) rename {src => apps/web/src}/assets/icons/ic-node-build-linked.svg (100%) rename {src => apps/web/src}/assets/icons/ic-note.svg (100%) rename {src => apps/web/src}/assets/icons/ic-object.svg (100%) rename {src => apps/web/src}/assets/icons/ic-oidc.svg (100%) rename {src => apps/web/src}/assets/icons/ic-onboarding.svg (100%) rename {src => apps/web/src}/assets/icons/ic-open-box.svg (100%) rename {src => apps/web/src}/assets/icons/ic-open-in-new.svg (100%) rename {src => apps/web/src}/assets/icons/ic-openshift.svg (100%) rename {src => apps/web/src}/assets/icons/ic-outline-check.svg (100%) rename {src => apps/web/src}/assets/icons/ic-paper-rocket.svg (100%) rename {src => apps/web/src}/assets/icons/ic-pause.svg (100%) rename {src => apps/web/src}/assets/icons/ic-pencil.svg (100%) rename {src => apps/web/src}/assets/icons/ic-person.svg (100%) rename {src => apps/web/src}/assets/icons/ic-pipeline-linked.svg (100%) rename {src => apps/web/src}/assets/icons/ic-play-filled.svg (100%) rename {src => apps/web/src}/assets/icons/ic-play-media.svg (100%) rename {src => apps/web/src}/assets/icons/ic-play-medium.svg (100%) rename {src => apps/web/src}/assets/icons/ic-play.svg (100%) rename {src => apps/web/src}/assets/icons/ic-plc-chart.svg (100%) rename {src => apps/web/src}/assets/icons/ic-plugin.svg (100%) rename {src => apps/web/src}/assets/icons/ic-progressing.svg (100%) rename {src => apps/web/src}/assets/icons/ic-quay.svg (100%) rename {src => apps/web/src}/assets/icons/ic-question.svg (100%) rename {src => apps/web/src}/assets/icons/ic-resource.svg (100%) rename {src => apps/web/src}/assets/icons/ic-restore.svg (100%) rename {src => apps/web/src}/assets/icons/ic-rocket-fail.svg (100%) rename {src => apps/web/src}/assets/icons/ic-rollback.svg (100%) rename {src => apps/web/src}/assets/icons/ic-sample-app.svg (100%) rename {src => apps/web/src}/assets/icons/ic-save.svg (100%) rename {src => apps/web/src}/assets/icons/ic-scale-down.svg (100%) rename {src => apps/web/src}/assets/icons/ic-scale-objects.svg (100%) rename {src => apps/web/src}/assets/icons/ic-search.svg (100%) rename {src => apps/web/src}/assets/icons/ic-secure.svg (100%) rename {src => apps/web/src}/assets/icons/ic-select-cluster.svg (100%) rename {src => apps/web/src}/assets/icons/ic-selected-corner.png (100%) rename {src => apps/web/src}/assets/icons/ic-settings.svg (100%) rename {src => apps/web/src}/assets/icons/ic-shield-protect-fill.svg (100%) rename {src => apps/web/src}/assets/icons/ic-skip.svg (100%) rename {src => apps/web/src}/assets/icons/ic-slant-bulb.svg (100%) rename {src => apps/web/src}/assets/icons/ic-smiley-party.svg (100%) rename {src => apps/web/src}/assets/icons/ic-smtp.svg (100%) rename {src => apps/web/src}/assets/icons/ic-sort-arrow-down.svg (100%) rename {src => apps/web/src}/assets/icons/ic-sort-arrow.svg (100%) rename {src => apps/web/src}/assets/icons/ic-sort-down.svg (100%) rename {src => apps/web/src}/assets/icons/ic-sort-up.svg (100%) rename {src => apps/web/src}/assets/icons/ic-sort.svg (100%) rename {src => apps/web/src}/assets/icons/ic-source-build.svg (100%) rename {src => apps/web/src}/assets/icons/ic-source-job.svg (100%) rename {src => apps/web/src}/assets/icons/ic-source-linked-build.svg (100%) rename {src => apps/web/src}/assets/icons/ic-source-webhook.svg (100%) rename {src => apps/web/src}/assets/icons/ic-source.svg (100%) rename {src => apps/web/src}/assets/icons/ic-sparkles.svg (100%) rename {src => apps/web/src}/assets/icons/ic-spraycan.svg (100%) rename {src => apps/web/src}/assets/icons/ic-stamp.svg (100%) rename {src => apps/web/src}/assets/icons/ic-stop-filled.svg (100%) rename {src => apps/web/src}/assets/icons/ic-stop.svg (100%) rename {src => apps/web/src}/assets/icons/ic-storage.svg (100%) rename {src => apps/web/src}/assets/icons/ic-success-outline.svg (100%) rename {src => apps/web/src}/assets/icons/ic-success-with-light-background.svg (100%) rename {src => apps/web/src}/assets/icons/ic-success.svg (100%) rename {src => apps/web/src}/assets/icons/ic-tag.svg (100%) rename {src => apps/web/src}/assets/icons/ic-terminal-fill.svg (100%) rename {src => apps/web/src}/assets/icons/ic-terminal-line.svg (100%) rename {src => apps/web/src}/assets/icons/ic-tilde.svg (100%) rename {src => apps/web/src}/assets/icons/ic-timeout-red.svg (100%) rename {src => apps/web/src}/assets/icons/ic-timer.svg (100%) rename {src => apps/web/src}/assets/icons/ic-trivy-to-clair.svg (100%) rename {src => apps/web/src}/assets/icons/ic-trivy.svg (100%) rename {src => apps/web/src}/assets/icons/ic-unhibernate.svg (100%) rename {src => apps/web/src}/assets/icons/ic-update-animated.svg (100%) rename {src => apps/web/src}/assets/icons/ic-upload-blue.svg (100%) rename {src => apps/web/src}/assets/icons/ic-upload.svg (100%) rename {src => apps/web/src}/assets/icons/ic-user-circle.svg (100%) rename {src => apps/web/src}/assets/icons/ic-users.svg (100%) rename {src => apps/web/src}/assets/icons/ic-var-initial.svg (100%) rename {src => apps/web/src}/assets/icons/ic-variable-equal.svg (100%) rename {src => apps/web/src}/assets/icons/ic-variable.svg (100%) rename {src => apps/web/src}/assets/icons/ic-view-variable-toggle.svg (100%) rename {src => apps/web/src}/assets/icons/ic-view-variables.svg (100%) rename {src => apps/web/src}/assets/icons/ic-virtual-cluster.svg (100%) rename {src => apps/web/src}/assets/icons/ic-visibility-off.svg (100%) rename {src => apps/web/src}/assets/icons/ic-visibility-on-filter.svg (100%) rename {src => apps/web/src}/assets/icons/ic-visibility-on.svg (100%) rename {src => apps/web/src}/assets/icons/ic-warning-y5.svg (100%) rename {src => apps/web/src}/assets/icons/ic-warning-y6.svg (100%) rename {src => apps/web/src}/assets/icons/ic-warning.svg (100%) rename {src => apps/web/src}/assets/icons/ic-workflow.svg (100%) rename {src => apps/web/src}/assets/icons/ic-world-black.svg (100%) rename {src => apps/web/src}/assets/icons/ic-world.svg (100%) rename {src => apps/web/src}/assets/icons/img-folder-empty.svg (100%) rename {src => apps/web/src}/assets/icons/info-filled.svg (100%) rename {src => apps/web/src}/assets/icons/inject-tag.svg (100%) rename {src => apps/web/src}/assets/icons/logo/logo-dt.svg (100%) rename {src => apps/web/src}/assets/icons/mdeditor/ic-bold.svg (100%) rename {src => apps/web/src}/assets/icons/mdeditor/ic-checked-list.svg (100%) rename {src => apps/web/src}/assets/icons/mdeditor/ic-code.svg (100%) rename {src => apps/web/src}/assets/icons/mdeditor/ic-header.svg (100%) rename {src => apps/web/src}/assets/icons/mdeditor/ic-image.svg (100%) rename {src => apps/web/src}/assets/icons/mdeditor/ic-italic.svg (100%) rename {src => apps/web/src}/assets/icons/mdeditor/ic-link.svg (100%) rename {src => apps/web/src}/assets/icons/mdeditor/ic-ordered-list.svg (100%) rename {src => apps/web/src}/assets/icons/mdeditor/ic-quote.svg (100%) rename {src => apps/web/src}/assets/icons/mdeditor/ic-strikethrough.svg (100%) rename {src => apps/web/src}/assets/icons/mdeditor/ic-unordered-list.svg (100%) rename {src => apps/web/src}/assets/icons/misc/addWhite.svg (100%) rename {src => apps/web/src}/assets/icons/misc/arrow-chevron-down-black.svg (100%) rename {src => apps/web/src}/assets/icons/misc/arrow-solid-right.svg (100%) rename {src => apps/web/src}/assets/icons/misc/arrowSquareOut.svg (100%) rename {src => apps/web/src}/assets/icons/misc/branch.svg (100%) rename {src => apps/web/src}/assets/icons/misc/branchBlue.svg (100%) rename {src => apps/web/src}/assets/icons/misc/checkGreen.svg (100%) rename {src => apps/web/src}/assets/icons/misc/delete.svg (100%) rename {src => apps/web/src}/assets/icons/misc/deploy.svg (100%) rename {src => apps/web/src}/assets/icons/misc/docker.svg (100%) rename {src => apps/web/src}/assets/icons/misc/editBlack.svg (100%) rename {src => apps/web/src}/assets/icons/misc/editWhite.svg (100%) rename {src => apps/web/src}/assets/icons/misc/errorInfo.svg (100%) rename {src => apps/web/src}/assets/icons/misc/regex.svg (100%) rename {src => apps/web/src}/assets/icons/misc/rollback.svg (100%) rename {src => apps/web/src}/assets/icons/misc/sort-down.svg (100%) rename {src => apps/web/src}/assets/icons/misc/sort-up.svg (100%) rename {src => apps/web/src}/assets/icons/misc/sort.svg (100%) rename {src => apps/web/src}/assets/icons/misc/webhook.svg (100%) rename {src => apps/web/src}/assets/icons/navigation-sprite.svg (100%) rename {src => apps/web/src}/assets/icons/scanner.svg (100%) rename {src => apps/web/src}/assets/icons/tools/ic-link-alerts.png (100%) rename {src => apps/web/src}/assets/icons/tools/ic-link-bugs.png (100%) rename {src => apps/web/src}/assets/icons/tools/ic-link-chat.png (100%) rename {src => apps/web/src}/assets/icons/tools/ic-link-confluence.png (100%) rename {src => apps/web/src}/assets/icons/tools/ic-link-document.png (100%) rename {src => apps/web/src}/assets/icons/tools/ic-link-folder.png (100%) rename {src => apps/web/src}/assets/icons/tools/ic-link-jira.png (100%) rename {src => apps/web/src}/assets/icons/tools/ic-link-performance.png (100%) rename {src => apps/web/src}/assets/icons/tools/ic-link-report.png (100%) rename {src => apps/web/src}/assets/icons/tools/ic-link-swagger.png (100%) rename {src => apps/web/src}/assets/icons/tools/ic-link-webpage.png (100%) rename {src => apps/web/src}/assets/img/Empty-folder.png (100%) rename {src => apps/web/src}/assets/img/about-devtron@2x.png (100%) rename {src => apps/web/src}/assets/img/app-not-configured.png (100%) rename {src => apps/web/src}/assets/img/app-not-deployed.png (100%) rename {src => apps/web/src}/assets/img/bg-login.png (100%) rename {src => apps/web/src}/assets/img/bug_fixing.svg (100%) rename {src => apps/web/src}/assets/img/change-source.png (100%) rename {src => apps/web/src}/assets/img/cm-cs-empty-state.png (100%) rename {src => apps/web/src}/assets/img/empty-applist@2x.png (100%) rename {src => apps/web/src}/assets/img/empty-externallinks@2x.png (100%) rename {src => apps/web/src}/assets/img/empty-joblist@2x.png (100%) rename {src => apps/web/src}/assets/img/empty-noresult@2x.png (100%) rename {src => apps/web/src}/assets/img/empty-pre-deploy.png (100%) rename {src => apps/web/src}/assets/img/external-ci.png (100%) rename {src => apps/web/src}/assets/img/guide-create-app.png (100%) rename {src => apps/web/src}/assets/img/guide-onboard.png (100%) rename {src => apps/web/src}/assets/img/guided-chart-repository.png (100%) rename {src => apps/web/src}/assets/img/guided-helm-cluster.png (100%) rename {src => apps/web/src}/assets/img/guided-helm-collage.png (100%) rename {src => apps/web/src}/assets/img/guided-helm-search.png (100%) rename {src => apps/web/src}/assets/img/helm-collage.png (100%) rename {src => apps/web/src}/assets/img/ic-build-deploy.png (100%) rename {src => apps/web/src}/assets/img/ic-checklist-app@2x.png (100%) rename {src => apps/web/src}/assets/img/ic-checklist-chart@2x.png (100%) rename {src => apps/web/src}/assets/img/ic-checklist-sample-app@2x.png (100%) rename {src => apps/web/src}/assets/img/ic-dockerfile-in-use.png (100%) rename {src => apps/web/src}/assets/img/ic-empty-chartgroup@2x.png (100%) rename {src => apps/web/src}/assets/img/ic-empty-checklist.png (100%) rename {src => apps/web/src}/assets/img/ic-empty-custom-charts.png (100%) rename {src => apps/web/src}/assets/img/ic-empty-dep-metrics@2x.png (100%) rename {src => apps/web/src}/assets/img/ic-empty-done@2x.png (100%) rename {src => apps/web/src}/assets/img/ic-empty-ea--security.png (100%) rename {src => apps/web/src}/assets/img/ic-empty-ea-app-detail.png (100%) rename {src => apps/web/src}/assets/img/ic-empty-ea-charts.png (100%) rename {src => apps/web/src}/assets/img/ic-empty-error@2x.png (100%) rename {src => apps/web/src}/assets/img/ic-empty-generate-token.png (100%) rename {src => apps/web/src}/assets/img/ic-empty-notifications.png (100%) rename {src => apps/web/src}/assets/img/ic-empty-scanner-disabled.png (100%) rename {src => apps/web/src}/assets/img/ic-empty-tests.svg (100%) rename {src => apps/web/src}/assets/img/ic-empty-workflow@3x.png (100%) rename {src => apps/web/src}/assets/img/ic-error-hosturl.png (100%) rename {src => apps/web/src}/assets/img/ic-error-prometheus.png (100%) rename {src => apps/web/src}/assets/img/ic-feature-deploymentgroups@3x.png (100%) rename {src => apps/web/src}/assets/img/ic-help-outline.svg (100%) rename {src => apps/web/src}/assets/img/ic-loading-failure.png (100%) rename {src => apps/web/src}/assets/img/ic-mechanical-operation.svg (100%) rename {src => apps/web/src}/assets/img/ic-more-extensions.png (100%) rename {src => apps/web/src}/assets/img/ic-no-chart-in-clusters@2x.png (100%) rename {src => apps/web/src}/assets/img/ic-no-cluster-select@2x.png (100%) rename {src => apps/web/src}/assets/img/ic-not-authorized.svg (100%) rename {src => apps/web/src}/assets/img/ic-pipeline-ci@2x.png (100%) rename {src => apps/web/src}/assets/img/ic-pipeline-deploy@2x.png (100%) rename {src => apps/web/src}/assets/img/ic-preview.png (100%) rename {src => apps/web/src}/assets/img/ic-success@2x.png (100%) rename {src => apps/web/src}/assets/img/ic-vulnerability-not-found.svg (100%) rename {src => apps/web/src}/assets/img/ic_upload_chart_error.png (100%) rename {src => apps/web/src}/assets/img/install-devtron-full.png (100%) rename {src => apps/web/src}/assets/img/install-devtron-full@2x.png (100%) rename {src => apps/web/src}/assets/img/install-devtron-full@3x.png (100%) rename {src => apps/web/src}/assets/img/lifebuoy.png (100%) rename {src => apps/web/src}/assets/img/linked-cd-bulk-ci.png (100%) rename {src => apps/web/src}/assets/img/linked-ci.png (100%) rename {src => apps/web/src}/assets/img/login-bg-independence.png (100%) rename {src => apps/web/src}/assets/img/mail-icon.svg (100%) rename {src => apps/web/src}/assets/img/nav-logo.svg (100%) rename {src => apps/web/src}/assets/img/no-approved-images@2x.png (100%) rename {src => apps/web/src}/assets/img/no-artifact@2x.png (100%) rename {src => apps/web/src}/assets/img/no-cluster-empty-state.png (100%) rename {src => apps/web/src}/assets/img/no-eligible-commit.png (100%) rename {src => apps/web/src}/assets/img/no-pending-action@2x.png (100%) rename {src => apps/web/src}/assets/img/no_vulnerability.png (100%) rename {src => apps/web/src}/assets/img/node-app-thumbnail.png (100%) rename {src => apps/web/src}/assets/img/not-scanned.png (100%) rename {src => apps/web/src}/assets/img/page-not-found.png (100%) rename {src => apps/web/src}/assets/img/paper-rocket-deployment.png (100%) rename {src => apps/web/src}/assets/img/pipeline-deploy.png (100%) rename {src => apps/web/src}/assets/img/post-build-empty.png (100%) rename {src => apps/web/src}/assets/img/post-deployment-empty.png (100%) rename {src => apps/web/src}/assets/img/pre-build-empty.png (100%) rename {src => apps/web/src}/assets/img/pre-deployment-empty.png (100%) rename {src => apps/web/src}/assets/img/select-image-source.png (100%) rename {src => apps/web/src}/assets/img/slack-logo.svg (100%) rename {src => apps/web/src}/assets/img/terminal.png (100%) rename {src => apps/web/src}/assets/img/terminal@2x.png (100%) rename {src => apps/web/src}/assets/img/warning-medium.svg (100%) rename {src => apps/web/src}/assets/img/webhook.svg (100%) rename {src => apps/web/src}/assets/logo/logo.png (100%) rename {src => apps/web/src}/components/AppSelector/AppSelector.tsx (100%) rename {src => apps/web/src}/components/AppSelector/AppSelectorUtil.tsx (100%) rename {src => apps/web/src}/components/AppSelector/ChartSelector.tsx (100%) rename {src => apps/web/src}/components/AppSelector/index.ts (100%) rename {src => apps/web/src}/components/ApplicationGroup/AppGroup.service.ts (100%) rename {src => apps/web/src}/components/ApplicationGroup/AppGroup.types.ts (100%) rename {src => apps/web/src}/components/ApplicationGroup/AppGroup.utils.ts (100%) rename {src => apps/web/src}/components/ApplicationGroup/AppGroupAppFilter.components.tsx (100%) rename {src => apps/web/src}/components/ApplicationGroup/AppGroupAppFilter.tsx (100%) rename {src => apps/web/src}/components/ApplicationGroup/AppGroupDetailsRoute.tsx (100%) rename {src => apps/web/src}/components/ApplicationGroup/AppGroupRoute.tsx (100%) rename {src => apps/web/src}/components/ApplicationGroup/Constants.ts (100%) rename {src => apps/web/src}/components/ApplicationGroup/CreateAppGroup.tsx (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/EnvCDDetails/EnvCDDetails.tsx (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/EnvCDDetails/__mock__/EnvCDDetails.mock.ts (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/EnvCDDetails/__test__/EnvCDDetails.test.tsx (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/EnvCIDetails/EnvCIDetails.tsx (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/EnvCIDetails/__mock__/EnvCIDetails.mock.ts (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/EnvCIDetails/__test__/EnvCIDetails.test.tsx (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/EnvironmentConfig/ApplicationRoutes.tsx (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/EnvironmentConfig/EnvConfig.tsx (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/EnvironmentConfig/__mock__/EnvConfig.mock.ts (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/EnvironmentConfig/__test__/ApplicationRoutes.test.tsx (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/EnvironmentConfig/__test__/EnvConfig.test.tsx (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/EnvironmentOverview/AllExpandableDropdown.tsx (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/EnvironmentOverview/EnvironmentOverview.tsx (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/EnvironmentOverview/HibernateModal.tsx (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/EnvironmentOverview/HibernateStatusListDrawer.tsx (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/EnvironmentOverview/HibernateStatusRow.tsx (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/EnvironmentOverview/RestartStatusListDrawer.tsx (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/EnvironmentOverview/RestartWorkloadModal.tsx (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/EnvironmentOverview/__mock__/EnvironmentOverview.mock.ts (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/EnvironmentOverview/__test__/EnvironmentOverview.test.tsx (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/EnvironmentOverview/constants.ts (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/EnvironmentOverview/envOverview.scss (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/EnvironmentOverview/service.ts (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/TriggerView/BulkCDTrigger.tsx (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/TriggerView/BulkCITrigger.tsx (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/TriggerView/BulkSourceChange.tsx (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/TriggerView/EnvTriggerView.scss (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/TriggerView/EnvTriggerView.tsx (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/TriggerView/SourceUpdateResponseModal.tsx (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/TriggerView/TriggerModalTableRow.tsx (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/TriggerView/TriggerResponseModal.tsx (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/TriggerView/constants.ts (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/TriggerView/types.ts (100%) rename {src => apps/web/src}/components/ApplicationGroup/Details/TriggerView/utils.ts (100%) rename {src => apps/web/src}/components/ApplicationGroup/EnvEmptyStates.tsx (100%) rename {src => apps/web/src}/components/ApplicationGroup/EnvSelector.tsx (100%) rename {src => apps/web/src}/components/ApplicationGroup/List/EnvironmentListView.tsx (100%) rename {src => apps/web/src}/components/ApplicationGroup/List/EnvironmentsList.scss (100%) rename {src => apps/web/src}/components/ApplicationGroup/List/EnvironmentsList.tsx (100%) rename {src => apps/web/src}/components/ApplicationGroup/List/__mocks__/EnvironmentList.mock.ts (100%) rename {src => apps/web/src}/components/ApplicationGroup/List/__tests__/EnvironmentListView.test.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/AdvancedConfigOptions.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/Build.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/CIPipeline.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/ConditionContainer.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/Constants.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/CreatePluginModal/CreatePluginFormContent.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/CreatePluginModal/CreatePluginFormField.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/CreatePluginModal/CreatePluginInputVariableContainer.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/CreatePluginModal/CreatePluginModal.component.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/CreatePluginModal/CreatePluginModal.scss (100%) rename {src => apps/web/src}/components/CIPipelineN/CreatePluginModal/constants.ts (100%) rename {src => apps/web/src}/components/CIPipelineN/CreatePluginModal/index.ts (100%) rename {src => apps/web/src}/components/CIPipelineN/CreatePluginModal/service.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/CreatePluginModal/types.ts (100%) rename {src => apps/web/src}/components/CIPipelineN/CreatePluginModal/utils.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/CustomImageTag.type.ts (100%) rename {src => apps/web/src}/components/CIPipelineN/CustomImageTags.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/CustomInputOutputVariables.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/CustomInputVariableSelect.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/CustomScript.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/CustomScriptCard.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/DockerArgs.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/EnvironmentList.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/InputPluginSelect.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/MountFromHost.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/MultiplsPort.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/OutputDirectoryPath.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/PluginDetailHeader/CreatePluginButton.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/PluginDetailHeader/PluginDetailHeader.component.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/PluginDetailHeader/PluginVersionSelect.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/PluginDetailHeader/index.ts (100%) rename {src => apps/web/src}/components/CIPipelineN/PluginDetailHeader/utils.ts (100%) rename {src => apps/web/src}/components/CIPipelineN/PreBuild.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/Sidebar.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/TaskDetailComponent.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/TaskFieldTippyDescription.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/TaskList.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/TaskTitle.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/TaskTypeDetailComponent.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/VariableContainer.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/ciPipeline.utils.tsx (100%) rename {src => apps/web/src}/components/CIPipelineN/types.ts (100%) rename {src => apps/web/src}/components/ClusterNodes/ClusterEvents.tsx (100%) rename {src => apps/web/src}/components/ClusterNodes/ClusterManifest.tsx (100%) rename {src => apps/web/src}/components/ClusterNodes/ClusterNodeEmptyStates.tsx (100%) rename {src => apps/web/src}/components/ClusterNodes/ClusterOverview.tsx (100%) rename {src => apps/web/src}/components/ClusterNodes/ClusterSelectionList.tsx (100%) rename {src => apps/web/src}/components/ClusterNodes/ClusterTerminal.tsx (100%) rename {src => apps/web/src}/components/ClusterNodes/ColumnSelector.tsx (100%) rename {src => apps/web/src}/components/ClusterNodes/NodeActions/CordonNodeModal.tsx (100%) rename {src => apps/web/src}/components/ClusterNodes/NodeActions/DeleteNodeModal.tsx (100%) rename {src => apps/web/src}/components/ClusterNodes/NodeActions/DrainNodeModal.tsx (100%) rename {src => apps/web/src}/components/ClusterNodes/NodeActions/EditTaintsModal.tsx (100%) rename {src => apps/web/src}/components/ClusterNodes/NodeActions/NodeActionsMenu.tsx (100%) rename {src => apps/web/src}/components/ClusterNodes/NodeActions/validationRules.ts (100%) rename {src => apps/web/src}/components/ClusterNodes/NodeDetails.tsx (100%) rename {src => apps/web/src}/components/ClusterNodes/NodeDetailsList.tsx (100%) rename {src => apps/web/src}/components/ClusterNodes/NodeListSearchFilter.tsx (100%) rename {src => apps/web/src}/components/ClusterNodes/__mocks__/ClusterManifest.mock.ts (100%) rename {src => apps/web/src}/components/ClusterNodes/__mocks__/clusterAbout.mock.tsx (100%) rename {src => apps/web/src}/components/ClusterNodes/__tests__/ClusterManifest.test.tsx (100%) rename {src => apps/web/src}/components/ClusterNodes/__tests__/NodeList.test.tsx (100%) rename {src => apps/web/src}/components/ClusterNodes/clusterNodes.scss (100%) rename {src => apps/web/src}/components/ClusterNodes/clusterNodes.service.tsx (100%) rename {src => apps/web/src}/components/ClusterNodes/constants.ts (100%) rename {src => apps/web/src}/components/ClusterNodes/types.ts (100%) rename {src => apps/web/src}/components/Hotjar/Hotjar.tsx (100%) rename {src => apps/web/src}/components/Jobs/Constants.ts (100%) rename {src => apps/web/src}/components/Jobs/ExpandedRow/ExpandedRow.scss (100%) rename {src => apps/web/src}/components/Jobs/ExpandedRow/ExpandedRow.tsx (100%) rename {src => apps/web/src}/components/Jobs/JobDetails/JobDetails.tsx (100%) rename {src => apps/web/src}/components/Jobs/JobList/JobListContainer.tsx (100%) rename {src => apps/web/src}/components/Jobs/JobList/JobListFilters.tsx (100%) rename {src => apps/web/src}/components/Jobs/JobList/JobListView.tsx (100%) rename {src => apps/web/src}/components/Jobs/JobList/JobsList.tsx (100%) rename {src => apps/web/src}/components/Jobs/Jobs.tsx (100%) rename {src => apps/web/src}/components/Jobs/JobsEmptyState.tsx (100%) rename {src => apps/web/src}/components/Jobs/Service.ts (100%) rename {src => apps/web/src}/components/Jobs/Types.ts (100%) rename {src => apps/web/src}/components/Jobs/Utils.ts (100%) rename {src => apps/web/src}/components/LogViewer/LogViewer.scss (100%) rename {src => apps/web/src}/components/LogViewer/LogViewer.tsx (100%) rename {src => apps/web/src}/components/ResourceBrowser/Constants.ts (100%) rename {src => apps/web/src}/components/ResourceBrowser/PageHeader.buttons.tsx (100%) rename {src => apps/web/src}/components/ResourceBrowser/ResourceBrowser.scss (100%) rename {src => apps/web/src}/components/ResourceBrowser/ResourceBrowser.service.tsx (100%) rename {src => apps/web/src}/components/ResourceBrowser/ResourceBrowser.tsx (100%) rename {src => apps/web/src}/components/ResourceBrowser/ResourceBrowserRouter.tsx (100%) rename {src => apps/web/src}/components/ResourceBrowser/ResourceList/AdminTerminal.tsx (100%) rename {src => apps/web/src}/components/ResourceBrowser/ResourceList/ClusterSelector.tsx (100%) rename {src => apps/web/src}/components/ResourceBrowser/ResourceList/ConnectingToClusterState.tsx (100%) rename {src => apps/web/src}/components/ResourceBrowser/ResourceList/CreateResource.tsx (100%) rename {src => apps/web/src}/components/ResourceBrowser/ResourceList/DeleteResourcePopup.tsx (100%) rename {src => apps/web/src}/components/ResourceBrowser/ResourceList/EventList.tsx (100%) rename {src => apps/web/src}/components/ResourceBrowser/ResourceList/K8SResourceList.tsx (100%) rename {src => apps/web/src}/components/ResourceBrowser/ResourceList/K8SResourceTabComponent.tsx (100%) rename {src => apps/web/src}/components/ResourceBrowser/ResourceList/ResourceBrowserActionMenu.tsx (100%) rename {src => apps/web/src}/components/ResourceBrowser/ResourceList/ResourceFilterOptions.tsx (100%) rename {src => apps/web/src}/components/ResourceBrowser/ResourceList/ResourceList.component.tsx (100%) rename {src => apps/web/src}/components/ResourceBrowser/ResourceList/ResourceList.tsx (100%) rename {src => apps/web/src}/components/ResourceBrowser/ResourceList/ResourceListEmptyState.tsx (100%) rename {src => apps/web/src}/components/ResourceBrowser/ResourceList/Sidebar.tsx (100%) rename {src => apps/web/src}/components/ResourceBrowser/ResourceList/__tests__/Sidebar.test.tsx (100%) rename {src => apps/web/src}/components/ResourceBrowser/ResourceList/index.ts (100%) rename {src => apps/web/src}/components/ResourceBrowser/Types.ts (100%) rename {src => apps/web/src}/components/ResourceBrowser/Utils.tsx (100%) rename {src => apps/web/src}/components/__mocks__/monaco-editor.js (100%) rename {src => apps/web/src}/components/__mocks__/xterm-webfont.js (100%) rename {src => apps/web/src}/components/app/LogFilter.test.ts (100%) rename {src => apps/web/src}/components/app/LogFilter.ts (100%) rename {src => apps/web/src}/components/app/Overview/EnvironmentList.tsx (100%) rename {src => apps/web/src}/components/app/Overview/Overview.scss (100%) rename {src => apps/web/src}/components/app/Overview/Overview.tsx (100%) rename {src => apps/web/src}/components/app/Overview/TagChipsContainer.tsx (100%) rename {src => apps/web/src}/components/app/Overview/constants.ts (100%) rename {src => apps/web/src}/components/app/Overview/utils.tsx (100%) rename {src => apps/web/src}/components/app/ResourceTreeNodes.tsx (100%) rename {src => apps/web/src}/components/app/ResponsiveDrawer.tsx (100%) rename {src => apps/web/src}/components/app/WebWorker.ts (100%) rename {src => apps/web/src}/components/app/appLabelCommon.tsx (100%) rename {src => apps/web/src}/components/app/config.tsx (100%) rename {src => apps/web/src}/components/app/create/CreateApp.tsx (100%) rename {src => apps/web/src}/components/app/create/createApp.scss (100%) rename {src => apps/web/src}/components/app/create/service.tsx (100%) rename {src => apps/web/src}/components/app/create/validationRules.ts (100%) rename {src => apps/web/src}/components/app/details/AboutAppInfoModal.tsx (100%) rename {src => apps/web/src}/components/app/details/AboutTagEditModal.tsx (100%) rename {src => apps/web/src}/components/app/details/AppHeader.tsx (100%) rename {src => apps/web/src}/components/app/details/app.scss (100%) rename {src => apps/web/src}/components/app/details/appConfig/constants.ts (100%) rename {src => apps/web/src}/components/app/details/appDetails/AppDetails.tsx (100%) rename {src => apps/web/src}/components/app/details/appDetails/AppDetailsCDButton.tsx (100%) rename {src => apps/web/src}/components/app/details/appDetails/AppMetrics.tsx (100%) rename {src => apps/web/src}/components/app/details/appDetails/AppSecurity.tsx (100%) rename {src => apps/web/src}/components/app/details/appDetails/AppStatusCard.tsx (100%) rename {src => apps/web/src}/components/app/details/appDetails/DeployedCommitCard.tsx (100%) rename {src => apps/web/src}/components/app/details/appDetails/DeploymentStatusCard.tsx (100%) rename {src => apps/web/src}/components/app/details/appDetails/DeploymentStatusDetailModal.tsx (100%) rename {src => apps/web/src}/components/app/details/appDetails/GraphsModal.tsx (100%) rename {src => apps/web/src}/components/app/details/appDetails/IssuesCard.tsx (100%) rename {src => apps/web/src}/components/app/details/appDetails/IssuesListingModal.tsx (100%) rename {src => apps/web/src}/components/app/details/appDetails/LastUpdatedCard.tsx (100%) rename {src => apps/web/src}/components/app/details/appDetails/LoadingCard.tsx (100%) rename {src => apps/web/src}/components/app/details/appDetails/Readme.md (100%) rename {src => apps/web/src}/components/app/details/appDetails/SecurityVulnerabilityCard.tsx (100%) rename {src => apps/web/src}/components/app/details/appDetails/SourceInfo.tsx (100%) rename {src => apps/web/src}/components/app/details/appDetails/__mocks__/appDetails.mock.ts (100%) rename {src => apps/web/src}/components/app/details/appDetails/__tests__/GenericInfo.test.tsx (100%) rename {src => apps/web/src}/components/app/details/appDetails/appDetails.scss (100%) rename {src => apps/web/src}/components/app/details/appDetails/appDetails.service.ts (100%) rename {src => apps/web/src}/components/app/details/appDetails/appDetails.type.ts (100%) rename {src => apps/web/src}/components/app/details/appDetails/index.tsx (100%) rename {src => apps/web/src}/components/app/details/appDetails/utils.tsx (100%) rename {src => apps/web/src}/components/app/details/cIDetails/CIDetails.tsx (100%) rename {src => apps/web/src}/components/app/details/cIDetails/CISecurity.utils.tsx (100%) rename {src => apps/web/src}/components/app/details/cIDetails/Readme.md (100%) rename {src => apps/web/src}/components/app/details/cIDetails/cIDetails.util.tsx (100%) rename {src => apps/web/src}/components/app/details/cIDetails/ciDetails.scss (100%) rename {src => apps/web/src}/components/app/details/cIDetails/types.tsx (100%) rename {src => apps/web/src}/components/app/details/cdDetails/CDDetails.tsx (100%) rename {src => apps/web/src}/components/app/details/cdDetails/cd.type.ts (100%) rename {src => apps/web/src}/components/app/details/cdDetails/cdDetail.scss (100%) rename {src => apps/web/src}/components/app/details/cdDetails/service.ts (100%) rename {src => apps/web/src}/components/app/details/cdDetails/utils.tsx (100%) rename {src => apps/web/src}/components/app/details/cicdHistory/History.components.tsx (100%) rename {src => apps/web/src}/components/app/details/cicdHistory/types.tsx (100%) rename {src => apps/web/src}/components/app/details/main.tsx (100%) rename {src => apps/web/src}/components/app/details/metrics/BenchmarkModal.tsx (100%) rename {src => apps/web/src}/components/app/details/metrics/DeploymentMetrics.tsx (100%) rename {src => apps/web/src}/components/app/details/metrics/DeploymentTable.tsx (100%) rename {src => apps/web/src}/components/app/details/metrics/DeploymentTableModal.tsx (100%) rename {src => apps/web/src}/components/app/details/metrics/deploymentMetrics.data.json (100%) rename {src => apps/web/src}/components/app/details/metrics/deploymentMetrics.scss (100%) rename {src => apps/web/src}/components/app/details/metrics/deploymentMetrics.service.ts (100%) rename {src => apps/web/src}/components/app/details/metrics/deploymentMetrics.test.ts (100%) rename {src => apps/web/src}/components/app/details/metrics/deploymentMetrics.types.ts (100%) rename {src => apps/web/src}/components/app/details/metrics/deploymentMetrics.util.tsx (100%) rename {src => apps/web/src}/components/app/details/testViewer/Contributing.md (100%) rename {src => apps/web/src}/components/app/details/testViewer/List.tsx (100%) rename {src => apps/web/src}/components/app/details/testViewer/Test.types.ts (100%) rename {src => apps/web/src}/components/app/details/testViewer/TestRunDetails.scss (100%) rename {src => apps/web/src}/components/app/details/testViewer/TestRunDetails.tsx (100%) rename {src => apps/web/src}/components/app/details/testViewer/TestRunList.tsx (100%) rename {src => apps/web/src}/components/app/details/testViewer/service.ts (100%) rename {src => apps/web/src}/components/app/details/triggerView/BranchRegexModal.tsx (100%) rename {src => apps/web/src}/components/app/details/triggerView/CIMaterialModal.tsx (100%) rename {src => apps/web/src}/components/app/details/triggerView/CiWebhookDebuggingModal.tsx (100%) rename {src => apps/web/src}/components/app/details/triggerView/Constants.ts (100%) rename {src => apps/web/src}/components/app/details/triggerView/EmptyStateCIMaterial.tsx (100%) rename {src => apps/web/src}/components/app/details/triggerView/MaterialSource.tsx (100%) rename {src => apps/web/src}/components/app/details/triggerView/PipelineConfigDiff/PipelineConfigDiff.scss (100%) rename {src => apps/web/src}/components/app/details/triggerView/PipelineConfigDiff/PipelineConfigDiff.tsx (100%) rename {src => apps/web/src}/components/app/details/triggerView/PipelineConfigDiff/PipelineConfigDiffStatusTile.tsx (100%) rename {src => apps/web/src}/components/app/details/triggerView/PipelineConfigDiff/index.ts (100%) rename {src => apps/web/src}/components/app/details/triggerView/PipelineConfigDiff/types.ts (100%) rename {src => apps/web/src}/components/app/details/triggerView/PipelineConfigDiff/usePipelineDeploymentConfig.ts (100%) rename {src => apps/web/src}/components/app/details/triggerView/PipelineConfigDiff/utils.tsx (100%) rename {src => apps/web/src}/components/app/details/triggerView/TriggerView.tsx (100%) rename {src => apps/web/src}/components/app/details/triggerView/TriggerView.utils.tsx (100%) rename {src => apps/web/src}/components/app/details/triggerView/__mocks__/trigger.view.mock.ts (100%) rename {src => apps/web/src}/components/app/details/triggerView/__mocks__/workflow.mock.ts (100%) rename {src => apps/web/src}/components/app/details/triggerView/__mocks__/workflow.sequential.mock.ts (100%) rename {src => apps/web/src}/components/app/details/triggerView/__tests__/triggerview.test.tsx (100%) rename {src => apps/web/src}/components/app/details/triggerView/__tests__/workflow.service.test.ts (100%) rename {src => apps/web/src}/components/app/details/triggerView/assets/cdMaterialFooter.png (100%) rename {src => apps/web/src}/components/app/details/triggerView/assets/configDiff.png (100%) rename {src => apps/web/src}/components/app/details/triggerView/assets/configHeader.png (100%) rename {src => apps/web/src}/components/app/details/triggerView/cdMaterial.readme.md (100%) rename {src => apps/web/src}/components/app/details/triggerView/cdMaterial.tsx (100%) rename {src => apps/web/src}/components/app/details/triggerView/cdMaterials.utils.ts (100%) rename {src => apps/web/src}/components/app/details/triggerView/ciMaterial.tsx (100%) rename {src => apps/web/src}/components/app/details/triggerView/ciWebhook.service.ts (100%) rename {src => apps/web/src}/components/app/details/triggerView/ciWebhookModal.css (100%) rename {src => apps/web/src}/components/app/details/triggerView/config.ts (100%) rename {src => apps/web/src}/components/app/details/triggerView/types.ts (100%) rename {src => apps/web/src}/components/app/details/triggerView/workflow.service.ts (100%) rename {src => apps/web/src}/components/app/details/triggerView/workflow/Workflow.tsx (100%) rename {src => apps/web/src}/components/app/details/triggerView/workflow/nodes/TriggerExternalCINode.tsx (100%) rename {src => apps/web/src}/components/app/details/triggerView/workflow/nodes/TriggerLinkedCINode.tsx (100%) rename {src => apps/web/src}/components/app/details/triggerView/workflow/nodes/staticNode.tsx (100%) rename {src => apps/web/src}/components/app/details/triggerView/workflow/nodes/triggerCDNode.tsx (100%) rename {src => apps/web/src}/components/app/details/triggerView/workflow/nodes/triggerCINode.tsx (100%) rename {src => apps/web/src}/components/app/details/triggerView/workflow/nodes/triggerPrePostCDNode.tsx (100%) rename {src => apps/web/src}/components/app/details/triggerView/workflow/nodes/workflow.utils.tsx (100%) rename {src => apps/web/src}/components/app/grepSSEworker.ts (100%) rename {src => apps/web/src}/components/app/list-new/AppList.tsx (100%) rename {src => apps/web/src}/components/app/list-new/AppListFilters.tsx (100%) rename {src => apps/web/src}/components/app/list-new/AppListService.ts (100%) rename {src => apps/web/src}/components/app/list-new/AppListType.ts (100%) rename {src => apps/web/src}/components/app/list-new/Constants.ts (100%) rename {src => apps/web/src}/components/app/list-new/GenericAppList.tsx (100%) rename {src => apps/web/src}/components/app/list-new/HelmAppList.tsx (100%) rename {src => apps/web/src}/components/app/list-new/list.utils.ts (100%) rename {src => apps/web/src}/components/app/list/DevtronAppListContainer.tsx (100%) rename {src => apps/web/src}/components/app/list/TriggerUrl.tsx (100%) rename {src => apps/web/src}/components/app/list/appList.modal.ts (100%) rename {src => apps/web/src}/components/app/list/constants.tsx (100%) rename {src => apps/web/src}/components/app/list/emptyView/Empty.tsx (100%) rename {src => apps/web/src}/components/app/list/emptyView/types.tsx (100%) rename {src => apps/web/src}/components/app/list/expandedRow/ExpandedRow.tsx (100%) rename {src => apps/web/src}/components/app/list/expandedRow/expandedRow.css (100%) rename {src => apps/web/src}/components/app/list/expandedRow/types.tsx (100%) rename {src => apps/web/src}/components/app/list/list.scss (100%) rename {src => apps/web/src}/components/app/list/types.tsx (100%) rename {src => apps/web/src}/components/app/service.ts (100%) rename {src => apps/web/src}/components/app/types.ts (100%) rename {src => apps/web/src}/components/app/typing.d.ts (100%) rename {src => apps/web/src}/components/bulkEdits/BulkEdits.tsx (100%) rename {src => apps/web/src}/components/bulkEdits/bulkEdit.scss (100%) rename {src => apps/web/src}/components/bulkEdits/bulkEdits.type.tsx (100%) rename {src => apps/web/src}/components/bulkEdits/bulkedit.utils.tsx (100%) rename {src => apps/web/src}/components/bulkEdits/bulkedits.service.tsx (100%) rename {src => apps/web/src}/components/bulkEdits/constants.ts (100%) rename {src => apps/web/src}/components/cdPipeline/BuildCD.tsx (100%) rename {src => apps/web/src}/components/cdPipeline/CDPipeline.tsx (100%) rename {src => apps/web/src}/components/cdPipeline/DeleteCDNode.tsx (100%) rename {src => apps/web/src}/components/cdPipeline/PullImageDigestToggle.tsx (100%) rename {src => apps/web/src}/components/cdPipeline/cdPipeline.scss (100%) rename {src => apps/web/src}/components/cdPipeline/cdPipeline.service.ts (100%) rename {src => apps/web/src}/components/cdPipeline/cdPipeline.types.ts (100%) rename {src => apps/web/src}/components/cdPipeline/cdpipeline.util.tsx (100%) rename {src => apps/web/src}/components/cdPipeline/types.ts (100%) rename {src => apps/web/src}/components/cdPipeline/validationRules.ts (100%) rename {src => apps/web/src}/components/chartRepo/ChartRepo.tsx (100%) rename {src => apps/web/src}/components/chartRepo/ChartRepoType.tsx (100%) rename {src => apps/web/src}/components/chartRepo/chartRepo.scss (100%) rename {src => apps/web/src}/components/chartRepo/chartRepo.service.tsx (100%) rename {src => apps/web/src}/components/chartRepo/chartRepo.types.ts (100%) rename {src => apps/web/src}/components/charts/AdvancedConfig.tsx (100%) rename {src => apps/web/src}/components/charts/ChartGroupAdvanceDeploy.tsx (100%) rename {src => apps/web/src}/components/charts/ChartGroupDeployments.tsx (100%) rename {src => apps/web/src}/components/charts/ChartGroupDetails.tsx (100%) rename {src => apps/web/src}/components/charts/ChartGroupUpdate.tsx (100%) rename {src => apps/web/src}/components/charts/ChartHeaderFilters.tsx (100%) rename {src => apps/web/src}/components/charts/Charts.tsx (100%) rename {src => apps/web/src}/components/charts/MultiChartSummary.tsx (100%) rename {src => apps/web/src}/components/charts/SavedValues/SavedValuesList.tsx (100%) rename {src => apps/web/src}/components/charts/SavedValues/savedValues.scss (100%) rename {src => apps/web/src}/components/charts/SavedValues/types.ts (100%) rename {src => apps/web/src}/components/charts/chartValues/ChartValues.tsx (100%) rename {src => apps/web/src}/components/charts/charts.helper.ts (100%) rename {src => apps/web/src}/components/charts/charts.scss (100%) rename {src => apps/web/src}/components/charts/charts.service.ts (100%) rename {src => apps/web/src}/components/charts/charts.types.tsx (100%) rename {src => apps/web/src}/components/charts/charts.util.tsx (100%) rename {src => apps/web/src}/components/charts/constants.ts (100%) rename {src => apps/web/src}/components/charts/dialogs/ValuesYamlConfirmDialog.tsx (100%) rename {src => apps/web/src}/components/charts/discoverChartDetail/About.tsx (100%) rename {src => apps/web/src}/components/charts/discoverChartDetail/ChartDeploymentList.tsx (100%) rename {src => apps/web/src}/components/charts/discoverChartDetail/ChartVersionSelectorModal.tsx (100%) rename {src => apps/web/src}/components/charts/discoverChartDetail/DiscoverChartDetails.scss (100%) rename {src => apps/web/src}/components/charts/discoverChartDetail/DiscoverChartDetails.tsx (100%) rename {src => apps/web/src}/components/charts/discoverChartDetail/constants.ts (100%) rename {src => apps/web/src}/components/charts/discoverChartDetail/types.ts (100%) rename {src => apps/web/src}/components/charts/list/AddChartSource.tsx (100%) rename {src => apps/web/src}/components/charts/list/ChartGroup.tsx (100%) rename {src => apps/web/src}/components/charts/list/ChartListPopUp.tsx (100%) rename {src => apps/web/src}/components/charts/list/ChartListPopUpRow.tsx (100%) rename {src => apps/web/src}/components/charts/list/DiscoverCharts.tsx (100%) rename {src => apps/web/src}/components/charts/list/list.scss (100%) rename {src => apps/web/src}/components/charts/modal/ChartGroupBasicDeploy.tsx (100%) rename {src => apps/web/src}/components/charts/modal/CreateChartGroup.tsx (100%) rename {src => apps/web/src}/components/charts/modal/DeployChart.scss (100%) rename {src => apps/web/src}/components/charts/modal/deployChart.types.ts (100%) rename {src => apps/web/src}/components/charts/useChartGroup.ts (100%) rename {src => apps/web/src}/components/charts/util/ChartGroupCard.tsx (100%) rename {src => apps/web/src}/components/charts/util/ChartSelect.tsx (100%) rename {src => apps/web/src}/components/checkList/AllChartsCheck.tsx (100%) rename {src => apps/web/src}/components/checkList/AllCheckModal.tsx (100%) rename {src => apps/web/src}/components/checkList/AppCheckList.tsx (100%) rename {src => apps/web/src}/components/checkList/ChartCheckList.tsx (100%) rename {src => apps/web/src}/components/checkList/CustomAppDeploy.tsx (100%) rename {src => apps/web/src}/components/checkList/GlobalAllCheckModal.tsx (100%) rename {src => apps/web/src}/components/checkList/GlobalChartCheck.tsx (100%) rename {src => apps/web/src}/components/checkList/SampleAppDeploy.tsx (100%) rename {src => apps/web/src}/components/checkList/checklist.scss (100%) rename {src => apps/web/src}/components/checkList/checklist.service.ts (100%) rename {src => apps/web/src}/components/checkList/checklist.type.ts (100%) rename {src => apps/web/src}/components/ciConfig/BuildContext.tsx (100%) rename {src => apps/web/src}/components/ciConfig/CIAdvancedConfig.tsx (100%) rename {src => apps/web/src}/components/ciConfig/CIBuildConfigDiff.tsx (100%) rename {src => apps/web/src}/components/ciConfig/CIBuildpackBuildOptions.tsx (100%) rename {src => apps/web/src}/components/ciConfig/CIConfig.scss (100%) rename {src => apps/web/src}/components/ciConfig/CIConfig.tsx (100%) rename {src => apps/web/src}/components/ciConfig/CIConfig.utils.ts (100%) rename {src => apps/web/src}/components/ciConfig/CIConfigDiffView.tsx (100%) rename {src => apps/web/src}/components/ciConfig/CIConfigForm.tsx (100%) rename {src => apps/web/src}/components/ciConfig/CIContainerRegistryConfig.tsx (100%) rename {src => apps/web/src}/components/ciConfig/CICreateDockerfileOption.tsx (100%) rename {src => apps/web/src}/components/ciConfig/CIDockerFileConfig.tsx (100%) rename {src => apps/web/src}/components/ciConfig/CISelfDockerBuildOption.tsx (100%) rename {src => apps/web/src}/components/ciConfig/CreateDockerFileLanguageOptions.tsx (100%) rename {src => apps/web/src}/components/ciConfig/TargetPlatformSelector.tsx (100%) rename {src => apps/web/src}/components/ciConfig/ciConfigConstant.ts (100%) rename {src => apps/web/src}/components/ciConfig/service.tsx (100%) rename {src => apps/web/src}/components/ciConfig/types.tsx (100%) rename {src => apps/web/src}/components/ciConfig/utils.tsx (100%) rename {src => apps/web/src}/components/ciPipeline/CIPipelineAdvanced.tsx (100%) rename {src => apps/web/src}/components/ciPipeline/ConfigureWebhook.tsx (100%) rename {src => apps/web/src}/components/ciPipeline/ExternalCIPipeline.tsx (100%) rename {src => apps/web/src}/components/ciPipeline/LinkedCIPipelineEdit.tsx (100%) rename {src => apps/web/src}/components/ciPipeline/LinkedCIPipelineView.tsx (100%) rename {src => apps/web/src}/components/ciPipeline/Readme.md (100%) rename {src => apps/web/src}/components/ciPipeline/SourceMaterials.tsx (100%) rename {src => apps/web/src}/components/ciPipeline/Webhook/WebhookDetailsModal.tsx (100%) rename {src => apps/web/src}/components/ciPipeline/Webhook/types.ts (100%) rename {src => apps/web/src}/components/ciPipeline/Webhook/webhook.service.ts (100%) rename {src => apps/web/src}/components/ciPipeline/Webhook/webhook.utils.ts (100%) rename {src => apps/web/src}/components/ciPipeline/Webhook/webhookDetails.scss (100%) rename {src => apps/web/src}/components/ciPipeline/WebhookSelectorCondition.tsx (100%) rename {src => apps/web/src}/components/ciPipeline/ciPipeline.scss (100%) rename {src => apps/web/src}/components/ciPipeline/ciPipeline.service.ts (100%) rename {src => apps/web/src}/components/ciPipeline/types.ts (100%) rename {src => apps/web/src}/components/ciPipeline/validationRules.ts (100%) rename {src => apps/web/src}/components/cluster/Cluster.md (100%) rename {src => apps/web/src}/components/cluster/Cluster.tsx (100%) rename {src => apps/web/src}/components/cluster/ClusterCodeEditor.tsx (100%) rename {src => apps/web/src}/components/cluster/ClusterComponentModal.tsx (100%) rename {src => apps/web/src}/components/cluster/ClusterForm.tsx (100%) rename {src => apps/web/src}/components/cluster/ClusterInfoStepsModal.tsx (100%) rename {src => apps/web/src}/components/cluster/ClusterInstallStatus.tsx (100%) rename {src => apps/web/src}/components/cluster/UseNameListDropdown.tsx (100%) rename {src => apps/web/src}/components/cluster/cluster.scss (100%) rename {src => apps/web/src}/components/cluster/cluster.service.ts (100%) rename {src => apps/web/src}/components/cluster/cluster.type.ts (100%) rename {src => apps/web/src}/components/cluster/cluster.util.ts (100%) rename {src => apps/web/src}/components/command/Command.tsx (100%) rename {src => apps/web/src}/components/command/CommandErrorBoundary.tsx (100%) rename {src => apps/web/src}/components/command/Readme.md (100%) rename {src => apps/web/src}/components/command/command.css (100%) rename {src => apps/web/src}/components/command/command.types.ts (100%) rename {src => apps/web/src}/components/command/command.util.ts (100%) rename {src => apps/web/src}/components/command/index.ts (100%) rename {src => apps/web/src}/components/common/Accordian/Accordian.tsx (100%) rename {src => apps/web/src}/components/common/AppDetailsEmptyState.tsx (100%) rename {src => apps/web/src}/components/common/Carousel/Carousel.scss (100%) rename {src => apps/web/src}/components/common/Carousel/Carousel.tsx (100%) rename {src => apps/web/src}/components/common/ClusterMetaDataBar/ClusterMetaData.scss (100%) rename {src => apps/web/src}/components/common/ClusterMetaDataBar/ClusterMetaDataBar.tsx (100%) rename {src => apps/web/src}/components/common/ClusterMetaDataBar/types.ts (100%) rename {src => apps/web/src}/components/common/ClusterNotReachableDailog/ClusterNotReachableDialog.tsx (100%) rename {src => apps/web/src}/components/common/ClusterNotReachableDailog/ClusterNotReachableDialog.type.ts (100%) rename {src => apps/web/src}/components/common/ContentCard/ContentCard.scss (100%) rename {src => apps/web/src}/components/common/ContentCard/ContentCard.tsx (100%) rename {src => apps/web/src}/components/common/ContentCard/ContentCard.types.ts (100%) rename {src => apps/web/src}/components/common/Contexts/AppContext.ts (100%) rename {src => apps/web/src}/components/common/Contexts/index.ts (100%) rename {src => apps/web/src}/components/common/DatePickers/Calender.tsx (100%) rename {src => apps/web/src}/components/common/DatePickers/DayPickerRangeController.tsx (100%) rename {src => apps/web/src}/components/common/DatePickers/calendar.css (100%) rename {src => apps/web/src}/components/common/DeploymentTypeIcon/DeploymentTypeIcon.tsx (100%) rename {src => apps/web/src}/components/common/DeprecatedUpdateWarn.tsx (100%) rename {src => apps/web/src}/components/common/Description/GenericDescription.scss (100%) rename {src => apps/web/src}/components/common/Description/GenericDescription.tsx (100%) rename {src => apps/web/src}/components/common/DynamicTabs/DynamicTabs.component.tsx (100%) rename {src => apps/web/src}/components/common/DynamicTabs/DynamicTabs.scss (100%) rename {src => apps/web/src}/components/common/DynamicTabs/DynamicTabs.timer.tsx (100%) rename {src => apps/web/src}/components/common/DynamicTabs/DynamicTabs.tsx (100%) rename {src => apps/web/src}/components/common/DynamicTabs/Types.ts (100%) rename {src => apps/web/src}/components/common/DynamicTabs/Utils.ts (100%) rename {src => apps/web/src}/components/common/DynamicTabs/__tests__/DynamicTabs.test.tsx (100%) rename {src => apps/web/src}/components/common/DynamicTabs/index.ts (100%) rename {src => apps/web/src}/components/common/DynamicTabs/useTabs.ts (100%) rename {src => apps/web/src}/components/common/ExportToCsv/ExportToCsv.tsx (100%) rename {src => apps/web/src}/components/common/ExportToCsv/constants.ts (100%) rename {src => apps/web/src}/components/common/ExportToCsv/exportToCsv.scss (100%) rename {src => apps/web/src}/components/common/FloatingVariablesSuggestions/FloatingVariablesSuggestions.tsx (100%) rename {src => apps/web/src}/components/common/FloatingVariablesSuggestions/SuggestionItem.tsx (100%) rename {src => apps/web/src}/components/common/FloatingVariablesSuggestions/Suggestions.tsx (100%) rename {src => apps/web/src}/components/common/FloatingVariablesSuggestions/SuggestionsInfo.tsx (100%) rename {src => apps/web/src}/components/common/FloatingVariablesSuggestions/__tests__/FloatingVariablesSuggestions.test.tsx (100%) rename {src => apps/web/src}/components/common/FloatingVariablesSuggestions/__tests__/Suggestions.test.tsx (100%) rename {src => apps/web/src}/components/common/FloatingVariablesSuggestions/__tests__/SuggestionsInfo.test.tsx (100%) rename {src => apps/web/src}/components/common/FloatingVariablesSuggestions/__tests__/SuggestionsItem.test.tsx (100%) rename {src => apps/web/src}/components/common/FloatingVariablesSuggestions/__tests__/service.test.ts (100%) rename {src => apps/web/src}/components/common/FloatingVariablesSuggestions/constants.ts (100%) rename {src => apps/web/src}/components/common/FloatingVariablesSuggestions/mocks.ts (100%) rename {src => apps/web/src}/components/common/FloatingVariablesSuggestions/service.ts (100%) rename {src => apps/web/src}/components/common/FloatingVariablesSuggestions/types.ts (100%) rename {src => apps/web/src}/components/common/GitInfoMaterial.tsx (100%) rename {src => apps/web/src}/components/common/GitTabs/GitProviderTab.tsx (100%) rename {src => apps/web/src}/components/common/GitTabs/GitProviderTabIcons.tsx (100%) rename {src => apps/web/src}/components/common/GitTabs/constants.ts (100%) rename {src => apps/web/src}/components/common/GitTabs/types.ts (100%) rename {src => apps/web/src}/components/common/GitTabs/utils.tsx (100%) rename {src => apps/web/src}/components/common/HiddenInput/HiddenInput.tsx (100%) rename {src => apps/web/src}/components/common/HiddenInput/types.ts (100%) rename {src => apps/web/src}/components/common/LazyImage/LazyImage.tsx (100%) rename {src => apps/web/src}/components/common/List/List.tsx (100%) rename {src => apps/web/src}/components/common/List/list.scss (100%) rename {src => apps/web/src}/components/common/MultiSelect/MultiSelect.tsx (100%) rename {src => apps/web/src}/components/common/MultiSelect/index.tsx (100%) rename {src => apps/web/src}/components/common/Select/Select.tsx (100%) rename {src => apps/web/src}/components/common/Select/select.css (100%) rename {src => apps/web/src}/components/common/Select/types.ts (100%) rename {src => apps/web/src}/components/common/TLSConnectionForm/TLSConnectionForm.component.tsx (100%) rename {src => apps/web/src}/components/common/TLSConnectionForm/TLSInputField.tsx (100%) rename {src => apps/web/src}/components/common/TLSConnectionForm/index.ts (100%) rename {src => apps/web/src}/components/common/TLSConnectionForm/types.ts (100%) rename {src => apps/web/src}/components/common/TLSConnectionForm/utils.ts (100%) rename {src => apps/web/src}/components/common/ValidateForm/ValidateForm.tsx (100%) rename {src => apps/web/src}/components/common/ValidateForm/validateForm.css (100%) rename {src => apps/web/src}/components/common/awsRegionList.json (100%) rename {src => apps/web/src}/components/common/eaEmptyState/EAEmptyState.tsx (100%) rename {src => apps/web/src}/components/common/eaEmptyState/eaEmptyState.css (100%) rename {src => apps/web/src}/components/common/edge/colors.tsx (100%) rename {src => apps/web/src}/components/common/edge/rectangularEdge.tsx (100%) rename {src => apps/web/src}/components/common/edge/straightEdge.tsx (100%) rename {src => apps/web/src}/components/common/emptyState/ChartEmptyState.tsx (100%) rename {src => apps/web/src}/components/common/errorBoundary.tsx (100%) rename {src => apps/web/src}/components/common/formFields/CopyButton.tsx (100%) rename {src => apps/web/src}/components/common/formFields/CustomPassword.tsx (100%) rename {src => apps/web/src}/components/common/formFields/DevtronSwitch.tsx (100%) rename {src => apps/web/src}/components/common/formFields/Typeahead.tsx (100%) rename {src => apps/web/src}/components/common/formFields/Widgets/Widgets.scss (100%) rename {src => apps/web/src}/components/common/formFields/Widgets/Widgets.tsx (100%) rename {src => apps/web/src}/components/common/formFields/Widgets/Widgets.type.ts (100%) rename {src => apps/web/src}/components/common/formFields/customPassword.css (100%) rename {src => apps/web/src}/components/common/helpers/Helpers.tsx (100%) rename {src => apps/web/src}/components/common/helpers/compareVersion.ts (100%) rename {src => apps/web/src}/components/common/helpers/isEmpty.ts (100%) rename {src => apps/web/src}/components/common/helpers/isSubset.ts (100%) rename {src => apps/web/src}/components/common/helpers/time.ts (100%) rename {src => apps/web/src}/components/common/helpers/types.ts (100%) rename {src => apps/web/src}/components/common/helpers/utils.tsx (100%) rename {src => apps/web/src}/components/common/helpers/workflowURL.ts (100%) rename {src => apps/web/src}/components/common/hooks/FileReader.ts (100%) rename {src => apps/web/src}/components/common/hooks/__tests__/FileReader.test.tsx (100%) rename {src => apps/web/src}/components/common/hooks/constants.ts (100%) rename {src => apps/web/src}/components/common/hooks/types.ts (100%) rename {src => apps/web/src}/components/common/icons/Icons.tsx (100%) rename {src => apps/web/src}/components/common/index.ts (100%) rename {src => apps/web/src}/components/common/lineChart/lineChart.css (100%) rename {src => apps/web/src}/components/common/lineChart/lineChart.tsx (100%) rename {src => apps/web/src}/components/common/lineChart/types.tsx (100%) rename {src => apps/web/src}/components/common/navigation/Navigation.tsx (100%) rename {src => apps/web/src}/components/common/navigation/NavigationRoutes.tsx (100%) rename {src => apps/web/src}/components/common/navigation/navigation.scss (100%) rename {src => apps/web/src}/components/common/navigation/types.ts (100%) rename {src => apps/web/src}/components/deploymentConfig/ChartSelectorDropdown.tsx (100%) rename {src => apps/web/src}/components/deploymentConfig/DeploymentConfig.tsx (100%) rename {src => apps/web/src}/components/deploymentConfig/DeploymentConfig.utils.ts (100%) rename {src => apps/web/src}/components/deploymentConfig/DeploymentConfigReducer.ts (100%) rename {src => apps/web/src}/components/deploymentConfig/DeploymentTemplateView/DeploymentConfigFormCTA.tsx (100%) rename {src => apps/web/src}/components/deploymentConfig/DeploymentTemplateView/DeploymentConfigToolbar.tsx (100%) rename {src => apps/web/src}/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateEditorView.tsx (100%) rename {src => apps/web/src}/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateGUIView.tsx (100%) rename {src => apps/web/src}/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateOptionsTab.tsx (100%) rename {src => apps/web/src}/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateOverride.tsx (100%) rename {src => apps/web/src}/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateOverrideForm.tsx (100%) rename {src => apps/web/src}/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateReadOnlyEditorView.tsx (100%) rename {src => apps/web/src}/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateView.component.tsx (100%) rename {src => apps/web/src}/components/deploymentConfig/Readme.md (100%) rename {src => apps/web/src}/components/deploymentConfig/ReadmeConfig.tsx (100%) rename {src => apps/web/src}/components/deploymentConfig/constants.tsx (100%) rename {src => apps/web/src}/components/deploymentConfig/deploymentConfig.scss (100%) rename {src => apps/web/src}/components/deploymentConfig/service.tsx (100%) rename {src => apps/web/src}/components/deploymentConfig/types.tsx (100%) rename {src => apps/web/src}/components/deploymentConfig/utils.tsx (100%) rename {src => apps/web/src}/components/dockerRegistry/Docker.tsx (100%) rename {src => apps/web/src}/components/dockerRegistry/ManageRegistry.tsx (100%) rename {src => apps/web/src}/components/dockerRegistry/creatableStyles.ts (100%) rename {src => apps/web/src}/components/dockerRegistry/dockerType.tsx (100%) rename {src => apps/web/src}/components/dockerRegistry/service.tsx (100%) rename {src => apps/web/src}/components/external-apps/ExternalAppService.ts (100%) rename {src => apps/web/src}/components/external-apps/ExternalApps.tsx (100%) rename {src => apps/web/src}/components/externalArgoApps/ExternalArgoApp.tsx (100%) rename {src => apps/web/src}/components/externalArgoApps/ExternalArgoAppDetail.tsx (100%) rename {src => apps/web/src}/components/externalArgoApps/externalArgoApp.type.ts (100%) rename {src => apps/web/src}/components/externalLinks/ExternalLinks.component.tsx (100%) rename {src => apps/web/src}/components/externalLinks/ExternalLinks.service.ts (100%) rename {src => apps/web/src}/components/externalLinks/ExternalLinks.tsx (100%) rename {src => apps/web/src}/components/externalLinks/ExternalLinks.type.ts (100%) rename {src => apps/web/src}/components/externalLinks/ExternalLinks.utils.ts (100%) rename {src => apps/web/src}/components/externalLinks/ExternalLinksCRUD/AddExternalLink.scss (100%) rename {src => apps/web/src}/components/externalLinks/ExternalLinksCRUD/AddExternalLink.tsx (100%) rename {src => apps/web/src}/components/externalLinks/ExternalLinksCRUD/ConfigureLinkAction.tsx (100%) rename {src => apps/web/src}/components/externalLinks/ExternalLinksCRUD/DeleteExternalLinkDialog.tsx (100%) rename {src => apps/web/src}/components/externalLinks/ExternalLinksCRUD/IdentifierSelector.tsx (100%) rename {src => apps/web/src}/components/externalLinks/ExternalLinksFilters.tsx (100%) rename {src => apps/web/src}/components/externalLinks/externalLinks.component.scss (100%) rename {src => apps/web/src}/components/externalLinks/externalLinks.scss (100%) rename {src => apps/web/src}/components/gitOps/GitOpsConfiguration.tsx (100%) rename {src => apps/web/src}/components/gitOps/UpdateConfirmationDialog.tsx (100%) rename {src => apps/web/src}/components/gitOps/UserGitRepConfiguration.tsx (100%) rename {src => apps/web/src}/components/gitOps/UserGitRepo.tsx (100%) rename {src => apps/web/src}/components/gitOps/__tests__/GitOpsConfiguration.test.tsx (100%) rename {src => apps/web/src}/components/gitOps/constants.ts (100%) rename {src => apps/web/src}/components/gitOps/gitops.scss (100%) rename {src => apps/web/src}/components/gitOps/gitops.service.tsx (100%) rename {src => apps/web/src}/components/gitOps/gitops.type.ts (100%) rename {src => apps/web/src}/components/gitOps/utils.ts (100%) rename {src => apps/web/src}/components/gitProvider/AddGitHostConfigModal.tsx (100%) rename {src => apps/web/src}/components/gitProvider/GitProvider.tsx (100%) rename {src => apps/web/src}/components/gitProvider/gitProvider.scss (100%) rename {src => apps/web/src}/components/gitProvider/gitProvider.service.tsx (100%) rename {src => apps/web/src}/components/gitProvider/gitProvider.util.tsx (100%) rename {src => apps/web/src}/components/gitProvider/types.ts (100%) rename {src => apps/web/src}/components/globalConfigurations/GlobalConfiguration.tsx (100%) rename {src => apps/web/src}/components/globalConfigurations/GlobalConfigurationProvider.tsx (100%) rename {src => apps/web/src}/components/globalConfigurations/Readme.md (100%) rename {src => apps/web/src}/components/globalConfigurations/globalConfiguration.type.ts (100%) rename {src => apps/web/src}/components/globalConfigurations/globalConfigurations.scss (100%) rename {src => apps/web/src}/components/globalConfigurations/types.ts (100%) rename {src => apps/web/src}/components/hostURL/HostURL.tsx (100%) rename {src => apps/web/src}/components/hostURL/hosturl.scss (100%) rename {src => apps/web/src}/components/hostURL/hosturl.service.ts (100%) rename {src => apps/web/src}/components/hostURL/hosturl.type.ts (100%) rename {src => apps/web/src}/components/hyperion/EnvironmentSelect.scss (100%) rename {src => apps/web/src}/components/hyperion/EnvironmentSelect.tsx (100%) rename {src => apps/web/src}/components/login/Login.tsx (100%) rename {src => apps/web/src}/components/login/constants.ts (100%) rename {src => apps/web/src}/components/login/login.scss (100%) rename {src => apps/web/src}/components/login/login.service.ts (100%) rename {src => apps/web/src}/components/login/login.types.ts (100%) rename {src => apps/web/src}/components/material/CreateMaterial.tsx (100%) rename {src => apps/web/src}/components/material/MaterialList.tsx (100%) rename {src => apps/web/src}/components/material/MaterialView.tsx (100%) rename {src => apps/web/src}/components/material/Readme.md (100%) rename {src => apps/web/src}/components/material/UpdateMaterial.tsx (100%) rename {src => apps/web/src}/components/material/constants.ts (100%) rename {src => apps/web/src}/components/material/material.scss (100%) rename {src => apps/web/src}/components/material/material.service.ts (100%) rename {src => apps/web/src}/components/material/material.types.ts (100%) rename {src => apps/web/src}/components/notifications/AddNotification.tsx (100%) rename {src => apps/web/src}/components/notifications/ConfigurationTab.tsx (100%) rename {src => apps/web/src}/components/notifications/CreateHeaderDetails.tsx (100%) rename {src => apps/web/src}/components/notifications/ModifyRecipientsModal.tsx (100%) rename {src => apps/web/src}/components/notifications/NotificationTab.tsx (100%) rename {src => apps/web/src}/components/notifications/Notifications.tsx (100%) rename {src => apps/web/src}/components/notifications/SESConfigModal.tsx (100%) rename {src => apps/web/src}/components/notifications/SMTPConfigModal.tsx (100%) rename {src => apps/web/src}/components/notifications/SlackConfigModal.tsx (100%) rename {src => apps/web/src}/components/notifications/WebhookConfigModal.tsx (100%) rename {src => apps/web/src}/components/notifications/notifications.scss (100%) rename {src => apps/web/src}/components/notifications/notifications.service.ts (100%) rename {src => apps/web/src}/components/notifications/notifications.util.tsx (100%) rename {src => apps/web/src}/components/notifications/types.tsx (100%) rename {src => apps/web/src}/components/onboardingGuide/GuideCommonHeader.tsx (100%) rename {src => apps/web/src}/components/onboardingGuide/OnboardingGuide.constants.ts (100%) rename {src => apps/web/src}/components/onboardingGuide/OnboardingGuide.tsx (100%) rename {src => apps/web/src}/components/onboardingGuide/OnboardingGuide.type.ts (100%) rename {src => apps/web/src}/components/onboardingGuide/onboarding.utils.ts (100%) rename {src => apps/web/src}/components/onboardingGuide/onboardingGuide.scss (100%) rename {src => apps/web/src}/components/project/Project.tsx (100%) rename {src => apps/web/src}/components/project/ProjectList.tsx (100%) rename {src => apps/web/src}/components/project/project.scss (100%) rename {src => apps/web/src}/components/project/service.ts (100%) rename {src => apps/web/src}/components/project/types.ts (100%) rename {src => apps/web/src}/components/scopedVariables/DescriptionTab.tsx (100%) rename {src => apps/web/src}/components/scopedVariables/Descriptor.tsx (100%) rename {src => apps/web/src}/components/scopedVariables/DescriptorSearchBar.tsx (100%) rename {src => apps/web/src}/components/scopedVariables/SavedVariables.tsx (100%) rename {src => apps/web/src}/components/scopedVariables/SavedVariablesContent.tsx (100%) rename {src => apps/web/src}/components/scopedVariables/ScopedVariables.tsx (100%) rename {src => apps/web/src}/components/scopedVariables/ScopedVariablesEditor.tsx (100%) rename {src => apps/web/src}/components/scopedVariables/ScopedVariablesLoader.tsx (100%) rename {src => apps/web/src}/components/scopedVariables/UploadScopedVariables.tsx (100%) rename {src => apps/web/src}/components/scopedVariables/VariablesList.tsx (100%) rename {src => apps/web/src}/components/scopedVariables/__tests__/Descriptor.test.tsx (100%) rename {src => apps/web/src}/components/scopedVariables/__tests__/DescriptorSearchBar.test.tsx (100%) rename {src => apps/web/src}/components/scopedVariables/__tests__/SavedVariables.test.tsx (100%) rename {src => apps/web/src}/components/scopedVariables/__tests__/ScopedVariables.test.tsx (100%) rename {src => apps/web/src}/components/scopedVariables/__tests__/ScopedVariablesEditor.test.tsx (100%) rename {src => apps/web/src}/components/scopedVariables/__tests__/ScopedVariablesLoader.test.tsx (100%) rename {src => apps/web/src}/components/scopedVariables/__tests__/UploadScopedVariables.test.tsx (100%) rename {src => apps/web/src}/components/scopedVariables/__tests__/VariablesList.test.tsx (100%) rename {src => apps/web/src}/components/scopedVariables/__tests__/utils.test.tsx (100%) rename {src => apps/web/src}/components/scopedVariables/constants.tsx (100%) rename {src => apps/web/src}/components/scopedVariables/mocks.ts (100%) rename {src => apps/web/src}/components/scopedVariables/service.ts (100%) rename {src => apps/web/src}/components/scopedVariables/styles.scss (100%) rename {src => apps/web/src}/components/scopedVariables/types.tsx (100%) rename {src => apps/web/src}/components/scopedVariables/utils.tsx (100%) rename {src => apps/web/src}/components/security/AddCVEPolicy/ExposureList.tsx (100%) rename {src => apps/web/src}/components/security/AddCVEPolicy/VulnerabilityExposure.tsx (100%) rename {src => apps/web/src}/components/security/AddCVEPolicy/index.tsx (100%) rename {src => apps/web/src}/components/security/AddCveModal.tsx (100%) rename {src => apps/web/src}/components/security/DeleteCVEModal.tsx (100%) rename {src => apps/web/src}/components/security/Readme.md (100%) rename {src => apps/web/src}/components/security/Security.tsx (100%) rename {src => apps/web/src}/components/security/SecurityPoliciesTab.tsx (100%) rename {src => apps/web/src}/components/security/SecurityPolicyApp.tsx (100%) rename {src => apps/web/src}/components/security/SecurityPolicyCluster.tsx (100%) rename {src => apps/web/src}/components/security/SecurityPolicyEdit.tsx (100%) rename {src => apps/web/src}/components/security/SecurityPolicyEnvironment.tsx (100%) rename {src => apps/web/src}/components/security/SecurityPolicyGlobal.tsx (100%) rename {src => apps/web/src}/components/security/SecurityScansTab/SecurityScansTab.tsx (100%) rename {src => apps/web/src}/components/security/SecurityScansTab/constants.tsx (100%) rename {src => apps/web/src}/components/security/SecurityScansTab/types.tsx (100%) rename {src => apps/web/src}/components/security/SecurityScansTab/utils.tsx (100%) rename {src => apps/web/src}/components/security/security.scss (100%) rename {src => apps/web/src}/components/security/security.service.ts (100%) rename {src => apps/web/src}/components/security/security.types.ts (100%) rename {src => apps/web/src}/components/security/security.util.tsx (100%) rename {src => apps/web/src}/components/util/KeyValueFileInput.tsx (100%) rename {src => apps/web/src}/components/util/URLUtil.ts (100%) rename {src => apps/web/src}/components/v2/HelmAppOverview/HelmAppOverview.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/AppDetails.component.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/NodeTreeDetailTab.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/ReleaseStatusEmptyState.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/SyncError.component.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/__mocks__/index.store.mock.ts (100%) rename {src => apps/web/src}/components/v2/appDetails/__tests__/index.store.test.ts (100%) rename {src => apps/web/src}/components/v2/appDetails/appDetails.api.ts (100%) rename {src => apps/web/src}/components/v2/appDetails/appDetails.scss (100%) rename {src => apps/web/src}/components/v2/appDetails/appDetails.store.ts (100%) rename {src => apps/web/src}/components/v2/appDetails/appDetails.type.ts (100%) rename {src => apps/web/src}/components/v2/appDetails/ea/EAAppDetail.component.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/index.store.ts (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/K8Resource.component.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/NodeTreeTabList.scss (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/NodeTreeTabList.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/k8resources.scss (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeDetail/EphemeralContainerDrawer.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeDetail/NodeDetail.component.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/CopyToast.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/CustomLogsModal/CustomLogsModal.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/CustomLogsModal/customLogsModal.scss (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/Events.component.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/EventsTable.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/LogViewer.component.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/Logs.component.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/Manifest.component.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/Summary.component.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/Terminal.component.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/node.type.ts (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/nodeDetailTab.scss (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/Terminal.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/TerminalWrapper.component.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/__mocks__/terminalWrapper.mock.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/__tests__/Terminal.component.test.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/__tests__/TerminalWrapper.test.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/constants.ts (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/terminal.scss (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/terminal.type.ts (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/terminal.utils.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeDetail/nodeDetail.api.ts (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeDetail/nodeDetail.css (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeDetail/nodeDetail.type.ts (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeDetail/nodeDetail.util.ts (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeDetail/sampleConfig.json (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeType/Node.component.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeType/NodeDelete.component.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeType/NodeTree.component.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeType/PodHeader.component.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeType/PodPopup.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeType/__mocks__/NodeTree.component.mock.ts (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeType/__tests__/NodeTree.component.test.ts (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeType/nodeType.scss (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeType/nodeType.util.ts (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeType/types.ts (100%) rename {src => apps/web/src}/components/v2/appDetails/k8Resource/nodeType/useNodeTreeReducer.ts (100%) rename {src => apps/web/src}/components/v2/appDetails/logAnalyzer/LogAnalyzer.component.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/sourceInfo/EnvironmentSelector.component.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/sourceInfo/environment.type.ts (100%) rename {src => apps/web/src}/components/v2/appDetails/sourceInfo/environmentStatus/AppStatusDetailModal.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/sourceInfo/environmentStatus/ChartUsedCard.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/sourceInfo/environmentStatus/ConfigStatusModal.component.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/sourceInfo/environmentStatus/CurrentSyncStatus.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/sourceInfo/environmentStatus/EnvironmentStatus.component.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/sourceInfo/environmentStatus/HelmAppConfigApplyStatusCard.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/sourceInfo/environmentStatus/NotesDrawer.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/sourceInfo/environmentStatus/constants.ts (100%) rename {src => apps/web/src}/components/v2/appDetails/sourceInfo/environmentStatus/environmentStatus.scss (100%) rename {src => apps/web/src}/components/v2/appDetails/sourceInfo/environmentStatus/notesDrawer.type.ts (100%) rename {src => apps/web/src}/components/v2/appDetails/sourceInfo/rotatePods/RotatePodsModal.component.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/sourceInfo/rotatePods/RotateResponseModal.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/sourceInfo/rotatePods/rotatePodsModal.service.ts (100%) rename {src => apps/web/src}/components/v2/appDetails/sourceInfo/rotatePods/rotatePodsModal.type.ts (100%) rename {src => apps/web/src}/components/v2/appDetails/sourceInfo/scaleWorkloads/ScaleWorkloadsModal.component.tsx (100%) rename {src => apps/web/src}/components/v2/appDetails/sourceInfo/scaleWorkloads/scaleWorkloadsModal.scss (100%) rename {src => apps/web/src}/components/v2/appDetails/sourceInfo/scaleWorkloads/scaleWorkloadsModal.service.ts (100%) rename {src => apps/web/src}/components/v2/appDetails/sourceInfo/scaleWorkloads/scaleWorkloadsModal.type.ts (100%) rename {src => apps/web/src}/components/v2/appDetails/sourceInfo/sourceInfo.css (100%) rename {src => apps/web/src}/components/v2/appDetails/sourceInfo/utils.tsx (100%) rename {src => apps/web/src}/components/v2/assets/icons/ic-404-error.png (100%) rename {src => apps/web/src}/components/v2/assets/icons/ic-abort.svg (100%) rename {src => apps/web/src}/components/v2/assets/icons/ic-alert-triangle.svg (100%) rename {src => apps/web/src}/components/v2/assets/icons/ic-cancelled.svg (100%) rename {src => apps/web/src}/components/v2/assets/icons/ic-check.svg (100%) rename {src => apps/web/src}/components/v2/assets/icons/ic-chevron-down.svg (100%) rename {src => apps/web/src}/components/v2/assets/icons/ic-close.svg (100%) rename {src => apps/web/src}/components/v2/assets/icons/ic-code-compare.svg (100%) rename {src => apps/web/src}/components/v2/assets/icons/ic-compare.svg (100%) rename {src => apps/web/src}/components/v2/assets/icons/ic-connect.svg (100%) rename {src => apps/web/src}/components/v2/assets/icons/ic-copy.svg (100%) rename {src => apps/web/src}/components/v2/assets/icons/ic-disconnect.svg (100%) rename {src => apps/web/src}/components/v2/assets/icons/ic-dropdown-filled.svg (100%) rename {src => apps/web/src}/components/v2/assets/icons/ic-edit.svg (100%) rename {src => apps/web/src}/components/v2/assets/icons/ic-errorInfo.svg (100%) rename {src => apps/web/src}/components/v2/assets/icons/ic-info-filled-gray.svg (100%) rename {src => apps/web/src}/components/v2/assets/icons/ic-info-filled.svg (100%) rename {src => apps/web/src}/components/v2/assets/icons/ic-info-outline-gray.svg (100%) rename {src => apps/web/src}/components/v2/assets/icons/ic-locked.svg (100%) rename {src => apps/web/src}/components/v2/assets/icons/ic-menu-dot.svg (100%) rename {src => apps/web/src}/components/v2/assets/icons/ic-object.svg (100%) rename {src => apps/web/src}/components/v2/assets/icons/ic-play.svg (100%) rename {src => apps/web/src}/components/v2/assets/icons/ic-question.svg (100%) rename {src => apps/web/src}/components/v2/assets/icons/ic-restore.svg (100%) rename {src => apps/web/src}/components/v2/assets/icons/ic-scale-down.svg (100%) rename {src => apps/web/src}/components/v2/assets/icons/ic-select-container.svg (100%) rename {src => apps/web/src}/components/v2/assets/icons/ic-stop.svg (100%) rename {src => apps/web/src}/components/v2/chartDeploymentHistory/ChartDeploymentHistory.component.tsx (100%) rename {src => apps/web/src}/components/v2/chartDeploymentHistory/DockerImageDetails.tsx (100%) rename {src => apps/web/src}/components/v2/chartDeploymentHistory/DockerListModal.tsx (100%) rename {src => apps/web/src}/components/v2/chartDeploymentHistory/RollbackConfirmationDialog.tsx (100%) rename {src => apps/web/src}/components/v2/chartDeploymentHistory/chartDeploymentHistory.scss (100%) rename {src => apps/web/src}/components/v2/chartDeploymentHistory/chartDeploymentHistory.service.ts (100%) rename {src => apps/web/src}/components/v2/common/ReactSelect.utils.tsx (100%) rename {src => apps/web/src}/components/v2/common/ReactSelectCustomization.tsx (100%) rename {src => apps/web/src}/components/v2/common/message.ui.tsx (100%) rename {src => apps/web/src}/components/v2/devtronStackManager/AboutDevtronView.scss (100%) rename {src => apps/web/src}/components/v2/devtronStackManager/AboutDevtronView.tsx (100%) rename {src => apps/web/src}/components/v2/devtronStackManager/DevtronStackManager.component.tsx (100%) rename {src => apps/web/src}/components/v2/devtronStackManager/DevtronStackManager.service.tsx (100%) rename {src => apps/web/src}/components/v2/devtronStackManager/DevtronStackManager.tsx (100%) rename {src => apps/web/src}/components/v2/devtronStackManager/DevtronStackManager.type.ts (100%) rename {src => apps/web/src}/components/v2/devtronStackManager/DevtronStackManager.utils.ts (100%) rename {src => apps/web/src}/components/v2/devtronStackManager/SuccessModalComponent.tsx (100%) rename {src => apps/web/src}/components/v2/devtronStackManager/devtronStackManager.component.scss (100%) rename {src => apps/web/src}/components/v2/devtronStackManager/devtronStackManager.scss (100%) rename {src => apps/web/src}/components/v2/headers/AppHeader.component.tsx (100%) rename {src => apps/web/src}/components/v2/headers/ChartHeader.component.tsx (100%) rename {src => apps/web/src}/components/v2/headers/EAHeader.component.tsx (100%) rename {src => apps/web/src}/components/v2/headers/appHeader.type.ts (100%) rename {src => apps/web/src}/components/v2/headers/header.scss (100%) rename {src => apps/web/src}/components/v2/index.tsx (100%) rename {src => apps/web/src}/components/v2/utils/tabUtils/link.type.ts (100%) rename {src => apps/web/src}/components/v2/utils/tabUtils/tab.json.ts (100%) rename {src => apps/web/src}/components/v2/utils/tabUtils/useTab.ts (100%) rename {src => apps/web/src}/components/v2/utils/tableUtils/Table.util.tsx (100%) rename {src => apps/web/src}/components/v2/utils/tableUtils/table.scss (100%) rename {src => apps/web/src}/components/v2/utils/tableUtils/table.type.ts (100%) rename {src => apps/web/src}/components/v2/utils/useSharedState.ts (100%) rename {src => apps/web/src}/components/v2/values/ChartValues.component.tsx (100%) rename {src => apps/web/src}/components/v2/values/chartValuesDiff/ChartRepoSelector.tsx (100%) rename {src => apps/web/src}/components/v2/values/chartValuesDiff/ChartValuesEditor.tsx (100%) rename {src => apps/web/src}/components/v2/values/chartValuesDiff/ChartValuesGUIView.tsx (100%) rename {src => apps/web/src}/components/v2/values/chartValuesDiff/ChartValuesView.component.tsx (100%) rename {src => apps/web/src}/components/v2/values/chartValuesDiff/ChartValuesView.constants.ts (100%) rename {src => apps/web/src}/components/v2/values/chartValuesDiff/ChartValuesView.reducer.ts (100%) rename {src => apps/web/src}/components/v2/values/chartValuesDiff/ChartValuesView.scss (100%) rename {src => apps/web/src}/components/v2/values/chartValuesDiff/ChartValuesView.tsx (100%) rename {src => apps/web/src}/components/v2/values/chartValuesDiff/ChartValuesView.type.ts (100%) rename {src => apps/web/src}/components/v2/values/chartValuesDiff/ChartValuesView.utils.ts (100%) rename {src => apps/web/src}/components/v2/values/chartValuesDiff/ChartValuesViewUtils.scss (100%) rename {src => apps/web/src}/components/v2/values/chartValuesDiff/ProjectUpdateModal.tsx (100%) rename {src => apps/web/src}/components/v2/values/chartValuesDiff/constant.ts (100%) rename {src => apps/web/src}/components/v2/values/common/chartValues.api.ts (100%) rename {src => apps/web/src}/components/workflowEditor/CDSuccessModal.tsx (100%) rename {src => apps/web/src}/components/workflowEditor/CreateWorkflow.tsx (100%) rename {src => apps/web/src}/components/workflowEditor/DeprecatedPipelineWarning.tsx (100%) rename {src => apps/web/src}/components/workflowEditor/DeprecatedWarningModal.tsx (100%) rename {src => apps/web/src}/components/workflowEditor/EmptyWorkflow.tsx (100%) rename {src => apps/web/src}/components/workflowEditor/NoGitOpsConfiguredWarning.tsx (100%) rename {src => apps/web/src}/components/workflowEditor/NoGitOpsRepoConfiguredWarning.tsx (100%) rename {src => apps/web/src}/components/workflowEditor/PipelineSelect.tsx (100%) rename {src => apps/web/src}/components/workflowEditor/SourceTypeCard.tsx (100%) rename {src => apps/web/src}/components/workflowEditor/ToggleCDSelectButton.tsx (100%) rename {src => apps/web/src}/components/workflowEditor/Workflow.tsx (100%) rename {src => apps/web/src}/components/workflowEditor/WorkflowOptionsModal.tsx (100%) rename {src => apps/web/src}/components/workflowEditor/constants.ts (100%) rename {src => apps/web/src}/components/workflowEditor/index.ts (100%) rename {src => apps/web/src}/components/workflowEditor/nodes/CDNode.tsx (100%) rename {src => apps/web/src}/components/workflowEditor/nodes/CINode.tsx (100%) rename {src => apps/web/src}/components/workflowEditor/nodes/StaticNode.tsx (100%) rename {src => apps/web/src}/components/workflowEditor/nodes/WebhookNode.tsx (100%) rename {src => apps/web/src}/components/workflowEditor/nodes/WebhookTippyCard.tsx (100%) rename {src => apps/web/src}/components/workflowEditor/service.ts (100%) rename {src => apps/web/src}/components/workflowEditor/types.ts (100%) rename {src => apps/web/src}/components/workflowEditor/utils.tsx (100%) rename {src => apps/web/src}/components/workflowEditor/workflowEditor.constants.ts (100%) rename {src => apps/web/src}/components/workflowEditor/workflowEditor.scss (100%) rename {src => apps/web/src}/components/workflowEditor/workflowEditor.tsx (100%) rename {src => apps/web/src}/config/constantMessaging.ts (100%) rename {src => apps/web/src}/config/constants.ts (100%) rename {src => apps/web/src}/config/index.ts (100%) rename {src => apps/web/src}/config/routes.ts (100%) rename {src => apps/web/src}/config/searchWorker.ts (100%) rename {src => apps/web/src}/config/utils.ts (100%) rename {src => apps/web/src}/css/application.scss (100%) rename {src => apps/web/src}/css/base.scss (100%) rename {src => apps/web/src}/css/colorPalette.scss (100%) rename {src => apps/web/src}/css/forms.scss (100%) rename {src => apps/web/src}/css/formulae.scss (100%) rename {src => apps/web/src}/css/icons.scss (100%) rename {src => apps/web/src}/css/modal.scss (100%) rename {src => apps/web/src}/css/patternfly.scss (100%) rename {src => apps/web/src}/css/triggerView.scss (100%) rename {src => apps/web/src}/css/whiteCard.scss (100%) rename {src => apps/web/src}/css/workflow.scss (100%) rename {src => apps/web/src}/custom.d.ts (100%) rename {src => apps/web/src}/index.tsx (100%) rename {src => apps/web/src}/service-worker.ts (100%) rename {src => apps/web/src}/services/fetchWithFullRoute.ts (100%) rename {src => apps/web/src}/services/service.ts (100%) rename {src => apps/web/src}/services/service.types.ts (100%) rename {src => apps/web/src}/setupTests.js (100%) rename {src => apps/web/src}/stories/Button.stories.tsx (100%) rename {src => apps/web/src}/stories/SelectPicker.stories.tsx (100%) rename {src => apps/web/src}/stories/ToastManager.stories.tsx (100%) rename {src => apps/web/src}/stories/useForm.stories.tsx (100%) rename {src => apps/web/src}/uploadTestReport.py (100%) rename {src => apps/web/src}/util/MurmurHash3.ts (100%) rename {src => apps/web/src}/util/Subject.ts (100%) rename {src => apps/web/src}/util/Util.ts (100%) rename {src => apps/web/src}/util/__tests__/Subject.test.ts (100%) rename {src => apps/web/src}/vite-env.d.ts (100%) rename {src => apps/web/src}/yaml.worker.js (100%) rename tsconfig.jest.json => apps/web/tsconfig.jest.json (100%) rename tsconfig.json => apps/web/tsconfig.json (100%) rename vite.config.mts => apps/web/vite.config.mts (99%) create mode 100755 packages/devtron-fe-common-lib/.eslintignore create mode 100644 packages/devtron-fe-common-lib/.eslintrc.cjs create mode 100644 packages/devtron-fe-common-lib/package.json create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-abort.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-aborted.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-add.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-appstatus-cancelled.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-arrow-backward.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-arrow-counter-clockwise.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-arrow-down.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-arrow-forward.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-arrow-out.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-arrow-right.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-arrow-square-out.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-arrow-up-down.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-bold.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-book-open.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-bot.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-branch-main.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-branch.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-branch2.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-bug.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-calendar.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-calender-blank.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-caret-down.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-caret-left-small.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-charts.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-chat-circle-dots.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-check-all.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-check-circle.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-check-grey.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-check-square.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-check.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-checked-list.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-chevron-down.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-circle.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-clair.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-clock.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-close.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-code-commit.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-code.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-collapse-all.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-commit.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-compare.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-copy.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-cpu.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-cross.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-delete-interactive.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-diff-file-updated.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-disconnected.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-discord-fill.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-docker.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-download.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-drag.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-dropdown-filled.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-edit-file.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-enter.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-error-cross.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-error-exclamation.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-error-medium.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-error.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-errorInfo.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-exclamation.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-exit-fullscreen.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-expand-all.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-expand.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-feedback.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-file-text.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-files.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-filter-applied.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-filter.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-folder.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-fullscreen-2.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-fullscreen.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-header.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-help-outline.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-help.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-image.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-in-progress.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-info-filled-override.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-info-filled.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-info-outlined.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-italic.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-k8s-job.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-lego-block.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-lines.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-link.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-locked.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-mechanical-operation.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-megaphone.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-memory.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-message.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-minus.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-nav-rocket.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-onboarding.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-open-box.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-open-in-new.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-ordered-list.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-pencil.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-person.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-progressing.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-pull-request.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-pulsate-status.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-quote.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-regex.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-release-open.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-rocket-fail.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-rotate-devtron.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-search.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-sort-arrow-down.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-stamp.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-strikethrough.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-success.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-tag.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-timeout-red.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-timer.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-trivy.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-unordered-list.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-view-variable-toggle.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-visibility-on.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-vulnerability-not-found.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-warning.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-webhook.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/ic-world.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Icon/inject-tag.svg create mode 100755 packages/devtron-fe-common-lib/src/Assets/Img/app-not-deployed.png create mode 100644 packages/devtron-fe-common-lib/src/Assets/Img/delete-medium.svg create mode 100755 packages/devtron-fe-common-lib/src/Assets/Img/empty-noresult@2x.png create mode 100644 packages/devtron-fe-common-lib/src/Assets/Img/ic-empty-error@2x.png create mode 100644 packages/devtron-fe-common-lib/src/Assets/Img/ic-loading-failure.png create mode 100644 packages/devtron-fe-common-lib/src/Assets/Img/ic-not-authorized.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Img/ic-not-found.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Img/ic-page-not-found.svg create mode 100644 packages/devtron-fe-common-lib/src/Assets/Img/lifebuoy.png create mode 100644 packages/devtron-fe-common-lib/src/Assets/Img/no-artifact@2x.png create mode 100644 packages/devtron-fe-common-lib/src/Common/AddCDButton/AddCDButton.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/AddCDButton/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/AddCDButton/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/AddCDButton/utils.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/Api.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/AppStatus/AppStatus.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/AppStatus/constants.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/AppStatus/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/AppStatus/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/AppStatus/utils.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/BreadCrumb/BreadCrumb.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/BreadCrumb/BreadcrumbStore.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/BreadCrumb/Types.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/CIPipeline.Types.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/ChartVersionAndTypeSelector.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/Checkbox.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/ClipboardButton/ClipboardButton.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/ClipboardButton/__tests__/ClipboardButton.test.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/ClipboardButton/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/CodeEditor/CodeEditor.reducer.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/CodeEditor/CodeEditor.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/CodeEditor/codeEditor.scss create mode 100644 packages/devtron-fe-common-lib/src/Common/CodeEditor/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/CodeEditor/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/Common.service.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/Constants.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/CustomInput/CustomInput.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/CustomInput/Types.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/CustomInput/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/CustomTagSelector/PropagateTagInfo.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/CustomTagSelector/ResizableTagTextArea.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/CustomTagSelector/TagDetails.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/CustomTagSelector/TagLabelSelect.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/CustomTagSelector/TagLabelValueSelector.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/CustomTagSelector/TagSelector.utils.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/CustomTagSelector/Types.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/CustomTagSelector/ValidationRules.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/CustomTagSelector/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/DebouncedSearch/DebouncedSearch.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/DebouncedSearch/Types.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/DebouncedSearch/Utils.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/DebouncedSearch/__tests__/DebouncedSearch.test.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/DeleteComponentModal/DeleteComponent.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/DeleteComponentModal/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/DevtronProgressing/DevtronProgressing.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/DevtronProgressing/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/DevtronProgressing/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/Dialogs/ConfirmationDialog.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/Dialogs/DeleteDialog.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/Dialogs/DialogForm.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/Dialogs/ForceDeleteDialog.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/Dialogs/Types.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/Dialogs/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/DraggableWrapper/DraggableButton.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/DraggableWrapper/DraggableWrapper.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/DraggableWrapper/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/DraggableWrapper/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/Drawer/Drawer.scss create mode 100644 packages/devtron-fe-common-lib/src/Common/Drawer/Drawer.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/EmptyState/GenericEmptyState.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/EmptyState/GenericFilterEmptyState.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/EmptyState/emptyState.scss create mode 100644 packages/devtron-fe-common-lib/src/Common/EmptyState/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/ErrorPage.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/ErrorScreenManager.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/ErrorScreenNotAuthorized.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/GenericDescription/GenericDescription.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/GenericDescription/constant.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/GenericDescription/genericDescription.scss create mode 100644 packages/devtron-fe-common-lib/src/Common/GenericDescription/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/GenericDescription/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/Grid/Grid.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/Grid/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/Helper.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/Hooks/UseClickOutside/UseClickOutside.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/Hooks/UseRegisterShortcut/UseRegisterShortcut.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/Hooks/UseRegisterShortcut/UseRegisterShortcutContext.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/Hooks/UseRegisterShortcut/UseRegisterShortcutProvider.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/Hooks/UseRegisterShortcut/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/Hooks/UseRegisterShortcut/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/Hooks/UseSuperAdmin/UseSuperAdmin.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/Hooks/UseSuperAdmin/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/Hooks/UseWindowSize/UseWindowSize.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/Hooks/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/Hooks/useStateFilters/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/Hooks/useStateFilters/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/Hooks/useStateFilters/useStateFilters.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/Hooks/useUrlFilters/constants.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/Hooks/useUrlFilters/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/Hooks/useUrlFilters/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/Hooks/useUrlFilters/useUrlFilters.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/ImageTags.Types.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/ImageTags.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/InfoColorBar/InfoColourbar.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/InfoColorBar/infoColourBar.scss create mode 100644 packages/devtron-fe-common-lib/src/Common/Markdown/MarkDown.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/Markdown/Types.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/Markdown/constant.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/Markdown/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/Markdown/markdown.scss create mode 100644 packages/devtron-fe-common-lib/src/Common/Modals/Modal.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/Modals/VisibleModal.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/Modals/VisibleModal2.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/MultiSelectCustomization.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/Pagination/PageSizeSelector.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/Pagination/Pagination.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/Pagination/constants.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/Pagination/index.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/Pagination/pagination.scss create mode 100644 packages/devtron-fe-common-lib/src/Common/Pagination/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/Pagination/utils.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/Policy.Types.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/PopupMenu.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/Progressing.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/RJSF/Form.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/RJSF/common/FieldRow.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/RJSF/common/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/RJSF/config.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/RJSF/constants.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/RJSF/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/RJSF/rjsfForm.scss create mode 100644 packages/devtron-fe-common-lib/src/Common/RJSF/templates/ArrayFieldItemTemplate.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/RJSF/templates/ArrayFieldTemplate.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/RJSF/templates/BaseInput.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/RJSF/templates/ButtonTemplates/AddButton.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/RJSF/templates/ButtonTemplates/RemoveButton.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/RJSF/templates/ButtonTemplates/SubmitButton.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/RJSF/templates/ButtonTemplates/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/RJSF/templates/Field.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/RJSF/templates/FieldErrorTemplate.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/RJSF/templates/ObjectFieldTemplate.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/RJSF/templates/TitleField.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/RJSF/templates/WrapIfAdditionalTemplate.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/RJSF/templates/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/RJSF/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/RJSF/utils.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/RJSF/widgets/Checkbox.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/RJSF/widgets/Select.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/RJSF/widgets/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/RadioGroup.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/RadioGroup/RadioGroup.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/RadioGroup/radioGroup.scss create mode 100644 packages/devtron-fe-common-lib/src/Common/RadioGroupItem.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/Reload.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/ResizableTextarea.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/SearchBar/SearchBar.component.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/SearchBar/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/SearchBar/searchBar.scss create mode 100644 packages/devtron-fe-common-lib/src/Common/SearchBar/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/SearchBar/utils.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/SegmentedBarChart/SegmentedBarChart.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/SegmentedBarChart/constants.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/SegmentedBarChart/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/SegmentedBarChart/styles.scss create mode 100644 packages/devtron-fe-common-lib/src/Common/SegmentedBarChart/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/Select/Select.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/Select/select.scss create mode 100644 packages/devtron-fe-common-lib/src/Common/Select/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/ServerError.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/SortableTableHeaderCell/SortableTableHeaderCell.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/SortableTableHeaderCell/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/SortableTableHeaderCell/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/TippyCustomized.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/Toggle/Toggle.scss create mode 100644 packages/devtron-fe-common-lib/src/Common/Toggle/Toggle.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/Tooltip/ShortcutKeyComboTooltipContent.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/Tooltip/Tooltip.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/Tooltip/constants.tsx create mode 100644 packages/devtron-fe-common-lib/src/Common/Tooltip/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/Tooltip/styles.scss create mode 100644 packages/devtron-fe-common-lib/src/Common/Tooltip/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/Types.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Common/utils.tsx create mode 100644 packages/devtron-fe-common-lib/src/Pages/App/AppConfigurations/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Pages/App/AppConfigurations/utils.ts create mode 100644 packages/devtron-fe-common-lib/src/Pages/App/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Pages/CDPipeline/index.tsx create mode 100644 packages/devtron-fe-common-lib/src/Pages/CDPipeline/types.tsx create mode 100644 packages/devtron-fe-common-lib/src/Pages/GlobalConfigurations/Authorization/constants.ts create mode 100644 packages/devtron-fe-common-lib/src/Pages/GlobalConfigurations/Authorization/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Pages/GlobalConfigurations/Authorization/service.ts create mode 100644 packages/devtron-fe-common-lib/src/Pages/GlobalConfigurations/Authorization/shared/components/UserRoleGroupsTable/UserRoleGroupTableRow.tsx create mode 100644 packages/devtron-fe-common-lib/src/Pages/GlobalConfigurations/Authorization/shared/components/UserRoleGroupsTable/UserRoleGroupsTable.component.tsx create mode 100644 packages/devtron-fe-common-lib/src/Pages/GlobalConfigurations/Authorization/shared/components/UserRoleGroupsTable/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Pages/GlobalConfigurations/Authorization/shared/components/UserRoleGroupsTable/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Pages/GlobalConfigurations/Authorization/shared/components/UserRoleGroupsTable/userRoleGroupsTable.scss create mode 100644 packages/devtron-fe-common-lib/src/Pages/GlobalConfigurations/Authorization/shared/components/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Pages/GlobalConfigurations/Authorization/shared/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Pages/GlobalConfigurations/Authorization/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Pages/GlobalConfigurations/Authorization/utils.ts create mode 100644 packages/devtron-fe-common-lib/src/Pages/GlobalConfigurations/BuildInfra/BuildInfraConfigForm.tsx create mode 100644 packages/devtron-fe-common-lib/src/Pages/GlobalConfigurations/BuildInfra/BuildInfraDescriptionField.tsx create mode 100644 packages/devtron-fe-common-lib/src/Pages/GlobalConfigurations/BuildInfra/BuildInfraFormAction.tsx create mode 100644 packages/devtron-fe-common-lib/src/Pages/GlobalConfigurations/BuildInfra/BuildInfraFormItem.tsx create mode 100644 packages/devtron-fe-common-lib/src/Pages/GlobalConfigurations/BuildInfra/BuildInfraProfileNameField.tsx create mode 100644 packages/devtron-fe-common-lib/src/Pages/GlobalConfigurations/BuildInfra/Descriptor.tsx create mode 100644 packages/devtron-fe-common-lib/src/Pages/GlobalConfigurations/BuildInfra/Footer.tsx create mode 100644 packages/devtron-fe-common-lib/src/Pages/GlobalConfigurations/BuildInfra/Readme.md create mode 100644 packages/devtron-fe-common-lib/src/Pages/GlobalConfigurations/BuildInfra/constants.tsx create mode 100644 packages/devtron-fe-common-lib/src/Pages/GlobalConfigurations/BuildInfra/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Pages/GlobalConfigurations/BuildInfra/services.tsx create mode 100644 packages/devtron-fe-common-lib/src/Pages/GlobalConfigurations/BuildInfra/types.tsx create mode 100644 packages/devtron-fe-common-lib/src/Pages/GlobalConfigurations/BuildInfra/utils.tsx create mode 100644 packages/devtron-fe-common-lib/src/Pages/GlobalConfigurations/DeploymentCharts/basicViewSchema.json create mode 100644 packages/devtron-fe-common-lib/src/Pages/GlobalConfigurations/DeploymentCharts/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Pages/GlobalConfigurations/DeploymentCharts/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Pages/GlobalConfigurations/DeploymentCharts/utils.ts create mode 100644 packages/devtron-fe-common-lib/src/Pages/GlobalConfigurations/ScopedVariables/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Pages/GlobalConfigurations/ScopedVariables/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Pages/GlobalConfigurations/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Pages/ResourceBrowser/Helper.tsx create mode 100644 packages/devtron-fe-common-lib/src/Pages/ResourceBrowser/ResourceBrowser.Types.ts create mode 100644 packages/devtron-fe-common-lib/src/Pages/ResourceBrowser/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Pages/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/API/APIQueuing.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/API/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/APIResponseHandler/APIResponseHandler.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/APIResponseHandler/constants.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/APIResponseHandler/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/APIResponseHandler/types.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ActivityIndicator/ActivityIndicator.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ActivityIndicator/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ActivityIndicator/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/AnnouncementBanner/AnnouncementBanner.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/AnnouncementBanner/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ArtifactInfoModal/ArtifactInfoModal.component.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ArtifactInfoModal/index.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ArtifactInfoModal/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/BulkSelection/BulkSelection.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/BulkSelection/BulkSelectionDropdownItems.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/BulkSelection/BulkSelectionProvider.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/BulkSelection/constants.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/BulkSelection/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/BulkSelection/types.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Button/Button.component.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Button/button.scss create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Button/constants.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Button/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Button/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Button/utils.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ButtonWithLoader/ButtonWithLoader.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ButtonWithLoader/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ButtonWithSelector/ButtonWithSelector.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ButtonWithSelector/buttonWithSelector.scss create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ButtonWithSelector/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ButtonWithSelector/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CICDHistory/AppStatusDetailsChart.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CICDHistory/Artifacts.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CICDHistory/CDEmptyState.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CICDHistory/CiPipelineSourceConfig.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CICDHistory/DeploymentDetailSteps.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CICDHistory/DeploymentHistoryDiff/DeploymentHistoryConfigList.component.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CICDHistory/DeploymentHistoryDiff/DeploymentHistoryDetailedView.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CICDHistory/DeploymentHistoryDiff/DeploymentHistoryDiffView.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CICDHistory/DeploymentHistoryDiff/DeploymentHistoryHeader.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CICDHistory/DeploymentHistoryDiff/DeploymentHistorySidebar.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CICDHistory/DeploymentHistoryDiff/index.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CICDHistory/DeploymentHistoryDiff/styles.scss create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CICDHistory/DeploymentHistoryDiff/types.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CICDHistory/DeploymentStatusBreakdown.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CICDHistory/DeploymentStatusDetailRow.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CICDHistory/ErrorInfoStatusBar.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CICDHistory/History.components.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CICDHistory/LogStageAccordion.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CICDHistory/LogsRenderer.scss create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CICDHistory/LogsRenderer.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CICDHistory/Sidebar.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CICDHistory/StatusFilterButtonComponent.scss create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CICDHistory/StatusFilterButtonComponent.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CICDHistory/TriggerOutput.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CICDHistory/cicdHistory.scss create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CICDHistory/constants.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CICDHistory/index.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CICDHistory/service.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CICDHistory/types.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CICDHistory/utils.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Collapse/Collapse.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Collapse/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Collapse/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CollapsibleList/CollapsibleList.component.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CollapsibleList/CollapsibleList.scss create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CollapsibleList/CollapsibleList.types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CollapsibleList/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CommitChipCell/CommitChipCell.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CommitChipCell/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/CommitChipCell/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/DatePicker/DateTimePicker.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/DatePicker/MonthlySelect.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/DatePicker/SingleDatePickerComponent.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/DatePicker/TimeSelect.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/DatePicker/constants.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/DatePicker/datePicker.scss create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/DatePicker/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/DatePicker/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/DatePicker/utils.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/DeploymentConfigDiff/DeploymentConfigDiff.component.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/DeploymentConfigDiff/DeploymentConfigDiff.scss create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/DeploymentConfigDiff/DeploymentConfigDiff.types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/DeploymentConfigDiff/DeploymentConfigDiff.utils.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/DeploymentConfigDiff/DeploymentConfigDiffAccordion.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/DeploymentConfigDiff/DeploymentConfigDiffMain.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/DeploymentConfigDiff/DeploymentConfigDiffNavigation.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/DeploymentConfigDiff/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/DetectBottom/DetectBottom.component.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/DetectBottom/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/EditImageFormField/EditImageFormField.scss create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/EditImageFormField/EditImageFormField.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/EditImageFormField/constants.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/EditImageFormField/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/EditImageFormField/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/EditableTextArea/EditableTextArea.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/EditableTextArea/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/EditableTextArea/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/EnvironmentSelector/EnvironmentSelector.component.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/EnvironmentSelector/constants.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/EnvironmentSelector/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/EnvironmentSelector/service.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/EnvironmentSelector/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/EnvironmentSelector/utils.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Error/ErrorBar.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Error/index.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Error/types.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Error/utils.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ExcludedImageNode/ExcludedImageNode.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ExcludedImageNode/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ExcludedImageNode/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/FeatureDescription/FeatureDescriptionModal.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/FeatureDescription/FeatureTitleWithInfo.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/FeatureDescription/constant.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/FeatureDescription/featureDescription.scss create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/FeatureDescription/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/FeatureDescription/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/FeatureDescription/utils.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/FilterChips/FilterChips.component.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/FilterChips/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/FilterChips/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/GenericSectionErrorState/GenericSectionErrorState.component.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/GenericSectionErrorState/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/GenericSectionErrorState/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/GettingStartedCard/GettingStarted.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/GettingStartedCard/gettingStarted.scss create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/GettingStartedCard/service.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/GettingStartedCard/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/GitCommitInfoGeneric/GitCommitInfoGeneric.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/GitCommitInfoGeneric/GitMaterialInfoHeader.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/GitCommitInfoGeneric/constants.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/GitCommitInfoGeneric/gitCommitInfoGeneric.scss create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/GitCommitInfoGeneric/index.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/GitCommitInfoGeneric/types.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Header/HeaderWithCreateButton/HeaderWithCreateButon.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Header/HeaderWithCreateButton/HeaderWithCreateButton.scss create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Header/HeaderWithCreateButton/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Header/HelpNav.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Header/PageHeader.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Header/constants.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Header/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Header/pageHeader.css create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Header/service.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Header/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Header/utils.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/IframeContainer/IframeContainer.component.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/IframeContainer/IframeElement.scss create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/IframeContainer/IframeElement.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/IframeContainer/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/IframeContainer/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ImageCard/ArtifactInfo/ArtifactInfo.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ImageCard/ArtifactInfo/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ImageCard/ArtifactInfo/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ImageCard/ImageCard.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ImageCard/SequentialCDCardTitle/DeploymentEnvState/DeploymentEnvState.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ImageCard/SequentialCDCardTitle/DeploymentEnvState/constants.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ImageCard/SequentialCDCardTitle/DeploymentEnvState/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ImageCard/SequentialCDCardTitle/DeploymentEnvState/types.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ImageCard/SequentialCDCardTitle/DeploymentEnvState/utils.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ImageCard/SequentialCDCardTitle/SequentialCDCardTitle.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ImageCard/SequentialCDCardTitle/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ImageCard/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ImageCard/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ImageCardAccordion/ImageCardAccordion.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ImageCardAccordion/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ImageCardAccordion/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ImageChipCell/ImageChipCell.component.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ImageChipCell/imageChipCell.scss create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ImageChipCell/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ImageChipCell/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ImageWithFallback/ImageWithFallback.component.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ImageWithFallback/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ImageWithFallback/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/InfoIconTippy/InfoIconTippy.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/InfoIconTippy/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/KeyValueList/KeyValueList.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/KeyValueList/constants.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/KeyValueList/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/KeyValueList/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/KeyValueTable/KeyValueTable.component.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/KeyValueTable/KeyValueTable.scss create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/KeyValueTable/KeyValueTable.types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/KeyValueTable/constants.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/KeyValueTable/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/LogoutCard.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/MaterialHistory/MaterialHistory.component.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/MaterialHistory/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/MaterialHistory/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ModalSidebarPanel/ModalSidebarPanel.component.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ModalSidebarPanel/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ModalSidebarPanel/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Plugin/PluginCard.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Plugin/PluginCardSkeletonList.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Plugin/PluginImageContainer.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Plugin/PluginList.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Plugin/PluginListContainer.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Plugin/PluginTagSelect.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Plugin/PluginTagsContainer.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Plugin/constants.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Plugin/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Plugin/pluginListContainer.scss create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Plugin/service.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Plugin/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Plugin/utils.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ReactSelect/constants.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ReactSelect/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ReactSelect/utils.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ScannedByToolModal/ScannedByToolModal.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ScannedByToolModal/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ScannedByToolModal/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Security/SecurityModal/SecurityModal.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Security/SecurityModal/components/IndexedTextDisplay.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Security/SecurityModal/components/InfoCard.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Security/SecurityModal/components/OpenDetailViewButton.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Security/SecurityModal/components/Table.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Security/SecurityModal/components/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Security/SecurityModal/config/CodeScan.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Security/SecurityModal/config/EmptyState.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Security/SecurityModal/config/ImageScan.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Security/SecurityModal/config/InfoCard.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Security/SecurityModal/config/KubernetesManifest.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Security/SecurityModal/config/Sidebar.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Security/SecurityModal/config/Table.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Security/SecurityModal/config/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Security/SecurityModal/constants.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Security/SecurityModal/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Security/SecurityModal/service.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Security/SecurityModal/styles.scss create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Security/SecurityModal/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Security/SecurityModal/utils.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Security/SecuritySummaryCard/SecuritySummaryCard.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Security/SecuritySummaryCard/index.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Security/SecuritySummaryCard/types.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Security/Vulnerabilities/Vulnerabilities.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Security/Vulnerabilities/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Security/Vulnerabilities/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Security/Vulnerabilities/utils.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Security/index.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/Security/utils.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/SelectPicker/FilterSelectPicker.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/SelectPicker/SelectPicker.component.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/SelectPicker/common.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/SelectPicker/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/SelectPicker/type.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/SelectPicker/utils.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ShowMoreText/ShowMoreText.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/ShowMoreText/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/TabGroup/TabGroup.component.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/TabGroup/TabGroup.helpers.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/TabGroup/TabGroup.scss create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/TabGroup/TabGroup.types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/TabGroup/TabGroup.utils.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/TabGroup/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Components/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Helpers.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Hooks/UseDownload/UseDownload.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Hooks/UseDownload/index.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Hooks/UseDownload/service.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Hooks/UseDownload/types.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Hooks/UsePrompt/UsePrompt.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Hooks/UsePrompt/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Hooks/UsePrompt/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Hooks/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Hooks/useForm/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Hooks/useForm/useForm.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Hooks/useForm/useForm.types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Hooks/useForm/useForm.utils.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Hooks/useGetResourceKindsOptions/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Hooks/useGetResourceKindsOptions/service.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Hooks/useGetResourceKindsOptions/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Hooks/useGetResourceKindsOptions/useGetResourceKindsOptions.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Hooks/useGetResourceKindsOptions/utils.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Providers/ImageSelectionUtility/ImageSelectionUtility.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Providers/ImageSelectionUtility/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Providers/ImageSelectionUtility/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Providers/MainContextProvider.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Providers/UserEmailProvider/UserEmailProvider.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Providers/UserEmailProvider/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Providers/UserEmailProvider/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Providers/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Providers/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Services/ToastManager/ToastContent.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Services/ToastManager/constants.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Services/ToastManager/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Services/ToastManager/toastManager.scss create mode 100644 packages/devtron-fe-common-lib/src/Shared/Services/ToastManager/toastManager.service.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Services/ToastManager/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Services/app.service.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Services/app.types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Services/common.service.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Services/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Services/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Services/utils.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/Store/IndexStore.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/Store/index.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/constants.tsx create mode 100644 packages/devtron-fe-common-lib/src/Shared/index.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/types.ts create mode 100644 packages/devtron-fe-common-lib/src/Shared/validations.tsx create mode 100644 packages/devtron-fe-common-lib/src/custom.d.ts create mode 100644 packages/devtron-fe-common-lib/src/index.ts create mode 100644 packages/devtron-fe-common-lib/src/yaml.worker.ts create mode 100644 packages/devtron-fe-common-lib/tsconfig.json create mode 100644 packages/devtron-fe-common-lib/tsconfig.node.json create mode 100644 packages/devtron-fe-common-lib/vite.config.ts create mode 100644 packages/devtron-fe-lib/index.d.ts create mode 100644 packages/devtron-fe-lib/index.js create mode 100644 packages/devtron-fe-lib/package.json create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml delete mode 100644 yarn.lock diff --git a/.deepsource.toml b/.deepsource.toml deleted file mode 100644 index df03426d04..0000000000 --- a/.deepsource.toml +++ /dev/null @@ -1,23 +0,0 @@ -version = 1 - -[[analyzers]] -name = "python" -enabled = true - - [analyzers.meta] - runtime_version = "3.x.x" - -[[analyzers]] -name = "javascript" -enabled = true - - [analyzers.meta] - environment = [ - "nodejs", - "browser", - "jest", - "jquery" - ] - plugins = ["react"] - style_guide = "standard" - dialect = "typescript" diff --git a/.gitignore b/.gitignore index dfca7bfe8d..d27412e4bc 100755 --- a/.gitignore +++ b/.gitignore @@ -1,16 +1,16 @@ # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. # dependencies -/node_modules -/.pnp +node_modules/ +.pnp/ .pnp.js # testing -/coverage +coverage/ # production -/build -/dist +build/ +dist/ # misc .DS_Store @@ -29,9 +29,10 @@ yarn-error.log /public/env-config.js env-config.js .idea/ -/test-results/ -/playwright-report/ -/playwright/.cache/ +# TODO: delete unnecessary stuff +test-results/ +playwright-report/ +playwright/.cache/ playwright/.auth/ .npmrc diff --git a/.husky/pre-commit b/.husky/pre-commit index 50e1243735..1cd27366d0 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -17,5 +17,5 @@ . "$(dirname "$0")/_/husky.sh" -yarn tsc --noEmit -yarn lint-staged +# TODO: add lint-staged +pnpm -r lint diff --git a/.lintstagedrc b/.lintstagedrc deleted file mode 100644 index 049b25fcc1..0000000000 --- a/.lintstagedrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "*.{js,jsx,ts,tsx}": [ - "yarn eslint" - ] -} diff --git a/.env b/apps/web/.env similarity index 100% rename from .env rename to apps/web/.env diff --git a/.env.development b/apps/web/.env.development similarity index 100% rename from .env.development rename to apps/web/.env.development diff --git a/.env.k8sApp b/apps/web/.env.k8sApp similarity index 100% rename from .env.k8sApp rename to apps/web/.env.k8sApp diff --git a/.env.production b/apps/web/.env.production similarity index 100% rename from .env.production rename to apps/web/.env.production diff --git a/.eslintignore b/apps/web/.eslintignore similarity index 100% rename from .eslintignore rename to apps/web/.eslintignore diff --git a/.eslintrc.js b/apps/web/.eslintrc.js similarity index 100% rename from .eslintrc.js rename to apps/web/.eslintrc.js diff --git a/.storybook/main.ts b/apps/web/.storybook/main.ts similarity index 100% rename from .storybook/main.ts rename to apps/web/.storybook/main.ts diff --git a/.storybook/preview-head.html b/apps/web/.storybook/preview-head.html similarity index 100% rename from .storybook/preview-head.html rename to apps/web/.storybook/preview-head.html diff --git a/.storybook/preview.tsx b/apps/web/.storybook/preview.tsx similarity index 100% rename from .storybook/preview.tsx rename to apps/web/.storybook/preview.tsx diff --git a/config.md b/apps/web/config.md similarity index 100% rename from config.md rename to apps/web/config.md diff --git a/env.sh b/apps/web/env.sh similarity index 100% rename from env.sh rename to apps/web/env.sh diff --git a/favicon.ico b/apps/web/favicon.ico similarity index 100% rename from favicon.ico rename to apps/web/favicon.ico diff --git a/index.html b/apps/web/index.html similarity index 100% rename from index.html rename to apps/web/index.html diff --git a/linter.py b/apps/web/linter.py similarity index 100% rename from linter.py rename to apps/web/linter.py diff --git a/manifest.json b/apps/web/manifest.json similarity index 100% rename from manifest.json rename to apps/web/manifest.json diff --git a/nginx-default.conf b/apps/web/nginx-default.conf similarity index 100% rename from nginx-default.conf rename to apps/web/nginx-default.conf diff --git a/nginx.conf b/apps/web/nginx.conf similarity index 100% rename from nginx.conf rename to apps/web/nginx.conf diff --git a/apps/web/package.json b/apps/web/package.json new file mode 100644 index 0000000000..cd12eb3edb --- /dev/null +++ b/apps/web/package.json @@ -0,0 +1,158 @@ +{ + "name": "web", + "version": "0.2.0", + "private": true, + "homepage": "/dashboard", + "dependencies": { + "@devtron-labs/devtron-fe-common-lib": "workspace:*", + "@devtron-labs/devtron-fe-lib": "workspace:*", + "@esbuild-plugins/node-globals-polyfill": "0.2.3", + "@rjsf/core": "^5.13.3", + "@rjsf/utils": "^5.13.3", + "@rjsf/validator-ajv8": "^5.13.3", + "@sentry/browser": "7.50.0", + "@sentry/integrations": "7.50.0", + "@sentry/tracing": "7.50.0", + "@tippyjs/react": "4.2.6", + "@typeform/embed-react": "2.20.0", + "@types/marked": "4.0.8", + "@vitejs/plugin-react": "4.3.1", + "command-line-parser": "^0.2.10", + "compute-histogram": "^0.9.11", + "dayjs": "^1.11.8", + "dompurify": "^3.0.2", + "fast-json-patch": "^3.1.1", + "flexsearch": "^0.6.32", + "jsonpath-plus": "^9.0.0", + "marked": "4.3.0", + "moment": "^2.29.4", + "monaco-editor": "0.44.0", + "monaco-yaml": "5.1.1", + "query-string": "^7.1.1", + "react": "^17.0.2", + "react-csv": "^2.2.2", + "react-dates": "^21.8.0", + "react-dom": "^17.0.2", + "react-draggable": "^4.4.5", + "react-ga4": "^1.4.1", + "react-gtm-module": "^2.0.11", + "react-keybind": "^0.9.4", + "react-mde": "^11.5.0", + "react-monaco-editor": "^0.55.0", + "react-router-dom": "^5.3.4", + "react-select": "5.8.0", + "react-virtualized": "^9.22.5", + "recharts": "^2.1.9", + "rollup-plugin-node-polyfills": "0.2.1", + "rxjs": "^7.5.4", + "sockjs-client": "1.6.1", + "tippy.js": "^6.3.7", + "vite": "5.4.6", + "vite-plugin-require-transform": "1.0.21", + "vite-plugin-svgr": "^2.4.0", + "xterm": "^4.19.0", + "xterm-addon-fit": "^0.5.0", + "xterm-addon-search": "^0.9.0", + "xterm-webfont": "^2.0.0", + "yaml": "^2.4.1" + }, + "scripts": { + "lint": "tsc --noEmit && eslint 'src/**/*.{js,jsx,ts,tsx}' --max-warnings 0", + "lint-fix": "eslint 'src/**/*.{js,jsx,ts,tsx}' --fix", + "start": "vite --open", + "build": "NODE_OPTIONS=--max_old_space_size=4096 vite build --sourcemap", + "serve": "vite preview", + "build-light": "NODE_OPTIONS=--max_old_space_size=4096 GENERATE_SOURCEMAP=false vite build", + "build-k8s-app": "NODE_OPTIONS=--max_old_space_size=4096 GENERATE_SOURCEMAP=false VITE_K8S_CLIENT=true vite build", + "test": "vitest test", + "test-coverage:watch": "npm run test -- --coverage", + "test-coverage": "npm run test -- --coverage --watchAll=false", + "test:ci": "jest --watchAll=false --ci --json --coverage --testLocationInResults --outputFile=report.json", + "jest": "jest", + "storybook": "IS_STORYBOOK=true storybook dev -p 6006", + "build-storybook": "IS_STORYBOOK=true storybook build" + }, + "browserslist": [ + ">0.2%", + "not dead", + "not ie <= 11", + "not op_mini all" + ], + "devDependencies": { + "@chromatic-com/storybook": "^1.8.0", + "@playwright/test": "^1.32.1", + "@sentry/cli": "^2.2.0", + "@storybook/addon-a11y": "^8.2.9", + "@storybook/addon-actions": "^8.2.9", + "@storybook/addon-essentials": "^8.2.9", + "@storybook/addon-interactions": "^8.2.9", + "@storybook/addon-links": "^8.2.9", + "@storybook/blocks": "^8.2.9", + "@storybook/react": "^8.2.9", + "@storybook/react-vite": "^8.2.9", + "@storybook/test": "^8.2.9", + "@testing-library/jest-dom": "^5.16.2", + "@testing-library/react": "^12.1.4", + "@types/jest": "^27.4.1", + "@types/node": "20.11.0", + "@types/react": "17.0.39", + "@types/react-csv": "^1.1.3", + "@types/react-dom": "17.0.13", + "@types/react-router-dom": "^5.3.3", + "@types/react-transition-group": "^4.4.4", + "@types/recharts": "^1.8.23", + "@types/recompose": "^0.30.10", + "@typescript-eslint/eslint-plugin": "8.3.0", + "@typescript-eslint/parser": "8.3.0", + "env-cmd": "10.1.0", + "eslint": "^8.56.0", + "eslint-config-airbnb": "^19.0.4", + "eslint-config-prettier": "^9.1.0", + "eslint-import-resolver-typescript": "^3.6.1", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-jsx-a11y": "^6.8.0", + "eslint-plugin-prettier": "^5.1.2", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-storybook": "^0.8.0", + "jest-extended": "^2.0.0", + "jest-junit": "^13.0.0", + "jsdom-worker": "^0.2.1", + "mock-socket": "^9.2.1", + "prettier": "^3.1.1", + "react-test-render": "^1.1.2", + "sass": "^1.69.7", + "storybook": "^8.2.9", + "ts-jest": "29.2.5", + "ts-node": "10.9.2", + "typescript": "5.5.4", + "vite-plugin-pwa": "0.20.2", + "vite-tsconfig-paths": "5.0.1", + "vitest": "2.0.5", + "workbox-core": "7.1.0", + "workbox-navigation-preload": "7.1.0", + "workbox-precaching": "7.1.0", + "workbox-routing": "7.1.0", + "workbox-strategies": "7.1.0", + "workbox-window": "7.1.0", + "worker-loader": "3.0.8" + }, + "jest": { + "collectCoverageFrom": [ + "**/*.{ts,tsx,js,jsx}", + "!**/?(*.)+(mock).+(ts|js)", + "!**/node_modules/**", + "!**/coverage/**", + "!**/serviceWorker.ts", + "!**/index.tsx", + "!**/setupProxy.js" + ], + "setupFilesAfterEnv": [ + "jest-extended" + ], + "moduleNameMapper": { + "monaco-editor": "/node_modules/react-monaco-editor", + "monaco-yaml": "/node_modules/react-monaco-editor" + } + } +} diff --git a/sentry.sh b/apps/web/sentry.sh similarity index 100% rename from sentry.sh rename to apps/web/sentry.sh diff --git a/src/App.tsx b/apps/web/src/App.tsx similarity index 100% rename from src/App.tsx rename to apps/web/src/App.tsx diff --git a/src/Pages/App/Details/ExternalFlux/ExternalFluxAppDetails.tsx b/apps/web/src/Pages/App/Details/ExternalFlux/ExternalFluxAppDetails.tsx similarity index 100% rename from src/Pages/App/Details/ExternalFlux/ExternalFluxAppDetails.tsx rename to apps/web/src/Pages/App/Details/ExternalFlux/ExternalFluxAppDetails.tsx diff --git a/src/Pages/App/Details/ExternalFlux/ExternalFluxAppDetailsRoute.tsx b/apps/web/src/Pages/App/Details/ExternalFlux/ExternalFluxAppDetailsRoute.tsx similarity index 100% rename from src/Pages/App/Details/ExternalFlux/ExternalFluxAppDetailsRoute.tsx rename to apps/web/src/Pages/App/Details/ExternalFlux/ExternalFluxAppDetailsRoute.tsx diff --git a/src/Pages/App/Details/ExternalFlux/index.tsx b/apps/web/src/Pages/App/Details/ExternalFlux/index.tsx similarity index 100% rename from src/Pages/App/Details/ExternalFlux/index.tsx rename to apps/web/src/Pages/App/Details/ExternalFlux/index.tsx diff --git a/src/Pages/App/Details/ExternalFlux/service.tsx b/apps/web/src/Pages/App/Details/ExternalFlux/service.tsx similarity index 100% rename from src/Pages/App/Details/ExternalFlux/service.tsx rename to apps/web/src/Pages/App/Details/ExternalFlux/service.tsx diff --git a/src/Pages/App/Details/ExternalFlux/types.tsx b/apps/web/src/Pages/App/Details/ExternalFlux/types.tsx similarity index 100% rename from src/Pages/App/Details/ExternalFlux/types.tsx rename to apps/web/src/Pages/App/Details/ExternalFlux/types.tsx diff --git a/src/Pages/App/Details/ExternalFlux/utils.tsx b/apps/web/src/Pages/App/Details/ExternalFlux/utils.tsx similarity index 100% rename from src/Pages/App/Details/ExternalFlux/utils.tsx rename to apps/web/src/Pages/App/Details/ExternalFlux/utils.tsx diff --git a/src/Pages/Applications/DevtronApps/Details/AppConfigurations/AppConfig.constants.ts b/apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/AppConfig.constants.ts similarity index 100% rename from src/Pages/Applications/DevtronApps/Details/AppConfigurations/AppConfig.constants.ts rename to apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/AppConfig.constants.ts diff --git a/src/Pages/Applications/DevtronApps/Details/AppConfigurations/AppConfig.service.ts b/apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/AppConfig.service.ts similarity index 100% rename from src/Pages/Applications/DevtronApps/Details/AppConfigurations/AppConfig.service.ts rename to apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/AppConfig.service.ts diff --git a/src/Pages/Applications/DevtronApps/Details/AppConfigurations/AppConfig.tsx b/apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/AppConfig.tsx similarity index 100% rename from src/Pages/Applications/DevtronApps/Details/AppConfigurations/AppConfig.tsx rename to apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/AppConfig.tsx diff --git a/src/Pages/Applications/DevtronApps/Details/AppConfigurations/AppConfig.types.ts b/apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/AppConfig.types.ts similarity index 100% rename from src/Pages/Applications/DevtronApps/Details/AppConfigurations/AppConfig.types.ts rename to apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/AppConfig.types.ts diff --git a/src/Pages/Applications/DevtronApps/Details/AppConfigurations/AppConfig.utils.ts b/apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/AppConfig.utils.ts similarity index 100% rename from src/Pages/Applications/DevtronApps/Details/AppConfigurations/AppConfig.utils.ts rename to apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/AppConfig.utils.ts diff --git a/src/Pages/Applications/DevtronApps/Details/AppConfigurations/AppConfiguration.provider.tsx b/apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/AppConfiguration.provider.tsx similarity index 100% rename from src/Pages/Applications/DevtronApps/Details/AppConfigurations/AppConfiguration.provider.tsx rename to apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/AppConfiguration.provider.tsx diff --git a/src/Pages/Applications/DevtronApps/Details/AppConfigurations/MainContent/AppComposeRouter.tsx b/apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/MainContent/AppComposeRouter.tsx similarity index 100% rename from src/Pages/Applications/DevtronApps/Details/AppConfigurations/MainContent/AppComposeRouter.tsx rename to apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/MainContent/AppComposeRouter.tsx diff --git a/src/Pages/Applications/DevtronApps/Details/AppConfigurations/MainContent/DeploymentConfigCompare/DeploymentConfigCompare.tsx b/apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/MainContent/DeploymentConfigCompare/DeploymentConfigCompare.tsx similarity index 100% rename from src/Pages/Applications/DevtronApps/Details/AppConfigurations/MainContent/DeploymentConfigCompare/DeploymentConfigCompare.tsx rename to apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/MainContent/DeploymentConfigCompare/DeploymentConfigCompare.tsx diff --git a/src/Pages/Applications/DevtronApps/Details/AppConfigurations/MainContent/DeploymentConfigCompare/index.ts b/apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/MainContent/DeploymentConfigCompare/index.ts similarity index 100% rename from src/Pages/Applications/DevtronApps/Details/AppConfigurations/MainContent/DeploymentConfigCompare/index.ts rename to apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/MainContent/DeploymentConfigCompare/index.ts diff --git a/src/Pages/Applications/DevtronApps/Details/AppConfigurations/MainContent/DeploymentConfigCompare/service.utils.ts b/apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/MainContent/DeploymentConfigCompare/service.utils.ts similarity index 100% rename from src/Pages/Applications/DevtronApps/Details/AppConfigurations/MainContent/DeploymentConfigCompare/service.utils.ts rename to apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/MainContent/DeploymentConfigCompare/service.utils.ts diff --git a/src/Pages/Applications/DevtronApps/Details/AppConfigurations/MainContent/DeploymentConfigCompare/utils.ts b/apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/MainContent/DeploymentConfigCompare/utils.ts similarity index 100% rename from src/Pages/Applications/DevtronApps/Details/AppConfigurations/MainContent/DeploymentConfigCompare/utils.ts rename to apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/MainContent/DeploymentConfigCompare/utils.ts diff --git a/src/Pages/Applications/DevtronApps/Details/AppConfigurations/Navigation/AppConfigurationCheckBox.tsx b/apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/Navigation/AppConfigurationCheckBox.tsx similarity index 100% rename from src/Pages/Applications/DevtronApps/Details/AppConfigurations/Navigation/AppConfigurationCheckBox.tsx rename to apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/Navigation/AppConfigurationCheckBox.tsx diff --git a/src/Pages/Applications/DevtronApps/Details/AppConfigurations/Navigation/AppNavigation.tsx b/apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/Navigation/AppNavigation.tsx similarity index 100% rename from src/Pages/Applications/DevtronApps/Details/AppConfigurations/Navigation/AppNavigation.tsx rename to apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/Navigation/AppNavigation.tsx diff --git a/src/Pages/Applications/DevtronApps/Details/AppConfigurations/Navigation/EnvConfigurationsNav.tsx b/apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/Navigation/EnvConfigurationsNav.tsx similarity index 100% rename from src/Pages/Applications/DevtronApps/Details/AppConfigurations/Navigation/EnvConfigurationsNav.tsx rename to apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/Navigation/EnvConfigurationsNav.tsx diff --git a/src/Pages/Applications/DevtronApps/Details/AppConfigurations/Navigation/EnvSelect.utils.tsx b/apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/Navigation/EnvSelect.utils.tsx similarity index 100% rename from src/Pages/Applications/DevtronApps/Details/AppConfigurations/Navigation/EnvSelect.utils.tsx rename to apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/Navigation/EnvSelect.utils.tsx diff --git a/src/Pages/Applications/DevtronApps/Details/AppConfigurations/Navigation/EnvironmentOverrideRouter.tsx b/apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/Navigation/EnvironmentOverrideRouter.tsx similarity index 100% rename from src/Pages/Applications/DevtronApps/Details/AppConfigurations/Navigation/EnvironmentOverrideRouter.tsx rename to apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/Navigation/EnvironmentOverrideRouter.tsx diff --git a/src/Pages/Applications/DevtronApps/Details/AppConfigurations/Navigation/Navigation.helper.tsx b/apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/Navigation/Navigation.helper.tsx similarity index 100% rename from src/Pages/Applications/DevtronApps/Details/AppConfigurations/Navigation/Navigation.helper.tsx rename to apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/Navigation/Navigation.helper.tsx diff --git a/src/Pages/Applications/DevtronApps/Details/AppConfigurations/appConfig.scss b/apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/appConfig.scss similarity index 100% rename from src/Pages/Applications/DevtronApps/Details/AppConfigurations/appConfig.scss rename to apps/web/src/Pages/Applications/DevtronApps/Details/AppConfigurations/appConfig.scss diff --git a/src/Pages/Applications/DevtronApps/service.ts b/apps/web/src/Pages/Applications/DevtronApps/service.ts similarity index 100% rename from src/Pages/Applications/DevtronApps/service.ts rename to apps/web/src/Pages/Applications/DevtronApps/service.ts diff --git a/src/Pages/Applications/DevtronApps/service.types.ts b/apps/web/src/Pages/Applications/DevtronApps/service.types.ts similarity index 100% rename from src/Pages/Applications/DevtronApps/service.types.ts rename to apps/web/src/Pages/Applications/DevtronApps/service.types.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/APITokens/APITokenList.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/APITokenList.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/APITokens/APITokenList.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/APITokenList.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/APITokens/ApiTokens.component.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/ApiTokens.component.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/APITokens/ApiTokens.component.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/ApiTokens.component.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/APITokens/CreateAPIToken.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/CreateAPIToken.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/APITokens/CreateAPIToken.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/CreateAPIToken.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/APITokens/DeleteAPITokenModal.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/DeleteAPITokenModal.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/APITokens/DeleteAPITokenModal.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/DeleteAPITokenModal.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/APITokens/EditAPIToken.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/EditAPIToken.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/APITokens/EditAPIToken.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/EditAPIToken.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/APITokens/ExpirationDate.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/ExpirationDate.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/APITokens/ExpirationDate.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/ExpirationDate.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/APITokens/GenerateActionButton.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/GenerateActionButton.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/APITokens/GenerateActionButton.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/GenerateActionButton.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/APITokens/GenerateModal.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/GenerateModal.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/APITokens/GenerateModal.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/GenerateModal.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/APITokens/RegenerateModal.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/RegenerateModal.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/APITokens/RegenerateModal.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/RegenerateModal.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/APITokens/__mocks__/ApiTokens.mock.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/__mocks__/ApiTokens.mock.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/APITokens/__mocks__/ApiTokens.mock.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/__mocks__/ApiTokens.mock.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/APITokens/__tests__/ApiTokens.test.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/__tests__/ApiTokens.test.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/APITokens/__tests__/ApiTokens.test.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/__tests__/ApiTokens.test.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/APITokens/apiToken.scss b/apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/apiToken.scss similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/APITokens/apiToken.scss rename to apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/apiToken.scss diff --git a/src/Pages/GlobalConfigurations/Authorization/APITokens/apiToken.type.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/apiToken.type.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/APITokens/apiToken.type.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/apiToken.type.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/APITokens/apiToken.utils.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/apiToken.utils.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/APITokens/apiToken.utils.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/apiToken.utils.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/APITokens/index.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/index.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/APITokens/index.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/index.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/APITokens/service.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/service.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/APITokens/service.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/service.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/APITokens/validationRules.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/validationRules.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/APITokens/validationRules.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/APITokens/validationRules.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/Authorization.component.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/Authorization.component.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Authorization.component.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Authorization.component.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/AuthorizationProvider.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/AuthorizationProvider.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/AuthorizationProvider.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/AuthorizationProvider.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/AddEdit/PermissionGroupAddEdit.component.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/AddEdit/PermissionGroupAddEdit.component.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/PermissionGroups/AddEdit/PermissionGroupAddEdit.component.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/AddEdit/PermissionGroupAddEdit.component.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/AddEdit/PermissionGroupForm.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/AddEdit/PermissionGroupForm.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/PermissionGroups/AddEdit/PermissionGroupForm.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/AddEdit/PermissionGroupForm.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/AddEdit/index.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/AddEdit/index.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/PermissionGroups/AddEdit/index.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/AddEdit/index.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/ExportPermissionGroupsToCsv.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/ExportPermissionGroupsToCsv.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/ExportPermissionGroupsToCsv.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/ExportPermissionGroupsToCsv.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/NoPermissionGroups.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/NoPermissionGroups.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/NoPermissionGroups.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/NoPermissionGroups.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/PermissionGroupContainer.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/PermissionGroupContainer.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/PermissionGroupContainer.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/PermissionGroupContainer.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/PermissionGroupList.component.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/PermissionGroupList.component.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/PermissionGroupList.component.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/PermissionGroupList.component.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/PermissionGroupListHeader.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/PermissionGroupListHeader.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/PermissionGroupListHeader.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/PermissionGroupListHeader.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/PermissionGroupRow.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/PermissionGroupRow.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/PermissionGroupRow.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/PermissionGroupRow.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/PermissionGroupTable.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/PermissionGroupTable.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/PermissionGroupTable.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/PermissionGroupTable.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/constants.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/constants.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/constants.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/constants.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/index.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/index.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/index.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/index.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/types.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/types.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/types.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/List/types.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/PermissionGroups.component.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/PermissionGroups.component.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/PermissionGroups/PermissionGroups.component.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/PermissionGroups.component.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/index.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/index.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/PermissionGroups/index.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/PermissionGroups/index.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/README.md b/apps/web/src/Pages/GlobalConfigurations/Authorization/README.md similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/README.md rename to apps/web/src/Pages/GlobalConfigurations/Authorization/README.md diff --git a/src/Pages/GlobalConfigurations/Authorization/SSOLoginServices/SSOLogin.component.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/SSOLoginServices/SSOLogin.component.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/SSOLoginServices/SSOLogin.component.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/SSOLoginServices/SSOLogin.component.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/SSOLoginServices/constants.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/SSOLoginServices/constants.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/SSOLoginServices/constants.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/SSOLoginServices/constants.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/SSOLoginServices/index.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/SSOLoginServices/index.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/SSOLoginServices/index.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/SSOLoginServices/index.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/SSOLoginServices/sampleSSOConfig.json b/apps/web/src/Pages/GlobalConfigurations/Authorization/SSOLoginServices/sampleSSOConfig.json similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/SSOLoginServices/sampleSSOConfig.json rename to apps/web/src/Pages/GlobalConfigurations/Authorization/SSOLoginServices/sampleSSOConfig.json diff --git a/src/Pages/GlobalConfigurations/Authorization/SSOLoginServices/service.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/SSOLoginServices/service.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/SSOLoginServices/service.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/SSOLoginServices/service.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/SSOLoginServices/ssoConfig.types.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/SSOLoginServices/ssoConfig.types.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/SSOLoginServices/ssoConfig.types.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/SSOLoginServices/ssoConfig.types.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/SSOLoginServices/ssoLogin.scss b/apps/web/src/Pages/GlobalConfigurations/Authorization/SSOLoginServices/ssoLogin.scss similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/SSOLoginServices/ssoLogin.scss rename to apps/web/src/Pages/GlobalConfigurations/Authorization/SSOLoginServices/ssoLogin.scss diff --git a/src/Pages/GlobalConfigurations/Authorization/SSOLoginServices/utils.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/SSOLoginServices/utils.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/SSOLoginServices/utils.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/SSOLoginServices/utils.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/AppPermissionDetail.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/AppPermissionDetail.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/AppPermissionDetail.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/AppPermissionDetail.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/AppPermissions.component.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/AppPermissions.component.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/AppPermissions.component.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/AppPermissions.component.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/DirectPermission.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/DirectPermission.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/DirectPermission.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/DirectPermission.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/common.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/common.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/common.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/common.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/constants.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/constants.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/constants.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/constants.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/index.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/index.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/index.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/index.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/types.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/types.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/types.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/types.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/utils.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/utils.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/utils.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/AppPermissions/utils.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/BulkDeleteModal.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/BulkDeleteModal.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/BulkDeleteModal.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/BulkDeleteModal.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/BulkSelectionActionWidget.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/BulkSelectionActionWidget.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/BulkSelectionActionWidget.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/BulkSelectionActionWidget.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/BulkSelectionClearConfirmationModal.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/BulkSelectionClearConfirmationModal.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/BulkSelectionClearConfirmationModal.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/BulkSelectionClearConfirmationModal.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/BulkSelectionModal.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/BulkSelectionModal.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/BulkSelectionModal.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/BulkSelectionModal.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/constants.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/constants.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/constants.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/constants.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/index.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/index.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/index.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/index.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/types.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/types.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/types.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/types.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/useAuthorizationBulkSelection.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/useAuthorizationBulkSelection.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/useAuthorizationBulkSelection.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/BulkSelection/useAuthorizationBulkSelection.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/ChartPermission/ChartPermission.component.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/ChartPermission/ChartPermission.component.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/ChartPermission/ChartPermission.component.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/ChartPermission/ChartPermission.component.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/ChartPermission/constants.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/ChartPermission/constants.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/ChartPermission/constants.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/ChartPermission/constants.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/ChartPermission/index.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/ChartPermission/index.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/ChartPermission/index.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/ChartPermission/index.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/ChartPermission/types.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/ChartPermission/types.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/ChartPermission/types.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/ChartPermission/types.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/K8sListItemCard.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/K8sListItemCard.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/K8sListItemCard.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/K8sListItemCard.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/K8sPermissionModal.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/K8sPermissionModal.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/K8sPermissionModal.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/K8sPermissionModal.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/K8sPermissionRow.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/K8sPermissionRow.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/K8sPermissionRow.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/K8sPermissionRow.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/K8sPermissions.component.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/K8sPermissions.component.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/K8sPermissions.component.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/K8sPermissions.component.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/constants.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/constants.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/constants.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/constants.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/types.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/types.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/types.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/types.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/utils.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/utils.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/utils.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/K8sObjectPermissions/utils.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/PermissionConfigurationForm/PermissionConfigurationForm.component.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/PermissionConfigurationForm/PermissionConfigurationForm.component.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/PermissionConfigurationForm/PermissionConfigurationForm.component.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/PermissionConfigurationForm/PermissionConfigurationForm.component.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/PermissionConfigurationForm/PermissionConfigurationFormProvider.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/PermissionConfigurationForm/PermissionConfigurationFormProvider.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/PermissionConfigurationForm/PermissionConfigurationFormProvider.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/PermissionConfigurationForm/PermissionConfigurationFormProvider.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/PermissionConfigurationForm/index.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/PermissionConfigurationForm/index.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/PermissionConfigurationForm/index.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/PermissionConfigurationForm/index.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/PermissionConfigurationForm/types.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/PermissionConfigurationForm/types.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/PermissionConfigurationForm/types.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/PermissionConfigurationForm/types.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/SuperAdminInfoBar/SuperAdminInfoBar.component.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/SuperAdminInfoBar/SuperAdminInfoBar.component.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/SuperAdminInfoBar/SuperAdminInfoBar.component.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/SuperAdminInfoBar/SuperAdminInfoBar.component.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/SuperAdminInfoBar/index.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/SuperAdminInfoBar/index.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/SuperAdminInfoBar/index.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/SuperAdminInfoBar/index.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/UserPermissionGroupsSelector/UserPermissionGroupsSelector.component.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/UserPermissionGroupsSelector/UserPermissionGroupsSelector.component.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/UserPermissionGroupsSelector/UserPermissionGroupsSelector.component.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/UserPermissionGroupsSelector/UserPermissionGroupsSelector.component.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/Shared/components/UserPermissionGroupsSelector/index.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/UserPermissionGroupsSelector/index.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/Shared/components/UserPermissionGroupsSelector/index.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/Shared/components/UserPermissionGroupsSelector/index.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/UserAndGroupPermissions.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/UserAndGroupPermissions.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/UserAndGroupPermissions.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/UserAndGroupPermissions.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/UserPermissions/AddEdit/UserForm.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/AddEdit/UserForm.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/UserPermissions/AddEdit/UserForm.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/AddEdit/UserForm.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/UserPermissions/AddEdit/UserPermissionAddEdit.component.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/AddEdit/UserPermissionAddEdit.component.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/UserPermissions/AddEdit/UserPermissionAddEdit.component.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/AddEdit/UserPermissionAddEdit.component.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/UserPermissions/AddEdit/index.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/AddEdit/index.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/UserPermissions/AddEdit/index.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/AddEdit/index.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/ExportUserPermissionsToCsv.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/ExportUserPermissionsToCsv.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/ExportUserPermissionsToCsv.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/ExportUserPermissionsToCsv.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/NoUsers.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/NoUsers.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/NoUsers.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/NoUsers.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/UserPermissionContainer.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/UserPermissionContainer.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/UserPermissionContainer.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/UserPermissionContainer.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/UserPermissionList.component.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/UserPermissionList.component.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/UserPermissionList.component.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/UserPermissionList.component.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/UserPermissionListHeader.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/UserPermissionListHeader.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/UserPermissionListHeader.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/UserPermissionListHeader.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/UserPermissionRow.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/UserPermissionRow.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/UserPermissionRow.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/UserPermissionRow.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/UserPermissionTable.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/UserPermissionTable.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/UserPermissionTable.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/UserPermissionTable.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/constants.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/constants.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/constants.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/constants.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/index.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/index.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/index.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/index.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/types.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/types.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/types.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/List/types.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/UserPermissions/SSONotConfiguredState.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/SSONotConfiguredState.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/UserPermissions/SSONotConfiguredState.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/SSONotConfiguredState.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/UserPermissions/UserPermissions.component.tsx b/apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/UserPermissions.component.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/UserPermissions/UserPermissions.component.tsx rename to apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/UserPermissions.component.tsx diff --git a/src/Pages/GlobalConfigurations/Authorization/UserPermissions/constants.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/constants.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/UserPermissions/constants.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/constants.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/UserPermissions/index.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/index.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/UserPermissions/index.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/index.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/UserPermissions/utils.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/utils.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/UserPermissions/utils.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/UserPermissions/utils.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/authorization.scss b/apps/web/src/Pages/GlobalConfigurations/Authorization/authorization.scss similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/authorization.scss rename to apps/web/src/Pages/GlobalConfigurations/Authorization/authorization.scss diff --git a/src/Pages/GlobalConfigurations/Authorization/authorization.service.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/authorization.service.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/authorization.service.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/authorization.service.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/constants.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/constants.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/constants.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/constants.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/index.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/index.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/index.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/index.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/libUtils.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/libUtils.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/libUtils.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/libUtils.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/types.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/types.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/types.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/types.ts diff --git a/src/Pages/GlobalConfigurations/Authorization/utils.ts b/apps/web/src/Pages/GlobalConfigurations/Authorization/utils.ts similarity index 100% rename from src/Pages/GlobalConfigurations/Authorization/utils.ts rename to apps/web/src/Pages/GlobalConfigurations/Authorization/utils.ts diff --git a/src/Pages/GlobalConfigurations/BuildInfra/BuildInfra.tsx b/apps/web/src/Pages/GlobalConfigurations/BuildInfra/BuildInfra.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/BuildInfra/BuildInfra.tsx rename to apps/web/src/Pages/GlobalConfigurations/BuildInfra/BuildInfra.tsx diff --git a/src/Pages/GlobalConfigurations/BuildInfra/ProfileForm.tsx b/apps/web/src/Pages/GlobalConfigurations/BuildInfra/ProfileForm.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/BuildInfra/ProfileForm.tsx rename to apps/web/src/Pages/GlobalConfigurations/BuildInfra/ProfileForm.tsx diff --git a/src/Pages/GlobalConfigurations/BuildInfra/index.ts b/apps/web/src/Pages/GlobalConfigurations/BuildInfra/index.ts similarity index 100% rename from src/Pages/GlobalConfigurations/BuildInfra/index.ts rename to apps/web/src/Pages/GlobalConfigurations/BuildInfra/index.ts diff --git a/src/Pages/GlobalConfigurations/BuildInfra/styles.scss b/apps/web/src/Pages/GlobalConfigurations/BuildInfra/styles.scss similarity index 100% rename from src/Pages/GlobalConfigurations/BuildInfra/styles.scss rename to apps/web/src/Pages/GlobalConfigurations/BuildInfra/styles.scss diff --git a/src/Pages/GlobalConfigurations/BuildInfra/types.tsx b/apps/web/src/Pages/GlobalConfigurations/BuildInfra/types.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/BuildInfra/types.tsx rename to apps/web/src/Pages/GlobalConfigurations/BuildInfra/types.tsx diff --git a/src/Pages/GlobalConfigurations/ClustersAndEnvironments/ClusterEnvironmentDrawer/ClusterEnvironmentDrawer.tsx b/apps/web/src/Pages/GlobalConfigurations/ClustersAndEnvironments/ClusterEnvironmentDrawer/ClusterEnvironmentDrawer.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/ClustersAndEnvironments/ClusterEnvironmentDrawer/ClusterEnvironmentDrawer.tsx rename to apps/web/src/Pages/GlobalConfigurations/ClustersAndEnvironments/ClusterEnvironmentDrawer/ClusterEnvironmentDrawer.tsx diff --git a/src/Pages/GlobalConfigurations/ClustersAndEnvironments/ClusterEnvironmentDrawer/index.ts b/apps/web/src/Pages/GlobalConfigurations/ClustersAndEnvironments/ClusterEnvironmentDrawer/index.ts similarity index 100% rename from src/Pages/GlobalConfigurations/ClustersAndEnvironments/ClusterEnvironmentDrawer/index.ts rename to apps/web/src/Pages/GlobalConfigurations/ClustersAndEnvironments/ClusterEnvironmentDrawer/index.ts diff --git a/src/Pages/GlobalConfigurations/ClustersAndEnvironments/ClusterEnvironmentDrawer/schema.ts b/apps/web/src/Pages/GlobalConfigurations/ClustersAndEnvironments/ClusterEnvironmentDrawer/schema.ts similarity index 100% rename from src/Pages/GlobalConfigurations/ClustersAndEnvironments/ClusterEnvironmentDrawer/schema.ts rename to apps/web/src/Pages/GlobalConfigurations/ClustersAndEnvironments/ClusterEnvironmentDrawer/schema.ts diff --git a/src/Pages/GlobalConfigurations/ClustersAndEnvironments/ClusterEnvironmentDrawer/types.ts b/apps/web/src/Pages/GlobalConfigurations/ClustersAndEnvironments/ClusterEnvironmentDrawer/types.ts similarity index 100% rename from src/Pages/GlobalConfigurations/ClustersAndEnvironments/ClusterEnvironmentDrawer/types.ts rename to apps/web/src/Pages/GlobalConfigurations/ClustersAndEnvironments/ClusterEnvironmentDrawer/types.ts diff --git a/src/Pages/GlobalConfigurations/ClustersAndEnvironments/ClusterEnvironmentDrawer/utils.ts b/apps/web/src/Pages/GlobalConfigurations/ClustersAndEnvironments/ClusterEnvironmentDrawer/utils.ts similarity index 100% rename from src/Pages/GlobalConfigurations/ClustersAndEnvironments/ClusterEnvironmentDrawer/utils.ts rename to apps/web/src/Pages/GlobalConfigurations/ClustersAndEnvironments/ClusterEnvironmentDrawer/utils.ts diff --git a/src/Pages/GlobalConfigurations/DeploymentCharts/DeploymentChartsRouter.component.tsx b/apps/web/src/Pages/GlobalConfigurations/DeploymentCharts/DeploymentChartsRouter.component.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/DeploymentCharts/DeploymentChartsRouter.component.tsx rename to apps/web/src/Pages/GlobalConfigurations/DeploymentCharts/DeploymentChartsRouter.component.tsx diff --git a/src/Pages/GlobalConfigurations/DeploymentCharts/List/DeploymentChartsList.component.tsx b/apps/web/src/Pages/GlobalConfigurations/DeploymentCharts/List/DeploymentChartsList.component.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/DeploymentCharts/List/DeploymentChartsList.component.tsx rename to apps/web/src/Pages/GlobalConfigurations/DeploymentCharts/List/DeploymentChartsList.component.tsx diff --git a/src/Pages/GlobalConfigurations/DeploymentCharts/List/DeploymentChartsListHeader.tsx b/apps/web/src/Pages/GlobalConfigurations/DeploymentCharts/List/DeploymentChartsListHeader.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/DeploymentCharts/List/DeploymentChartsListHeader.tsx rename to apps/web/src/Pages/GlobalConfigurations/DeploymentCharts/List/DeploymentChartsListHeader.tsx diff --git a/src/Pages/GlobalConfigurations/DeploymentCharts/List/DownloadChartButton.tsx b/apps/web/src/Pages/GlobalConfigurations/DeploymentCharts/List/DownloadChartButton.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/DeploymentCharts/List/DownloadChartButton.tsx rename to apps/web/src/Pages/GlobalConfigurations/DeploymentCharts/List/DownloadChartButton.tsx diff --git a/src/Pages/GlobalConfigurations/DeploymentCharts/List/UploadButton.tsx b/apps/web/src/Pages/GlobalConfigurations/DeploymentCharts/List/UploadButton.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/DeploymentCharts/List/UploadButton.tsx rename to apps/web/src/Pages/GlobalConfigurations/DeploymentCharts/List/UploadButton.tsx diff --git a/src/Pages/GlobalConfigurations/DeploymentCharts/List/UploadChartModal.tsx b/apps/web/src/Pages/GlobalConfigurations/DeploymentCharts/List/UploadChartModal.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/DeploymentCharts/List/UploadChartModal.tsx rename to apps/web/src/Pages/GlobalConfigurations/DeploymentCharts/List/UploadChartModal.tsx diff --git a/src/Pages/GlobalConfigurations/DeploymentCharts/List/index.tsx b/apps/web/src/Pages/GlobalConfigurations/DeploymentCharts/List/index.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/DeploymentCharts/List/index.tsx rename to apps/web/src/Pages/GlobalConfigurations/DeploymentCharts/List/index.tsx diff --git a/src/Pages/GlobalConfigurations/DeploymentCharts/List/service.tsx b/apps/web/src/Pages/GlobalConfigurations/DeploymentCharts/List/service.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/DeploymentCharts/List/service.tsx rename to apps/web/src/Pages/GlobalConfigurations/DeploymentCharts/List/service.tsx diff --git a/src/Pages/GlobalConfigurations/DeploymentCharts/List/styles.scss b/apps/web/src/Pages/GlobalConfigurations/DeploymentCharts/List/styles.scss similarity index 100% rename from src/Pages/GlobalConfigurations/DeploymentCharts/List/styles.scss rename to apps/web/src/Pages/GlobalConfigurations/DeploymentCharts/List/styles.scss diff --git a/src/Pages/GlobalConfigurations/DeploymentCharts/index.tsx b/apps/web/src/Pages/GlobalConfigurations/DeploymentCharts/index.tsx similarity index 100% rename from src/Pages/GlobalConfigurations/DeploymentCharts/index.tsx rename to apps/web/src/Pages/GlobalConfigurations/DeploymentCharts/index.tsx diff --git a/src/Pages/GlobalConfigurations/DeploymentCharts/types.ts b/apps/web/src/Pages/GlobalConfigurations/DeploymentCharts/types.ts similarity index 100% rename from src/Pages/GlobalConfigurations/DeploymentCharts/types.ts rename to apps/web/src/Pages/GlobalConfigurations/DeploymentCharts/types.ts diff --git a/src/Pages/GlobalConfigurations/index.ts b/apps/web/src/Pages/GlobalConfigurations/index.ts similarity index 100% rename from src/Pages/GlobalConfigurations/index.ts rename to apps/web/src/Pages/GlobalConfigurations/index.ts diff --git a/src/Pages/Releases/.gitkeep b/apps/web/src/Pages/Releases/.gitkeep similarity index 100% rename from src/Pages/Releases/.gitkeep rename to apps/web/src/Pages/Releases/.gitkeep diff --git a/src/Pages/Shared/ConfigMapSecret/ConfigMapSecret.components.tsx b/apps/web/src/Pages/Shared/ConfigMapSecret/ConfigMapSecret.components.tsx similarity index 100% rename from src/Pages/Shared/ConfigMapSecret/ConfigMapSecret.components.tsx rename to apps/web/src/Pages/Shared/ConfigMapSecret/ConfigMapSecret.components.tsx diff --git a/src/Pages/Shared/ConfigMapSecret/ConfigMapSecret.constants.ts b/apps/web/src/Pages/Shared/ConfigMapSecret/ConfigMapSecret.constants.ts similarity index 100% rename from src/Pages/Shared/ConfigMapSecret/ConfigMapSecret.constants.ts rename to apps/web/src/Pages/Shared/ConfigMapSecret/ConfigMapSecret.constants.ts diff --git a/src/Pages/Shared/ConfigMapSecret/ConfigMapSecret.container.tsx b/apps/web/src/Pages/Shared/ConfigMapSecret/ConfigMapSecret.container.tsx similarity index 100% rename from src/Pages/Shared/ConfigMapSecret/ConfigMapSecret.container.tsx rename to apps/web/src/Pages/Shared/ConfigMapSecret/ConfigMapSecret.container.tsx diff --git a/src/Pages/Shared/ConfigMapSecret/ConfigMapSecret.reducer.ts b/apps/web/src/Pages/Shared/ConfigMapSecret/ConfigMapSecret.reducer.ts similarity index 100% rename from src/Pages/Shared/ConfigMapSecret/ConfigMapSecret.reducer.ts rename to apps/web/src/Pages/Shared/ConfigMapSecret/ConfigMapSecret.reducer.ts diff --git a/src/Pages/Shared/ConfigMapSecret/ConfigMapSecret.scss b/apps/web/src/Pages/Shared/ConfigMapSecret/ConfigMapSecret.scss similarity index 100% rename from src/Pages/Shared/ConfigMapSecret/ConfigMapSecret.scss rename to apps/web/src/Pages/Shared/ConfigMapSecret/ConfigMapSecret.scss diff --git a/src/Pages/Shared/ConfigMapSecret/ConfigMapSecret.service.ts b/apps/web/src/Pages/Shared/ConfigMapSecret/ConfigMapSecret.service.ts similarity index 100% rename from src/Pages/Shared/ConfigMapSecret/ConfigMapSecret.service.ts rename to apps/web/src/Pages/Shared/ConfigMapSecret/ConfigMapSecret.service.ts diff --git a/src/Pages/Shared/ConfigMapSecret/ConfigMapSecret.types.ts b/apps/web/src/Pages/Shared/ConfigMapSecret/ConfigMapSecret.types.ts similarity index 100% rename from src/Pages/Shared/ConfigMapSecret/ConfigMapSecret.types.ts rename to apps/web/src/Pages/Shared/ConfigMapSecret/ConfigMapSecret.types.ts diff --git a/src/Pages/Shared/ConfigMapSecret/ConfigMapSecret.wrapper.tsx b/apps/web/src/Pages/Shared/ConfigMapSecret/ConfigMapSecret.wrapper.tsx similarity index 100% rename from src/Pages/Shared/ConfigMapSecret/ConfigMapSecret.wrapper.tsx rename to apps/web/src/Pages/Shared/ConfigMapSecret/ConfigMapSecret.wrapper.tsx diff --git a/src/Pages/Shared/ConfigMapSecret/ConfigMapSecretDataEditor.container.tsx b/apps/web/src/Pages/Shared/ConfigMapSecret/ConfigMapSecretDataEditor.container.tsx similarity index 100% rename from src/Pages/Shared/ConfigMapSecret/ConfigMapSecretDataEditor.container.tsx rename to apps/web/src/Pages/Shared/ConfigMapSecret/ConfigMapSecretDataEditor.container.tsx diff --git a/src/Pages/Shared/ConfigMapSecret/ConfigMapSecretDeleteModal.tsx b/apps/web/src/Pages/Shared/ConfigMapSecret/ConfigMapSecretDeleteModal.tsx similarity index 100% rename from src/Pages/Shared/ConfigMapSecret/ConfigMapSecretDeleteModal.tsx rename to apps/web/src/Pages/Shared/ConfigMapSecret/ConfigMapSecretDeleteModal.tsx diff --git a/src/Pages/Shared/ConfigMapSecret/ConfigMapSecretForm.tsx b/apps/web/src/Pages/Shared/ConfigMapSecret/ConfigMapSecretForm.tsx similarity index 100% rename from src/Pages/Shared/ConfigMapSecret/ConfigMapSecretForm.tsx rename to apps/web/src/Pages/Shared/ConfigMapSecret/ConfigMapSecretForm.tsx diff --git a/src/Pages/Shared/ConfigMapSecret/ProtectedConfigMapSecretDetails.tsx b/apps/web/src/Pages/Shared/ConfigMapSecret/ProtectedConfigMapSecretDetails.tsx similarity index 100% rename from src/Pages/Shared/ConfigMapSecret/ProtectedConfigMapSecretDetails.tsx rename to apps/web/src/Pages/Shared/ConfigMapSecret/ProtectedConfigMapSecretDetails.tsx diff --git a/src/Pages/Shared/ConfigMapSecret/Secret.utils.tsx b/apps/web/src/Pages/Shared/ConfigMapSecret/Secret.utils.tsx similarity index 100% rename from src/Pages/Shared/ConfigMapSecret/Secret.utils.tsx rename to apps/web/src/Pages/Shared/ConfigMapSecret/Secret.utils.tsx diff --git a/src/Pages/Shared/EnvironmentOverride/EnvironmentOverride.tsx b/apps/web/src/Pages/Shared/EnvironmentOverride/EnvironmentOverride.tsx similarity index 100% rename from src/Pages/Shared/EnvironmentOverride/EnvironmentOverride.tsx rename to apps/web/src/Pages/Shared/EnvironmentOverride/EnvironmentOverride.tsx diff --git a/src/Pages/Shared/EnvironmentOverride/EnvironmentOverrides.types.ts b/apps/web/src/Pages/Shared/EnvironmentOverride/EnvironmentOverrides.types.ts similarity index 100% rename from src/Pages/Shared/EnvironmentOverride/EnvironmentOverrides.types.ts rename to apps/web/src/Pages/Shared/EnvironmentOverride/EnvironmentOverrides.types.ts diff --git a/src/Pages/Shared/EnvironmentOverride/environmentOverride.scss b/apps/web/src/Pages/Shared/EnvironmentOverride/environmentOverride.scss similarity index 100% rename from src/Pages/Shared/EnvironmentOverride/environmentOverride.scss rename to apps/web/src/Pages/Shared/EnvironmentOverride/environmentOverride.scss diff --git a/src/Pages/Shared/EnvironmentOverride/service.ts b/apps/web/src/Pages/Shared/EnvironmentOverride/service.ts similarity index 100% rename from src/Pages/Shared/EnvironmentOverride/service.ts rename to apps/web/src/Pages/Shared/EnvironmentOverride/service.ts diff --git a/src/Pages/Shared/EnvironmentOverviewTable/EnvironmentOverview.constants.ts b/apps/web/src/Pages/Shared/EnvironmentOverviewTable/EnvironmentOverview.constants.ts similarity index 100% rename from src/Pages/Shared/EnvironmentOverviewTable/EnvironmentOverview.constants.ts rename to apps/web/src/Pages/Shared/EnvironmentOverviewTable/EnvironmentOverview.constants.ts diff --git a/src/Pages/Shared/EnvironmentOverviewTable/EnvironmentOverviewTable.component.tsx b/apps/web/src/Pages/Shared/EnvironmentOverviewTable/EnvironmentOverviewTable.component.tsx similarity index 100% rename from src/Pages/Shared/EnvironmentOverviewTable/EnvironmentOverviewTable.component.tsx rename to apps/web/src/Pages/Shared/EnvironmentOverviewTable/EnvironmentOverviewTable.component.tsx diff --git a/src/Pages/Shared/EnvironmentOverviewTable/EnvironmentOverviewTable.scss b/apps/web/src/Pages/Shared/EnvironmentOverviewTable/EnvironmentOverviewTable.scss similarity index 100% rename from src/Pages/Shared/EnvironmentOverviewTable/EnvironmentOverviewTable.scss rename to apps/web/src/Pages/Shared/EnvironmentOverviewTable/EnvironmentOverviewTable.scss diff --git a/src/Pages/Shared/EnvironmentOverviewTable/EnvironmentOverviewTable.types.ts b/apps/web/src/Pages/Shared/EnvironmentOverviewTable/EnvironmentOverviewTable.types.ts similarity index 100% rename from src/Pages/Shared/EnvironmentOverviewTable/EnvironmentOverviewTable.types.ts rename to apps/web/src/Pages/Shared/EnvironmentOverviewTable/EnvironmentOverviewTable.types.ts diff --git a/src/Pages/Shared/EnvironmentOverviewTable/index.ts b/apps/web/src/Pages/Shared/EnvironmentOverviewTable/index.ts similarity index 100% rename from src/Pages/Shared/EnvironmentOverviewTable/index.ts rename to apps/web/src/Pages/Shared/EnvironmentOverviewTable/index.ts diff --git a/src/Pages/Shared/LinkedCIDetailsModal/LinkedCIAppList.tsx b/apps/web/src/Pages/Shared/LinkedCIDetailsModal/LinkedCIAppList.tsx similarity index 100% rename from src/Pages/Shared/LinkedCIDetailsModal/LinkedCIAppList.tsx rename to apps/web/src/Pages/Shared/LinkedCIDetailsModal/LinkedCIAppList.tsx diff --git a/src/Pages/Shared/LinkedCIDetailsModal/LinkedCIDetail.tsx b/apps/web/src/Pages/Shared/LinkedCIDetailsModal/LinkedCIDetail.tsx similarity index 100% rename from src/Pages/Shared/LinkedCIDetailsModal/LinkedCIDetail.tsx rename to apps/web/src/Pages/Shared/LinkedCIDetailsModal/LinkedCIDetail.tsx diff --git a/src/Pages/Shared/LinkedCIDetailsModal/LinkedCIDetailsModal.tsx b/apps/web/src/Pages/Shared/LinkedCIDetailsModal/LinkedCIDetailsModal.tsx similarity index 100% rename from src/Pages/Shared/LinkedCIDetailsModal/LinkedCIDetailsModal.tsx rename to apps/web/src/Pages/Shared/LinkedCIDetailsModal/LinkedCIDetailsModal.tsx diff --git a/src/Pages/Shared/LinkedCIDetailsModal/constants.ts b/apps/web/src/Pages/Shared/LinkedCIDetailsModal/constants.ts similarity index 100% rename from src/Pages/Shared/LinkedCIDetailsModal/constants.ts rename to apps/web/src/Pages/Shared/LinkedCIDetailsModal/constants.ts diff --git a/src/Pages/Shared/LinkedCIDetailsModal/index.ts b/apps/web/src/Pages/Shared/LinkedCIDetailsModal/index.ts similarity index 100% rename from src/Pages/Shared/LinkedCIDetailsModal/index.ts rename to apps/web/src/Pages/Shared/LinkedCIDetailsModal/index.ts diff --git a/src/Pages/Shared/LinkedCIDetailsModal/linkedCIAppList.scss b/apps/web/src/Pages/Shared/LinkedCIDetailsModal/linkedCIAppList.scss similarity index 100% rename from src/Pages/Shared/LinkedCIDetailsModal/linkedCIAppList.scss rename to apps/web/src/Pages/Shared/LinkedCIDetailsModal/linkedCIAppList.scss diff --git a/src/Pages/Shared/LinkedCIDetailsModal/service.ts b/apps/web/src/Pages/Shared/LinkedCIDetailsModal/service.ts similarity index 100% rename from src/Pages/Shared/LinkedCIDetailsModal/service.ts rename to apps/web/src/Pages/Shared/LinkedCIDetailsModal/service.ts diff --git a/src/Pages/Shared/LinkedCIDetailsModal/types.ts b/apps/web/src/Pages/Shared/LinkedCIDetailsModal/types.ts similarity index 100% rename from src/Pages/Shared/LinkedCIDetailsModal/types.ts rename to apps/web/src/Pages/Shared/LinkedCIDetailsModal/types.ts diff --git a/src/Pages/Shared/LinkedCIDetailsModal/utils.ts b/apps/web/src/Pages/Shared/LinkedCIDetailsModal/utils.ts similarity index 100% rename from src/Pages/Shared/LinkedCIDetailsModal/utils.ts rename to apps/web/src/Pages/Shared/LinkedCIDetailsModal/utils.ts diff --git a/src/Pages/Shared/OrganizationFrame/OrganizationFrame.component.tsx b/apps/web/src/Pages/Shared/OrganizationFrame/OrganizationFrame.component.tsx similarity index 100% rename from src/Pages/Shared/OrganizationFrame/OrganizationFrame.component.tsx rename to apps/web/src/Pages/Shared/OrganizationFrame/OrganizationFrame.component.tsx diff --git a/src/Pages/Shared/OrganizationFrame/OrganizationTextLogo.tsx b/apps/web/src/Pages/Shared/OrganizationFrame/OrganizationTextLogo.tsx similarity index 100% rename from src/Pages/Shared/OrganizationFrame/OrganizationTextLogo.tsx rename to apps/web/src/Pages/Shared/OrganizationFrame/OrganizationTextLogo.tsx diff --git a/src/Pages/Shared/OrganizationFrame/index.ts b/apps/web/src/Pages/Shared/OrganizationFrame/index.ts similarity index 100% rename from src/Pages/Shared/OrganizationFrame/index.ts rename to apps/web/src/Pages/Shared/OrganizationFrame/index.ts diff --git a/src/Pages/Shared/index.ts b/apps/web/src/Pages/Shared/index.ts similarity index 100% rename from src/Pages/Shared/index.ts rename to apps/web/src/Pages/Shared/index.ts diff --git a/src/Pages/index.ts b/apps/web/src/Pages/index.ts similarity index 100% rename from src/Pages/index.ts rename to apps/web/src/Pages/index.ts diff --git a/src/assets/fonts/glyphicons-halflings-regular.eot b/apps/web/src/assets/fonts/glyphicons-halflings-regular.eot similarity index 100% rename from src/assets/fonts/glyphicons-halflings-regular.eot rename to apps/web/src/assets/fonts/glyphicons-halflings-regular.eot diff --git a/src/assets/fonts/glyphicons-halflings-regular.svg b/apps/web/src/assets/fonts/glyphicons-halflings-regular.svg similarity index 100% rename from src/assets/fonts/glyphicons-halflings-regular.svg rename to apps/web/src/assets/fonts/glyphicons-halflings-regular.svg diff --git a/src/assets/fonts/glyphicons-halflings-regular.ttf b/apps/web/src/assets/fonts/glyphicons-halflings-regular.ttf similarity index 100% rename from src/assets/fonts/glyphicons-halflings-regular.ttf rename to apps/web/src/assets/fonts/glyphicons-halflings-regular.ttf diff --git a/src/assets/fonts/glyphicons-halflings-regular.woff b/apps/web/src/assets/fonts/glyphicons-halflings-regular.woff similarity index 100% rename from src/assets/fonts/glyphicons-halflings-regular.woff rename to apps/web/src/assets/fonts/glyphicons-halflings-regular.woff diff --git a/src/assets/fonts/glyphicons-halflings-regular.woff2 b/apps/web/src/assets/fonts/glyphicons-halflings-regular.woff2 similarity index 100% rename from src/assets/fonts/glyphicons-halflings-regular.woff2 rename to apps/web/src/assets/fonts/glyphicons-halflings-regular.woff2 diff --git a/src/assets/gif/latest-version-celebration.gif b/apps/web/src/assets/gif/latest-version-celebration.gif similarity index 100% rename from src/assets/gif/latest-version-celebration.gif rename to apps/web/src/assets/gif/latest-version-celebration.gif diff --git a/src/assets/gif/no-eligible-commit.gif b/apps/web/src/assets/gif/no-eligible-commit.gif similarity index 100% rename from src/assets/gif/no-eligible-commit.gif rename to apps/web/src/assets/gif/no-eligible-commit.gif diff --git a/src/assets/gif/uploading.gif b/apps/web/src/assets/gif/uploading.gif similarity index 100% rename from src/assets/gif/uploading.gif rename to apps/web/src/assets/gif/uploading.gif diff --git a/src/assets/ic-info-filled-border.svg b/apps/web/src/assets/ic-info-filled-border.svg similarity index 100% rename from src/assets/ic-info-filled-border.svg rename to apps/web/src/assets/ic-info-filled-border.svg diff --git a/src/assets/icons/LoginSprite.svg b/apps/web/src/assets/icons/LoginSprite.svg similarity index 100% rename from src/assets/icons/LoginSprite.svg rename to apps/web/src/assets/icons/LoginSprite.svg diff --git a/src/assets/icons/RectangleLine.svg b/apps/web/src/assets/icons/RectangleLine.svg similarity index 100% rename from src/assets/icons/RectangleLine.svg rename to apps/web/src/assets/icons/RectangleLine.svg diff --git a/src/assets/icons/appstatus/bg-blue.svg b/apps/web/src/assets/icons/appstatus/bg-blue.svg similarity index 100% rename from src/assets/icons/appstatus/bg-blue.svg rename to apps/web/src/assets/icons/appstatus/bg-blue.svg diff --git a/src/assets/icons/appstatus/bg-gray.svg b/apps/web/src/assets/icons/appstatus/bg-gray.svg similarity index 100% rename from src/assets/icons/appstatus/bg-gray.svg rename to apps/web/src/assets/icons/appstatus/bg-gray.svg diff --git a/src/assets/icons/appstatus/bg-white.svg b/apps/web/src/assets/icons/appstatus/bg-white.svg similarity index 100% rename from src/assets/icons/appstatus/bg-white.svg rename to apps/web/src/assets/icons/appstatus/bg-white.svg diff --git a/src/assets/icons/appstatus/degraded.svg b/apps/web/src/assets/icons/appstatus/degraded.svg similarity index 100% rename from src/assets/icons/appstatus/degraded.svg rename to apps/web/src/assets/icons/appstatus/degraded.svg diff --git a/src/assets/icons/appstatus/healthy.svg b/apps/web/src/assets/icons/appstatus/healthy.svg similarity index 100% rename from src/assets/icons/appstatus/healthy.svg rename to apps/web/src/assets/icons/appstatus/healthy.svg diff --git a/src/assets/icons/appstatus/ic-appstatus-failed.svg b/apps/web/src/assets/icons/appstatus/ic-appstatus-failed.svg similarity index 100% rename from src/assets/icons/appstatus/ic-appstatus-failed.svg rename to apps/web/src/assets/icons/appstatus/ic-appstatus-failed.svg diff --git a/src/assets/icons/appstatus/ic-check.svg b/apps/web/src/assets/icons/appstatus/ic-check.svg similarity index 100% rename from src/assets/icons/appstatus/ic-check.svg rename to apps/web/src/assets/icons/appstatus/ic-check.svg diff --git a/src/assets/icons/appstatus/ic-chevron-down.svg b/apps/web/src/assets/icons/appstatus/ic-chevron-down.svg similarity index 100% rename from src/assets/icons/appstatus/ic-chevron-down.svg rename to apps/web/src/assets/icons/appstatus/ic-chevron-down.svg diff --git a/src/assets/icons/appstatus/ic-cpu.svg b/apps/web/src/assets/icons/appstatus/ic-cpu.svg similarity index 100% rename from src/assets/icons/appstatus/ic-cpu.svg rename to apps/web/src/assets/icons/appstatus/ic-cpu.svg diff --git a/src/assets/icons/appstatus/ic-heart-green.svg b/apps/web/src/assets/icons/appstatus/ic-heart-green.svg similarity index 100% rename from src/assets/icons/appstatus/ic-heart-green.svg rename to apps/web/src/assets/icons/appstatus/ic-heart-green.svg diff --git a/src/assets/icons/appstatus/ic-menu-dots.svg b/apps/web/src/assets/icons/appstatus/ic-menu-dots.svg similarity index 100% rename from src/assets/icons/appstatus/ic-menu-dots.svg rename to apps/web/src/assets/icons/appstatus/ic-menu-dots.svg diff --git a/src/assets/icons/appstatus/ic-ram.svg b/apps/web/src/assets/icons/appstatus/ic-ram.svg similarity index 100% rename from src/assets/icons/appstatus/ic-ram.svg rename to apps/web/src/assets/icons/appstatus/ic-ram.svg diff --git a/src/assets/icons/appstatus/ic-sort-down.svg b/apps/web/src/assets/icons/appstatus/ic-sort-down.svg similarity index 100% rename from src/assets/icons/appstatus/ic-sort-down.svg rename to apps/web/src/assets/icons/appstatus/ic-sort-down.svg diff --git a/src/assets/icons/appstatus/info-filled.svg b/apps/web/src/assets/icons/appstatus/info-filled.svg similarity index 100% rename from src/assets/icons/appstatus/info-filled.svg rename to apps/web/src/assets/icons/appstatus/info-filled.svg diff --git a/src/assets/icons/appstatus/missing.svg b/apps/web/src/assets/icons/appstatus/missing.svg similarity index 100% rename from src/assets/icons/appstatus/missing.svg rename to apps/web/src/assets/icons/appstatus/missing.svg diff --git a/src/assets/icons/appstatus/notdeployed.svg b/apps/web/src/assets/icons/appstatus/notdeployed.svg similarity index 100% rename from src/assets/icons/appstatus/notdeployed.svg rename to apps/web/src/assets/icons/appstatus/notdeployed.svg diff --git a/src/assets/icons/appstatus/progressing-rotating.svg b/apps/web/src/assets/icons/appstatus/progressing-rotating.svg similarity index 100% rename from src/assets/icons/appstatus/progressing-rotating.svg rename to apps/web/src/assets/icons/appstatus/progressing-rotating.svg diff --git a/src/assets/icons/appstatus/suspended.svg b/apps/web/src/assets/icons/appstatus/suspended.svg similarity index 100% rename from src/assets/icons/appstatus/suspended.svg rename to apps/web/src/assets/icons/appstatus/suspended.svg diff --git a/src/assets/icons/appstatus/unknown.svg b/apps/web/src/assets/icons/appstatus/unknown.svg similarity index 100% rename from src/assets/icons/appstatus/unknown.svg rename to apps/web/src/assets/icons/appstatus/unknown.svg diff --git a/src/assets/icons/argo-cd-app.svg b/apps/web/src/assets/icons/argo-cd-app.svg similarity index 100% rename from src/assets/icons/argo-cd-app.svg rename to apps/web/src/assets/icons/argo-cd-app.svg diff --git a/src/assets/icons/cluster-overview.svg b/apps/web/src/assets/icons/cluster-overview.svg similarity index 100% rename from src/assets/icons/cluster-overview.svg rename to apps/web/src/assets/icons/cluster-overview.svg diff --git a/src/assets/icons/container.svg b/apps/web/src/assets/icons/container.svg similarity index 100% rename from src/assets/icons/container.svg rename to apps/web/src/assets/icons/container.svg diff --git a/src/assets/icons/drag.svg b/apps/web/src/assets/icons/drag.svg similarity index 100% rename from src/assets/icons/drag.svg rename to apps/web/src/assets/icons/drag.svg diff --git a/src/assets/icons/git/azure.svg b/apps/web/src/assets/icons/git/azure.svg similarity index 100% rename from src/assets/icons/git/azure.svg rename to apps/web/src/assets/icons/git/azure.svg diff --git a/src/assets/icons/git/bitbucket.svg b/apps/web/src/assets/icons/git/bitbucket.svg similarity index 100% rename from src/assets/icons/git/bitbucket.svg rename to apps/web/src/assets/icons/git/bitbucket.svg diff --git a/src/assets/icons/git/docker.svg b/apps/web/src/assets/icons/git/docker.svg similarity index 100% rename from src/assets/icons/git/docker.svg rename to apps/web/src/assets/icons/git/docker.svg diff --git a/src/assets/icons/git/git.svg b/apps/web/src/assets/icons/git/git.svg similarity index 100% rename from src/assets/icons/git/git.svg rename to apps/web/src/assets/icons/git/git.svg diff --git a/src/assets/icons/git/github.svg b/apps/web/src/assets/icons/git/github.svg similarity index 100% rename from src/assets/icons/git/github.svg rename to apps/web/src/assets/icons/git/github.svg diff --git a/src/assets/icons/git/gitlab.svg b/apps/web/src/assets/icons/git/gitlab.svg similarity index 100% rename from src/assets/icons/git/gitlab.svg rename to apps/web/src/assets/icons/git/gitlab.svg diff --git a/src/assets/icons/go-to-buildanddeploy.svg b/apps/web/src/assets/icons/go-to-buildanddeploy.svg similarity index 100% rename from src/assets/icons/go-to-buildanddeploy.svg rename to apps/web/src/assets/icons/go-to-buildanddeploy.svg diff --git a/src/assets/icons/go-to-envoverride.svg b/apps/web/src/assets/icons/go-to-envoverride.svg similarity index 100% rename from src/assets/icons/go-to-envoverride.svg rename to apps/web/src/assets/icons/go-to-envoverride.svg diff --git a/src/assets/icons/helm-app.svg b/apps/web/src/assets/icons/helm-app.svg similarity index 100% rename from src/assets/icons/helm-app.svg rename to apps/web/src/assets/icons/helm-app.svg diff --git a/src/assets/icons/ic-CD.svg b/apps/web/src/assets/icons/ic-CD.svg similarity index 100% rename from src/assets/icons/ic-CD.svg rename to apps/web/src/assets/icons/ic-CD.svg diff --git a/src/assets/icons/ic-CI.svg b/apps/web/src/assets/icons/ic-CI.svg similarity index 100% rename from src/assets/icons/ic-CI.svg rename to apps/web/src/assets/icons/ic-CI.svg diff --git a/src/assets/icons/ic-CILinked.svg b/apps/web/src/assets/icons/ic-CILinked.svg similarity index 100% rename from src/assets/icons/ic-CILinked.svg rename to apps/web/src/assets/icons/ic-CILinked.svg diff --git a/src/assets/icons/ic-CIWebhook.svg b/apps/web/src/assets/icons/ic-CIWebhook.svg similarity index 100% rename from src/assets/icons/ic-CIWebhook.svg rename to apps/web/src/assets/icons/ic-CIWebhook.svg diff --git a/src/assets/icons/ic-abort.svg b/apps/web/src/assets/icons/ic-abort.svg similarity index 100% rename from src/assets/icons/ic-abort.svg rename to apps/web/src/assets/icons/ic-abort.svg diff --git a/src/assets/icons/ic-activity.svg b/apps/web/src/assets/icons/ic-activity.svg similarity index 100% rename from src/assets/icons/ic-activity.svg rename to apps/web/src/assets/icons/ic-activity.svg diff --git a/src/assets/icons/ic-add.svg b/apps/web/src/assets/icons/ic-add.svg similarity index 100% rename from src/assets/icons/ic-add.svg rename to apps/web/src/assets/icons/ic-add.svg diff --git a/src/assets/icons/ic-alert-triangle.svg b/apps/web/src/assets/icons/ic-alert-triangle.svg similarity index 100% rename from src/assets/icons/ic-alert-triangle.svg rename to apps/web/src/assets/icons/ic-alert-triangle.svg diff --git a/src/assets/icons/ic-app-group.svg b/apps/web/src/assets/icons/ic-app-group.svg similarity index 100% rename from src/assets/icons/ic-app-group.svg rename to apps/web/src/assets/icons/ic-app-group.svg diff --git a/src/assets/icons/ic-appstatus-cancelled.svg b/apps/web/src/assets/icons/ic-appstatus-cancelled.svg similarity index 100% rename from src/assets/icons/ic-appstatus-cancelled.svg rename to apps/web/src/assets/icons/ic-appstatus-cancelled.svg diff --git a/src/assets/icons/ic-argocd-app.svg b/apps/web/src/assets/icons/ic-argocd-app.svg similarity index 100% rename from src/assets/icons/ic-argocd-app.svg rename to apps/web/src/assets/icons/ic-argocd-app.svg diff --git a/src/assets/icons/ic-arrow-anticlockwise.svg b/apps/web/src/assets/icons/ic-arrow-anticlockwise.svg similarity index 100% rename from src/assets/icons/ic-arrow-anticlockwise.svg rename to apps/web/src/assets/icons/ic-arrow-anticlockwise.svg diff --git a/src/assets/icons/ic-arrow-backward.svg b/apps/web/src/assets/icons/ic-arrow-backward.svg similarity index 100% rename from src/assets/icons/ic-arrow-backward.svg rename to apps/web/src/assets/icons/ic-arrow-backward.svg diff --git a/src/assets/icons/ic-arrow-clockwise.svg b/apps/web/src/assets/icons/ic-arrow-clockwise.svg similarity index 100% rename from src/assets/icons/ic-arrow-clockwise.svg rename to apps/web/src/assets/icons/ic-arrow-clockwise.svg diff --git a/src/assets/icons/ic-arrow-counter-clockwise.svg b/apps/web/src/assets/icons/ic-arrow-counter-clockwise.svg similarity index 100% rename from src/assets/icons/ic-arrow-counter-clockwise.svg rename to apps/web/src/assets/icons/ic-arrow-counter-clockwise.svg diff --git a/src/assets/icons/ic-arrow-down.svg b/apps/web/src/assets/icons/ic-arrow-down.svg similarity index 100% rename from src/assets/icons/ic-arrow-down.svg rename to apps/web/src/assets/icons/ic-arrow-down.svg diff --git a/src/assets/icons/ic-arrow-forward.svg b/apps/web/src/assets/icons/ic-arrow-forward.svg similarity index 100% rename from src/assets/icons/ic-arrow-forward.svg rename to apps/web/src/assets/icons/ic-arrow-forward.svg diff --git a/src/assets/icons/ic-arrow-left.svg b/apps/web/src/assets/icons/ic-arrow-left.svg similarity index 100% rename from src/assets/icons/ic-arrow-left.svg rename to apps/web/src/assets/icons/ic-arrow-left.svg diff --git a/src/assets/icons/ic-arrow-line-down.svg b/apps/web/src/assets/icons/ic-arrow-line-down.svg similarity index 100% rename from src/assets/icons/ic-arrow-line-down.svg rename to apps/web/src/assets/icons/ic-arrow-line-down.svg diff --git a/src/assets/icons/ic-arrow-line-up.svg b/apps/web/src/assets/icons/ic-arrow-line-up.svg similarity index 100% rename from src/assets/icons/ic-arrow-line-up.svg rename to apps/web/src/assets/icons/ic-arrow-line-up.svg diff --git a/src/assets/icons/ic-arrow-right.svg b/apps/web/src/assets/icons/ic-arrow-right.svg similarity index 100% rename from src/assets/icons/ic-arrow-right.svg rename to apps/web/src/assets/icons/ic-arrow-right.svg diff --git a/src/assets/icons/ic-arrow-square-out.svg b/apps/web/src/assets/icons/ic-arrow-square-out.svg similarity index 100% rename from src/assets/icons/ic-arrow-square-out.svg rename to apps/web/src/assets/icons/ic-arrow-square-out.svg diff --git a/src/assets/icons/ic-arrow-up-down.svg b/apps/web/src/assets/icons/ic-arrow-up-down.svg similarity index 100% rename from src/assets/icons/ic-arrow-up-down.svg rename to apps/web/src/assets/icons/ic-arrow-up-down.svg diff --git a/src/assets/icons/ic-arrows-left-right.svg b/apps/web/src/assets/icons/ic-arrows-left-right.svg similarity index 100% rename from src/assets/icons/ic-arrows-left-right.svg rename to apps/web/src/assets/icons/ic-arrows-left-right.svg diff --git a/src/assets/icons/ic-arrows_clockwise.svg b/apps/web/src/assets/icons/ic-arrows_clockwise.svg similarity index 100% rename from src/assets/icons/ic-arrows_clockwise.svg rename to apps/web/src/assets/icons/ic-arrows_clockwise.svg diff --git a/src/assets/icons/ic-asterisk.svg b/apps/web/src/assets/icons/ic-asterisk.svg similarity index 100% rename from src/assets/icons/ic-asterisk.svg rename to apps/web/src/assets/icons/ic-asterisk.svg diff --git a/src/assets/icons/ic-aws-codecommit.svg b/apps/web/src/assets/icons/ic-aws-codecommit.svg similarity index 100% rename from src/assets/icons/ic-aws-codecommit.svg rename to apps/web/src/assets/icons/ic-aws-codecommit.svg diff --git a/src/assets/icons/ic-aws-ses.svg b/apps/web/src/assets/icons/ic-aws-ses.svg similarity index 100% rename from src/assets/icons/ic-aws-ses.svg rename to apps/web/src/assets/icons/ic-aws-ses.svg diff --git a/src/assets/icons/ic-azure.svg b/apps/web/src/assets/icons/ic-azure.svg similarity index 100% rename from src/assets/icons/ic-azure.svg rename to apps/web/src/assets/icons/ic-azure.svg diff --git a/src/assets/icons/ic-back.svg b/apps/web/src/assets/icons/ic-back.svg similarity index 100% rename from src/assets/icons/ic-back.svg rename to apps/web/src/assets/icons/ic-back.svg diff --git a/src/assets/icons/ic-bell.svg b/apps/web/src/assets/icons/ic-bell.svg similarity index 100% rename from src/assets/icons/ic-bell.svg rename to apps/web/src/assets/icons/ic-bell.svg diff --git a/src/assets/icons/ic-book-open.svg b/apps/web/src/assets/icons/ic-book-open.svg similarity index 100% rename from src/assets/icons/ic-book-open.svg rename to apps/web/src/assets/icons/ic-book-open.svg diff --git a/src/assets/icons/ic-bot.svg b/apps/web/src/assets/icons/ic-bot.svg similarity index 100% rename from src/assets/icons/ic-bot.svg rename to apps/web/src/assets/icons/ic-bot.svg diff --git a/src/assets/icons/ic-branch-main.svg b/apps/web/src/assets/icons/ic-branch-main.svg similarity index 100% rename from src/assets/icons/ic-branch-main.svg rename to apps/web/src/assets/icons/ic-branch-main.svg diff --git a/src/assets/icons/ic-branch.svg b/apps/web/src/assets/icons/ic-branch.svg similarity index 100% rename from src/assets/icons/ic-branch.svg rename to apps/web/src/assets/icons/ic-branch.svg diff --git a/src/assets/icons/ic-briefcase.svg b/apps/web/src/assets/icons/ic-briefcase.svg similarity index 100% rename from src/assets/icons/ic-briefcase.svg rename to apps/web/src/assets/icons/ic-briefcase.svg diff --git a/src/assets/icons/ic-browser.svg b/apps/web/src/assets/icons/ic-browser.svg similarity index 100% rename from src/assets/icons/ic-browser.svg rename to apps/web/src/assets/icons/ic-browser.svg diff --git a/src/assets/icons/ic-bug.svg b/apps/web/src/assets/icons/ic-bug.svg similarity index 100% rename from src/assets/icons/ic-bug.svg rename to apps/web/src/assets/icons/ic-bug.svg diff --git a/src/assets/icons/ic-builpack.svg b/apps/web/src/assets/icons/ic-builpack.svg similarity index 100% rename from src/assets/icons/ic-builpack.svg rename to apps/web/src/assets/icons/ic-builpack.svg diff --git a/src/assets/icons/ic-bulb.svg b/apps/web/src/assets/icons/ic-bulb.svg similarity index 100% rename from src/assets/icons/ic-bulb.svg rename to apps/web/src/assets/icons/ic-bulb.svg diff --git a/src/assets/icons/ic-bulk-check.svg b/apps/web/src/assets/icons/ic-bulk-check.svg similarity index 100% rename from src/assets/icons/ic-bulk-check.svg rename to apps/web/src/assets/icons/ic-bulk-check.svg diff --git a/src/assets/icons/ic-calendar.svg b/apps/web/src/assets/icons/ic-calendar.svg similarity index 100% rename from src/assets/icons/ic-calendar.svg rename to apps/web/src/assets/icons/ic-calendar.svg diff --git a/src/assets/icons/ic-camera.svg b/apps/web/src/assets/icons/ic-camera.svg similarity index 100% rename from src/assets/icons/ic-camera.svg rename to apps/web/src/assets/icons/ic-camera.svg diff --git a/src/assets/icons/ic-caret-left-small.svg b/apps/web/src/assets/icons/ic-caret-left-small.svg similarity index 100% rename from src/assets/icons/ic-caret-left-small.svg rename to apps/web/src/assets/icons/ic-caret-left-small.svg diff --git a/src/assets/icons/ic-cd-stage.svg b/apps/web/src/assets/icons/ic-cd-stage.svg similarity index 100% rename from src/assets/icons/ic-cd-stage.svg rename to apps/web/src/assets/icons/ic-cd-stage.svg diff --git a/src/assets/icons/ic-celebration.svg b/apps/web/src/assets/icons/ic-celebration.svg similarity index 100% rename from src/assets/icons/ic-celebration.svg rename to apps/web/src/assets/icons/ic-celebration.svg diff --git a/src/assets/icons/ic-charts.svg b/apps/web/src/assets/icons/ic-charts.svg similarity index 100% rename from src/assets/icons/ic-charts.svg rename to apps/web/src/assets/icons/ic-charts.svg diff --git a/src/assets/icons/ic-chat-circle-dots.svg b/apps/web/src/assets/icons/ic-chat-circle-dots.svg similarity index 100% rename from src/assets/icons/ic-chat-circle-dots.svg rename to apps/web/src/assets/icons/ic-chat-circle-dots.svg diff --git a/src/assets/icons/ic-check-circle-green.svg b/apps/web/src/assets/icons/ic-check-circle-green.svg similarity index 100% rename from src/assets/icons/ic-check-circle-green.svg rename to apps/web/src/assets/icons/ic-check-circle-green.svg diff --git a/src/assets/icons/ic-check-circle.svg b/apps/web/src/assets/icons/ic-check-circle.svg similarity index 100% rename from src/assets/icons/ic-check-circle.svg rename to apps/web/src/assets/icons/ic-check-circle.svg diff --git a/src/assets/icons/ic-check.svg b/apps/web/src/assets/icons/ic-check.svg similarity index 100% rename from src/assets/icons/ic-check.svg rename to apps/web/src/assets/icons/ic-check.svg diff --git a/src/assets/icons/ic-checkbox-intermediate.svg b/apps/web/src/assets/icons/ic-checkbox-intermediate.svg similarity index 100% rename from src/assets/icons/ic-checkbox-intermediate.svg rename to apps/web/src/assets/icons/ic-checkbox-intermediate.svg diff --git a/src/assets/icons/ic-checkbox-selected.svg b/apps/web/src/assets/icons/ic-checkbox-selected.svg similarity index 100% rename from src/assets/icons/ic-checkbox-selected.svg rename to apps/web/src/assets/icons/ic-checkbox-selected.svg diff --git a/src/assets/icons/ic-checkbox-unselected.svg b/apps/web/src/assets/icons/ic-checkbox-unselected.svg similarity index 100% rename from src/assets/icons/ic-checkbox-unselected.svg rename to apps/web/src/assets/icons/ic-checkbox-unselected.svg diff --git a/src/assets/icons/ic-checks.svg b/apps/web/src/assets/icons/ic-checks.svg similarity index 100% rename from src/assets/icons/ic-checks.svg rename to apps/web/src/assets/icons/ic-checks.svg diff --git a/src/assets/icons/ic-chevron-down.svg b/apps/web/src/assets/icons/ic-chevron-down.svg similarity index 100% rename from src/assets/icons/ic-chevron-down.svg rename to apps/web/src/assets/icons/ic-chevron-down.svg diff --git a/src/assets/icons/ic-clair-to-trivy.svg b/apps/web/src/assets/icons/ic-clair-to-trivy.svg similarity index 100% rename from src/assets/icons/ic-clair-to-trivy.svg rename to apps/web/src/assets/icons/ic-clair-to-trivy.svg diff --git a/src/assets/icons/ic-clair.svg b/apps/web/src/assets/icons/ic-clair.svg similarity index 100% rename from src/assets/icons/ic-clair.svg rename to apps/web/src/assets/icons/ic-clair.svg diff --git a/src/assets/icons/ic-clean-brush-medium.svg b/apps/web/src/assets/icons/ic-clean-brush-medium.svg similarity index 100% rename from src/assets/icons/ic-clean-brush-medium.svg rename to apps/web/src/assets/icons/ic-clean-brush-medium.svg diff --git a/src/assets/icons/ic-clean-brush.svg b/apps/web/src/assets/icons/ic-clean-brush.svg similarity index 100% rename from src/assets/icons/ic-clean-brush.svg rename to apps/web/src/assets/icons/ic-clean-brush.svg diff --git a/src/assets/icons/ic-clock-counterclockwise.svg b/apps/web/src/assets/icons/ic-clock-counterclockwise.svg similarity index 100% rename from src/assets/icons/ic-clock-counterclockwise.svg rename to apps/web/src/assets/icons/ic-clock-counterclockwise.svg diff --git a/src/assets/icons/ic-clock.svg b/apps/web/src/assets/icons/ic-clock.svg similarity index 100% rename from src/assets/icons/ic-clock.svg rename to apps/web/src/assets/icons/ic-clock.svg diff --git a/src/assets/icons/ic-close-circle.svg b/apps/web/src/assets/icons/ic-close-circle.svg similarity index 100% rename from src/assets/icons/ic-close-circle.svg rename to apps/web/src/assets/icons/ic-close-circle.svg diff --git a/src/assets/icons/ic-close.svg b/apps/web/src/assets/icons/ic-close.svg similarity index 100% rename from src/assets/icons/ic-close.svg rename to apps/web/src/assets/icons/ic-close.svg diff --git a/src/assets/icons/ic-cloud.svg b/apps/web/src/assets/icons/ic-cloud.svg similarity index 100% rename from src/assets/icons/ic-cloud.svg rename to apps/web/src/assets/icons/ic-cloud.svg diff --git a/src/assets/icons/ic-cloudwatch.png b/apps/web/src/assets/icons/ic-cloudwatch.png similarity index 100% rename from src/assets/icons/ic-cloudwatch.png rename to apps/web/src/assets/icons/ic-cloudwatch.png diff --git a/src/assets/icons/ic-cluster.svg b/apps/web/src/assets/icons/ic-cluster.svg similarity index 100% rename from src/assets/icons/ic-cluster.svg rename to apps/web/src/assets/icons/ic-cluster.svg diff --git a/src/assets/icons/ic-code-commit.svg b/apps/web/src/assets/icons/ic-code-commit.svg similarity index 100% rename from src/assets/icons/ic-code-commit.svg rename to apps/web/src/assets/icons/ic-code-commit.svg diff --git a/src/assets/icons/ic-commit.svg b/apps/web/src/assets/icons/ic-commit.svg similarity index 100% rename from src/assets/icons/ic-commit.svg rename to apps/web/src/assets/icons/ic-commit.svg diff --git a/src/assets/icons/ic-compare.svg b/apps/web/src/assets/icons/ic-compare.svg similarity index 100% rename from src/assets/icons/ic-compare.svg rename to apps/web/src/assets/icons/ic-compare.svg diff --git a/src/assets/icons/ic-compass.svg b/apps/web/src/assets/icons/ic-compass.svg similarity index 100% rename from src/assets/icons/ic-compass.svg rename to apps/web/src/assets/icons/ic-compass.svg diff --git a/src/assets/icons/ic-connected.svg b/apps/web/src/assets/icons/ic-connected.svg similarity index 100% rename from src/assets/icons/ic-connected.svg rename to apps/web/src/assets/icons/ic-connected.svg diff --git a/src/assets/icons/ic-copy.svg b/apps/web/src/assets/icons/ic-copy.svg similarity index 100% rename from src/assets/icons/ic-copy.svg rename to apps/web/src/assets/icons/ic-copy.svg diff --git a/src/assets/icons/ic-coralogix.png b/apps/web/src/assets/icons/ic-coralogix.png similarity index 100% rename from src/assets/icons/ic-coralogix.png rename to apps/web/src/assets/icons/ic-coralogix.png diff --git a/src/assets/icons/ic-cordon-medium.svg b/apps/web/src/assets/icons/ic-cordon-medium.svg similarity index 100% rename from src/assets/icons/ic-cordon-medium.svg rename to apps/web/src/assets/icons/ic-cordon-medium.svg diff --git a/src/assets/icons/ic-cordon.svg b/apps/web/src/assets/icons/ic-cordon.svg similarity index 100% rename from src/assets/icons/ic-cordon.svg rename to apps/web/src/assets/icons/ic-cordon.svg diff --git a/src/assets/icons/ic-cpu.svg b/apps/web/src/assets/icons/ic-cpu.svg similarity index 100% rename from src/assets/icons/ic-cpu.svg rename to apps/web/src/assets/icons/ic-cpu.svg diff --git a/src/assets/icons/ic-cross.svg b/apps/web/src/assets/icons/ic-cross.svg similarity index 100% rename from src/assets/icons/ic-cross.svg rename to apps/web/src/assets/icons/ic-cross.svg diff --git a/src/assets/icons/ic-cube.svg b/apps/web/src/assets/icons/ic-cube.svg similarity index 100% rename from src/assets/icons/ic-cube.svg rename to apps/web/src/assets/icons/ic-cube.svg diff --git a/src/assets/icons/ic-datadog.png b/apps/web/src/assets/icons/ic-datadog.png similarity index 100% rename from src/assets/icons/ic-datadog.png rename to apps/web/src/assets/icons/ic-datadog.png diff --git a/src/assets/icons/ic-default-chart.svg b/apps/web/src/assets/icons/ic-default-chart.svg similarity index 100% rename from src/assets/icons/ic-default-chart.svg rename to apps/web/src/assets/icons/ic-default-chart.svg diff --git a/src/assets/icons/ic-delete-dots.svg b/apps/web/src/assets/icons/ic-delete-dots.svg similarity index 100% rename from src/assets/icons/ic-delete-dots.svg rename to apps/web/src/assets/icons/ic-delete-dots.svg diff --git a/src/assets/icons/ic-delete-interactive.svg b/apps/web/src/assets/icons/ic-delete-interactive.svg similarity index 100% rename from src/assets/icons/ic-delete-interactive.svg rename to apps/web/src/assets/icons/ic-delete-interactive.svg diff --git a/src/assets/icons/ic-delete.svg b/apps/web/src/assets/icons/ic-delete.svg similarity index 100% rename from src/assets/icons/ic-delete.svg rename to apps/web/src/assets/icons/ic-delete.svg diff --git a/src/assets/icons/ic-deploy.svg b/apps/web/src/assets/icons/ic-deploy.svg similarity index 100% rename from src/assets/icons/ic-deploy.svg rename to apps/web/src/assets/icons/ic-deploy.svg diff --git a/src/assets/icons/ic-devtron-app.svg b/apps/web/src/assets/icons/ic-devtron-app.svg similarity index 100% rename from src/assets/icons/ic-devtron-app.svg rename to apps/web/src/assets/icons/ic-devtron-app.svg diff --git a/src/assets/icons/ic-devtron-blue-outline.svg b/apps/web/src/assets/icons/ic-devtron-blue-outline.svg similarity index 100% rename from src/assets/icons/ic-devtron-blue-outline.svg rename to apps/web/src/assets/icons/ic-devtron-blue-outline.svg diff --git a/src/assets/icons/ic-devtron.svg b/apps/web/src/assets/icons/ic-devtron.svg similarity index 100% rename from src/assets/icons/ic-devtron.svg rename to apps/web/src/assets/icons/ic-devtron.svg diff --git a/src/assets/icons/ic-disconnected.svg b/apps/web/src/assets/icons/ic-disconnected.svg similarity index 100% rename from src/assets/icons/ic-disconnected.svg rename to apps/web/src/assets/icons/ic-disconnected.svg diff --git a/src/assets/icons/ic-discord-fill.svg b/apps/web/src/assets/icons/ic-discord-fill.svg similarity index 100% rename from src/assets/icons/ic-discord-fill.svg rename to apps/web/src/assets/icons/ic-discord-fill.svg diff --git a/src/assets/icons/ic-discord-online.svg b/apps/web/src/assets/icons/ic-discord-online.svg similarity index 100% rename from src/assets/icons/ic-discord-online.svg rename to apps/web/src/assets/icons/ic-discord-online.svg diff --git a/src/assets/icons/ic-docker-with-image.svg b/apps/web/src/assets/icons/ic-docker-with-image.svg similarity index 100% rename from src/assets/icons/ic-docker-with-image.svg rename to apps/web/src/assets/icons/ic-docker-with-image.svg diff --git a/src/assets/icons/ic-document.svg b/apps/web/src/assets/icons/ic-document.svg similarity index 100% rename from src/assets/icons/ic-document.svg rename to apps/web/src/assets/icons/ic-document.svg diff --git a/src/assets/icons/ic-down-arrow-full.svg b/apps/web/src/assets/icons/ic-down-arrow-full.svg similarity index 100% rename from src/assets/icons/ic-down-arrow-full.svg rename to apps/web/src/assets/icons/ic-down-arrow-full.svg diff --git a/src/assets/icons/ic-download.svg b/apps/web/src/assets/icons/ic-download.svg similarity index 100% rename from src/assets/icons/ic-download.svg rename to apps/web/src/assets/icons/ic-download.svg diff --git a/src/assets/icons/ic-dropdown-filled.svg b/apps/web/src/assets/icons/ic-dropdown-filled.svg similarity index 100% rename from src/assets/icons/ic-dropdown-filled.svg rename to apps/web/src/assets/icons/ic-dropdown-filled.svg diff --git a/src/assets/icons/ic-ecr.svg b/apps/web/src/assets/icons/ic-ecr.svg similarity index 100% rename from src/assets/icons/ic-ecr.svg rename to apps/web/src/assets/icons/ic-ecr.svg diff --git a/src/assets/icons/ic-edit-file.svg b/apps/web/src/assets/icons/ic-edit-file.svg similarity index 100% rename from src/assets/icons/ic-edit-file.svg rename to apps/web/src/assets/icons/ic-edit-file.svg diff --git a/src/assets/icons/ic-edit-lines.svg b/apps/web/src/assets/icons/ic-edit-lines.svg similarity index 100% rename from src/assets/icons/ic-edit-lines.svg rename to apps/web/src/assets/icons/ic-edit-lines.svg diff --git a/src/assets/icons/ic-edit.svg b/apps/web/src/assets/icons/ic-edit.svg similarity index 100% rename from src/assets/icons/ic-edit.svg rename to apps/web/src/assets/icons/ic-edit.svg diff --git a/src/assets/icons/ic-empty-data.svg b/apps/web/src/assets/icons/ic-empty-data.svg similarity index 100% rename from src/assets/icons/ic-empty-data.svg rename to apps/web/src/assets/icons/ic-empty-data.svg diff --git a/src/assets/icons/ic-env.svg b/apps/web/src/assets/icons/ic-env.svg similarity index 100% rename from src/assets/icons/ic-env.svg rename to apps/web/src/assets/icons/ic-env.svg diff --git a/src/assets/icons/ic-environment-list.svg b/apps/web/src/assets/icons/ic-environment-list.svg similarity index 100% rename from src/assets/icons/ic-environment-list.svg rename to apps/web/src/assets/icons/ic-environment-list.svg diff --git a/src/assets/icons/ic-environment-temp.svg b/apps/web/src/assets/icons/ic-environment-temp.svg similarity index 100% rename from src/assets/icons/ic-environment-temp.svg rename to apps/web/src/assets/icons/ic-environment-temp.svg diff --git a/src/assets/icons/ic-ephemeral.svg b/apps/web/src/assets/icons/ic-ephemeral.svg similarity index 100% rename from src/assets/icons/ic-ephemeral.svg rename to apps/web/src/assets/icons/ic-ephemeral.svg diff --git a/src/assets/icons/ic-error-exclamation.svg b/apps/web/src/assets/icons/ic-error-exclamation.svg similarity index 100% rename from src/assets/icons/ic-error-exclamation.svg rename to apps/web/src/assets/icons/ic-error-exclamation.svg diff --git a/src/assets/icons/ic-error-medium.svg b/apps/web/src/assets/icons/ic-error-medium.svg similarity index 100% rename from src/assets/icons/ic-error-medium.svg rename to apps/web/src/assets/icons/ic-error-medium.svg diff --git a/src/assets/icons/ic-error.svg b/apps/web/src/assets/icons/ic-error.svg similarity index 100% rename from src/assets/icons/ic-error.svg rename to apps/web/src/assets/icons/ic-error.svg diff --git a/src/assets/icons/ic-exit-fullscreen-2.svg b/apps/web/src/assets/icons/ic-exit-fullscreen-2.svg similarity index 100% rename from src/assets/icons/ic-exit-fullscreen-2.svg rename to apps/web/src/assets/icons/ic-exit-fullscreen-2.svg diff --git a/src/assets/icons/ic-expand.svg b/apps/web/src/assets/icons/ic-expand.svg similarity index 100% rename from src/assets/icons/ic-expand.svg rename to apps/web/src/assets/icons/ic-expand.svg diff --git a/src/assets/icons/ic-feedback.svg b/apps/web/src/assets/icons/ic-feedback.svg similarity index 100% rename from src/assets/icons/ic-feedback.svg rename to apps/web/src/assets/icons/ic-feedback.svg diff --git a/src/assets/icons/ic-file-code.svg b/apps/web/src/assets/icons/ic-file-code.svg similarity index 100% rename from src/assets/icons/ic-file-code.svg rename to apps/web/src/assets/icons/ic-file-code.svg diff --git a/src/assets/icons/ic-file-download.svg b/apps/web/src/assets/icons/ic-file-download.svg similarity index 100% rename from src/assets/icons/ic-file-download.svg rename to apps/web/src/assets/icons/ic-file-download.svg diff --git a/src/assets/icons/ic-file-text.svg b/apps/web/src/assets/icons/ic-file-text.svg similarity index 100% rename from src/assets/icons/ic-file-text.svg rename to apps/web/src/assets/icons/ic-file-text.svg diff --git a/src/assets/icons/ic-file.svg b/apps/web/src/assets/icons/ic-file.svg similarity index 100% rename from src/assets/icons/ic-file.svg rename to apps/web/src/assets/icons/ic-file.svg diff --git a/src/assets/icons/ic-files.svg b/apps/web/src/assets/icons/ic-files.svg similarity index 100% rename from src/assets/icons/ic-files.svg rename to apps/web/src/assets/icons/ic-files.svg diff --git a/src/assets/icons/ic-filter.svg b/apps/web/src/assets/icons/ic-filter.svg similarity index 100% rename from src/assets/icons/ic-filter.svg rename to apps/web/src/assets/icons/ic-filter.svg diff --git a/src/assets/icons/ic-fluxcd-app.svg b/apps/web/src/assets/icons/ic-fluxcd-app.svg similarity index 100% rename from src/assets/icons/ic-fluxcd-app.svg rename to apps/web/src/assets/icons/ic-fluxcd-app.svg diff --git a/src/assets/icons/ic-fluxcd.svg b/apps/web/src/assets/icons/ic-fluxcd.svg similarity index 100% rename from src/assets/icons/ic-fluxcd.svg rename to apps/web/src/assets/icons/ic-fluxcd.svg diff --git a/src/assets/icons/ic-folder-filled.svg b/apps/web/src/assets/icons/ic-folder-filled.svg similarity index 100% rename from src/assets/icons/ic-folder-filled.svg rename to apps/web/src/assets/icons/ic-folder-filled.svg diff --git a/src/assets/icons/ic-folder.svg b/apps/web/src/assets/icons/ic-folder.svg similarity index 100% rename from src/assets/icons/ic-folder.svg rename to apps/web/src/assets/icons/ic-folder.svg diff --git a/src/assets/icons/ic-fullscreen-2.svg b/apps/web/src/assets/icons/ic-fullscreen-2.svg similarity index 100% rename from src/assets/icons/ic-fullscreen-2.svg rename to apps/web/src/assets/icons/ic-fullscreen-2.svg diff --git a/src/assets/icons/ic-generated-image.svg b/apps/web/src/assets/icons/ic-generated-image.svg similarity index 100% rename from src/assets/icons/ic-generated-image.svg rename to apps/web/src/assets/icons/ic-generated-image.svg diff --git a/src/assets/icons/ic-google-artifact-registry.svg b/apps/web/src/assets/icons/ic-google-artifact-registry.svg similarity index 100% rename from src/assets/icons/ic-google-artifact-registry.svg rename to apps/web/src/assets/icons/ic-google-artifact-registry.svg diff --git a/src/assets/icons/ic-google-container-registry.svg b/apps/web/src/assets/icons/ic-google-container-registry.svg similarity index 100% rename from src/assets/icons/ic-google-container-registry.svg rename to apps/web/src/assets/icons/ic-google-container-registry.svg diff --git a/src/assets/icons/ic-google.svg b/apps/web/src/assets/icons/ic-google.svg similarity index 100% rename from src/assets/icons/ic-google.svg rename to apps/web/src/assets/icons/ic-google.svg diff --git a/src/assets/icons/ic-grafana.png b/apps/web/src/assets/icons/ic-grafana.png similarity index 100% rename from src/assets/icons/ic-grafana.png rename to apps/web/src/assets/icons/ic-grafana.png diff --git a/src/assets/icons/ic-graph.svg b/apps/web/src/assets/icons/ic-graph.svg similarity index 100% rename from src/assets/icons/ic-graph.svg rename to apps/web/src/assets/icons/ic-graph.svg diff --git a/src/assets/icons/ic-grid-view-blue.svg b/apps/web/src/assets/icons/ic-grid-view-blue.svg similarity index 100% rename from src/assets/icons/ic-grid-view-blue.svg rename to apps/web/src/assets/icons/ic-grid-view-blue.svg diff --git a/src/assets/icons/ic-grid-view.svg b/apps/web/src/assets/icons/ic-grid-view.svg similarity index 100% rename from src/assets/icons/ic-grid-view.svg rename to apps/web/src/assets/icons/ic-grid-view.svg diff --git a/src/assets/icons/ic-group-filter-applied.svg b/apps/web/src/assets/icons/ic-group-filter-applied.svg similarity index 100% rename from src/assets/icons/ic-group-filter-applied.svg rename to apps/web/src/assets/icons/ic-group-filter-applied.svg diff --git a/src/assets/icons/ic-group-filter.svg b/apps/web/src/assets/icons/ic-group-filter.svg similarity index 100% rename from src/assets/icons/ic-group-filter.svg rename to apps/web/src/assets/icons/ic-group-filter.svg diff --git a/src/assets/icons/ic-helmchart.svg b/apps/web/src/assets/icons/ic-helmchart.svg similarity index 100% rename from src/assets/icons/ic-helmchart.svg rename to apps/web/src/assets/icons/ic-helmchart.svg diff --git a/src/assets/icons/ic-help-green.svg b/apps/web/src/assets/icons/ic-help-green.svg similarity index 100% rename from src/assets/icons/ic-help-green.svg rename to apps/web/src/assets/icons/ic-help-green.svg diff --git a/src/assets/icons/ic-help-outline.svg b/apps/web/src/assets/icons/ic-help-outline.svg similarity index 100% rename from src/assets/icons/ic-help-outline.svg rename to apps/web/src/assets/icons/ic-help-outline.svg diff --git a/src/assets/icons/ic-help.svg b/apps/web/src/assets/icons/ic-help.svg similarity index 100% rename from src/assets/icons/ic-help.svg rename to apps/web/src/assets/icons/ic-help.svg diff --git a/src/assets/icons/ic-hibernate-2.svg b/apps/web/src/assets/icons/ic-hibernate-2.svg similarity index 100% rename from src/assets/icons/ic-hibernate-2.svg rename to apps/web/src/assets/icons/ic-hibernate-2.svg diff --git a/src/assets/icons/ic-hibernate-3.svg b/apps/web/src/assets/icons/ic-hibernate-3.svg similarity index 100% rename from src/assets/icons/ic-hibernate-3.svg rename to apps/web/src/assets/icons/ic-hibernate-3.svg diff --git a/src/assets/icons/ic-hibernate.svg b/apps/web/src/assets/icons/ic-hibernate.svg similarity index 100% rename from src/assets/icons/ic-hibernate.svg rename to apps/web/src/assets/icons/ic-hibernate.svg diff --git a/src/assets/icons/ic-info-filled-purple.svg b/apps/web/src/assets/icons/ic-info-filled-purple.svg similarity index 100% rename from src/assets/icons/ic-info-filled-purple.svg rename to apps/web/src/assets/icons/ic-info-filled-purple.svg diff --git a/src/assets/icons/ic-info-filled.svg b/apps/web/src/assets/icons/ic-info-filled.svg similarity index 100% rename from src/assets/icons/ic-info-filled.svg rename to apps/web/src/assets/icons/ic-info-filled.svg diff --git a/src/assets/icons/ic-info-outline-grey.svg b/apps/web/src/assets/icons/ic-info-outline-grey.svg similarity index 100% rename from src/assets/icons/ic-info-outline-grey.svg rename to apps/web/src/assets/icons/ic-info-outline-grey.svg diff --git a/src/assets/icons/ic-info-outline-purple.svg b/apps/web/src/assets/icons/ic-info-outline-purple.svg similarity index 100% rename from src/assets/icons/ic-info-outline-purple.svg rename to apps/web/src/assets/icons/ic-info-outline-purple.svg diff --git a/src/assets/icons/ic-info-outline.svg b/apps/web/src/assets/icons/ic-info-outline.svg similarity index 100% rename from src/assets/icons/ic-info-outline.svg rename to apps/web/src/assets/icons/ic-info-outline.svg diff --git a/src/assets/icons/ic-info-outlined.svg b/apps/web/src/assets/icons/ic-info-outlined.svg similarity index 100% rename from src/assets/icons/ic-info-outlined.svg rename to apps/web/src/assets/icons/ic-info-outlined.svg diff --git a/src/assets/icons/ic-info-warn.svg b/apps/web/src/assets/icons/ic-info-warn.svg similarity index 100% rename from src/assets/icons/ic-info-warn.svg rename to apps/web/src/assets/icons/ic-info-warn.svg diff --git a/src/assets/icons/ic-input.svg b/apps/web/src/assets/icons/ic-input.svg similarity index 100% rename from src/assets/icons/ic-input.svg rename to apps/web/src/assets/icons/ic-input.svg diff --git a/src/assets/icons/ic-job-node.svg b/apps/web/src/assets/icons/ic-job-node.svg similarity index 100% rename from src/assets/icons/ic-job-node.svg rename to apps/web/src/assets/icons/ic-job-node.svg diff --git a/src/assets/icons/ic-k8s-job.svg b/apps/web/src/assets/icons/ic-k8s-job.svg similarity index 100% rename from src/assets/icons/ic-k8s-job.svg rename to apps/web/src/assets/icons/ic-k8s-job.svg diff --git a/src/assets/icons/ic-key-bulb.svg b/apps/web/src/assets/icons/ic-key-bulb.svg similarity index 100% rename from src/assets/icons/ic-key-bulb.svg rename to apps/web/src/assets/icons/ic-key-bulb.svg diff --git a/src/assets/icons/ic-key.svg b/apps/web/src/assets/icons/ic-key.svg similarity index 100% rename from src/assets/icons/ic-key.svg rename to apps/web/src/assets/icons/ic-key.svg diff --git a/src/assets/icons/ic-kibana.png b/apps/web/src/assets/icons/ic-kibana.png similarity index 100% rename from src/assets/icons/ic-kibana.png rename to apps/web/src/assets/icons/ic-kibana.png diff --git a/src/assets/icons/ic-ldap.svg b/apps/web/src/assets/icons/ic-ldap.svg similarity index 100% rename from src/assets/icons/ic-ldap.svg rename to apps/web/src/assets/icons/ic-ldap.svg diff --git a/src/assets/icons/ic-lego-block.svg b/apps/web/src/assets/icons/ic-lego-block.svg similarity index 100% rename from src/assets/icons/ic-lego-block.svg rename to apps/web/src/assets/icons/ic-lego-block.svg diff --git a/src/assets/icons/ic-lines.svg b/apps/web/src/assets/icons/ic-lines.svg similarity index 100% rename from src/assets/icons/ic-lines.svg rename to apps/web/src/assets/icons/ic-lines.svg diff --git a/src/assets/icons/ic-link.svg b/apps/web/src/assets/icons/ic-link.svg similarity index 100% rename from src/assets/icons/ic-link.svg rename to apps/web/src/assets/icons/ic-link.svg diff --git a/src/assets/icons/ic-linked.svg b/apps/web/src/assets/icons/ic-linked.svg similarity index 100% rename from src/assets/icons/ic-linked.svg rename to apps/web/src/assets/icons/ic-linked.svg diff --git a/src/assets/icons/ic-list-view.svg b/apps/web/src/assets/icons/ic-list-view.svg similarity index 100% rename from src/assets/icons/ic-list-view.svg rename to apps/web/src/assets/icons/ic-list-view.svg diff --git a/src/assets/icons/ic-locked-filled.svg b/apps/web/src/assets/icons/ic-locked-filled.svg similarity index 100% rename from src/assets/icons/ic-locked-filled.svg rename to apps/web/src/assets/icons/ic-locked-filled.svg diff --git a/src/assets/icons/ic-locked.svg b/apps/web/src/assets/icons/ic-locked.svg similarity index 100% rename from src/assets/icons/ic-locked.svg rename to apps/web/src/assets/icons/ic-locked.svg diff --git a/src/assets/icons/ic-logs.svg b/apps/web/src/assets/icons/ic-logs.svg similarity index 100% rename from src/assets/icons/ic-logs.svg rename to apps/web/src/assets/icons/ic-logs.svg diff --git a/src/assets/icons/ic-loki.png b/apps/web/src/assets/icons/ic-loki.png similarity index 100% rename from src/assets/icons/ic-loki.png rename to apps/web/src/assets/icons/ic-loki.png diff --git a/src/assets/icons/ic-mail.svg b/apps/web/src/assets/icons/ic-mail.svg similarity index 100% rename from src/assets/icons/ic-mail.svg rename to apps/web/src/assets/icons/ic-mail.svg diff --git a/src/assets/icons/ic-medium-delete.svg b/apps/web/src/assets/icons/ic-medium-delete.svg similarity index 100% rename from src/assets/icons/ic-medium-delete.svg rename to apps/web/src/assets/icons/ic-medium-delete.svg diff --git a/src/assets/icons/ic-medium-hibernate.svg b/apps/web/src/assets/icons/ic-medium-hibernate.svg similarity index 100% rename from src/assets/icons/ic-medium-hibernate.svg rename to apps/web/src/assets/icons/ic-medium-hibernate.svg diff --git a/src/assets/icons/ic-medium-unhibernate.svg b/apps/web/src/assets/icons/ic-medium-unhibernate.svg similarity index 100% rename from src/assets/icons/ic-medium-unhibernate.svg rename to apps/web/src/assets/icons/ic-medium-unhibernate.svg diff --git a/src/assets/icons/ic-megaphone.svg b/apps/web/src/assets/icons/ic-megaphone.svg similarity index 100% rename from src/assets/icons/ic-megaphone.svg rename to apps/web/src/assets/icons/ic-megaphone.svg diff --git a/src/assets/icons/ic-memory.svg b/apps/web/src/assets/icons/ic-memory.svg similarity index 100% rename from src/assets/icons/ic-memory.svg rename to apps/web/src/assets/icons/ic-memory.svg diff --git a/src/assets/icons/ic-message.svg b/apps/web/src/assets/icons/ic-message.svg similarity index 100% rename from src/assets/icons/ic-message.svg rename to apps/web/src/assets/icons/ic-message.svg diff --git a/src/assets/icons/ic-microsoft.svg b/apps/web/src/assets/icons/ic-microsoft.svg similarity index 100% rename from src/assets/icons/ic-microsoft.svg rename to apps/web/src/assets/icons/ic-microsoft.svg diff --git a/src/assets/icons/ic-minus.svg b/apps/web/src/assets/icons/ic-minus.svg similarity index 100% rename from src/assets/icons/ic-minus.svg rename to apps/web/src/assets/icons/ic-minus.svg diff --git a/src/assets/icons/ic-monitoring.svg b/apps/web/src/assets/icons/ic-monitoring.svg similarity index 100% rename from src/assets/icons/ic-monitoring.svg rename to apps/web/src/assets/icons/ic-monitoring.svg diff --git a/src/assets/icons/ic-more-option.svg b/apps/web/src/assets/icons/ic-more-option.svg similarity index 100% rename from src/assets/icons/ic-more-option.svg rename to apps/web/src/assets/icons/ic-more-option.svg diff --git a/src/assets/icons/ic-nav-applications.svg b/apps/web/src/assets/icons/ic-nav-applications.svg similarity index 100% rename from src/assets/icons/ic-nav-applications.svg rename to apps/web/src/assets/icons/ic-nav-applications.svg diff --git a/src/assets/icons/ic-nav-bug.svg b/apps/web/src/assets/icons/ic-nav-bug.svg similarity index 100% rename from src/assets/icons/ic-nav-bug.svg rename to apps/web/src/assets/icons/ic-nav-bug.svg diff --git a/src/assets/icons/ic-nav-code.svg b/apps/web/src/assets/icons/ic-nav-code.svg similarity index 100% rename from src/assets/icons/ic-nav-code.svg rename to apps/web/src/assets/icons/ic-nav-code.svg diff --git a/src/assets/icons/ic-nav-devtron.svg b/apps/web/src/assets/icons/ic-nav-devtron.svg similarity index 100% rename from src/assets/icons/ic-nav-devtron.svg rename to apps/web/src/assets/icons/ic-nav-devtron.svg diff --git a/src/assets/icons/ic-nav-gear.svg b/apps/web/src/assets/icons/ic-nav-gear.svg similarity index 100% rename from src/assets/icons/ic-nav-gear.svg rename to apps/web/src/assets/icons/ic-nav-gear.svg diff --git a/src/assets/icons/ic-nav-helm.svg b/apps/web/src/assets/icons/ic-nav-helm.svg similarity index 100% rename from src/assets/icons/ic-nav-helm.svg rename to apps/web/src/assets/icons/ic-nav-helm.svg diff --git a/src/assets/icons/ic-nav-rocket.svg b/apps/web/src/assets/icons/ic-nav-rocket.svg similarity index 100% rename from src/assets/icons/ic-nav-rocket.svg rename to apps/web/src/assets/icons/ic-nav-rocket.svg diff --git a/src/assets/icons/ic-nav-search.svg b/apps/web/src/assets/icons/ic-nav-search.svg similarity index 100% rename from src/assets/icons/ic-nav-search.svg rename to apps/web/src/assets/icons/ic-nav-search.svg diff --git a/src/assets/icons/ic-nav-security.svg b/apps/web/src/assets/icons/ic-nav-security.svg similarity index 100% rename from src/assets/icons/ic-nav-security.svg rename to apps/web/src/assets/icons/ic-nav-security.svg diff --git a/src/assets/icons/ic-nav-stack.svg b/apps/web/src/assets/icons/ic-nav-stack.svg similarity index 100% rename from src/assets/icons/ic-nav-stack.svg rename to apps/web/src/assets/icons/ic-nav-stack.svg diff --git a/src/assets/icons/ic-newrelic.png b/apps/web/src/assets/icons/ic-newrelic.png similarity index 100% rename from src/assets/icons/ic-newrelic.png rename to apps/web/src/assets/icons/ic-newrelic.png diff --git a/src/assets/icons/ic-node-build-linked.svg b/apps/web/src/assets/icons/ic-node-build-linked.svg similarity index 100% rename from src/assets/icons/ic-node-build-linked.svg rename to apps/web/src/assets/icons/ic-node-build-linked.svg diff --git a/src/assets/icons/ic-note.svg b/apps/web/src/assets/icons/ic-note.svg similarity index 100% rename from src/assets/icons/ic-note.svg rename to apps/web/src/assets/icons/ic-note.svg diff --git a/src/assets/icons/ic-object.svg b/apps/web/src/assets/icons/ic-object.svg similarity index 100% rename from src/assets/icons/ic-object.svg rename to apps/web/src/assets/icons/ic-object.svg diff --git a/src/assets/icons/ic-oidc.svg b/apps/web/src/assets/icons/ic-oidc.svg similarity index 100% rename from src/assets/icons/ic-oidc.svg rename to apps/web/src/assets/icons/ic-oidc.svg diff --git a/src/assets/icons/ic-onboarding.svg b/apps/web/src/assets/icons/ic-onboarding.svg similarity index 100% rename from src/assets/icons/ic-onboarding.svg rename to apps/web/src/assets/icons/ic-onboarding.svg diff --git a/src/assets/icons/ic-open-box.svg b/apps/web/src/assets/icons/ic-open-box.svg similarity index 100% rename from src/assets/icons/ic-open-box.svg rename to apps/web/src/assets/icons/ic-open-box.svg diff --git a/src/assets/icons/ic-open-in-new.svg b/apps/web/src/assets/icons/ic-open-in-new.svg similarity index 100% rename from src/assets/icons/ic-open-in-new.svg rename to apps/web/src/assets/icons/ic-open-in-new.svg diff --git a/src/assets/icons/ic-openshift.svg b/apps/web/src/assets/icons/ic-openshift.svg similarity index 100% rename from src/assets/icons/ic-openshift.svg rename to apps/web/src/assets/icons/ic-openshift.svg diff --git a/src/assets/icons/ic-outline-check.svg b/apps/web/src/assets/icons/ic-outline-check.svg similarity index 100% rename from src/assets/icons/ic-outline-check.svg rename to apps/web/src/assets/icons/ic-outline-check.svg diff --git a/src/assets/icons/ic-paper-rocket.svg b/apps/web/src/assets/icons/ic-paper-rocket.svg similarity index 100% rename from src/assets/icons/ic-paper-rocket.svg rename to apps/web/src/assets/icons/ic-paper-rocket.svg diff --git a/src/assets/icons/ic-pause.svg b/apps/web/src/assets/icons/ic-pause.svg similarity index 100% rename from src/assets/icons/ic-pause.svg rename to apps/web/src/assets/icons/ic-pause.svg diff --git a/src/assets/icons/ic-pencil.svg b/apps/web/src/assets/icons/ic-pencil.svg similarity index 100% rename from src/assets/icons/ic-pencil.svg rename to apps/web/src/assets/icons/ic-pencil.svg diff --git a/src/assets/icons/ic-person.svg b/apps/web/src/assets/icons/ic-person.svg similarity index 100% rename from src/assets/icons/ic-person.svg rename to apps/web/src/assets/icons/ic-person.svg diff --git a/src/assets/icons/ic-pipeline-linked.svg b/apps/web/src/assets/icons/ic-pipeline-linked.svg similarity index 100% rename from src/assets/icons/ic-pipeline-linked.svg rename to apps/web/src/assets/icons/ic-pipeline-linked.svg diff --git a/src/assets/icons/ic-play-filled.svg b/apps/web/src/assets/icons/ic-play-filled.svg similarity index 100% rename from src/assets/icons/ic-play-filled.svg rename to apps/web/src/assets/icons/ic-play-filled.svg diff --git a/src/assets/icons/ic-play-media.svg b/apps/web/src/assets/icons/ic-play-media.svg similarity index 100% rename from src/assets/icons/ic-play-media.svg rename to apps/web/src/assets/icons/ic-play-media.svg diff --git a/src/assets/icons/ic-play-medium.svg b/apps/web/src/assets/icons/ic-play-medium.svg similarity index 100% rename from src/assets/icons/ic-play-medium.svg rename to apps/web/src/assets/icons/ic-play-medium.svg diff --git a/src/assets/icons/ic-play.svg b/apps/web/src/assets/icons/ic-play.svg similarity index 100% rename from src/assets/icons/ic-play.svg rename to apps/web/src/assets/icons/ic-play.svg diff --git a/src/assets/icons/ic-plc-chart.svg b/apps/web/src/assets/icons/ic-plc-chart.svg similarity index 100% rename from src/assets/icons/ic-plc-chart.svg rename to apps/web/src/assets/icons/ic-plc-chart.svg diff --git a/src/assets/icons/ic-plugin.svg b/apps/web/src/assets/icons/ic-plugin.svg similarity index 100% rename from src/assets/icons/ic-plugin.svg rename to apps/web/src/assets/icons/ic-plugin.svg diff --git a/src/assets/icons/ic-progressing.svg b/apps/web/src/assets/icons/ic-progressing.svg similarity index 100% rename from src/assets/icons/ic-progressing.svg rename to apps/web/src/assets/icons/ic-progressing.svg diff --git a/src/assets/icons/ic-quay.svg b/apps/web/src/assets/icons/ic-quay.svg similarity index 100% rename from src/assets/icons/ic-quay.svg rename to apps/web/src/assets/icons/ic-quay.svg diff --git a/src/assets/icons/ic-question.svg b/apps/web/src/assets/icons/ic-question.svg similarity index 100% rename from src/assets/icons/ic-question.svg rename to apps/web/src/assets/icons/ic-question.svg diff --git a/src/assets/icons/ic-resource.svg b/apps/web/src/assets/icons/ic-resource.svg similarity index 100% rename from src/assets/icons/ic-resource.svg rename to apps/web/src/assets/icons/ic-resource.svg diff --git a/src/assets/icons/ic-restore.svg b/apps/web/src/assets/icons/ic-restore.svg similarity index 100% rename from src/assets/icons/ic-restore.svg rename to apps/web/src/assets/icons/ic-restore.svg diff --git a/src/assets/icons/ic-rocket-fail.svg b/apps/web/src/assets/icons/ic-rocket-fail.svg similarity index 100% rename from src/assets/icons/ic-rocket-fail.svg rename to apps/web/src/assets/icons/ic-rocket-fail.svg diff --git a/src/assets/icons/ic-rollback.svg b/apps/web/src/assets/icons/ic-rollback.svg similarity index 100% rename from src/assets/icons/ic-rollback.svg rename to apps/web/src/assets/icons/ic-rollback.svg diff --git a/src/assets/icons/ic-sample-app.svg b/apps/web/src/assets/icons/ic-sample-app.svg similarity index 100% rename from src/assets/icons/ic-sample-app.svg rename to apps/web/src/assets/icons/ic-sample-app.svg diff --git a/src/assets/icons/ic-save.svg b/apps/web/src/assets/icons/ic-save.svg similarity index 100% rename from src/assets/icons/ic-save.svg rename to apps/web/src/assets/icons/ic-save.svg diff --git a/src/assets/icons/ic-scale-down.svg b/apps/web/src/assets/icons/ic-scale-down.svg similarity index 100% rename from src/assets/icons/ic-scale-down.svg rename to apps/web/src/assets/icons/ic-scale-down.svg diff --git a/src/assets/icons/ic-scale-objects.svg b/apps/web/src/assets/icons/ic-scale-objects.svg similarity index 100% rename from src/assets/icons/ic-scale-objects.svg rename to apps/web/src/assets/icons/ic-scale-objects.svg diff --git a/src/assets/icons/ic-search.svg b/apps/web/src/assets/icons/ic-search.svg similarity index 100% rename from src/assets/icons/ic-search.svg rename to apps/web/src/assets/icons/ic-search.svg diff --git a/src/assets/icons/ic-secure.svg b/apps/web/src/assets/icons/ic-secure.svg similarity index 100% rename from src/assets/icons/ic-secure.svg rename to apps/web/src/assets/icons/ic-secure.svg diff --git a/src/assets/icons/ic-select-cluster.svg b/apps/web/src/assets/icons/ic-select-cluster.svg similarity index 100% rename from src/assets/icons/ic-select-cluster.svg rename to apps/web/src/assets/icons/ic-select-cluster.svg diff --git a/src/assets/icons/ic-selected-corner.png b/apps/web/src/assets/icons/ic-selected-corner.png similarity index 100% rename from src/assets/icons/ic-selected-corner.png rename to apps/web/src/assets/icons/ic-selected-corner.png diff --git a/src/assets/icons/ic-settings.svg b/apps/web/src/assets/icons/ic-settings.svg similarity index 100% rename from src/assets/icons/ic-settings.svg rename to apps/web/src/assets/icons/ic-settings.svg diff --git a/src/assets/icons/ic-shield-protect-fill.svg b/apps/web/src/assets/icons/ic-shield-protect-fill.svg similarity index 100% rename from src/assets/icons/ic-shield-protect-fill.svg rename to apps/web/src/assets/icons/ic-shield-protect-fill.svg diff --git a/src/assets/icons/ic-skip.svg b/apps/web/src/assets/icons/ic-skip.svg similarity index 100% rename from src/assets/icons/ic-skip.svg rename to apps/web/src/assets/icons/ic-skip.svg diff --git a/src/assets/icons/ic-slant-bulb.svg b/apps/web/src/assets/icons/ic-slant-bulb.svg similarity index 100% rename from src/assets/icons/ic-slant-bulb.svg rename to apps/web/src/assets/icons/ic-slant-bulb.svg diff --git a/src/assets/icons/ic-smiley-party.svg b/apps/web/src/assets/icons/ic-smiley-party.svg similarity index 100% rename from src/assets/icons/ic-smiley-party.svg rename to apps/web/src/assets/icons/ic-smiley-party.svg diff --git a/src/assets/icons/ic-smtp.svg b/apps/web/src/assets/icons/ic-smtp.svg similarity index 100% rename from src/assets/icons/ic-smtp.svg rename to apps/web/src/assets/icons/ic-smtp.svg diff --git a/src/assets/icons/ic-sort-arrow-down.svg b/apps/web/src/assets/icons/ic-sort-arrow-down.svg similarity index 100% rename from src/assets/icons/ic-sort-arrow-down.svg rename to apps/web/src/assets/icons/ic-sort-arrow-down.svg diff --git a/src/assets/icons/ic-sort-arrow.svg b/apps/web/src/assets/icons/ic-sort-arrow.svg similarity index 100% rename from src/assets/icons/ic-sort-arrow.svg rename to apps/web/src/assets/icons/ic-sort-arrow.svg diff --git a/src/assets/icons/ic-sort-down.svg b/apps/web/src/assets/icons/ic-sort-down.svg similarity index 100% rename from src/assets/icons/ic-sort-down.svg rename to apps/web/src/assets/icons/ic-sort-down.svg diff --git a/src/assets/icons/ic-sort-up.svg b/apps/web/src/assets/icons/ic-sort-up.svg similarity index 100% rename from src/assets/icons/ic-sort-up.svg rename to apps/web/src/assets/icons/ic-sort-up.svg diff --git a/src/assets/icons/ic-sort.svg b/apps/web/src/assets/icons/ic-sort.svg similarity index 100% rename from src/assets/icons/ic-sort.svg rename to apps/web/src/assets/icons/ic-sort.svg diff --git a/src/assets/icons/ic-source-build.svg b/apps/web/src/assets/icons/ic-source-build.svg similarity index 100% rename from src/assets/icons/ic-source-build.svg rename to apps/web/src/assets/icons/ic-source-build.svg diff --git a/src/assets/icons/ic-source-job.svg b/apps/web/src/assets/icons/ic-source-job.svg similarity index 100% rename from src/assets/icons/ic-source-job.svg rename to apps/web/src/assets/icons/ic-source-job.svg diff --git a/src/assets/icons/ic-source-linked-build.svg b/apps/web/src/assets/icons/ic-source-linked-build.svg similarity index 100% rename from src/assets/icons/ic-source-linked-build.svg rename to apps/web/src/assets/icons/ic-source-linked-build.svg diff --git a/src/assets/icons/ic-source-webhook.svg b/apps/web/src/assets/icons/ic-source-webhook.svg similarity index 100% rename from src/assets/icons/ic-source-webhook.svg rename to apps/web/src/assets/icons/ic-source-webhook.svg diff --git a/src/assets/icons/ic-source.svg b/apps/web/src/assets/icons/ic-source.svg similarity index 100% rename from src/assets/icons/ic-source.svg rename to apps/web/src/assets/icons/ic-source.svg diff --git a/src/assets/icons/ic-sparkles.svg b/apps/web/src/assets/icons/ic-sparkles.svg similarity index 100% rename from src/assets/icons/ic-sparkles.svg rename to apps/web/src/assets/icons/ic-sparkles.svg diff --git a/src/assets/icons/ic-spraycan.svg b/apps/web/src/assets/icons/ic-spraycan.svg similarity index 100% rename from src/assets/icons/ic-spraycan.svg rename to apps/web/src/assets/icons/ic-spraycan.svg diff --git a/src/assets/icons/ic-stamp.svg b/apps/web/src/assets/icons/ic-stamp.svg similarity index 100% rename from src/assets/icons/ic-stamp.svg rename to apps/web/src/assets/icons/ic-stamp.svg diff --git a/src/assets/icons/ic-stop-filled.svg b/apps/web/src/assets/icons/ic-stop-filled.svg similarity index 100% rename from src/assets/icons/ic-stop-filled.svg rename to apps/web/src/assets/icons/ic-stop-filled.svg diff --git a/src/assets/icons/ic-stop.svg b/apps/web/src/assets/icons/ic-stop.svg similarity index 100% rename from src/assets/icons/ic-stop.svg rename to apps/web/src/assets/icons/ic-stop.svg diff --git a/src/assets/icons/ic-storage.svg b/apps/web/src/assets/icons/ic-storage.svg similarity index 100% rename from src/assets/icons/ic-storage.svg rename to apps/web/src/assets/icons/ic-storage.svg diff --git a/src/assets/icons/ic-success-outline.svg b/apps/web/src/assets/icons/ic-success-outline.svg similarity index 100% rename from src/assets/icons/ic-success-outline.svg rename to apps/web/src/assets/icons/ic-success-outline.svg diff --git a/src/assets/icons/ic-success-with-light-background.svg b/apps/web/src/assets/icons/ic-success-with-light-background.svg similarity index 100% rename from src/assets/icons/ic-success-with-light-background.svg rename to apps/web/src/assets/icons/ic-success-with-light-background.svg diff --git a/src/assets/icons/ic-success.svg b/apps/web/src/assets/icons/ic-success.svg similarity index 100% rename from src/assets/icons/ic-success.svg rename to apps/web/src/assets/icons/ic-success.svg diff --git a/src/assets/icons/ic-tag.svg b/apps/web/src/assets/icons/ic-tag.svg similarity index 100% rename from src/assets/icons/ic-tag.svg rename to apps/web/src/assets/icons/ic-tag.svg diff --git a/src/assets/icons/ic-terminal-fill.svg b/apps/web/src/assets/icons/ic-terminal-fill.svg similarity index 100% rename from src/assets/icons/ic-terminal-fill.svg rename to apps/web/src/assets/icons/ic-terminal-fill.svg diff --git a/src/assets/icons/ic-terminal-line.svg b/apps/web/src/assets/icons/ic-terminal-line.svg similarity index 100% rename from src/assets/icons/ic-terminal-line.svg rename to apps/web/src/assets/icons/ic-terminal-line.svg diff --git a/src/assets/icons/ic-tilde.svg b/apps/web/src/assets/icons/ic-tilde.svg similarity index 100% rename from src/assets/icons/ic-tilde.svg rename to apps/web/src/assets/icons/ic-tilde.svg diff --git a/src/assets/icons/ic-timeout-red.svg b/apps/web/src/assets/icons/ic-timeout-red.svg similarity index 100% rename from src/assets/icons/ic-timeout-red.svg rename to apps/web/src/assets/icons/ic-timeout-red.svg diff --git a/src/assets/icons/ic-timer.svg b/apps/web/src/assets/icons/ic-timer.svg similarity index 100% rename from src/assets/icons/ic-timer.svg rename to apps/web/src/assets/icons/ic-timer.svg diff --git a/src/assets/icons/ic-trivy-to-clair.svg b/apps/web/src/assets/icons/ic-trivy-to-clair.svg similarity index 100% rename from src/assets/icons/ic-trivy-to-clair.svg rename to apps/web/src/assets/icons/ic-trivy-to-clair.svg diff --git a/src/assets/icons/ic-trivy.svg b/apps/web/src/assets/icons/ic-trivy.svg similarity index 100% rename from src/assets/icons/ic-trivy.svg rename to apps/web/src/assets/icons/ic-trivy.svg diff --git a/src/assets/icons/ic-unhibernate.svg b/apps/web/src/assets/icons/ic-unhibernate.svg similarity index 100% rename from src/assets/icons/ic-unhibernate.svg rename to apps/web/src/assets/icons/ic-unhibernate.svg diff --git a/src/assets/icons/ic-update-animated.svg b/apps/web/src/assets/icons/ic-update-animated.svg similarity index 100% rename from src/assets/icons/ic-update-animated.svg rename to apps/web/src/assets/icons/ic-update-animated.svg diff --git a/src/assets/icons/ic-upload-blue.svg b/apps/web/src/assets/icons/ic-upload-blue.svg similarity index 100% rename from src/assets/icons/ic-upload-blue.svg rename to apps/web/src/assets/icons/ic-upload-blue.svg diff --git a/src/assets/icons/ic-upload.svg b/apps/web/src/assets/icons/ic-upload.svg similarity index 100% rename from src/assets/icons/ic-upload.svg rename to apps/web/src/assets/icons/ic-upload.svg diff --git a/src/assets/icons/ic-user-circle.svg b/apps/web/src/assets/icons/ic-user-circle.svg similarity index 100% rename from src/assets/icons/ic-user-circle.svg rename to apps/web/src/assets/icons/ic-user-circle.svg diff --git a/src/assets/icons/ic-users.svg b/apps/web/src/assets/icons/ic-users.svg similarity index 100% rename from src/assets/icons/ic-users.svg rename to apps/web/src/assets/icons/ic-users.svg diff --git a/src/assets/icons/ic-var-initial.svg b/apps/web/src/assets/icons/ic-var-initial.svg similarity index 100% rename from src/assets/icons/ic-var-initial.svg rename to apps/web/src/assets/icons/ic-var-initial.svg diff --git a/src/assets/icons/ic-variable-equal.svg b/apps/web/src/assets/icons/ic-variable-equal.svg similarity index 100% rename from src/assets/icons/ic-variable-equal.svg rename to apps/web/src/assets/icons/ic-variable-equal.svg diff --git a/src/assets/icons/ic-variable.svg b/apps/web/src/assets/icons/ic-variable.svg similarity index 100% rename from src/assets/icons/ic-variable.svg rename to apps/web/src/assets/icons/ic-variable.svg diff --git a/src/assets/icons/ic-view-variable-toggle.svg b/apps/web/src/assets/icons/ic-view-variable-toggle.svg similarity index 100% rename from src/assets/icons/ic-view-variable-toggle.svg rename to apps/web/src/assets/icons/ic-view-variable-toggle.svg diff --git a/src/assets/icons/ic-view-variables.svg b/apps/web/src/assets/icons/ic-view-variables.svg similarity index 100% rename from src/assets/icons/ic-view-variables.svg rename to apps/web/src/assets/icons/ic-view-variables.svg diff --git a/src/assets/icons/ic-virtual-cluster.svg b/apps/web/src/assets/icons/ic-virtual-cluster.svg similarity index 100% rename from src/assets/icons/ic-virtual-cluster.svg rename to apps/web/src/assets/icons/ic-virtual-cluster.svg diff --git a/src/assets/icons/ic-visibility-off.svg b/apps/web/src/assets/icons/ic-visibility-off.svg similarity index 100% rename from src/assets/icons/ic-visibility-off.svg rename to apps/web/src/assets/icons/ic-visibility-off.svg diff --git a/src/assets/icons/ic-visibility-on-filter.svg b/apps/web/src/assets/icons/ic-visibility-on-filter.svg similarity index 100% rename from src/assets/icons/ic-visibility-on-filter.svg rename to apps/web/src/assets/icons/ic-visibility-on-filter.svg diff --git a/src/assets/icons/ic-visibility-on.svg b/apps/web/src/assets/icons/ic-visibility-on.svg similarity index 100% rename from src/assets/icons/ic-visibility-on.svg rename to apps/web/src/assets/icons/ic-visibility-on.svg diff --git a/src/assets/icons/ic-warning-y5.svg b/apps/web/src/assets/icons/ic-warning-y5.svg similarity index 100% rename from src/assets/icons/ic-warning-y5.svg rename to apps/web/src/assets/icons/ic-warning-y5.svg diff --git a/src/assets/icons/ic-warning-y6.svg b/apps/web/src/assets/icons/ic-warning-y6.svg similarity index 100% rename from src/assets/icons/ic-warning-y6.svg rename to apps/web/src/assets/icons/ic-warning-y6.svg diff --git a/src/assets/icons/ic-warning.svg b/apps/web/src/assets/icons/ic-warning.svg similarity index 100% rename from src/assets/icons/ic-warning.svg rename to apps/web/src/assets/icons/ic-warning.svg diff --git a/src/assets/icons/ic-workflow.svg b/apps/web/src/assets/icons/ic-workflow.svg similarity index 100% rename from src/assets/icons/ic-workflow.svg rename to apps/web/src/assets/icons/ic-workflow.svg diff --git a/src/assets/icons/ic-world-black.svg b/apps/web/src/assets/icons/ic-world-black.svg similarity index 100% rename from src/assets/icons/ic-world-black.svg rename to apps/web/src/assets/icons/ic-world-black.svg diff --git a/src/assets/icons/ic-world.svg b/apps/web/src/assets/icons/ic-world.svg similarity index 100% rename from src/assets/icons/ic-world.svg rename to apps/web/src/assets/icons/ic-world.svg diff --git a/src/assets/icons/img-folder-empty.svg b/apps/web/src/assets/icons/img-folder-empty.svg similarity index 100% rename from src/assets/icons/img-folder-empty.svg rename to apps/web/src/assets/icons/img-folder-empty.svg diff --git a/src/assets/icons/info-filled.svg b/apps/web/src/assets/icons/info-filled.svg similarity index 100% rename from src/assets/icons/info-filled.svg rename to apps/web/src/assets/icons/info-filled.svg diff --git a/src/assets/icons/inject-tag.svg b/apps/web/src/assets/icons/inject-tag.svg similarity index 100% rename from src/assets/icons/inject-tag.svg rename to apps/web/src/assets/icons/inject-tag.svg diff --git a/src/assets/icons/logo/logo-dt.svg b/apps/web/src/assets/icons/logo/logo-dt.svg similarity index 100% rename from src/assets/icons/logo/logo-dt.svg rename to apps/web/src/assets/icons/logo/logo-dt.svg diff --git a/src/assets/icons/mdeditor/ic-bold.svg b/apps/web/src/assets/icons/mdeditor/ic-bold.svg similarity index 100% rename from src/assets/icons/mdeditor/ic-bold.svg rename to apps/web/src/assets/icons/mdeditor/ic-bold.svg diff --git a/src/assets/icons/mdeditor/ic-checked-list.svg b/apps/web/src/assets/icons/mdeditor/ic-checked-list.svg similarity index 100% rename from src/assets/icons/mdeditor/ic-checked-list.svg rename to apps/web/src/assets/icons/mdeditor/ic-checked-list.svg diff --git a/src/assets/icons/mdeditor/ic-code.svg b/apps/web/src/assets/icons/mdeditor/ic-code.svg similarity index 100% rename from src/assets/icons/mdeditor/ic-code.svg rename to apps/web/src/assets/icons/mdeditor/ic-code.svg diff --git a/src/assets/icons/mdeditor/ic-header.svg b/apps/web/src/assets/icons/mdeditor/ic-header.svg similarity index 100% rename from src/assets/icons/mdeditor/ic-header.svg rename to apps/web/src/assets/icons/mdeditor/ic-header.svg diff --git a/src/assets/icons/mdeditor/ic-image.svg b/apps/web/src/assets/icons/mdeditor/ic-image.svg similarity index 100% rename from src/assets/icons/mdeditor/ic-image.svg rename to apps/web/src/assets/icons/mdeditor/ic-image.svg diff --git a/src/assets/icons/mdeditor/ic-italic.svg b/apps/web/src/assets/icons/mdeditor/ic-italic.svg similarity index 100% rename from src/assets/icons/mdeditor/ic-italic.svg rename to apps/web/src/assets/icons/mdeditor/ic-italic.svg diff --git a/src/assets/icons/mdeditor/ic-link.svg b/apps/web/src/assets/icons/mdeditor/ic-link.svg similarity index 100% rename from src/assets/icons/mdeditor/ic-link.svg rename to apps/web/src/assets/icons/mdeditor/ic-link.svg diff --git a/src/assets/icons/mdeditor/ic-ordered-list.svg b/apps/web/src/assets/icons/mdeditor/ic-ordered-list.svg similarity index 100% rename from src/assets/icons/mdeditor/ic-ordered-list.svg rename to apps/web/src/assets/icons/mdeditor/ic-ordered-list.svg diff --git a/src/assets/icons/mdeditor/ic-quote.svg b/apps/web/src/assets/icons/mdeditor/ic-quote.svg similarity index 100% rename from src/assets/icons/mdeditor/ic-quote.svg rename to apps/web/src/assets/icons/mdeditor/ic-quote.svg diff --git a/src/assets/icons/mdeditor/ic-strikethrough.svg b/apps/web/src/assets/icons/mdeditor/ic-strikethrough.svg similarity index 100% rename from src/assets/icons/mdeditor/ic-strikethrough.svg rename to apps/web/src/assets/icons/mdeditor/ic-strikethrough.svg diff --git a/src/assets/icons/mdeditor/ic-unordered-list.svg b/apps/web/src/assets/icons/mdeditor/ic-unordered-list.svg similarity index 100% rename from src/assets/icons/mdeditor/ic-unordered-list.svg rename to apps/web/src/assets/icons/mdeditor/ic-unordered-list.svg diff --git a/src/assets/icons/misc/addWhite.svg b/apps/web/src/assets/icons/misc/addWhite.svg similarity index 100% rename from src/assets/icons/misc/addWhite.svg rename to apps/web/src/assets/icons/misc/addWhite.svg diff --git a/src/assets/icons/misc/arrow-chevron-down-black.svg b/apps/web/src/assets/icons/misc/arrow-chevron-down-black.svg similarity index 100% rename from src/assets/icons/misc/arrow-chevron-down-black.svg rename to apps/web/src/assets/icons/misc/arrow-chevron-down-black.svg diff --git a/src/assets/icons/misc/arrow-solid-right.svg b/apps/web/src/assets/icons/misc/arrow-solid-right.svg similarity index 100% rename from src/assets/icons/misc/arrow-solid-right.svg rename to apps/web/src/assets/icons/misc/arrow-solid-right.svg diff --git a/src/assets/icons/misc/arrowSquareOut.svg b/apps/web/src/assets/icons/misc/arrowSquareOut.svg similarity index 100% rename from src/assets/icons/misc/arrowSquareOut.svg rename to apps/web/src/assets/icons/misc/arrowSquareOut.svg diff --git a/src/assets/icons/misc/branch.svg b/apps/web/src/assets/icons/misc/branch.svg similarity index 100% rename from src/assets/icons/misc/branch.svg rename to apps/web/src/assets/icons/misc/branch.svg diff --git a/src/assets/icons/misc/branchBlue.svg b/apps/web/src/assets/icons/misc/branchBlue.svg similarity index 100% rename from src/assets/icons/misc/branchBlue.svg rename to apps/web/src/assets/icons/misc/branchBlue.svg diff --git a/src/assets/icons/misc/checkGreen.svg b/apps/web/src/assets/icons/misc/checkGreen.svg similarity index 100% rename from src/assets/icons/misc/checkGreen.svg rename to apps/web/src/assets/icons/misc/checkGreen.svg diff --git a/src/assets/icons/misc/delete.svg b/apps/web/src/assets/icons/misc/delete.svg similarity index 100% rename from src/assets/icons/misc/delete.svg rename to apps/web/src/assets/icons/misc/delete.svg diff --git a/src/assets/icons/misc/deploy.svg b/apps/web/src/assets/icons/misc/deploy.svg similarity index 100% rename from src/assets/icons/misc/deploy.svg rename to apps/web/src/assets/icons/misc/deploy.svg diff --git a/src/assets/icons/misc/docker.svg b/apps/web/src/assets/icons/misc/docker.svg similarity index 100% rename from src/assets/icons/misc/docker.svg rename to apps/web/src/assets/icons/misc/docker.svg diff --git a/src/assets/icons/misc/editBlack.svg b/apps/web/src/assets/icons/misc/editBlack.svg similarity index 100% rename from src/assets/icons/misc/editBlack.svg rename to apps/web/src/assets/icons/misc/editBlack.svg diff --git a/src/assets/icons/misc/editWhite.svg b/apps/web/src/assets/icons/misc/editWhite.svg similarity index 100% rename from src/assets/icons/misc/editWhite.svg rename to apps/web/src/assets/icons/misc/editWhite.svg diff --git a/src/assets/icons/misc/errorInfo.svg b/apps/web/src/assets/icons/misc/errorInfo.svg similarity index 100% rename from src/assets/icons/misc/errorInfo.svg rename to apps/web/src/assets/icons/misc/errorInfo.svg diff --git a/src/assets/icons/misc/regex.svg b/apps/web/src/assets/icons/misc/regex.svg similarity index 100% rename from src/assets/icons/misc/regex.svg rename to apps/web/src/assets/icons/misc/regex.svg diff --git a/src/assets/icons/misc/rollback.svg b/apps/web/src/assets/icons/misc/rollback.svg similarity index 100% rename from src/assets/icons/misc/rollback.svg rename to apps/web/src/assets/icons/misc/rollback.svg diff --git a/src/assets/icons/misc/sort-down.svg b/apps/web/src/assets/icons/misc/sort-down.svg similarity index 100% rename from src/assets/icons/misc/sort-down.svg rename to apps/web/src/assets/icons/misc/sort-down.svg diff --git a/src/assets/icons/misc/sort-up.svg b/apps/web/src/assets/icons/misc/sort-up.svg similarity index 100% rename from src/assets/icons/misc/sort-up.svg rename to apps/web/src/assets/icons/misc/sort-up.svg diff --git a/src/assets/icons/misc/sort.svg b/apps/web/src/assets/icons/misc/sort.svg similarity index 100% rename from src/assets/icons/misc/sort.svg rename to apps/web/src/assets/icons/misc/sort.svg diff --git a/src/assets/icons/misc/webhook.svg b/apps/web/src/assets/icons/misc/webhook.svg similarity index 100% rename from src/assets/icons/misc/webhook.svg rename to apps/web/src/assets/icons/misc/webhook.svg diff --git a/src/assets/icons/navigation-sprite.svg b/apps/web/src/assets/icons/navigation-sprite.svg similarity index 100% rename from src/assets/icons/navigation-sprite.svg rename to apps/web/src/assets/icons/navigation-sprite.svg diff --git a/src/assets/icons/scanner.svg b/apps/web/src/assets/icons/scanner.svg similarity index 100% rename from src/assets/icons/scanner.svg rename to apps/web/src/assets/icons/scanner.svg diff --git a/src/assets/icons/tools/ic-link-alerts.png b/apps/web/src/assets/icons/tools/ic-link-alerts.png similarity index 100% rename from src/assets/icons/tools/ic-link-alerts.png rename to apps/web/src/assets/icons/tools/ic-link-alerts.png diff --git a/src/assets/icons/tools/ic-link-bugs.png b/apps/web/src/assets/icons/tools/ic-link-bugs.png similarity index 100% rename from src/assets/icons/tools/ic-link-bugs.png rename to apps/web/src/assets/icons/tools/ic-link-bugs.png diff --git a/src/assets/icons/tools/ic-link-chat.png b/apps/web/src/assets/icons/tools/ic-link-chat.png similarity index 100% rename from src/assets/icons/tools/ic-link-chat.png rename to apps/web/src/assets/icons/tools/ic-link-chat.png diff --git a/src/assets/icons/tools/ic-link-confluence.png b/apps/web/src/assets/icons/tools/ic-link-confluence.png similarity index 100% rename from src/assets/icons/tools/ic-link-confluence.png rename to apps/web/src/assets/icons/tools/ic-link-confluence.png diff --git a/src/assets/icons/tools/ic-link-document.png b/apps/web/src/assets/icons/tools/ic-link-document.png similarity index 100% rename from src/assets/icons/tools/ic-link-document.png rename to apps/web/src/assets/icons/tools/ic-link-document.png diff --git a/src/assets/icons/tools/ic-link-folder.png b/apps/web/src/assets/icons/tools/ic-link-folder.png similarity index 100% rename from src/assets/icons/tools/ic-link-folder.png rename to apps/web/src/assets/icons/tools/ic-link-folder.png diff --git a/src/assets/icons/tools/ic-link-jira.png b/apps/web/src/assets/icons/tools/ic-link-jira.png similarity index 100% rename from src/assets/icons/tools/ic-link-jira.png rename to apps/web/src/assets/icons/tools/ic-link-jira.png diff --git a/src/assets/icons/tools/ic-link-performance.png b/apps/web/src/assets/icons/tools/ic-link-performance.png similarity index 100% rename from src/assets/icons/tools/ic-link-performance.png rename to apps/web/src/assets/icons/tools/ic-link-performance.png diff --git a/src/assets/icons/tools/ic-link-report.png b/apps/web/src/assets/icons/tools/ic-link-report.png similarity index 100% rename from src/assets/icons/tools/ic-link-report.png rename to apps/web/src/assets/icons/tools/ic-link-report.png diff --git a/src/assets/icons/tools/ic-link-swagger.png b/apps/web/src/assets/icons/tools/ic-link-swagger.png similarity index 100% rename from src/assets/icons/tools/ic-link-swagger.png rename to apps/web/src/assets/icons/tools/ic-link-swagger.png diff --git a/src/assets/icons/tools/ic-link-webpage.png b/apps/web/src/assets/icons/tools/ic-link-webpage.png similarity index 100% rename from src/assets/icons/tools/ic-link-webpage.png rename to apps/web/src/assets/icons/tools/ic-link-webpage.png diff --git a/src/assets/img/Empty-folder.png b/apps/web/src/assets/img/Empty-folder.png similarity index 100% rename from src/assets/img/Empty-folder.png rename to apps/web/src/assets/img/Empty-folder.png diff --git a/src/assets/img/about-devtron@2x.png b/apps/web/src/assets/img/about-devtron@2x.png similarity index 100% rename from src/assets/img/about-devtron@2x.png rename to apps/web/src/assets/img/about-devtron@2x.png diff --git a/src/assets/img/app-not-configured.png b/apps/web/src/assets/img/app-not-configured.png similarity index 100% rename from src/assets/img/app-not-configured.png rename to apps/web/src/assets/img/app-not-configured.png diff --git a/src/assets/img/app-not-deployed.png b/apps/web/src/assets/img/app-not-deployed.png similarity index 100% rename from src/assets/img/app-not-deployed.png rename to apps/web/src/assets/img/app-not-deployed.png diff --git a/src/assets/img/bg-login.png b/apps/web/src/assets/img/bg-login.png similarity index 100% rename from src/assets/img/bg-login.png rename to apps/web/src/assets/img/bg-login.png diff --git a/src/assets/img/bug_fixing.svg b/apps/web/src/assets/img/bug_fixing.svg similarity index 100% rename from src/assets/img/bug_fixing.svg rename to apps/web/src/assets/img/bug_fixing.svg diff --git a/src/assets/img/change-source.png b/apps/web/src/assets/img/change-source.png similarity index 100% rename from src/assets/img/change-source.png rename to apps/web/src/assets/img/change-source.png diff --git a/src/assets/img/cm-cs-empty-state.png b/apps/web/src/assets/img/cm-cs-empty-state.png similarity index 100% rename from src/assets/img/cm-cs-empty-state.png rename to apps/web/src/assets/img/cm-cs-empty-state.png diff --git a/src/assets/img/empty-applist@2x.png b/apps/web/src/assets/img/empty-applist@2x.png similarity index 100% rename from src/assets/img/empty-applist@2x.png rename to apps/web/src/assets/img/empty-applist@2x.png diff --git a/src/assets/img/empty-externallinks@2x.png b/apps/web/src/assets/img/empty-externallinks@2x.png similarity index 100% rename from src/assets/img/empty-externallinks@2x.png rename to apps/web/src/assets/img/empty-externallinks@2x.png diff --git a/src/assets/img/empty-joblist@2x.png b/apps/web/src/assets/img/empty-joblist@2x.png similarity index 100% rename from src/assets/img/empty-joblist@2x.png rename to apps/web/src/assets/img/empty-joblist@2x.png diff --git a/src/assets/img/empty-noresult@2x.png b/apps/web/src/assets/img/empty-noresult@2x.png similarity index 100% rename from src/assets/img/empty-noresult@2x.png rename to apps/web/src/assets/img/empty-noresult@2x.png diff --git a/src/assets/img/empty-pre-deploy.png b/apps/web/src/assets/img/empty-pre-deploy.png similarity index 100% rename from src/assets/img/empty-pre-deploy.png rename to apps/web/src/assets/img/empty-pre-deploy.png diff --git a/src/assets/img/external-ci.png b/apps/web/src/assets/img/external-ci.png similarity index 100% rename from src/assets/img/external-ci.png rename to apps/web/src/assets/img/external-ci.png diff --git a/src/assets/img/guide-create-app.png b/apps/web/src/assets/img/guide-create-app.png similarity index 100% rename from src/assets/img/guide-create-app.png rename to apps/web/src/assets/img/guide-create-app.png diff --git a/src/assets/img/guide-onboard.png b/apps/web/src/assets/img/guide-onboard.png similarity index 100% rename from src/assets/img/guide-onboard.png rename to apps/web/src/assets/img/guide-onboard.png diff --git a/src/assets/img/guided-chart-repository.png b/apps/web/src/assets/img/guided-chart-repository.png similarity index 100% rename from src/assets/img/guided-chart-repository.png rename to apps/web/src/assets/img/guided-chart-repository.png diff --git a/src/assets/img/guided-helm-cluster.png b/apps/web/src/assets/img/guided-helm-cluster.png similarity index 100% rename from src/assets/img/guided-helm-cluster.png rename to apps/web/src/assets/img/guided-helm-cluster.png diff --git a/src/assets/img/guided-helm-collage.png b/apps/web/src/assets/img/guided-helm-collage.png similarity index 100% rename from src/assets/img/guided-helm-collage.png rename to apps/web/src/assets/img/guided-helm-collage.png diff --git a/src/assets/img/guided-helm-search.png b/apps/web/src/assets/img/guided-helm-search.png similarity index 100% rename from src/assets/img/guided-helm-search.png rename to apps/web/src/assets/img/guided-helm-search.png diff --git a/src/assets/img/helm-collage.png b/apps/web/src/assets/img/helm-collage.png similarity index 100% rename from src/assets/img/helm-collage.png rename to apps/web/src/assets/img/helm-collage.png diff --git a/src/assets/img/ic-build-deploy.png b/apps/web/src/assets/img/ic-build-deploy.png similarity index 100% rename from src/assets/img/ic-build-deploy.png rename to apps/web/src/assets/img/ic-build-deploy.png diff --git a/src/assets/img/ic-checklist-app@2x.png b/apps/web/src/assets/img/ic-checklist-app@2x.png similarity index 100% rename from src/assets/img/ic-checklist-app@2x.png rename to apps/web/src/assets/img/ic-checklist-app@2x.png diff --git a/src/assets/img/ic-checklist-chart@2x.png b/apps/web/src/assets/img/ic-checklist-chart@2x.png similarity index 100% rename from src/assets/img/ic-checklist-chart@2x.png rename to apps/web/src/assets/img/ic-checklist-chart@2x.png diff --git a/src/assets/img/ic-checklist-sample-app@2x.png b/apps/web/src/assets/img/ic-checklist-sample-app@2x.png similarity index 100% rename from src/assets/img/ic-checklist-sample-app@2x.png rename to apps/web/src/assets/img/ic-checklist-sample-app@2x.png diff --git a/src/assets/img/ic-dockerfile-in-use.png b/apps/web/src/assets/img/ic-dockerfile-in-use.png similarity index 100% rename from src/assets/img/ic-dockerfile-in-use.png rename to apps/web/src/assets/img/ic-dockerfile-in-use.png diff --git a/src/assets/img/ic-empty-chartgroup@2x.png b/apps/web/src/assets/img/ic-empty-chartgroup@2x.png similarity index 100% rename from src/assets/img/ic-empty-chartgroup@2x.png rename to apps/web/src/assets/img/ic-empty-chartgroup@2x.png diff --git a/src/assets/img/ic-empty-checklist.png b/apps/web/src/assets/img/ic-empty-checklist.png similarity index 100% rename from src/assets/img/ic-empty-checklist.png rename to apps/web/src/assets/img/ic-empty-checklist.png diff --git a/src/assets/img/ic-empty-custom-charts.png b/apps/web/src/assets/img/ic-empty-custom-charts.png similarity index 100% rename from src/assets/img/ic-empty-custom-charts.png rename to apps/web/src/assets/img/ic-empty-custom-charts.png diff --git a/src/assets/img/ic-empty-dep-metrics@2x.png b/apps/web/src/assets/img/ic-empty-dep-metrics@2x.png similarity index 100% rename from src/assets/img/ic-empty-dep-metrics@2x.png rename to apps/web/src/assets/img/ic-empty-dep-metrics@2x.png diff --git a/src/assets/img/ic-empty-done@2x.png b/apps/web/src/assets/img/ic-empty-done@2x.png similarity index 100% rename from src/assets/img/ic-empty-done@2x.png rename to apps/web/src/assets/img/ic-empty-done@2x.png diff --git a/src/assets/img/ic-empty-ea--security.png b/apps/web/src/assets/img/ic-empty-ea--security.png similarity index 100% rename from src/assets/img/ic-empty-ea--security.png rename to apps/web/src/assets/img/ic-empty-ea--security.png diff --git a/src/assets/img/ic-empty-ea-app-detail.png b/apps/web/src/assets/img/ic-empty-ea-app-detail.png similarity index 100% rename from src/assets/img/ic-empty-ea-app-detail.png rename to apps/web/src/assets/img/ic-empty-ea-app-detail.png diff --git a/src/assets/img/ic-empty-ea-charts.png b/apps/web/src/assets/img/ic-empty-ea-charts.png similarity index 100% rename from src/assets/img/ic-empty-ea-charts.png rename to apps/web/src/assets/img/ic-empty-ea-charts.png diff --git a/src/assets/img/ic-empty-error@2x.png b/apps/web/src/assets/img/ic-empty-error@2x.png similarity index 100% rename from src/assets/img/ic-empty-error@2x.png rename to apps/web/src/assets/img/ic-empty-error@2x.png diff --git a/src/assets/img/ic-empty-generate-token.png b/apps/web/src/assets/img/ic-empty-generate-token.png similarity index 100% rename from src/assets/img/ic-empty-generate-token.png rename to apps/web/src/assets/img/ic-empty-generate-token.png diff --git a/src/assets/img/ic-empty-notifications.png b/apps/web/src/assets/img/ic-empty-notifications.png similarity index 100% rename from src/assets/img/ic-empty-notifications.png rename to apps/web/src/assets/img/ic-empty-notifications.png diff --git a/src/assets/img/ic-empty-scanner-disabled.png b/apps/web/src/assets/img/ic-empty-scanner-disabled.png similarity index 100% rename from src/assets/img/ic-empty-scanner-disabled.png rename to apps/web/src/assets/img/ic-empty-scanner-disabled.png diff --git a/src/assets/img/ic-empty-tests.svg b/apps/web/src/assets/img/ic-empty-tests.svg similarity index 100% rename from src/assets/img/ic-empty-tests.svg rename to apps/web/src/assets/img/ic-empty-tests.svg diff --git a/src/assets/img/ic-empty-workflow@3x.png b/apps/web/src/assets/img/ic-empty-workflow@3x.png similarity index 100% rename from src/assets/img/ic-empty-workflow@3x.png rename to apps/web/src/assets/img/ic-empty-workflow@3x.png diff --git a/src/assets/img/ic-error-hosturl.png b/apps/web/src/assets/img/ic-error-hosturl.png similarity index 100% rename from src/assets/img/ic-error-hosturl.png rename to apps/web/src/assets/img/ic-error-hosturl.png diff --git a/src/assets/img/ic-error-prometheus.png b/apps/web/src/assets/img/ic-error-prometheus.png similarity index 100% rename from src/assets/img/ic-error-prometheus.png rename to apps/web/src/assets/img/ic-error-prometheus.png diff --git a/src/assets/img/ic-feature-deploymentgroups@3x.png b/apps/web/src/assets/img/ic-feature-deploymentgroups@3x.png similarity index 100% rename from src/assets/img/ic-feature-deploymentgroups@3x.png rename to apps/web/src/assets/img/ic-feature-deploymentgroups@3x.png diff --git a/src/assets/img/ic-help-outline.svg b/apps/web/src/assets/img/ic-help-outline.svg similarity index 100% rename from src/assets/img/ic-help-outline.svg rename to apps/web/src/assets/img/ic-help-outline.svg diff --git a/src/assets/img/ic-loading-failure.png b/apps/web/src/assets/img/ic-loading-failure.png similarity index 100% rename from src/assets/img/ic-loading-failure.png rename to apps/web/src/assets/img/ic-loading-failure.png diff --git a/src/assets/img/ic-mechanical-operation.svg b/apps/web/src/assets/img/ic-mechanical-operation.svg similarity index 100% rename from src/assets/img/ic-mechanical-operation.svg rename to apps/web/src/assets/img/ic-mechanical-operation.svg diff --git a/src/assets/img/ic-more-extensions.png b/apps/web/src/assets/img/ic-more-extensions.png similarity index 100% rename from src/assets/img/ic-more-extensions.png rename to apps/web/src/assets/img/ic-more-extensions.png diff --git a/src/assets/img/ic-no-chart-in-clusters@2x.png b/apps/web/src/assets/img/ic-no-chart-in-clusters@2x.png similarity index 100% rename from src/assets/img/ic-no-chart-in-clusters@2x.png rename to apps/web/src/assets/img/ic-no-chart-in-clusters@2x.png diff --git a/src/assets/img/ic-no-cluster-select@2x.png b/apps/web/src/assets/img/ic-no-cluster-select@2x.png similarity index 100% rename from src/assets/img/ic-no-cluster-select@2x.png rename to apps/web/src/assets/img/ic-no-cluster-select@2x.png diff --git a/src/assets/img/ic-not-authorized.svg b/apps/web/src/assets/img/ic-not-authorized.svg similarity index 100% rename from src/assets/img/ic-not-authorized.svg rename to apps/web/src/assets/img/ic-not-authorized.svg diff --git a/src/assets/img/ic-pipeline-ci@2x.png b/apps/web/src/assets/img/ic-pipeline-ci@2x.png similarity index 100% rename from src/assets/img/ic-pipeline-ci@2x.png rename to apps/web/src/assets/img/ic-pipeline-ci@2x.png diff --git a/src/assets/img/ic-pipeline-deploy@2x.png b/apps/web/src/assets/img/ic-pipeline-deploy@2x.png similarity index 100% rename from src/assets/img/ic-pipeline-deploy@2x.png rename to apps/web/src/assets/img/ic-pipeline-deploy@2x.png diff --git a/src/assets/img/ic-preview.png b/apps/web/src/assets/img/ic-preview.png similarity index 100% rename from src/assets/img/ic-preview.png rename to apps/web/src/assets/img/ic-preview.png diff --git a/src/assets/img/ic-success@2x.png b/apps/web/src/assets/img/ic-success@2x.png similarity index 100% rename from src/assets/img/ic-success@2x.png rename to apps/web/src/assets/img/ic-success@2x.png diff --git a/src/assets/img/ic-vulnerability-not-found.svg b/apps/web/src/assets/img/ic-vulnerability-not-found.svg similarity index 100% rename from src/assets/img/ic-vulnerability-not-found.svg rename to apps/web/src/assets/img/ic-vulnerability-not-found.svg diff --git a/src/assets/img/ic_upload_chart_error.png b/apps/web/src/assets/img/ic_upload_chart_error.png similarity index 100% rename from src/assets/img/ic_upload_chart_error.png rename to apps/web/src/assets/img/ic_upload_chart_error.png diff --git a/src/assets/img/install-devtron-full.png b/apps/web/src/assets/img/install-devtron-full.png similarity index 100% rename from src/assets/img/install-devtron-full.png rename to apps/web/src/assets/img/install-devtron-full.png diff --git a/src/assets/img/install-devtron-full@2x.png b/apps/web/src/assets/img/install-devtron-full@2x.png similarity index 100% rename from src/assets/img/install-devtron-full@2x.png rename to apps/web/src/assets/img/install-devtron-full@2x.png diff --git a/src/assets/img/install-devtron-full@3x.png b/apps/web/src/assets/img/install-devtron-full@3x.png similarity index 100% rename from src/assets/img/install-devtron-full@3x.png rename to apps/web/src/assets/img/install-devtron-full@3x.png diff --git a/src/assets/img/lifebuoy.png b/apps/web/src/assets/img/lifebuoy.png similarity index 100% rename from src/assets/img/lifebuoy.png rename to apps/web/src/assets/img/lifebuoy.png diff --git a/src/assets/img/linked-cd-bulk-ci.png b/apps/web/src/assets/img/linked-cd-bulk-ci.png similarity index 100% rename from src/assets/img/linked-cd-bulk-ci.png rename to apps/web/src/assets/img/linked-cd-bulk-ci.png diff --git a/src/assets/img/linked-ci.png b/apps/web/src/assets/img/linked-ci.png similarity index 100% rename from src/assets/img/linked-ci.png rename to apps/web/src/assets/img/linked-ci.png diff --git a/src/assets/img/login-bg-independence.png b/apps/web/src/assets/img/login-bg-independence.png similarity index 100% rename from src/assets/img/login-bg-independence.png rename to apps/web/src/assets/img/login-bg-independence.png diff --git a/src/assets/img/mail-icon.svg b/apps/web/src/assets/img/mail-icon.svg similarity index 100% rename from src/assets/img/mail-icon.svg rename to apps/web/src/assets/img/mail-icon.svg diff --git a/src/assets/img/nav-logo.svg b/apps/web/src/assets/img/nav-logo.svg similarity index 100% rename from src/assets/img/nav-logo.svg rename to apps/web/src/assets/img/nav-logo.svg diff --git a/src/assets/img/no-approved-images@2x.png b/apps/web/src/assets/img/no-approved-images@2x.png similarity index 100% rename from src/assets/img/no-approved-images@2x.png rename to apps/web/src/assets/img/no-approved-images@2x.png diff --git a/src/assets/img/no-artifact@2x.png b/apps/web/src/assets/img/no-artifact@2x.png similarity index 100% rename from src/assets/img/no-artifact@2x.png rename to apps/web/src/assets/img/no-artifact@2x.png diff --git a/src/assets/img/no-cluster-empty-state.png b/apps/web/src/assets/img/no-cluster-empty-state.png similarity index 100% rename from src/assets/img/no-cluster-empty-state.png rename to apps/web/src/assets/img/no-cluster-empty-state.png diff --git a/src/assets/img/no-eligible-commit.png b/apps/web/src/assets/img/no-eligible-commit.png similarity index 100% rename from src/assets/img/no-eligible-commit.png rename to apps/web/src/assets/img/no-eligible-commit.png diff --git a/src/assets/img/no-pending-action@2x.png b/apps/web/src/assets/img/no-pending-action@2x.png similarity index 100% rename from src/assets/img/no-pending-action@2x.png rename to apps/web/src/assets/img/no-pending-action@2x.png diff --git a/src/assets/img/no_vulnerability.png b/apps/web/src/assets/img/no_vulnerability.png similarity index 100% rename from src/assets/img/no_vulnerability.png rename to apps/web/src/assets/img/no_vulnerability.png diff --git a/src/assets/img/node-app-thumbnail.png b/apps/web/src/assets/img/node-app-thumbnail.png similarity index 100% rename from src/assets/img/node-app-thumbnail.png rename to apps/web/src/assets/img/node-app-thumbnail.png diff --git a/src/assets/img/not-scanned.png b/apps/web/src/assets/img/not-scanned.png similarity index 100% rename from src/assets/img/not-scanned.png rename to apps/web/src/assets/img/not-scanned.png diff --git a/src/assets/img/page-not-found.png b/apps/web/src/assets/img/page-not-found.png similarity index 100% rename from src/assets/img/page-not-found.png rename to apps/web/src/assets/img/page-not-found.png diff --git a/src/assets/img/paper-rocket-deployment.png b/apps/web/src/assets/img/paper-rocket-deployment.png similarity index 100% rename from src/assets/img/paper-rocket-deployment.png rename to apps/web/src/assets/img/paper-rocket-deployment.png diff --git a/src/assets/img/pipeline-deploy.png b/apps/web/src/assets/img/pipeline-deploy.png similarity index 100% rename from src/assets/img/pipeline-deploy.png rename to apps/web/src/assets/img/pipeline-deploy.png diff --git a/src/assets/img/post-build-empty.png b/apps/web/src/assets/img/post-build-empty.png similarity index 100% rename from src/assets/img/post-build-empty.png rename to apps/web/src/assets/img/post-build-empty.png diff --git a/src/assets/img/post-deployment-empty.png b/apps/web/src/assets/img/post-deployment-empty.png similarity index 100% rename from src/assets/img/post-deployment-empty.png rename to apps/web/src/assets/img/post-deployment-empty.png diff --git a/src/assets/img/pre-build-empty.png b/apps/web/src/assets/img/pre-build-empty.png similarity index 100% rename from src/assets/img/pre-build-empty.png rename to apps/web/src/assets/img/pre-build-empty.png diff --git a/src/assets/img/pre-deployment-empty.png b/apps/web/src/assets/img/pre-deployment-empty.png similarity index 100% rename from src/assets/img/pre-deployment-empty.png rename to apps/web/src/assets/img/pre-deployment-empty.png diff --git a/src/assets/img/select-image-source.png b/apps/web/src/assets/img/select-image-source.png similarity index 100% rename from src/assets/img/select-image-source.png rename to apps/web/src/assets/img/select-image-source.png diff --git a/src/assets/img/slack-logo.svg b/apps/web/src/assets/img/slack-logo.svg similarity index 100% rename from src/assets/img/slack-logo.svg rename to apps/web/src/assets/img/slack-logo.svg diff --git a/src/assets/img/terminal.png b/apps/web/src/assets/img/terminal.png similarity index 100% rename from src/assets/img/terminal.png rename to apps/web/src/assets/img/terminal.png diff --git a/src/assets/img/terminal@2x.png b/apps/web/src/assets/img/terminal@2x.png similarity index 100% rename from src/assets/img/terminal@2x.png rename to apps/web/src/assets/img/terminal@2x.png diff --git a/src/assets/img/warning-medium.svg b/apps/web/src/assets/img/warning-medium.svg similarity index 100% rename from src/assets/img/warning-medium.svg rename to apps/web/src/assets/img/warning-medium.svg diff --git a/src/assets/img/webhook.svg b/apps/web/src/assets/img/webhook.svg similarity index 100% rename from src/assets/img/webhook.svg rename to apps/web/src/assets/img/webhook.svg diff --git a/src/assets/logo/logo.png b/apps/web/src/assets/logo/logo.png similarity index 100% rename from src/assets/logo/logo.png rename to apps/web/src/assets/logo/logo.png diff --git a/src/components/AppSelector/AppSelector.tsx b/apps/web/src/components/AppSelector/AppSelector.tsx similarity index 100% rename from src/components/AppSelector/AppSelector.tsx rename to apps/web/src/components/AppSelector/AppSelector.tsx diff --git a/src/components/AppSelector/AppSelectorUtil.tsx b/apps/web/src/components/AppSelector/AppSelectorUtil.tsx similarity index 100% rename from src/components/AppSelector/AppSelectorUtil.tsx rename to apps/web/src/components/AppSelector/AppSelectorUtil.tsx diff --git a/src/components/AppSelector/ChartSelector.tsx b/apps/web/src/components/AppSelector/ChartSelector.tsx similarity index 100% rename from src/components/AppSelector/ChartSelector.tsx rename to apps/web/src/components/AppSelector/ChartSelector.tsx diff --git a/src/components/AppSelector/index.ts b/apps/web/src/components/AppSelector/index.ts similarity index 100% rename from src/components/AppSelector/index.ts rename to apps/web/src/components/AppSelector/index.ts diff --git a/src/components/ApplicationGroup/AppGroup.service.ts b/apps/web/src/components/ApplicationGroup/AppGroup.service.ts similarity index 100% rename from src/components/ApplicationGroup/AppGroup.service.ts rename to apps/web/src/components/ApplicationGroup/AppGroup.service.ts diff --git a/src/components/ApplicationGroup/AppGroup.types.ts b/apps/web/src/components/ApplicationGroup/AppGroup.types.ts similarity index 100% rename from src/components/ApplicationGroup/AppGroup.types.ts rename to apps/web/src/components/ApplicationGroup/AppGroup.types.ts diff --git a/src/components/ApplicationGroup/AppGroup.utils.ts b/apps/web/src/components/ApplicationGroup/AppGroup.utils.ts similarity index 100% rename from src/components/ApplicationGroup/AppGroup.utils.ts rename to apps/web/src/components/ApplicationGroup/AppGroup.utils.ts diff --git a/src/components/ApplicationGroup/AppGroupAppFilter.components.tsx b/apps/web/src/components/ApplicationGroup/AppGroupAppFilter.components.tsx similarity index 100% rename from src/components/ApplicationGroup/AppGroupAppFilter.components.tsx rename to apps/web/src/components/ApplicationGroup/AppGroupAppFilter.components.tsx diff --git a/src/components/ApplicationGroup/AppGroupAppFilter.tsx b/apps/web/src/components/ApplicationGroup/AppGroupAppFilter.tsx similarity index 100% rename from src/components/ApplicationGroup/AppGroupAppFilter.tsx rename to apps/web/src/components/ApplicationGroup/AppGroupAppFilter.tsx diff --git a/src/components/ApplicationGroup/AppGroupDetailsRoute.tsx b/apps/web/src/components/ApplicationGroup/AppGroupDetailsRoute.tsx similarity index 100% rename from src/components/ApplicationGroup/AppGroupDetailsRoute.tsx rename to apps/web/src/components/ApplicationGroup/AppGroupDetailsRoute.tsx diff --git a/src/components/ApplicationGroup/AppGroupRoute.tsx b/apps/web/src/components/ApplicationGroup/AppGroupRoute.tsx similarity index 100% rename from src/components/ApplicationGroup/AppGroupRoute.tsx rename to apps/web/src/components/ApplicationGroup/AppGroupRoute.tsx diff --git a/src/components/ApplicationGroup/Constants.ts b/apps/web/src/components/ApplicationGroup/Constants.ts similarity index 100% rename from src/components/ApplicationGroup/Constants.ts rename to apps/web/src/components/ApplicationGroup/Constants.ts diff --git a/src/components/ApplicationGroup/CreateAppGroup.tsx b/apps/web/src/components/ApplicationGroup/CreateAppGroup.tsx similarity index 100% rename from src/components/ApplicationGroup/CreateAppGroup.tsx rename to apps/web/src/components/ApplicationGroup/CreateAppGroup.tsx diff --git a/src/components/ApplicationGroup/Details/EnvCDDetails/EnvCDDetails.tsx b/apps/web/src/components/ApplicationGroup/Details/EnvCDDetails/EnvCDDetails.tsx similarity index 100% rename from src/components/ApplicationGroup/Details/EnvCDDetails/EnvCDDetails.tsx rename to apps/web/src/components/ApplicationGroup/Details/EnvCDDetails/EnvCDDetails.tsx diff --git a/src/components/ApplicationGroup/Details/EnvCDDetails/__mock__/EnvCDDetails.mock.ts b/apps/web/src/components/ApplicationGroup/Details/EnvCDDetails/__mock__/EnvCDDetails.mock.ts similarity index 100% rename from src/components/ApplicationGroup/Details/EnvCDDetails/__mock__/EnvCDDetails.mock.ts rename to apps/web/src/components/ApplicationGroup/Details/EnvCDDetails/__mock__/EnvCDDetails.mock.ts diff --git a/src/components/ApplicationGroup/Details/EnvCDDetails/__test__/EnvCDDetails.test.tsx b/apps/web/src/components/ApplicationGroup/Details/EnvCDDetails/__test__/EnvCDDetails.test.tsx similarity index 100% rename from src/components/ApplicationGroup/Details/EnvCDDetails/__test__/EnvCDDetails.test.tsx rename to apps/web/src/components/ApplicationGroup/Details/EnvCDDetails/__test__/EnvCDDetails.test.tsx diff --git a/src/components/ApplicationGroup/Details/EnvCIDetails/EnvCIDetails.tsx b/apps/web/src/components/ApplicationGroup/Details/EnvCIDetails/EnvCIDetails.tsx similarity index 100% rename from src/components/ApplicationGroup/Details/EnvCIDetails/EnvCIDetails.tsx rename to apps/web/src/components/ApplicationGroup/Details/EnvCIDetails/EnvCIDetails.tsx diff --git a/src/components/ApplicationGroup/Details/EnvCIDetails/__mock__/EnvCIDetails.mock.ts b/apps/web/src/components/ApplicationGroup/Details/EnvCIDetails/__mock__/EnvCIDetails.mock.ts similarity index 100% rename from src/components/ApplicationGroup/Details/EnvCIDetails/__mock__/EnvCIDetails.mock.ts rename to apps/web/src/components/ApplicationGroup/Details/EnvCIDetails/__mock__/EnvCIDetails.mock.ts diff --git a/src/components/ApplicationGroup/Details/EnvCIDetails/__test__/EnvCIDetails.test.tsx b/apps/web/src/components/ApplicationGroup/Details/EnvCIDetails/__test__/EnvCIDetails.test.tsx similarity index 100% rename from src/components/ApplicationGroup/Details/EnvCIDetails/__test__/EnvCIDetails.test.tsx rename to apps/web/src/components/ApplicationGroup/Details/EnvCIDetails/__test__/EnvCIDetails.test.tsx diff --git a/src/components/ApplicationGroup/Details/EnvironmentConfig/ApplicationRoutes.tsx b/apps/web/src/components/ApplicationGroup/Details/EnvironmentConfig/ApplicationRoutes.tsx similarity index 100% rename from src/components/ApplicationGroup/Details/EnvironmentConfig/ApplicationRoutes.tsx rename to apps/web/src/components/ApplicationGroup/Details/EnvironmentConfig/ApplicationRoutes.tsx diff --git a/src/components/ApplicationGroup/Details/EnvironmentConfig/EnvConfig.tsx b/apps/web/src/components/ApplicationGroup/Details/EnvironmentConfig/EnvConfig.tsx similarity index 100% rename from src/components/ApplicationGroup/Details/EnvironmentConfig/EnvConfig.tsx rename to apps/web/src/components/ApplicationGroup/Details/EnvironmentConfig/EnvConfig.tsx diff --git a/src/components/ApplicationGroup/Details/EnvironmentConfig/__mock__/EnvConfig.mock.ts b/apps/web/src/components/ApplicationGroup/Details/EnvironmentConfig/__mock__/EnvConfig.mock.ts similarity index 100% rename from src/components/ApplicationGroup/Details/EnvironmentConfig/__mock__/EnvConfig.mock.ts rename to apps/web/src/components/ApplicationGroup/Details/EnvironmentConfig/__mock__/EnvConfig.mock.ts diff --git a/src/components/ApplicationGroup/Details/EnvironmentConfig/__test__/ApplicationRoutes.test.tsx b/apps/web/src/components/ApplicationGroup/Details/EnvironmentConfig/__test__/ApplicationRoutes.test.tsx similarity index 100% rename from src/components/ApplicationGroup/Details/EnvironmentConfig/__test__/ApplicationRoutes.test.tsx rename to apps/web/src/components/ApplicationGroup/Details/EnvironmentConfig/__test__/ApplicationRoutes.test.tsx diff --git a/src/components/ApplicationGroup/Details/EnvironmentConfig/__test__/EnvConfig.test.tsx b/apps/web/src/components/ApplicationGroup/Details/EnvironmentConfig/__test__/EnvConfig.test.tsx similarity index 100% rename from src/components/ApplicationGroup/Details/EnvironmentConfig/__test__/EnvConfig.test.tsx rename to apps/web/src/components/ApplicationGroup/Details/EnvironmentConfig/__test__/EnvConfig.test.tsx diff --git a/src/components/ApplicationGroup/Details/EnvironmentOverview/AllExpandableDropdown.tsx b/apps/web/src/components/ApplicationGroup/Details/EnvironmentOverview/AllExpandableDropdown.tsx similarity index 100% rename from src/components/ApplicationGroup/Details/EnvironmentOverview/AllExpandableDropdown.tsx rename to apps/web/src/components/ApplicationGroup/Details/EnvironmentOverview/AllExpandableDropdown.tsx diff --git a/src/components/ApplicationGroup/Details/EnvironmentOverview/EnvironmentOverview.tsx b/apps/web/src/components/ApplicationGroup/Details/EnvironmentOverview/EnvironmentOverview.tsx similarity index 100% rename from src/components/ApplicationGroup/Details/EnvironmentOverview/EnvironmentOverview.tsx rename to apps/web/src/components/ApplicationGroup/Details/EnvironmentOverview/EnvironmentOverview.tsx diff --git a/src/components/ApplicationGroup/Details/EnvironmentOverview/HibernateModal.tsx b/apps/web/src/components/ApplicationGroup/Details/EnvironmentOverview/HibernateModal.tsx similarity index 100% rename from src/components/ApplicationGroup/Details/EnvironmentOverview/HibernateModal.tsx rename to apps/web/src/components/ApplicationGroup/Details/EnvironmentOverview/HibernateModal.tsx diff --git a/src/components/ApplicationGroup/Details/EnvironmentOverview/HibernateStatusListDrawer.tsx b/apps/web/src/components/ApplicationGroup/Details/EnvironmentOverview/HibernateStatusListDrawer.tsx similarity index 100% rename from src/components/ApplicationGroup/Details/EnvironmentOverview/HibernateStatusListDrawer.tsx rename to apps/web/src/components/ApplicationGroup/Details/EnvironmentOverview/HibernateStatusListDrawer.tsx diff --git a/src/components/ApplicationGroup/Details/EnvironmentOverview/HibernateStatusRow.tsx b/apps/web/src/components/ApplicationGroup/Details/EnvironmentOverview/HibernateStatusRow.tsx similarity index 100% rename from src/components/ApplicationGroup/Details/EnvironmentOverview/HibernateStatusRow.tsx rename to apps/web/src/components/ApplicationGroup/Details/EnvironmentOverview/HibernateStatusRow.tsx diff --git a/src/components/ApplicationGroup/Details/EnvironmentOverview/RestartStatusListDrawer.tsx b/apps/web/src/components/ApplicationGroup/Details/EnvironmentOverview/RestartStatusListDrawer.tsx similarity index 100% rename from src/components/ApplicationGroup/Details/EnvironmentOverview/RestartStatusListDrawer.tsx rename to apps/web/src/components/ApplicationGroup/Details/EnvironmentOverview/RestartStatusListDrawer.tsx diff --git a/src/components/ApplicationGroup/Details/EnvironmentOverview/RestartWorkloadModal.tsx b/apps/web/src/components/ApplicationGroup/Details/EnvironmentOverview/RestartWorkloadModal.tsx similarity index 100% rename from src/components/ApplicationGroup/Details/EnvironmentOverview/RestartWorkloadModal.tsx rename to apps/web/src/components/ApplicationGroup/Details/EnvironmentOverview/RestartWorkloadModal.tsx diff --git a/src/components/ApplicationGroup/Details/EnvironmentOverview/__mock__/EnvironmentOverview.mock.ts b/apps/web/src/components/ApplicationGroup/Details/EnvironmentOverview/__mock__/EnvironmentOverview.mock.ts similarity index 100% rename from src/components/ApplicationGroup/Details/EnvironmentOverview/__mock__/EnvironmentOverview.mock.ts rename to apps/web/src/components/ApplicationGroup/Details/EnvironmentOverview/__mock__/EnvironmentOverview.mock.ts diff --git a/src/components/ApplicationGroup/Details/EnvironmentOverview/__test__/EnvironmentOverview.test.tsx b/apps/web/src/components/ApplicationGroup/Details/EnvironmentOverview/__test__/EnvironmentOverview.test.tsx similarity index 100% rename from src/components/ApplicationGroup/Details/EnvironmentOverview/__test__/EnvironmentOverview.test.tsx rename to apps/web/src/components/ApplicationGroup/Details/EnvironmentOverview/__test__/EnvironmentOverview.test.tsx diff --git a/src/components/ApplicationGroup/Details/EnvironmentOverview/constants.ts b/apps/web/src/components/ApplicationGroup/Details/EnvironmentOverview/constants.ts similarity index 100% rename from src/components/ApplicationGroup/Details/EnvironmentOverview/constants.ts rename to apps/web/src/components/ApplicationGroup/Details/EnvironmentOverview/constants.ts diff --git a/src/components/ApplicationGroup/Details/EnvironmentOverview/envOverview.scss b/apps/web/src/components/ApplicationGroup/Details/EnvironmentOverview/envOverview.scss similarity index 100% rename from src/components/ApplicationGroup/Details/EnvironmentOverview/envOverview.scss rename to apps/web/src/components/ApplicationGroup/Details/EnvironmentOverview/envOverview.scss diff --git a/src/components/ApplicationGroup/Details/EnvironmentOverview/service.ts b/apps/web/src/components/ApplicationGroup/Details/EnvironmentOverview/service.ts similarity index 100% rename from src/components/ApplicationGroup/Details/EnvironmentOverview/service.ts rename to apps/web/src/components/ApplicationGroup/Details/EnvironmentOverview/service.ts diff --git a/src/components/ApplicationGroup/Details/TriggerView/BulkCDTrigger.tsx b/apps/web/src/components/ApplicationGroup/Details/TriggerView/BulkCDTrigger.tsx similarity index 100% rename from src/components/ApplicationGroup/Details/TriggerView/BulkCDTrigger.tsx rename to apps/web/src/components/ApplicationGroup/Details/TriggerView/BulkCDTrigger.tsx diff --git a/src/components/ApplicationGroup/Details/TriggerView/BulkCITrigger.tsx b/apps/web/src/components/ApplicationGroup/Details/TriggerView/BulkCITrigger.tsx similarity index 100% rename from src/components/ApplicationGroup/Details/TriggerView/BulkCITrigger.tsx rename to apps/web/src/components/ApplicationGroup/Details/TriggerView/BulkCITrigger.tsx diff --git a/src/components/ApplicationGroup/Details/TriggerView/BulkSourceChange.tsx b/apps/web/src/components/ApplicationGroup/Details/TriggerView/BulkSourceChange.tsx similarity index 100% rename from src/components/ApplicationGroup/Details/TriggerView/BulkSourceChange.tsx rename to apps/web/src/components/ApplicationGroup/Details/TriggerView/BulkSourceChange.tsx diff --git a/src/components/ApplicationGroup/Details/TriggerView/EnvTriggerView.scss b/apps/web/src/components/ApplicationGroup/Details/TriggerView/EnvTriggerView.scss similarity index 100% rename from src/components/ApplicationGroup/Details/TriggerView/EnvTriggerView.scss rename to apps/web/src/components/ApplicationGroup/Details/TriggerView/EnvTriggerView.scss diff --git a/src/components/ApplicationGroup/Details/TriggerView/EnvTriggerView.tsx b/apps/web/src/components/ApplicationGroup/Details/TriggerView/EnvTriggerView.tsx similarity index 100% rename from src/components/ApplicationGroup/Details/TriggerView/EnvTriggerView.tsx rename to apps/web/src/components/ApplicationGroup/Details/TriggerView/EnvTriggerView.tsx diff --git a/src/components/ApplicationGroup/Details/TriggerView/SourceUpdateResponseModal.tsx b/apps/web/src/components/ApplicationGroup/Details/TriggerView/SourceUpdateResponseModal.tsx similarity index 100% rename from src/components/ApplicationGroup/Details/TriggerView/SourceUpdateResponseModal.tsx rename to apps/web/src/components/ApplicationGroup/Details/TriggerView/SourceUpdateResponseModal.tsx diff --git a/src/components/ApplicationGroup/Details/TriggerView/TriggerModalTableRow.tsx b/apps/web/src/components/ApplicationGroup/Details/TriggerView/TriggerModalTableRow.tsx similarity index 100% rename from src/components/ApplicationGroup/Details/TriggerView/TriggerModalTableRow.tsx rename to apps/web/src/components/ApplicationGroup/Details/TriggerView/TriggerModalTableRow.tsx diff --git a/src/components/ApplicationGroup/Details/TriggerView/TriggerResponseModal.tsx b/apps/web/src/components/ApplicationGroup/Details/TriggerView/TriggerResponseModal.tsx similarity index 100% rename from src/components/ApplicationGroup/Details/TriggerView/TriggerResponseModal.tsx rename to apps/web/src/components/ApplicationGroup/Details/TriggerView/TriggerResponseModal.tsx diff --git a/src/components/ApplicationGroup/Details/TriggerView/constants.ts b/apps/web/src/components/ApplicationGroup/Details/TriggerView/constants.ts similarity index 100% rename from src/components/ApplicationGroup/Details/TriggerView/constants.ts rename to apps/web/src/components/ApplicationGroup/Details/TriggerView/constants.ts diff --git a/src/components/ApplicationGroup/Details/TriggerView/types.ts b/apps/web/src/components/ApplicationGroup/Details/TriggerView/types.ts similarity index 100% rename from src/components/ApplicationGroup/Details/TriggerView/types.ts rename to apps/web/src/components/ApplicationGroup/Details/TriggerView/types.ts diff --git a/src/components/ApplicationGroup/Details/TriggerView/utils.ts b/apps/web/src/components/ApplicationGroup/Details/TriggerView/utils.ts similarity index 100% rename from src/components/ApplicationGroup/Details/TriggerView/utils.ts rename to apps/web/src/components/ApplicationGroup/Details/TriggerView/utils.ts diff --git a/src/components/ApplicationGroup/EnvEmptyStates.tsx b/apps/web/src/components/ApplicationGroup/EnvEmptyStates.tsx similarity index 100% rename from src/components/ApplicationGroup/EnvEmptyStates.tsx rename to apps/web/src/components/ApplicationGroup/EnvEmptyStates.tsx diff --git a/src/components/ApplicationGroup/EnvSelector.tsx b/apps/web/src/components/ApplicationGroup/EnvSelector.tsx similarity index 100% rename from src/components/ApplicationGroup/EnvSelector.tsx rename to apps/web/src/components/ApplicationGroup/EnvSelector.tsx diff --git a/src/components/ApplicationGroup/List/EnvironmentListView.tsx b/apps/web/src/components/ApplicationGroup/List/EnvironmentListView.tsx similarity index 100% rename from src/components/ApplicationGroup/List/EnvironmentListView.tsx rename to apps/web/src/components/ApplicationGroup/List/EnvironmentListView.tsx diff --git a/src/components/ApplicationGroup/List/EnvironmentsList.scss b/apps/web/src/components/ApplicationGroup/List/EnvironmentsList.scss similarity index 100% rename from src/components/ApplicationGroup/List/EnvironmentsList.scss rename to apps/web/src/components/ApplicationGroup/List/EnvironmentsList.scss diff --git a/src/components/ApplicationGroup/List/EnvironmentsList.tsx b/apps/web/src/components/ApplicationGroup/List/EnvironmentsList.tsx similarity index 100% rename from src/components/ApplicationGroup/List/EnvironmentsList.tsx rename to apps/web/src/components/ApplicationGroup/List/EnvironmentsList.tsx diff --git a/src/components/ApplicationGroup/List/__mocks__/EnvironmentList.mock.ts b/apps/web/src/components/ApplicationGroup/List/__mocks__/EnvironmentList.mock.ts similarity index 100% rename from src/components/ApplicationGroup/List/__mocks__/EnvironmentList.mock.ts rename to apps/web/src/components/ApplicationGroup/List/__mocks__/EnvironmentList.mock.ts diff --git a/src/components/ApplicationGroup/List/__tests__/EnvironmentListView.test.tsx b/apps/web/src/components/ApplicationGroup/List/__tests__/EnvironmentListView.test.tsx similarity index 100% rename from src/components/ApplicationGroup/List/__tests__/EnvironmentListView.test.tsx rename to apps/web/src/components/ApplicationGroup/List/__tests__/EnvironmentListView.test.tsx diff --git a/src/components/CIPipelineN/AdvancedConfigOptions.tsx b/apps/web/src/components/CIPipelineN/AdvancedConfigOptions.tsx similarity index 100% rename from src/components/CIPipelineN/AdvancedConfigOptions.tsx rename to apps/web/src/components/CIPipelineN/AdvancedConfigOptions.tsx diff --git a/src/components/CIPipelineN/Build.tsx b/apps/web/src/components/CIPipelineN/Build.tsx similarity index 100% rename from src/components/CIPipelineN/Build.tsx rename to apps/web/src/components/CIPipelineN/Build.tsx diff --git a/src/components/CIPipelineN/CIPipeline.tsx b/apps/web/src/components/CIPipelineN/CIPipeline.tsx similarity index 100% rename from src/components/CIPipelineN/CIPipeline.tsx rename to apps/web/src/components/CIPipelineN/CIPipeline.tsx diff --git a/src/components/CIPipelineN/ConditionContainer.tsx b/apps/web/src/components/CIPipelineN/ConditionContainer.tsx similarity index 100% rename from src/components/CIPipelineN/ConditionContainer.tsx rename to apps/web/src/components/CIPipelineN/ConditionContainer.tsx diff --git a/src/components/CIPipelineN/Constants.tsx b/apps/web/src/components/CIPipelineN/Constants.tsx similarity index 100% rename from src/components/CIPipelineN/Constants.tsx rename to apps/web/src/components/CIPipelineN/Constants.tsx diff --git a/src/components/CIPipelineN/CreatePluginModal/CreatePluginFormContent.tsx b/apps/web/src/components/CIPipelineN/CreatePluginModal/CreatePluginFormContent.tsx similarity index 100% rename from src/components/CIPipelineN/CreatePluginModal/CreatePluginFormContent.tsx rename to apps/web/src/components/CIPipelineN/CreatePluginModal/CreatePluginFormContent.tsx diff --git a/src/components/CIPipelineN/CreatePluginModal/CreatePluginFormField.tsx b/apps/web/src/components/CIPipelineN/CreatePluginModal/CreatePluginFormField.tsx similarity index 100% rename from src/components/CIPipelineN/CreatePluginModal/CreatePluginFormField.tsx rename to apps/web/src/components/CIPipelineN/CreatePluginModal/CreatePluginFormField.tsx diff --git a/src/components/CIPipelineN/CreatePluginModal/CreatePluginInputVariableContainer.tsx b/apps/web/src/components/CIPipelineN/CreatePluginModal/CreatePluginInputVariableContainer.tsx similarity index 100% rename from src/components/CIPipelineN/CreatePluginModal/CreatePluginInputVariableContainer.tsx rename to apps/web/src/components/CIPipelineN/CreatePluginModal/CreatePluginInputVariableContainer.tsx diff --git a/src/components/CIPipelineN/CreatePluginModal/CreatePluginModal.component.tsx b/apps/web/src/components/CIPipelineN/CreatePluginModal/CreatePluginModal.component.tsx similarity index 100% rename from src/components/CIPipelineN/CreatePluginModal/CreatePluginModal.component.tsx rename to apps/web/src/components/CIPipelineN/CreatePluginModal/CreatePluginModal.component.tsx diff --git a/src/components/CIPipelineN/CreatePluginModal/CreatePluginModal.scss b/apps/web/src/components/CIPipelineN/CreatePluginModal/CreatePluginModal.scss similarity index 100% rename from src/components/CIPipelineN/CreatePluginModal/CreatePluginModal.scss rename to apps/web/src/components/CIPipelineN/CreatePluginModal/CreatePluginModal.scss diff --git a/src/components/CIPipelineN/CreatePluginModal/constants.ts b/apps/web/src/components/CIPipelineN/CreatePluginModal/constants.ts similarity index 100% rename from src/components/CIPipelineN/CreatePluginModal/constants.ts rename to apps/web/src/components/CIPipelineN/CreatePluginModal/constants.ts diff --git a/src/components/CIPipelineN/CreatePluginModal/index.ts b/apps/web/src/components/CIPipelineN/CreatePluginModal/index.ts similarity index 100% rename from src/components/CIPipelineN/CreatePluginModal/index.ts rename to apps/web/src/components/CIPipelineN/CreatePluginModal/index.ts diff --git a/src/components/CIPipelineN/CreatePluginModal/service.tsx b/apps/web/src/components/CIPipelineN/CreatePluginModal/service.tsx similarity index 100% rename from src/components/CIPipelineN/CreatePluginModal/service.tsx rename to apps/web/src/components/CIPipelineN/CreatePluginModal/service.tsx diff --git a/src/components/CIPipelineN/CreatePluginModal/types.ts b/apps/web/src/components/CIPipelineN/CreatePluginModal/types.ts similarity index 100% rename from src/components/CIPipelineN/CreatePluginModal/types.ts rename to apps/web/src/components/CIPipelineN/CreatePluginModal/types.ts diff --git a/src/components/CIPipelineN/CreatePluginModal/utils.tsx b/apps/web/src/components/CIPipelineN/CreatePluginModal/utils.tsx similarity index 100% rename from src/components/CIPipelineN/CreatePluginModal/utils.tsx rename to apps/web/src/components/CIPipelineN/CreatePluginModal/utils.tsx diff --git a/src/components/CIPipelineN/CustomImageTag.type.ts b/apps/web/src/components/CIPipelineN/CustomImageTag.type.ts similarity index 100% rename from src/components/CIPipelineN/CustomImageTag.type.ts rename to apps/web/src/components/CIPipelineN/CustomImageTag.type.ts diff --git a/src/components/CIPipelineN/CustomImageTags.tsx b/apps/web/src/components/CIPipelineN/CustomImageTags.tsx similarity index 100% rename from src/components/CIPipelineN/CustomImageTags.tsx rename to apps/web/src/components/CIPipelineN/CustomImageTags.tsx diff --git a/src/components/CIPipelineN/CustomInputOutputVariables.tsx b/apps/web/src/components/CIPipelineN/CustomInputOutputVariables.tsx similarity index 100% rename from src/components/CIPipelineN/CustomInputOutputVariables.tsx rename to apps/web/src/components/CIPipelineN/CustomInputOutputVariables.tsx diff --git a/src/components/CIPipelineN/CustomInputVariableSelect.tsx b/apps/web/src/components/CIPipelineN/CustomInputVariableSelect.tsx similarity index 100% rename from src/components/CIPipelineN/CustomInputVariableSelect.tsx rename to apps/web/src/components/CIPipelineN/CustomInputVariableSelect.tsx diff --git a/src/components/CIPipelineN/CustomScript.tsx b/apps/web/src/components/CIPipelineN/CustomScript.tsx similarity index 100% rename from src/components/CIPipelineN/CustomScript.tsx rename to apps/web/src/components/CIPipelineN/CustomScript.tsx diff --git a/src/components/CIPipelineN/CustomScriptCard.tsx b/apps/web/src/components/CIPipelineN/CustomScriptCard.tsx similarity index 100% rename from src/components/CIPipelineN/CustomScriptCard.tsx rename to apps/web/src/components/CIPipelineN/CustomScriptCard.tsx diff --git a/src/components/CIPipelineN/DockerArgs.tsx b/apps/web/src/components/CIPipelineN/DockerArgs.tsx similarity index 100% rename from src/components/CIPipelineN/DockerArgs.tsx rename to apps/web/src/components/CIPipelineN/DockerArgs.tsx diff --git a/src/components/CIPipelineN/EnvironmentList.tsx b/apps/web/src/components/CIPipelineN/EnvironmentList.tsx similarity index 100% rename from src/components/CIPipelineN/EnvironmentList.tsx rename to apps/web/src/components/CIPipelineN/EnvironmentList.tsx diff --git a/src/components/CIPipelineN/InputPluginSelect.tsx b/apps/web/src/components/CIPipelineN/InputPluginSelect.tsx similarity index 100% rename from src/components/CIPipelineN/InputPluginSelect.tsx rename to apps/web/src/components/CIPipelineN/InputPluginSelect.tsx diff --git a/src/components/CIPipelineN/MountFromHost.tsx b/apps/web/src/components/CIPipelineN/MountFromHost.tsx similarity index 100% rename from src/components/CIPipelineN/MountFromHost.tsx rename to apps/web/src/components/CIPipelineN/MountFromHost.tsx diff --git a/src/components/CIPipelineN/MultiplsPort.tsx b/apps/web/src/components/CIPipelineN/MultiplsPort.tsx similarity index 100% rename from src/components/CIPipelineN/MultiplsPort.tsx rename to apps/web/src/components/CIPipelineN/MultiplsPort.tsx diff --git a/src/components/CIPipelineN/OutputDirectoryPath.tsx b/apps/web/src/components/CIPipelineN/OutputDirectoryPath.tsx similarity index 100% rename from src/components/CIPipelineN/OutputDirectoryPath.tsx rename to apps/web/src/components/CIPipelineN/OutputDirectoryPath.tsx diff --git a/src/components/CIPipelineN/PluginDetailHeader/CreatePluginButton.tsx b/apps/web/src/components/CIPipelineN/PluginDetailHeader/CreatePluginButton.tsx similarity index 100% rename from src/components/CIPipelineN/PluginDetailHeader/CreatePluginButton.tsx rename to apps/web/src/components/CIPipelineN/PluginDetailHeader/CreatePluginButton.tsx diff --git a/src/components/CIPipelineN/PluginDetailHeader/PluginDetailHeader.component.tsx b/apps/web/src/components/CIPipelineN/PluginDetailHeader/PluginDetailHeader.component.tsx similarity index 100% rename from src/components/CIPipelineN/PluginDetailHeader/PluginDetailHeader.component.tsx rename to apps/web/src/components/CIPipelineN/PluginDetailHeader/PluginDetailHeader.component.tsx diff --git a/src/components/CIPipelineN/PluginDetailHeader/PluginVersionSelect.tsx b/apps/web/src/components/CIPipelineN/PluginDetailHeader/PluginVersionSelect.tsx similarity index 100% rename from src/components/CIPipelineN/PluginDetailHeader/PluginVersionSelect.tsx rename to apps/web/src/components/CIPipelineN/PluginDetailHeader/PluginVersionSelect.tsx diff --git a/src/components/CIPipelineN/PluginDetailHeader/index.ts b/apps/web/src/components/CIPipelineN/PluginDetailHeader/index.ts similarity index 100% rename from src/components/CIPipelineN/PluginDetailHeader/index.ts rename to apps/web/src/components/CIPipelineN/PluginDetailHeader/index.ts diff --git a/src/components/CIPipelineN/PluginDetailHeader/utils.ts b/apps/web/src/components/CIPipelineN/PluginDetailHeader/utils.ts similarity index 100% rename from src/components/CIPipelineN/PluginDetailHeader/utils.ts rename to apps/web/src/components/CIPipelineN/PluginDetailHeader/utils.ts diff --git a/src/components/CIPipelineN/PreBuild.tsx b/apps/web/src/components/CIPipelineN/PreBuild.tsx similarity index 100% rename from src/components/CIPipelineN/PreBuild.tsx rename to apps/web/src/components/CIPipelineN/PreBuild.tsx diff --git a/src/components/CIPipelineN/Sidebar.tsx b/apps/web/src/components/CIPipelineN/Sidebar.tsx similarity index 100% rename from src/components/CIPipelineN/Sidebar.tsx rename to apps/web/src/components/CIPipelineN/Sidebar.tsx diff --git a/src/components/CIPipelineN/TaskDetailComponent.tsx b/apps/web/src/components/CIPipelineN/TaskDetailComponent.tsx similarity index 100% rename from src/components/CIPipelineN/TaskDetailComponent.tsx rename to apps/web/src/components/CIPipelineN/TaskDetailComponent.tsx diff --git a/src/components/CIPipelineN/TaskFieldTippyDescription.tsx b/apps/web/src/components/CIPipelineN/TaskFieldTippyDescription.tsx similarity index 100% rename from src/components/CIPipelineN/TaskFieldTippyDescription.tsx rename to apps/web/src/components/CIPipelineN/TaskFieldTippyDescription.tsx diff --git a/src/components/CIPipelineN/TaskList.tsx b/apps/web/src/components/CIPipelineN/TaskList.tsx similarity index 100% rename from src/components/CIPipelineN/TaskList.tsx rename to apps/web/src/components/CIPipelineN/TaskList.tsx diff --git a/src/components/CIPipelineN/TaskTitle.tsx b/apps/web/src/components/CIPipelineN/TaskTitle.tsx similarity index 100% rename from src/components/CIPipelineN/TaskTitle.tsx rename to apps/web/src/components/CIPipelineN/TaskTitle.tsx diff --git a/src/components/CIPipelineN/TaskTypeDetailComponent.tsx b/apps/web/src/components/CIPipelineN/TaskTypeDetailComponent.tsx similarity index 100% rename from src/components/CIPipelineN/TaskTypeDetailComponent.tsx rename to apps/web/src/components/CIPipelineN/TaskTypeDetailComponent.tsx diff --git a/src/components/CIPipelineN/VariableContainer.tsx b/apps/web/src/components/CIPipelineN/VariableContainer.tsx similarity index 100% rename from src/components/CIPipelineN/VariableContainer.tsx rename to apps/web/src/components/CIPipelineN/VariableContainer.tsx diff --git a/src/components/CIPipelineN/ciPipeline.utils.tsx b/apps/web/src/components/CIPipelineN/ciPipeline.utils.tsx similarity index 100% rename from src/components/CIPipelineN/ciPipeline.utils.tsx rename to apps/web/src/components/CIPipelineN/ciPipeline.utils.tsx diff --git a/src/components/CIPipelineN/types.ts b/apps/web/src/components/CIPipelineN/types.ts similarity index 100% rename from src/components/CIPipelineN/types.ts rename to apps/web/src/components/CIPipelineN/types.ts diff --git a/src/components/ClusterNodes/ClusterEvents.tsx b/apps/web/src/components/ClusterNodes/ClusterEvents.tsx similarity index 100% rename from src/components/ClusterNodes/ClusterEvents.tsx rename to apps/web/src/components/ClusterNodes/ClusterEvents.tsx diff --git a/src/components/ClusterNodes/ClusterManifest.tsx b/apps/web/src/components/ClusterNodes/ClusterManifest.tsx similarity index 100% rename from src/components/ClusterNodes/ClusterManifest.tsx rename to apps/web/src/components/ClusterNodes/ClusterManifest.tsx diff --git a/src/components/ClusterNodes/ClusterNodeEmptyStates.tsx b/apps/web/src/components/ClusterNodes/ClusterNodeEmptyStates.tsx similarity index 100% rename from src/components/ClusterNodes/ClusterNodeEmptyStates.tsx rename to apps/web/src/components/ClusterNodes/ClusterNodeEmptyStates.tsx diff --git a/src/components/ClusterNodes/ClusterOverview.tsx b/apps/web/src/components/ClusterNodes/ClusterOverview.tsx similarity index 100% rename from src/components/ClusterNodes/ClusterOverview.tsx rename to apps/web/src/components/ClusterNodes/ClusterOverview.tsx diff --git a/src/components/ClusterNodes/ClusterSelectionList.tsx b/apps/web/src/components/ClusterNodes/ClusterSelectionList.tsx similarity index 100% rename from src/components/ClusterNodes/ClusterSelectionList.tsx rename to apps/web/src/components/ClusterNodes/ClusterSelectionList.tsx diff --git a/src/components/ClusterNodes/ClusterTerminal.tsx b/apps/web/src/components/ClusterNodes/ClusterTerminal.tsx similarity index 100% rename from src/components/ClusterNodes/ClusterTerminal.tsx rename to apps/web/src/components/ClusterNodes/ClusterTerminal.tsx diff --git a/src/components/ClusterNodes/ColumnSelector.tsx b/apps/web/src/components/ClusterNodes/ColumnSelector.tsx similarity index 100% rename from src/components/ClusterNodes/ColumnSelector.tsx rename to apps/web/src/components/ClusterNodes/ColumnSelector.tsx diff --git a/src/components/ClusterNodes/NodeActions/CordonNodeModal.tsx b/apps/web/src/components/ClusterNodes/NodeActions/CordonNodeModal.tsx similarity index 100% rename from src/components/ClusterNodes/NodeActions/CordonNodeModal.tsx rename to apps/web/src/components/ClusterNodes/NodeActions/CordonNodeModal.tsx diff --git a/src/components/ClusterNodes/NodeActions/DeleteNodeModal.tsx b/apps/web/src/components/ClusterNodes/NodeActions/DeleteNodeModal.tsx similarity index 100% rename from src/components/ClusterNodes/NodeActions/DeleteNodeModal.tsx rename to apps/web/src/components/ClusterNodes/NodeActions/DeleteNodeModal.tsx diff --git a/src/components/ClusterNodes/NodeActions/DrainNodeModal.tsx b/apps/web/src/components/ClusterNodes/NodeActions/DrainNodeModal.tsx similarity index 100% rename from src/components/ClusterNodes/NodeActions/DrainNodeModal.tsx rename to apps/web/src/components/ClusterNodes/NodeActions/DrainNodeModal.tsx diff --git a/src/components/ClusterNodes/NodeActions/EditTaintsModal.tsx b/apps/web/src/components/ClusterNodes/NodeActions/EditTaintsModal.tsx similarity index 100% rename from src/components/ClusterNodes/NodeActions/EditTaintsModal.tsx rename to apps/web/src/components/ClusterNodes/NodeActions/EditTaintsModal.tsx diff --git a/src/components/ClusterNodes/NodeActions/NodeActionsMenu.tsx b/apps/web/src/components/ClusterNodes/NodeActions/NodeActionsMenu.tsx similarity index 100% rename from src/components/ClusterNodes/NodeActions/NodeActionsMenu.tsx rename to apps/web/src/components/ClusterNodes/NodeActions/NodeActionsMenu.tsx diff --git a/src/components/ClusterNodes/NodeActions/validationRules.ts b/apps/web/src/components/ClusterNodes/NodeActions/validationRules.ts similarity index 100% rename from src/components/ClusterNodes/NodeActions/validationRules.ts rename to apps/web/src/components/ClusterNodes/NodeActions/validationRules.ts diff --git a/src/components/ClusterNodes/NodeDetails.tsx b/apps/web/src/components/ClusterNodes/NodeDetails.tsx similarity index 100% rename from src/components/ClusterNodes/NodeDetails.tsx rename to apps/web/src/components/ClusterNodes/NodeDetails.tsx diff --git a/src/components/ClusterNodes/NodeDetailsList.tsx b/apps/web/src/components/ClusterNodes/NodeDetailsList.tsx similarity index 100% rename from src/components/ClusterNodes/NodeDetailsList.tsx rename to apps/web/src/components/ClusterNodes/NodeDetailsList.tsx diff --git a/src/components/ClusterNodes/NodeListSearchFilter.tsx b/apps/web/src/components/ClusterNodes/NodeListSearchFilter.tsx similarity index 100% rename from src/components/ClusterNodes/NodeListSearchFilter.tsx rename to apps/web/src/components/ClusterNodes/NodeListSearchFilter.tsx diff --git a/src/components/ClusterNodes/__mocks__/ClusterManifest.mock.ts b/apps/web/src/components/ClusterNodes/__mocks__/ClusterManifest.mock.ts similarity index 100% rename from src/components/ClusterNodes/__mocks__/ClusterManifest.mock.ts rename to apps/web/src/components/ClusterNodes/__mocks__/ClusterManifest.mock.ts diff --git a/src/components/ClusterNodes/__mocks__/clusterAbout.mock.tsx b/apps/web/src/components/ClusterNodes/__mocks__/clusterAbout.mock.tsx similarity index 100% rename from src/components/ClusterNodes/__mocks__/clusterAbout.mock.tsx rename to apps/web/src/components/ClusterNodes/__mocks__/clusterAbout.mock.tsx diff --git a/src/components/ClusterNodes/__tests__/ClusterManifest.test.tsx b/apps/web/src/components/ClusterNodes/__tests__/ClusterManifest.test.tsx similarity index 100% rename from src/components/ClusterNodes/__tests__/ClusterManifest.test.tsx rename to apps/web/src/components/ClusterNodes/__tests__/ClusterManifest.test.tsx diff --git a/src/components/ClusterNodes/__tests__/NodeList.test.tsx b/apps/web/src/components/ClusterNodes/__tests__/NodeList.test.tsx similarity index 100% rename from src/components/ClusterNodes/__tests__/NodeList.test.tsx rename to apps/web/src/components/ClusterNodes/__tests__/NodeList.test.tsx diff --git a/src/components/ClusterNodes/clusterNodes.scss b/apps/web/src/components/ClusterNodes/clusterNodes.scss similarity index 100% rename from src/components/ClusterNodes/clusterNodes.scss rename to apps/web/src/components/ClusterNodes/clusterNodes.scss diff --git a/src/components/ClusterNodes/clusterNodes.service.tsx b/apps/web/src/components/ClusterNodes/clusterNodes.service.tsx similarity index 100% rename from src/components/ClusterNodes/clusterNodes.service.tsx rename to apps/web/src/components/ClusterNodes/clusterNodes.service.tsx diff --git a/src/components/ClusterNodes/constants.ts b/apps/web/src/components/ClusterNodes/constants.ts similarity index 100% rename from src/components/ClusterNodes/constants.ts rename to apps/web/src/components/ClusterNodes/constants.ts diff --git a/src/components/ClusterNodes/types.ts b/apps/web/src/components/ClusterNodes/types.ts similarity index 100% rename from src/components/ClusterNodes/types.ts rename to apps/web/src/components/ClusterNodes/types.ts diff --git a/src/components/Hotjar/Hotjar.tsx b/apps/web/src/components/Hotjar/Hotjar.tsx similarity index 100% rename from src/components/Hotjar/Hotjar.tsx rename to apps/web/src/components/Hotjar/Hotjar.tsx diff --git a/src/components/Jobs/Constants.ts b/apps/web/src/components/Jobs/Constants.ts similarity index 100% rename from src/components/Jobs/Constants.ts rename to apps/web/src/components/Jobs/Constants.ts diff --git a/src/components/Jobs/ExpandedRow/ExpandedRow.scss b/apps/web/src/components/Jobs/ExpandedRow/ExpandedRow.scss similarity index 100% rename from src/components/Jobs/ExpandedRow/ExpandedRow.scss rename to apps/web/src/components/Jobs/ExpandedRow/ExpandedRow.scss diff --git a/src/components/Jobs/ExpandedRow/ExpandedRow.tsx b/apps/web/src/components/Jobs/ExpandedRow/ExpandedRow.tsx similarity index 100% rename from src/components/Jobs/ExpandedRow/ExpandedRow.tsx rename to apps/web/src/components/Jobs/ExpandedRow/ExpandedRow.tsx diff --git a/src/components/Jobs/JobDetails/JobDetails.tsx b/apps/web/src/components/Jobs/JobDetails/JobDetails.tsx similarity index 100% rename from src/components/Jobs/JobDetails/JobDetails.tsx rename to apps/web/src/components/Jobs/JobDetails/JobDetails.tsx diff --git a/src/components/Jobs/JobList/JobListContainer.tsx b/apps/web/src/components/Jobs/JobList/JobListContainer.tsx similarity index 100% rename from src/components/Jobs/JobList/JobListContainer.tsx rename to apps/web/src/components/Jobs/JobList/JobListContainer.tsx diff --git a/src/components/Jobs/JobList/JobListFilters.tsx b/apps/web/src/components/Jobs/JobList/JobListFilters.tsx similarity index 100% rename from src/components/Jobs/JobList/JobListFilters.tsx rename to apps/web/src/components/Jobs/JobList/JobListFilters.tsx diff --git a/src/components/Jobs/JobList/JobListView.tsx b/apps/web/src/components/Jobs/JobList/JobListView.tsx similarity index 100% rename from src/components/Jobs/JobList/JobListView.tsx rename to apps/web/src/components/Jobs/JobList/JobListView.tsx diff --git a/src/components/Jobs/JobList/JobsList.tsx b/apps/web/src/components/Jobs/JobList/JobsList.tsx similarity index 100% rename from src/components/Jobs/JobList/JobsList.tsx rename to apps/web/src/components/Jobs/JobList/JobsList.tsx diff --git a/src/components/Jobs/Jobs.tsx b/apps/web/src/components/Jobs/Jobs.tsx similarity index 100% rename from src/components/Jobs/Jobs.tsx rename to apps/web/src/components/Jobs/Jobs.tsx diff --git a/src/components/Jobs/JobsEmptyState.tsx b/apps/web/src/components/Jobs/JobsEmptyState.tsx similarity index 100% rename from src/components/Jobs/JobsEmptyState.tsx rename to apps/web/src/components/Jobs/JobsEmptyState.tsx diff --git a/src/components/Jobs/Service.ts b/apps/web/src/components/Jobs/Service.ts similarity index 100% rename from src/components/Jobs/Service.ts rename to apps/web/src/components/Jobs/Service.ts diff --git a/src/components/Jobs/Types.ts b/apps/web/src/components/Jobs/Types.ts similarity index 100% rename from src/components/Jobs/Types.ts rename to apps/web/src/components/Jobs/Types.ts diff --git a/src/components/Jobs/Utils.ts b/apps/web/src/components/Jobs/Utils.ts similarity index 100% rename from src/components/Jobs/Utils.ts rename to apps/web/src/components/Jobs/Utils.ts diff --git a/src/components/LogViewer/LogViewer.scss b/apps/web/src/components/LogViewer/LogViewer.scss similarity index 100% rename from src/components/LogViewer/LogViewer.scss rename to apps/web/src/components/LogViewer/LogViewer.scss diff --git a/src/components/LogViewer/LogViewer.tsx b/apps/web/src/components/LogViewer/LogViewer.tsx similarity index 100% rename from src/components/LogViewer/LogViewer.tsx rename to apps/web/src/components/LogViewer/LogViewer.tsx diff --git a/src/components/ResourceBrowser/Constants.ts b/apps/web/src/components/ResourceBrowser/Constants.ts similarity index 100% rename from src/components/ResourceBrowser/Constants.ts rename to apps/web/src/components/ResourceBrowser/Constants.ts diff --git a/src/components/ResourceBrowser/PageHeader.buttons.tsx b/apps/web/src/components/ResourceBrowser/PageHeader.buttons.tsx similarity index 100% rename from src/components/ResourceBrowser/PageHeader.buttons.tsx rename to apps/web/src/components/ResourceBrowser/PageHeader.buttons.tsx diff --git a/src/components/ResourceBrowser/ResourceBrowser.scss b/apps/web/src/components/ResourceBrowser/ResourceBrowser.scss similarity index 100% rename from src/components/ResourceBrowser/ResourceBrowser.scss rename to apps/web/src/components/ResourceBrowser/ResourceBrowser.scss diff --git a/src/components/ResourceBrowser/ResourceBrowser.service.tsx b/apps/web/src/components/ResourceBrowser/ResourceBrowser.service.tsx similarity index 100% rename from src/components/ResourceBrowser/ResourceBrowser.service.tsx rename to apps/web/src/components/ResourceBrowser/ResourceBrowser.service.tsx diff --git a/src/components/ResourceBrowser/ResourceBrowser.tsx b/apps/web/src/components/ResourceBrowser/ResourceBrowser.tsx similarity index 100% rename from src/components/ResourceBrowser/ResourceBrowser.tsx rename to apps/web/src/components/ResourceBrowser/ResourceBrowser.tsx diff --git a/src/components/ResourceBrowser/ResourceBrowserRouter.tsx b/apps/web/src/components/ResourceBrowser/ResourceBrowserRouter.tsx similarity index 100% rename from src/components/ResourceBrowser/ResourceBrowserRouter.tsx rename to apps/web/src/components/ResourceBrowser/ResourceBrowserRouter.tsx diff --git a/src/components/ResourceBrowser/ResourceList/AdminTerminal.tsx b/apps/web/src/components/ResourceBrowser/ResourceList/AdminTerminal.tsx similarity index 100% rename from src/components/ResourceBrowser/ResourceList/AdminTerminal.tsx rename to apps/web/src/components/ResourceBrowser/ResourceList/AdminTerminal.tsx diff --git a/src/components/ResourceBrowser/ResourceList/ClusterSelector.tsx b/apps/web/src/components/ResourceBrowser/ResourceList/ClusterSelector.tsx similarity index 100% rename from src/components/ResourceBrowser/ResourceList/ClusterSelector.tsx rename to apps/web/src/components/ResourceBrowser/ResourceList/ClusterSelector.tsx diff --git a/src/components/ResourceBrowser/ResourceList/ConnectingToClusterState.tsx b/apps/web/src/components/ResourceBrowser/ResourceList/ConnectingToClusterState.tsx similarity index 100% rename from src/components/ResourceBrowser/ResourceList/ConnectingToClusterState.tsx rename to apps/web/src/components/ResourceBrowser/ResourceList/ConnectingToClusterState.tsx diff --git a/src/components/ResourceBrowser/ResourceList/CreateResource.tsx b/apps/web/src/components/ResourceBrowser/ResourceList/CreateResource.tsx similarity index 100% rename from src/components/ResourceBrowser/ResourceList/CreateResource.tsx rename to apps/web/src/components/ResourceBrowser/ResourceList/CreateResource.tsx diff --git a/src/components/ResourceBrowser/ResourceList/DeleteResourcePopup.tsx b/apps/web/src/components/ResourceBrowser/ResourceList/DeleteResourcePopup.tsx similarity index 100% rename from src/components/ResourceBrowser/ResourceList/DeleteResourcePopup.tsx rename to apps/web/src/components/ResourceBrowser/ResourceList/DeleteResourcePopup.tsx diff --git a/src/components/ResourceBrowser/ResourceList/EventList.tsx b/apps/web/src/components/ResourceBrowser/ResourceList/EventList.tsx similarity index 100% rename from src/components/ResourceBrowser/ResourceList/EventList.tsx rename to apps/web/src/components/ResourceBrowser/ResourceList/EventList.tsx diff --git a/src/components/ResourceBrowser/ResourceList/K8SResourceList.tsx b/apps/web/src/components/ResourceBrowser/ResourceList/K8SResourceList.tsx similarity index 100% rename from src/components/ResourceBrowser/ResourceList/K8SResourceList.tsx rename to apps/web/src/components/ResourceBrowser/ResourceList/K8SResourceList.tsx diff --git a/src/components/ResourceBrowser/ResourceList/K8SResourceTabComponent.tsx b/apps/web/src/components/ResourceBrowser/ResourceList/K8SResourceTabComponent.tsx similarity index 100% rename from src/components/ResourceBrowser/ResourceList/K8SResourceTabComponent.tsx rename to apps/web/src/components/ResourceBrowser/ResourceList/K8SResourceTabComponent.tsx diff --git a/src/components/ResourceBrowser/ResourceList/ResourceBrowserActionMenu.tsx b/apps/web/src/components/ResourceBrowser/ResourceList/ResourceBrowserActionMenu.tsx similarity index 100% rename from src/components/ResourceBrowser/ResourceList/ResourceBrowserActionMenu.tsx rename to apps/web/src/components/ResourceBrowser/ResourceList/ResourceBrowserActionMenu.tsx diff --git a/src/components/ResourceBrowser/ResourceList/ResourceFilterOptions.tsx b/apps/web/src/components/ResourceBrowser/ResourceList/ResourceFilterOptions.tsx similarity index 100% rename from src/components/ResourceBrowser/ResourceList/ResourceFilterOptions.tsx rename to apps/web/src/components/ResourceBrowser/ResourceList/ResourceFilterOptions.tsx diff --git a/src/components/ResourceBrowser/ResourceList/ResourceList.component.tsx b/apps/web/src/components/ResourceBrowser/ResourceList/ResourceList.component.tsx similarity index 100% rename from src/components/ResourceBrowser/ResourceList/ResourceList.component.tsx rename to apps/web/src/components/ResourceBrowser/ResourceList/ResourceList.component.tsx diff --git a/src/components/ResourceBrowser/ResourceList/ResourceList.tsx b/apps/web/src/components/ResourceBrowser/ResourceList/ResourceList.tsx similarity index 100% rename from src/components/ResourceBrowser/ResourceList/ResourceList.tsx rename to apps/web/src/components/ResourceBrowser/ResourceList/ResourceList.tsx diff --git a/src/components/ResourceBrowser/ResourceList/ResourceListEmptyState.tsx b/apps/web/src/components/ResourceBrowser/ResourceList/ResourceListEmptyState.tsx similarity index 100% rename from src/components/ResourceBrowser/ResourceList/ResourceListEmptyState.tsx rename to apps/web/src/components/ResourceBrowser/ResourceList/ResourceListEmptyState.tsx diff --git a/src/components/ResourceBrowser/ResourceList/Sidebar.tsx b/apps/web/src/components/ResourceBrowser/ResourceList/Sidebar.tsx similarity index 100% rename from src/components/ResourceBrowser/ResourceList/Sidebar.tsx rename to apps/web/src/components/ResourceBrowser/ResourceList/Sidebar.tsx diff --git a/src/components/ResourceBrowser/ResourceList/__tests__/Sidebar.test.tsx b/apps/web/src/components/ResourceBrowser/ResourceList/__tests__/Sidebar.test.tsx similarity index 100% rename from src/components/ResourceBrowser/ResourceList/__tests__/Sidebar.test.tsx rename to apps/web/src/components/ResourceBrowser/ResourceList/__tests__/Sidebar.test.tsx diff --git a/src/components/ResourceBrowser/ResourceList/index.ts b/apps/web/src/components/ResourceBrowser/ResourceList/index.ts similarity index 100% rename from src/components/ResourceBrowser/ResourceList/index.ts rename to apps/web/src/components/ResourceBrowser/ResourceList/index.ts diff --git a/src/components/ResourceBrowser/Types.ts b/apps/web/src/components/ResourceBrowser/Types.ts similarity index 100% rename from src/components/ResourceBrowser/Types.ts rename to apps/web/src/components/ResourceBrowser/Types.ts diff --git a/src/components/ResourceBrowser/Utils.tsx b/apps/web/src/components/ResourceBrowser/Utils.tsx similarity index 100% rename from src/components/ResourceBrowser/Utils.tsx rename to apps/web/src/components/ResourceBrowser/Utils.tsx diff --git a/src/components/__mocks__/monaco-editor.js b/apps/web/src/components/__mocks__/monaco-editor.js similarity index 100% rename from src/components/__mocks__/monaco-editor.js rename to apps/web/src/components/__mocks__/monaco-editor.js diff --git a/src/components/__mocks__/xterm-webfont.js b/apps/web/src/components/__mocks__/xterm-webfont.js similarity index 100% rename from src/components/__mocks__/xterm-webfont.js rename to apps/web/src/components/__mocks__/xterm-webfont.js diff --git a/src/components/app/LogFilter.test.ts b/apps/web/src/components/app/LogFilter.test.ts similarity index 100% rename from src/components/app/LogFilter.test.ts rename to apps/web/src/components/app/LogFilter.test.ts diff --git a/src/components/app/LogFilter.ts b/apps/web/src/components/app/LogFilter.ts similarity index 100% rename from src/components/app/LogFilter.ts rename to apps/web/src/components/app/LogFilter.ts diff --git a/src/components/app/Overview/EnvironmentList.tsx b/apps/web/src/components/app/Overview/EnvironmentList.tsx similarity index 100% rename from src/components/app/Overview/EnvironmentList.tsx rename to apps/web/src/components/app/Overview/EnvironmentList.tsx diff --git a/src/components/app/Overview/Overview.scss b/apps/web/src/components/app/Overview/Overview.scss similarity index 100% rename from src/components/app/Overview/Overview.scss rename to apps/web/src/components/app/Overview/Overview.scss diff --git a/src/components/app/Overview/Overview.tsx b/apps/web/src/components/app/Overview/Overview.tsx similarity index 100% rename from src/components/app/Overview/Overview.tsx rename to apps/web/src/components/app/Overview/Overview.tsx diff --git a/src/components/app/Overview/TagChipsContainer.tsx b/apps/web/src/components/app/Overview/TagChipsContainer.tsx similarity index 100% rename from src/components/app/Overview/TagChipsContainer.tsx rename to apps/web/src/components/app/Overview/TagChipsContainer.tsx diff --git a/src/components/app/Overview/constants.ts b/apps/web/src/components/app/Overview/constants.ts similarity index 100% rename from src/components/app/Overview/constants.ts rename to apps/web/src/components/app/Overview/constants.ts diff --git a/src/components/app/Overview/utils.tsx b/apps/web/src/components/app/Overview/utils.tsx similarity index 100% rename from src/components/app/Overview/utils.tsx rename to apps/web/src/components/app/Overview/utils.tsx diff --git a/src/components/app/ResourceTreeNodes.tsx b/apps/web/src/components/app/ResourceTreeNodes.tsx similarity index 100% rename from src/components/app/ResourceTreeNodes.tsx rename to apps/web/src/components/app/ResourceTreeNodes.tsx diff --git a/src/components/app/ResponsiveDrawer.tsx b/apps/web/src/components/app/ResponsiveDrawer.tsx similarity index 100% rename from src/components/app/ResponsiveDrawer.tsx rename to apps/web/src/components/app/ResponsiveDrawer.tsx diff --git a/src/components/app/WebWorker.ts b/apps/web/src/components/app/WebWorker.ts similarity index 100% rename from src/components/app/WebWorker.ts rename to apps/web/src/components/app/WebWorker.ts diff --git a/src/components/app/appLabelCommon.tsx b/apps/web/src/components/app/appLabelCommon.tsx similarity index 100% rename from src/components/app/appLabelCommon.tsx rename to apps/web/src/components/app/appLabelCommon.tsx diff --git a/src/components/app/config.tsx b/apps/web/src/components/app/config.tsx similarity index 100% rename from src/components/app/config.tsx rename to apps/web/src/components/app/config.tsx diff --git a/src/components/app/create/CreateApp.tsx b/apps/web/src/components/app/create/CreateApp.tsx similarity index 100% rename from src/components/app/create/CreateApp.tsx rename to apps/web/src/components/app/create/CreateApp.tsx diff --git a/src/components/app/create/createApp.scss b/apps/web/src/components/app/create/createApp.scss similarity index 100% rename from src/components/app/create/createApp.scss rename to apps/web/src/components/app/create/createApp.scss diff --git a/src/components/app/create/service.tsx b/apps/web/src/components/app/create/service.tsx similarity index 100% rename from src/components/app/create/service.tsx rename to apps/web/src/components/app/create/service.tsx diff --git a/src/components/app/create/validationRules.ts b/apps/web/src/components/app/create/validationRules.ts similarity index 100% rename from src/components/app/create/validationRules.ts rename to apps/web/src/components/app/create/validationRules.ts diff --git a/src/components/app/details/AboutAppInfoModal.tsx b/apps/web/src/components/app/details/AboutAppInfoModal.tsx similarity index 100% rename from src/components/app/details/AboutAppInfoModal.tsx rename to apps/web/src/components/app/details/AboutAppInfoModal.tsx diff --git a/src/components/app/details/AboutTagEditModal.tsx b/apps/web/src/components/app/details/AboutTagEditModal.tsx similarity index 100% rename from src/components/app/details/AboutTagEditModal.tsx rename to apps/web/src/components/app/details/AboutTagEditModal.tsx diff --git a/src/components/app/details/AppHeader.tsx b/apps/web/src/components/app/details/AppHeader.tsx similarity index 100% rename from src/components/app/details/AppHeader.tsx rename to apps/web/src/components/app/details/AppHeader.tsx diff --git a/src/components/app/details/app.scss b/apps/web/src/components/app/details/app.scss similarity index 100% rename from src/components/app/details/app.scss rename to apps/web/src/components/app/details/app.scss diff --git a/src/components/app/details/appConfig/constants.ts b/apps/web/src/components/app/details/appConfig/constants.ts similarity index 100% rename from src/components/app/details/appConfig/constants.ts rename to apps/web/src/components/app/details/appConfig/constants.ts diff --git a/src/components/app/details/appDetails/AppDetails.tsx b/apps/web/src/components/app/details/appDetails/AppDetails.tsx similarity index 100% rename from src/components/app/details/appDetails/AppDetails.tsx rename to apps/web/src/components/app/details/appDetails/AppDetails.tsx diff --git a/src/components/app/details/appDetails/AppDetailsCDButton.tsx b/apps/web/src/components/app/details/appDetails/AppDetailsCDButton.tsx similarity index 100% rename from src/components/app/details/appDetails/AppDetailsCDButton.tsx rename to apps/web/src/components/app/details/appDetails/AppDetailsCDButton.tsx diff --git a/src/components/app/details/appDetails/AppMetrics.tsx b/apps/web/src/components/app/details/appDetails/AppMetrics.tsx similarity index 100% rename from src/components/app/details/appDetails/AppMetrics.tsx rename to apps/web/src/components/app/details/appDetails/AppMetrics.tsx diff --git a/src/components/app/details/appDetails/AppSecurity.tsx b/apps/web/src/components/app/details/appDetails/AppSecurity.tsx similarity index 100% rename from src/components/app/details/appDetails/AppSecurity.tsx rename to apps/web/src/components/app/details/appDetails/AppSecurity.tsx diff --git a/src/components/app/details/appDetails/AppStatusCard.tsx b/apps/web/src/components/app/details/appDetails/AppStatusCard.tsx similarity index 100% rename from src/components/app/details/appDetails/AppStatusCard.tsx rename to apps/web/src/components/app/details/appDetails/AppStatusCard.tsx diff --git a/src/components/app/details/appDetails/DeployedCommitCard.tsx b/apps/web/src/components/app/details/appDetails/DeployedCommitCard.tsx similarity index 100% rename from src/components/app/details/appDetails/DeployedCommitCard.tsx rename to apps/web/src/components/app/details/appDetails/DeployedCommitCard.tsx diff --git a/src/components/app/details/appDetails/DeploymentStatusCard.tsx b/apps/web/src/components/app/details/appDetails/DeploymentStatusCard.tsx similarity index 100% rename from src/components/app/details/appDetails/DeploymentStatusCard.tsx rename to apps/web/src/components/app/details/appDetails/DeploymentStatusCard.tsx diff --git a/src/components/app/details/appDetails/DeploymentStatusDetailModal.tsx b/apps/web/src/components/app/details/appDetails/DeploymentStatusDetailModal.tsx similarity index 100% rename from src/components/app/details/appDetails/DeploymentStatusDetailModal.tsx rename to apps/web/src/components/app/details/appDetails/DeploymentStatusDetailModal.tsx diff --git a/src/components/app/details/appDetails/GraphsModal.tsx b/apps/web/src/components/app/details/appDetails/GraphsModal.tsx similarity index 100% rename from src/components/app/details/appDetails/GraphsModal.tsx rename to apps/web/src/components/app/details/appDetails/GraphsModal.tsx diff --git a/src/components/app/details/appDetails/IssuesCard.tsx b/apps/web/src/components/app/details/appDetails/IssuesCard.tsx similarity index 100% rename from src/components/app/details/appDetails/IssuesCard.tsx rename to apps/web/src/components/app/details/appDetails/IssuesCard.tsx diff --git a/src/components/app/details/appDetails/IssuesListingModal.tsx b/apps/web/src/components/app/details/appDetails/IssuesListingModal.tsx similarity index 100% rename from src/components/app/details/appDetails/IssuesListingModal.tsx rename to apps/web/src/components/app/details/appDetails/IssuesListingModal.tsx diff --git a/src/components/app/details/appDetails/LastUpdatedCard.tsx b/apps/web/src/components/app/details/appDetails/LastUpdatedCard.tsx similarity index 100% rename from src/components/app/details/appDetails/LastUpdatedCard.tsx rename to apps/web/src/components/app/details/appDetails/LastUpdatedCard.tsx diff --git a/src/components/app/details/appDetails/LoadingCard.tsx b/apps/web/src/components/app/details/appDetails/LoadingCard.tsx similarity index 100% rename from src/components/app/details/appDetails/LoadingCard.tsx rename to apps/web/src/components/app/details/appDetails/LoadingCard.tsx diff --git a/src/components/app/details/appDetails/Readme.md b/apps/web/src/components/app/details/appDetails/Readme.md similarity index 100% rename from src/components/app/details/appDetails/Readme.md rename to apps/web/src/components/app/details/appDetails/Readme.md diff --git a/src/components/app/details/appDetails/SecurityVulnerabilityCard.tsx b/apps/web/src/components/app/details/appDetails/SecurityVulnerabilityCard.tsx similarity index 100% rename from src/components/app/details/appDetails/SecurityVulnerabilityCard.tsx rename to apps/web/src/components/app/details/appDetails/SecurityVulnerabilityCard.tsx diff --git a/src/components/app/details/appDetails/SourceInfo.tsx b/apps/web/src/components/app/details/appDetails/SourceInfo.tsx similarity index 100% rename from src/components/app/details/appDetails/SourceInfo.tsx rename to apps/web/src/components/app/details/appDetails/SourceInfo.tsx diff --git a/src/components/app/details/appDetails/__mocks__/appDetails.mock.ts b/apps/web/src/components/app/details/appDetails/__mocks__/appDetails.mock.ts similarity index 100% rename from src/components/app/details/appDetails/__mocks__/appDetails.mock.ts rename to apps/web/src/components/app/details/appDetails/__mocks__/appDetails.mock.ts diff --git a/src/components/app/details/appDetails/__tests__/GenericInfo.test.tsx b/apps/web/src/components/app/details/appDetails/__tests__/GenericInfo.test.tsx similarity index 100% rename from src/components/app/details/appDetails/__tests__/GenericInfo.test.tsx rename to apps/web/src/components/app/details/appDetails/__tests__/GenericInfo.test.tsx diff --git a/src/components/app/details/appDetails/appDetails.scss b/apps/web/src/components/app/details/appDetails/appDetails.scss similarity index 100% rename from src/components/app/details/appDetails/appDetails.scss rename to apps/web/src/components/app/details/appDetails/appDetails.scss diff --git a/src/components/app/details/appDetails/appDetails.service.ts b/apps/web/src/components/app/details/appDetails/appDetails.service.ts similarity index 100% rename from src/components/app/details/appDetails/appDetails.service.ts rename to apps/web/src/components/app/details/appDetails/appDetails.service.ts diff --git a/src/components/app/details/appDetails/appDetails.type.ts b/apps/web/src/components/app/details/appDetails/appDetails.type.ts similarity index 100% rename from src/components/app/details/appDetails/appDetails.type.ts rename to apps/web/src/components/app/details/appDetails/appDetails.type.ts diff --git a/src/components/app/details/appDetails/index.tsx b/apps/web/src/components/app/details/appDetails/index.tsx similarity index 100% rename from src/components/app/details/appDetails/index.tsx rename to apps/web/src/components/app/details/appDetails/index.tsx diff --git a/src/components/app/details/appDetails/utils.tsx b/apps/web/src/components/app/details/appDetails/utils.tsx similarity index 100% rename from src/components/app/details/appDetails/utils.tsx rename to apps/web/src/components/app/details/appDetails/utils.tsx diff --git a/src/components/app/details/cIDetails/CIDetails.tsx b/apps/web/src/components/app/details/cIDetails/CIDetails.tsx similarity index 100% rename from src/components/app/details/cIDetails/CIDetails.tsx rename to apps/web/src/components/app/details/cIDetails/CIDetails.tsx diff --git a/src/components/app/details/cIDetails/CISecurity.utils.tsx b/apps/web/src/components/app/details/cIDetails/CISecurity.utils.tsx similarity index 100% rename from src/components/app/details/cIDetails/CISecurity.utils.tsx rename to apps/web/src/components/app/details/cIDetails/CISecurity.utils.tsx diff --git a/src/components/app/details/cIDetails/Readme.md b/apps/web/src/components/app/details/cIDetails/Readme.md similarity index 100% rename from src/components/app/details/cIDetails/Readme.md rename to apps/web/src/components/app/details/cIDetails/Readme.md diff --git a/src/components/app/details/cIDetails/cIDetails.util.tsx b/apps/web/src/components/app/details/cIDetails/cIDetails.util.tsx similarity index 100% rename from src/components/app/details/cIDetails/cIDetails.util.tsx rename to apps/web/src/components/app/details/cIDetails/cIDetails.util.tsx diff --git a/src/components/app/details/cIDetails/ciDetails.scss b/apps/web/src/components/app/details/cIDetails/ciDetails.scss similarity index 100% rename from src/components/app/details/cIDetails/ciDetails.scss rename to apps/web/src/components/app/details/cIDetails/ciDetails.scss diff --git a/src/components/app/details/cIDetails/types.tsx b/apps/web/src/components/app/details/cIDetails/types.tsx similarity index 100% rename from src/components/app/details/cIDetails/types.tsx rename to apps/web/src/components/app/details/cIDetails/types.tsx diff --git a/src/components/app/details/cdDetails/CDDetails.tsx b/apps/web/src/components/app/details/cdDetails/CDDetails.tsx similarity index 100% rename from src/components/app/details/cdDetails/CDDetails.tsx rename to apps/web/src/components/app/details/cdDetails/CDDetails.tsx diff --git a/src/components/app/details/cdDetails/cd.type.ts b/apps/web/src/components/app/details/cdDetails/cd.type.ts similarity index 100% rename from src/components/app/details/cdDetails/cd.type.ts rename to apps/web/src/components/app/details/cdDetails/cd.type.ts diff --git a/src/components/app/details/cdDetails/cdDetail.scss b/apps/web/src/components/app/details/cdDetails/cdDetail.scss similarity index 100% rename from src/components/app/details/cdDetails/cdDetail.scss rename to apps/web/src/components/app/details/cdDetails/cdDetail.scss diff --git a/src/components/app/details/cdDetails/service.ts b/apps/web/src/components/app/details/cdDetails/service.ts similarity index 100% rename from src/components/app/details/cdDetails/service.ts rename to apps/web/src/components/app/details/cdDetails/service.ts diff --git a/src/components/app/details/cdDetails/utils.tsx b/apps/web/src/components/app/details/cdDetails/utils.tsx similarity index 100% rename from src/components/app/details/cdDetails/utils.tsx rename to apps/web/src/components/app/details/cdDetails/utils.tsx diff --git a/src/components/app/details/cicdHistory/History.components.tsx b/apps/web/src/components/app/details/cicdHistory/History.components.tsx similarity index 100% rename from src/components/app/details/cicdHistory/History.components.tsx rename to apps/web/src/components/app/details/cicdHistory/History.components.tsx diff --git a/src/components/app/details/cicdHistory/types.tsx b/apps/web/src/components/app/details/cicdHistory/types.tsx similarity index 100% rename from src/components/app/details/cicdHistory/types.tsx rename to apps/web/src/components/app/details/cicdHistory/types.tsx diff --git a/src/components/app/details/main.tsx b/apps/web/src/components/app/details/main.tsx similarity index 100% rename from src/components/app/details/main.tsx rename to apps/web/src/components/app/details/main.tsx diff --git a/src/components/app/details/metrics/BenchmarkModal.tsx b/apps/web/src/components/app/details/metrics/BenchmarkModal.tsx similarity index 100% rename from src/components/app/details/metrics/BenchmarkModal.tsx rename to apps/web/src/components/app/details/metrics/BenchmarkModal.tsx diff --git a/src/components/app/details/metrics/DeploymentMetrics.tsx b/apps/web/src/components/app/details/metrics/DeploymentMetrics.tsx similarity index 100% rename from src/components/app/details/metrics/DeploymentMetrics.tsx rename to apps/web/src/components/app/details/metrics/DeploymentMetrics.tsx diff --git a/src/components/app/details/metrics/DeploymentTable.tsx b/apps/web/src/components/app/details/metrics/DeploymentTable.tsx similarity index 100% rename from src/components/app/details/metrics/DeploymentTable.tsx rename to apps/web/src/components/app/details/metrics/DeploymentTable.tsx diff --git a/src/components/app/details/metrics/DeploymentTableModal.tsx b/apps/web/src/components/app/details/metrics/DeploymentTableModal.tsx similarity index 100% rename from src/components/app/details/metrics/DeploymentTableModal.tsx rename to apps/web/src/components/app/details/metrics/DeploymentTableModal.tsx diff --git a/src/components/app/details/metrics/deploymentMetrics.data.json b/apps/web/src/components/app/details/metrics/deploymentMetrics.data.json similarity index 100% rename from src/components/app/details/metrics/deploymentMetrics.data.json rename to apps/web/src/components/app/details/metrics/deploymentMetrics.data.json diff --git a/src/components/app/details/metrics/deploymentMetrics.scss b/apps/web/src/components/app/details/metrics/deploymentMetrics.scss similarity index 100% rename from src/components/app/details/metrics/deploymentMetrics.scss rename to apps/web/src/components/app/details/metrics/deploymentMetrics.scss diff --git a/src/components/app/details/metrics/deploymentMetrics.service.ts b/apps/web/src/components/app/details/metrics/deploymentMetrics.service.ts similarity index 100% rename from src/components/app/details/metrics/deploymentMetrics.service.ts rename to apps/web/src/components/app/details/metrics/deploymentMetrics.service.ts diff --git a/src/components/app/details/metrics/deploymentMetrics.test.ts b/apps/web/src/components/app/details/metrics/deploymentMetrics.test.ts similarity index 100% rename from src/components/app/details/metrics/deploymentMetrics.test.ts rename to apps/web/src/components/app/details/metrics/deploymentMetrics.test.ts diff --git a/src/components/app/details/metrics/deploymentMetrics.types.ts b/apps/web/src/components/app/details/metrics/deploymentMetrics.types.ts similarity index 100% rename from src/components/app/details/metrics/deploymentMetrics.types.ts rename to apps/web/src/components/app/details/metrics/deploymentMetrics.types.ts diff --git a/src/components/app/details/metrics/deploymentMetrics.util.tsx b/apps/web/src/components/app/details/metrics/deploymentMetrics.util.tsx similarity index 100% rename from src/components/app/details/metrics/deploymentMetrics.util.tsx rename to apps/web/src/components/app/details/metrics/deploymentMetrics.util.tsx diff --git a/src/components/app/details/testViewer/Contributing.md b/apps/web/src/components/app/details/testViewer/Contributing.md similarity index 100% rename from src/components/app/details/testViewer/Contributing.md rename to apps/web/src/components/app/details/testViewer/Contributing.md diff --git a/src/components/app/details/testViewer/List.tsx b/apps/web/src/components/app/details/testViewer/List.tsx similarity index 100% rename from src/components/app/details/testViewer/List.tsx rename to apps/web/src/components/app/details/testViewer/List.tsx diff --git a/src/components/app/details/testViewer/Test.types.ts b/apps/web/src/components/app/details/testViewer/Test.types.ts similarity index 100% rename from src/components/app/details/testViewer/Test.types.ts rename to apps/web/src/components/app/details/testViewer/Test.types.ts diff --git a/src/components/app/details/testViewer/TestRunDetails.scss b/apps/web/src/components/app/details/testViewer/TestRunDetails.scss similarity index 100% rename from src/components/app/details/testViewer/TestRunDetails.scss rename to apps/web/src/components/app/details/testViewer/TestRunDetails.scss diff --git a/src/components/app/details/testViewer/TestRunDetails.tsx b/apps/web/src/components/app/details/testViewer/TestRunDetails.tsx similarity index 100% rename from src/components/app/details/testViewer/TestRunDetails.tsx rename to apps/web/src/components/app/details/testViewer/TestRunDetails.tsx diff --git a/src/components/app/details/testViewer/TestRunList.tsx b/apps/web/src/components/app/details/testViewer/TestRunList.tsx similarity index 100% rename from src/components/app/details/testViewer/TestRunList.tsx rename to apps/web/src/components/app/details/testViewer/TestRunList.tsx diff --git a/src/components/app/details/testViewer/service.ts b/apps/web/src/components/app/details/testViewer/service.ts similarity index 100% rename from src/components/app/details/testViewer/service.ts rename to apps/web/src/components/app/details/testViewer/service.ts diff --git a/src/components/app/details/triggerView/BranchRegexModal.tsx b/apps/web/src/components/app/details/triggerView/BranchRegexModal.tsx similarity index 100% rename from src/components/app/details/triggerView/BranchRegexModal.tsx rename to apps/web/src/components/app/details/triggerView/BranchRegexModal.tsx diff --git a/src/components/app/details/triggerView/CIMaterialModal.tsx b/apps/web/src/components/app/details/triggerView/CIMaterialModal.tsx similarity index 100% rename from src/components/app/details/triggerView/CIMaterialModal.tsx rename to apps/web/src/components/app/details/triggerView/CIMaterialModal.tsx diff --git a/src/components/app/details/triggerView/CiWebhookDebuggingModal.tsx b/apps/web/src/components/app/details/triggerView/CiWebhookDebuggingModal.tsx similarity index 100% rename from src/components/app/details/triggerView/CiWebhookDebuggingModal.tsx rename to apps/web/src/components/app/details/triggerView/CiWebhookDebuggingModal.tsx diff --git a/src/components/app/details/triggerView/Constants.ts b/apps/web/src/components/app/details/triggerView/Constants.ts similarity index 100% rename from src/components/app/details/triggerView/Constants.ts rename to apps/web/src/components/app/details/triggerView/Constants.ts diff --git a/src/components/app/details/triggerView/EmptyStateCIMaterial.tsx b/apps/web/src/components/app/details/triggerView/EmptyStateCIMaterial.tsx similarity index 100% rename from src/components/app/details/triggerView/EmptyStateCIMaterial.tsx rename to apps/web/src/components/app/details/triggerView/EmptyStateCIMaterial.tsx diff --git a/src/components/app/details/triggerView/MaterialSource.tsx b/apps/web/src/components/app/details/triggerView/MaterialSource.tsx similarity index 100% rename from src/components/app/details/triggerView/MaterialSource.tsx rename to apps/web/src/components/app/details/triggerView/MaterialSource.tsx diff --git a/src/components/app/details/triggerView/PipelineConfigDiff/PipelineConfigDiff.scss b/apps/web/src/components/app/details/triggerView/PipelineConfigDiff/PipelineConfigDiff.scss similarity index 100% rename from src/components/app/details/triggerView/PipelineConfigDiff/PipelineConfigDiff.scss rename to apps/web/src/components/app/details/triggerView/PipelineConfigDiff/PipelineConfigDiff.scss diff --git a/src/components/app/details/triggerView/PipelineConfigDiff/PipelineConfigDiff.tsx b/apps/web/src/components/app/details/triggerView/PipelineConfigDiff/PipelineConfigDiff.tsx similarity index 100% rename from src/components/app/details/triggerView/PipelineConfigDiff/PipelineConfigDiff.tsx rename to apps/web/src/components/app/details/triggerView/PipelineConfigDiff/PipelineConfigDiff.tsx diff --git a/src/components/app/details/triggerView/PipelineConfigDiff/PipelineConfigDiffStatusTile.tsx b/apps/web/src/components/app/details/triggerView/PipelineConfigDiff/PipelineConfigDiffStatusTile.tsx similarity index 100% rename from src/components/app/details/triggerView/PipelineConfigDiff/PipelineConfigDiffStatusTile.tsx rename to apps/web/src/components/app/details/triggerView/PipelineConfigDiff/PipelineConfigDiffStatusTile.tsx diff --git a/src/components/app/details/triggerView/PipelineConfigDiff/index.ts b/apps/web/src/components/app/details/triggerView/PipelineConfigDiff/index.ts similarity index 100% rename from src/components/app/details/triggerView/PipelineConfigDiff/index.ts rename to apps/web/src/components/app/details/triggerView/PipelineConfigDiff/index.ts diff --git a/src/components/app/details/triggerView/PipelineConfigDiff/types.ts b/apps/web/src/components/app/details/triggerView/PipelineConfigDiff/types.ts similarity index 100% rename from src/components/app/details/triggerView/PipelineConfigDiff/types.ts rename to apps/web/src/components/app/details/triggerView/PipelineConfigDiff/types.ts diff --git a/src/components/app/details/triggerView/PipelineConfigDiff/usePipelineDeploymentConfig.ts b/apps/web/src/components/app/details/triggerView/PipelineConfigDiff/usePipelineDeploymentConfig.ts similarity index 100% rename from src/components/app/details/triggerView/PipelineConfigDiff/usePipelineDeploymentConfig.ts rename to apps/web/src/components/app/details/triggerView/PipelineConfigDiff/usePipelineDeploymentConfig.ts diff --git a/src/components/app/details/triggerView/PipelineConfigDiff/utils.tsx b/apps/web/src/components/app/details/triggerView/PipelineConfigDiff/utils.tsx similarity index 100% rename from src/components/app/details/triggerView/PipelineConfigDiff/utils.tsx rename to apps/web/src/components/app/details/triggerView/PipelineConfigDiff/utils.tsx diff --git a/src/components/app/details/triggerView/TriggerView.tsx b/apps/web/src/components/app/details/triggerView/TriggerView.tsx similarity index 100% rename from src/components/app/details/triggerView/TriggerView.tsx rename to apps/web/src/components/app/details/triggerView/TriggerView.tsx diff --git a/src/components/app/details/triggerView/TriggerView.utils.tsx b/apps/web/src/components/app/details/triggerView/TriggerView.utils.tsx similarity index 100% rename from src/components/app/details/triggerView/TriggerView.utils.tsx rename to apps/web/src/components/app/details/triggerView/TriggerView.utils.tsx diff --git a/src/components/app/details/triggerView/__mocks__/trigger.view.mock.ts b/apps/web/src/components/app/details/triggerView/__mocks__/trigger.view.mock.ts similarity index 100% rename from src/components/app/details/triggerView/__mocks__/trigger.view.mock.ts rename to apps/web/src/components/app/details/triggerView/__mocks__/trigger.view.mock.ts diff --git a/src/components/app/details/triggerView/__mocks__/workflow.mock.ts b/apps/web/src/components/app/details/triggerView/__mocks__/workflow.mock.ts similarity index 100% rename from src/components/app/details/triggerView/__mocks__/workflow.mock.ts rename to apps/web/src/components/app/details/triggerView/__mocks__/workflow.mock.ts diff --git a/src/components/app/details/triggerView/__mocks__/workflow.sequential.mock.ts b/apps/web/src/components/app/details/triggerView/__mocks__/workflow.sequential.mock.ts similarity index 100% rename from src/components/app/details/triggerView/__mocks__/workflow.sequential.mock.ts rename to apps/web/src/components/app/details/triggerView/__mocks__/workflow.sequential.mock.ts diff --git a/src/components/app/details/triggerView/__tests__/triggerview.test.tsx b/apps/web/src/components/app/details/triggerView/__tests__/triggerview.test.tsx similarity index 100% rename from src/components/app/details/triggerView/__tests__/triggerview.test.tsx rename to apps/web/src/components/app/details/triggerView/__tests__/triggerview.test.tsx diff --git a/src/components/app/details/triggerView/__tests__/workflow.service.test.ts b/apps/web/src/components/app/details/triggerView/__tests__/workflow.service.test.ts similarity index 100% rename from src/components/app/details/triggerView/__tests__/workflow.service.test.ts rename to apps/web/src/components/app/details/triggerView/__tests__/workflow.service.test.ts diff --git a/src/components/app/details/triggerView/assets/cdMaterialFooter.png b/apps/web/src/components/app/details/triggerView/assets/cdMaterialFooter.png similarity index 100% rename from src/components/app/details/triggerView/assets/cdMaterialFooter.png rename to apps/web/src/components/app/details/triggerView/assets/cdMaterialFooter.png diff --git a/src/components/app/details/triggerView/assets/configDiff.png b/apps/web/src/components/app/details/triggerView/assets/configDiff.png similarity index 100% rename from src/components/app/details/triggerView/assets/configDiff.png rename to apps/web/src/components/app/details/triggerView/assets/configDiff.png diff --git a/src/components/app/details/triggerView/assets/configHeader.png b/apps/web/src/components/app/details/triggerView/assets/configHeader.png similarity index 100% rename from src/components/app/details/triggerView/assets/configHeader.png rename to apps/web/src/components/app/details/triggerView/assets/configHeader.png diff --git a/src/components/app/details/triggerView/cdMaterial.readme.md b/apps/web/src/components/app/details/triggerView/cdMaterial.readme.md similarity index 100% rename from src/components/app/details/triggerView/cdMaterial.readme.md rename to apps/web/src/components/app/details/triggerView/cdMaterial.readme.md diff --git a/src/components/app/details/triggerView/cdMaterial.tsx b/apps/web/src/components/app/details/triggerView/cdMaterial.tsx similarity index 100% rename from src/components/app/details/triggerView/cdMaterial.tsx rename to apps/web/src/components/app/details/triggerView/cdMaterial.tsx diff --git a/src/components/app/details/triggerView/cdMaterials.utils.ts b/apps/web/src/components/app/details/triggerView/cdMaterials.utils.ts similarity index 100% rename from src/components/app/details/triggerView/cdMaterials.utils.ts rename to apps/web/src/components/app/details/triggerView/cdMaterials.utils.ts diff --git a/src/components/app/details/triggerView/ciMaterial.tsx b/apps/web/src/components/app/details/triggerView/ciMaterial.tsx similarity index 100% rename from src/components/app/details/triggerView/ciMaterial.tsx rename to apps/web/src/components/app/details/triggerView/ciMaterial.tsx diff --git a/src/components/app/details/triggerView/ciWebhook.service.ts b/apps/web/src/components/app/details/triggerView/ciWebhook.service.ts similarity index 100% rename from src/components/app/details/triggerView/ciWebhook.service.ts rename to apps/web/src/components/app/details/triggerView/ciWebhook.service.ts diff --git a/src/components/app/details/triggerView/ciWebhookModal.css b/apps/web/src/components/app/details/triggerView/ciWebhookModal.css similarity index 100% rename from src/components/app/details/triggerView/ciWebhookModal.css rename to apps/web/src/components/app/details/triggerView/ciWebhookModal.css diff --git a/src/components/app/details/triggerView/config.ts b/apps/web/src/components/app/details/triggerView/config.ts similarity index 100% rename from src/components/app/details/triggerView/config.ts rename to apps/web/src/components/app/details/triggerView/config.ts diff --git a/src/components/app/details/triggerView/types.ts b/apps/web/src/components/app/details/triggerView/types.ts similarity index 100% rename from src/components/app/details/triggerView/types.ts rename to apps/web/src/components/app/details/triggerView/types.ts diff --git a/src/components/app/details/triggerView/workflow.service.ts b/apps/web/src/components/app/details/triggerView/workflow.service.ts similarity index 100% rename from src/components/app/details/triggerView/workflow.service.ts rename to apps/web/src/components/app/details/triggerView/workflow.service.ts diff --git a/src/components/app/details/triggerView/workflow/Workflow.tsx b/apps/web/src/components/app/details/triggerView/workflow/Workflow.tsx similarity index 100% rename from src/components/app/details/triggerView/workflow/Workflow.tsx rename to apps/web/src/components/app/details/triggerView/workflow/Workflow.tsx diff --git a/src/components/app/details/triggerView/workflow/nodes/TriggerExternalCINode.tsx b/apps/web/src/components/app/details/triggerView/workflow/nodes/TriggerExternalCINode.tsx similarity index 100% rename from src/components/app/details/triggerView/workflow/nodes/TriggerExternalCINode.tsx rename to apps/web/src/components/app/details/triggerView/workflow/nodes/TriggerExternalCINode.tsx diff --git a/src/components/app/details/triggerView/workflow/nodes/TriggerLinkedCINode.tsx b/apps/web/src/components/app/details/triggerView/workflow/nodes/TriggerLinkedCINode.tsx similarity index 100% rename from src/components/app/details/triggerView/workflow/nodes/TriggerLinkedCINode.tsx rename to apps/web/src/components/app/details/triggerView/workflow/nodes/TriggerLinkedCINode.tsx diff --git a/src/components/app/details/triggerView/workflow/nodes/staticNode.tsx b/apps/web/src/components/app/details/triggerView/workflow/nodes/staticNode.tsx similarity index 100% rename from src/components/app/details/triggerView/workflow/nodes/staticNode.tsx rename to apps/web/src/components/app/details/triggerView/workflow/nodes/staticNode.tsx diff --git a/src/components/app/details/triggerView/workflow/nodes/triggerCDNode.tsx b/apps/web/src/components/app/details/triggerView/workflow/nodes/triggerCDNode.tsx similarity index 100% rename from src/components/app/details/triggerView/workflow/nodes/triggerCDNode.tsx rename to apps/web/src/components/app/details/triggerView/workflow/nodes/triggerCDNode.tsx diff --git a/src/components/app/details/triggerView/workflow/nodes/triggerCINode.tsx b/apps/web/src/components/app/details/triggerView/workflow/nodes/triggerCINode.tsx similarity index 100% rename from src/components/app/details/triggerView/workflow/nodes/triggerCINode.tsx rename to apps/web/src/components/app/details/triggerView/workflow/nodes/triggerCINode.tsx diff --git a/src/components/app/details/triggerView/workflow/nodes/triggerPrePostCDNode.tsx b/apps/web/src/components/app/details/triggerView/workflow/nodes/triggerPrePostCDNode.tsx similarity index 100% rename from src/components/app/details/triggerView/workflow/nodes/triggerPrePostCDNode.tsx rename to apps/web/src/components/app/details/triggerView/workflow/nodes/triggerPrePostCDNode.tsx diff --git a/src/components/app/details/triggerView/workflow/nodes/workflow.utils.tsx b/apps/web/src/components/app/details/triggerView/workflow/nodes/workflow.utils.tsx similarity index 100% rename from src/components/app/details/triggerView/workflow/nodes/workflow.utils.tsx rename to apps/web/src/components/app/details/triggerView/workflow/nodes/workflow.utils.tsx diff --git a/src/components/app/grepSSEworker.ts b/apps/web/src/components/app/grepSSEworker.ts similarity index 100% rename from src/components/app/grepSSEworker.ts rename to apps/web/src/components/app/grepSSEworker.ts diff --git a/src/components/app/list-new/AppList.tsx b/apps/web/src/components/app/list-new/AppList.tsx similarity index 100% rename from src/components/app/list-new/AppList.tsx rename to apps/web/src/components/app/list-new/AppList.tsx diff --git a/src/components/app/list-new/AppListFilters.tsx b/apps/web/src/components/app/list-new/AppListFilters.tsx similarity index 100% rename from src/components/app/list-new/AppListFilters.tsx rename to apps/web/src/components/app/list-new/AppListFilters.tsx diff --git a/src/components/app/list-new/AppListService.ts b/apps/web/src/components/app/list-new/AppListService.ts similarity index 100% rename from src/components/app/list-new/AppListService.ts rename to apps/web/src/components/app/list-new/AppListService.ts diff --git a/src/components/app/list-new/AppListType.ts b/apps/web/src/components/app/list-new/AppListType.ts similarity index 100% rename from src/components/app/list-new/AppListType.ts rename to apps/web/src/components/app/list-new/AppListType.ts diff --git a/src/components/app/list-new/Constants.ts b/apps/web/src/components/app/list-new/Constants.ts similarity index 100% rename from src/components/app/list-new/Constants.ts rename to apps/web/src/components/app/list-new/Constants.ts diff --git a/src/components/app/list-new/GenericAppList.tsx b/apps/web/src/components/app/list-new/GenericAppList.tsx similarity index 100% rename from src/components/app/list-new/GenericAppList.tsx rename to apps/web/src/components/app/list-new/GenericAppList.tsx diff --git a/src/components/app/list-new/HelmAppList.tsx b/apps/web/src/components/app/list-new/HelmAppList.tsx similarity index 100% rename from src/components/app/list-new/HelmAppList.tsx rename to apps/web/src/components/app/list-new/HelmAppList.tsx diff --git a/src/components/app/list-new/list.utils.ts b/apps/web/src/components/app/list-new/list.utils.ts similarity index 100% rename from src/components/app/list-new/list.utils.ts rename to apps/web/src/components/app/list-new/list.utils.ts diff --git a/src/components/app/list/DevtronAppListContainer.tsx b/apps/web/src/components/app/list/DevtronAppListContainer.tsx similarity index 100% rename from src/components/app/list/DevtronAppListContainer.tsx rename to apps/web/src/components/app/list/DevtronAppListContainer.tsx diff --git a/src/components/app/list/TriggerUrl.tsx b/apps/web/src/components/app/list/TriggerUrl.tsx similarity index 100% rename from src/components/app/list/TriggerUrl.tsx rename to apps/web/src/components/app/list/TriggerUrl.tsx diff --git a/src/components/app/list/appList.modal.ts b/apps/web/src/components/app/list/appList.modal.ts similarity index 100% rename from src/components/app/list/appList.modal.ts rename to apps/web/src/components/app/list/appList.modal.ts diff --git a/src/components/app/list/constants.tsx b/apps/web/src/components/app/list/constants.tsx similarity index 100% rename from src/components/app/list/constants.tsx rename to apps/web/src/components/app/list/constants.tsx diff --git a/src/components/app/list/emptyView/Empty.tsx b/apps/web/src/components/app/list/emptyView/Empty.tsx similarity index 100% rename from src/components/app/list/emptyView/Empty.tsx rename to apps/web/src/components/app/list/emptyView/Empty.tsx diff --git a/src/components/app/list/emptyView/types.tsx b/apps/web/src/components/app/list/emptyView/types.tsx similarity index 100% rename from src/components/app/list/emptyView/types.tsx rename to apps/web/src/components/app/list/emptyView/types.tsx diff --git a/src/components/app/list/expandedRow/ExpandedRow.tsx b/apps/web/src/components/app/list/expandedRow/ExpandedRow.tsx similarity index 100% rename from src/components/app/list/expandedRow/ExpandedRow.tsx rename to apps/web/src/components/app/list/expandedRow/ExpandedRow.tsx diff --git a/src/components/app/list/expandedRow/expandedRow.css b/apps/web/src/components/app/list/expandedRow/expandedRow.css similarity index 100% rename from src/components/app/list/expandedRow/expandedRow.css rename to apps/web/src/components/app/list/expandedRow/expandedRow.css diff --git a/src/components/app/list/expandedRow/types.tsx b/apps/web/src/components/app/list/expandedRow/types.tsx similarity index 100% rename from src/components/app/list/expandedRow/types.tsx rename to apps/web/src/components/app/list/expandedRow/types.tsx diff --git a/src/components/app/list/list.scss b/apps/web/src/components/app/list/list.scss similarity index 100% rename from src/components/app/list/list.scss rename to apps/web/src/components/app/list/list.scss diff --git a/src/components/app/list/types.tsx b/apps/web/src/components/app/list/types.tsx similarity index 100% rename from src/components/app/list/types.tsx rename to apps/web/src/components/app/list/types.tsx diff --git a/src/components/app/service.ts b/apps/web/src/components/app/service.ts similarity index 100% rename from src/components/app/service.ts rename to apps/web/src/components/app/service.ts diff --git a/src/components/app/types.ts b/apps/web/src/components/app/types.ts similarity index 100% rename from src/components/app/types.ts rename to apps/web/src/components/app/types.ts diff --git a/src/components/app/typing.d.ts b/apps/web/src/components/app/typing.d.ts similarity index 100% rename from src/components/app/typing.d.ts rename to apps/web/src/components/app/typing.d.ts diff --git a/src/components/bulkEdits/BulkEdits.tsx b/apps/web/src/components/bulkEdits/BulkEdits.tsx similarity index 100% rename from src/components/bulkEdits/BulkEdits.tsx rename to apps/web/src/components/bulkEdits/BulkEdits.tsx diff --git a/src/components/bulkEdits/bulkEdit.scss b/apps/web/src/components/bulkEdits/bulkEdit.scss similarity index 100% rename from src/components/bulkEdits/bulkEdit.scss rename to apps/web/src/components/bulkEdits/bulkEdit.scss diff --git a/src/components/bulkEdits/bulkEdits.type.tsx b/apps/web/src/components/bulkEdits/bulkEdits.type.tsx similarity index 100% rename from src/components/bulkEdits/bulkEdits.type.tsx rename to apps/web/src/components/bulkEdits/bulkEdits.type.tsx diff --git a/src/components/bulkEdits/bulkedit.utils.tsx b/apps/web/src/components/bulkEdits/bulkedit.utils.tsx similarity index 100% rename from src/components/bulkEdits/bulkedit.utils.tsx rename to apps/web/src/components/bulkEdits/bulkedit.utils.tsx diff --git a/src/components/bulkEdits/bulkedits.service.tsx b/apps/web/src/components/bulkEdits/bulkedits.service.tsx similarity index 100% rename from src/components/bulkEdits/bulkedits.service.tsx rename to apps/web/src/components/bulkEdits/bulkedits.service.tsx diff --git a/src/components/bulkEdits/constants.ts b/apps/web/src/components/bulkEdits/constants.ts similarity index 100% rename from src/components/bulkEdits/constants.ts rename to apps/web/src/components/bulkEdits/constants.ts diff --git a/src/components/cdPipeline/BuildCD.tsx b/apps/web/src/components/cdPipeline/BuildCD.tsx similarity index 100% rename from src/components/cdPipeline/BuildCD.tsx rename to apps/web/src/components/cdPipeline/BuildCD.tsx diff --git a/src/components/cdPipeline/CDPipeline.tsx b/apps/web/src/components/cdPipeline/CDPipeline.tsx similarity index 100% rename from src/components/cdPipeline/CDPipeline.tsx rename to apps/web/src/components/cdPipeline/CDPipeline.tsx diff --git a/src/components/cdPipeline/DeleteCDNode.tsx b/apps/web/src/components/cdPipeline/DeleteCDNode.tsx similarity index 100% rename from src/components/cdPipeline/DeleteCDNode.tsx rename to apps/web/src/components/cdPipeline/DeleteCDNode.tsx diff --git a/src/components/cdPipeline/PullImageDigestToggle.tsx b/apps/web/src/components/cdPipeline/PullImageDigestToggle.tsx similarity index 100% rename from src/components/cdPipeline/PullImageDigestToggle.tsx rename to apps/web/src/components/cdPipeline/PullImageDigestToggle.tsx diff --git a/src/components/cdPipeline/cdPipeline.scss b/apps/web/src/components/cdPipeline/cdPipeline.scss similarity index 100% rename from src/components/cdPipeline/cdPipeline.scss rename to apps/web/src/components/cdPipeline/cdPipeline.scss diff --git a/src/components/cdPipeline/cdPipeline.service.ts b/apps/web/src/components/cdPipeline/cdPipeline.service.ts similarity index 100% rename from src/components/cdPipeline/cdPipeline.service.ts rename to apps/web/src/components/cdPipeline/cdPipeline.service.ts diff --git a/src/components/cdPipeline/cdPipeline.types.ts b/apps/web/src/components/cdPipeline/cdPipeline.types.ts similarity index 100% rename from src/components/cdPipeline/cdPipeline.types.ts rename to apps/web/src/components/cdPipeline/cdPipeline.types.ts diff --git a/src/components/cdPipeline/cdpipeline.util.tsx b/apps/web/src/components/cdPipeline/cdpipeline.util.tsx similarity index 100% rename from src/components/cdPipeline/cdpipeline.util.tsx rename to apps/web/src/components/cdPipeline/cdpipeline.util.tsx diff --git a/src/components/cdPipeline/types.ts b/apps/web/src/components/cdPipeline/types.ts similarity index 100% rename from src/components/cdPipeline/types.ts rename to apps/web/src/components/cdPipeline/types.ts diff --git a/src/components/cdPipeline/validationRules.ts b/apps/web/src/components/cdPipeline/validationRules.ts similarity index 100% rename from src/components/cdPipeline/validationRules.ts rename to apps/web/src/components/cdPipeline/validationRules.ts diff --git a/src/components/chartRepo/ChartRepo.tsx b/apps/web/src/components/chartRepo/ChartRepo.tsx similarity index 100% rename from src/components/chartRepo/ChartRepo.tsx rename to apps/web/src/components/chartRepo/ChartRepo.tsx diff --git a/src/components/chartRepo/ChartRepoType.tsx b/apps/web/src/components/chartRepo/ChartRepoType.tsx similarity index 100% rename from src/components/chartRepo/ChartRepoType.tsx rename to apps/web/src/components/chartRepo/ChartRepoType.tsx diff --git a/src/components/chartRepo/chartRepo.scss b/apps/web/src/components/chartRepo/chartRepo.scss similarity index 100% rename from src/components/chartRepo/chartRepo.scss rename to apps/web/src/components/chartRepo/chartRepo.scss diff --git a/src/components/chartRepo/chartRepo.service.tsx b/apps/web/src/components/chartRepo/chartRepo.service.tsx similarity index 100% rename from src/components/chartRepo/chartRepo.service.tsx rename to apps/web/src/components/chartRepo/chartRepo.service.tsx diff --git a/src/components/chartRepo/chartRepo.types.ts b/apps/web/src/components/chartRepo/chartRepo.types.ts similarity index 100% rename from src/components/chartRepo/chartRepo.types.ts rename to apps/web/src/components/chartRepo/chartRepo.types.ts diff --git a/src/components/charts/AdvancedConfig.tsx b/apps/web/src/components/charts/AdvancedConfig.tsx similarity index 100% rename from src/components/charts/AdvancedConfig.tsx rename to apps/web/src/components/charts/AdvancedConfig.tsx diff --git a/src/components/charts/ChartGroupAdvanceDeploy.tsx b/apps/web/src/components/charts/ChartGroupAdvanceDeploy.tsx similarity index 100% rename from src/components/charts/ChartGroupAdvanceDeploy.tsx rename to apps/web/src/components/charts/ChartGroupAdvanceDeploy.tsx diff --git a/src/components/charts/ChartGroupDeployments.tsx b/apps/web/src/components/charts/ChartGroupDeployments.tsx similarity index 100% rename from src/components/charts/ChartGroupDeployments.tsx rename to apps/web/src/components/charts/ChartGroupDeployments.tsx diff --git a/src/components/charts/ChartGroupDetails.tsx b/apps/web/src/components/charts/ChartGroupDetails.tsx similarity index 100% rename from src/components/charts/ChartGroupDetails.tsx rename to apps/web/src/components/charts/ChartGroupDetails.tsx diff --git a/src/components/charts/ChartGroupUpdate.tsx b/apps/web/src/components/charts/ChartGroupUpdate.tsx similarity index 100% rename from src/components/charts/ChartGroupUpdate.tsx rename to apps/web/src/components/charts/ChartGroupUpdate.tsx diff --git a/src/components/charts/ChartHeaderFilters.tsx b/apps/web/src/components/charts/ChartHeaderFilters.tsx similarity index 100% rename from src/components/charts/ChartHeaderFilters.tsx rename to apps/web/src/components/charts/ChartHeaderFilters.tsx diff --git a/src/components/charts/Charts.tsx b/apps/web/src/components/charts/Charts.tsx similarity index 100% rename from src/components/charts/Charts.tsx rename to apps/web/src/components/charts/Charts.tsx diff --git a/src/components/charts/MultiChartSummary.tsx b/apps/web/src/components/charts/MultiChartSummary.tsx similarity index 100% rename from src/components/charts/MultiChartSummary.tsx rename to apps/web/src/components/charts/MultiChartSummary.tsx diff --git a/src/components/charts/SavedValues/SavedValuesList.tsx b/apps/web/src/components/charts/SavedValues/SavedValuesList.tsx similarity index 100% rename from src/components/charts/SavedValues/SavedValuesList.tsx rename to apps/web/src/components/charts/SavedValues/SavedValuesList.tsx diff --git a/src/components/charts/SavedValues/savedValues.scss b/apps/web/src/components/charts/SavedValues/savedValues.scss similarity index 100% rename from src/components/charts/SavedValues/savedValues.scss rename to apps/web/src/components/charts/SavedValues/savedValues.scss diff --git a/src/components/charts/SavedValues/types.ts b/apps/web/src/components/charts/SavedValues/types.ts similarity index 100% rename from src/components/charts/SavedValues/types.ts rename to apps/web/src/components/charts/SavedValues/types.ts diff --git a/src/components/charts/chartValues/ChartValues.tsx b/apps/web/src/components/charts/chartValues/ChartValues.tsx similarity index 100% rename from src/components/charts/chartValues/ChartValues.tsx rename to apps/web/src/components/charts/chartValues/ChartValues.tsx diff --git a/src/components/charts/charts.helper.ts b/apps/web/src/components/charts/charts.helper.ts similarity index 100% rename from src/components/charts/charts.helper.ts rename to apps/web/src/components/charts/charts.helper.ts diff --git a/src/components/charts/charts.scss b/apps/web/src/components/charts/charts.scss similarity index 100% rename from src/components/charts/charts.scss rename to apps/web/src/components/charts/charts.scss diff --git a/src/components/charts/charts.service.ts b/apps/web/src/components/charts/charts.service.ts similarity index 100% rename from src/components/charts/charts.service.ts rename to apps/web/src/components/charts/charts.service.ts diff --git a/src/components/charts/charts.types.tsx b/apps/web/src/components/charts/charts.types.tsx similarity index 100% rename from src/components/charts/charts.types.tsx rename to apps/web/src/components/charts/charts.types.tsx diff --git a/src/components/charts/charts.util.tsx b/apps/web/src/components/charts/charts.util.tsx similarity index 100% rename from src/components/charts/charts.util.tsx rename to apps/web/src/components/charts/charts.util.tsx diff --git a/src/components/charts/constants.ts b/apps/web/src/components/charts/constants.ts similarity index 100% rename from src/components/charts/constants.ts rename to apps/web/src/components/charts/constants.ts diff --git a/src/components/charts/dialogs/ValuesYamlConfirmDialog.tsx b/apps/web/src/components/charts/dialogs/ValuesYamlConfirmDialog.tsx similarity index 100% rename from src/components/charts/dialogs/ValuesYamlConfirmDialog.tsx rename to apps/web/src/components/charts/dialogs/ValuesYamlConfirmDialog.tsx diff --git a/src/components/charts/discoverChartDetail/About.tsx b/apps/web/src/components/charts/discoverChartDetail/About.tsx similarity index 100% rename from src/components/charts/discoverChartDetail/About.tsx rename to apps/web/src/components/charts/discoverChartDetail/About.tsx diff --git a/src/components/charts/discoverChartDetail/ChartDeploymentList.tsx b/apps/web/src/components/charts/discoverChartDetail/ChartDeploymentList.tsx similarity index 100% rename from src/components/charts/discoverChartDetail/ChartDeploymentList.tsx rename to apps/web/src/components/charts/discoverChartDetail/ChartDeploymentList.tsx diff --git a/src/components/charts/discoverChartDetail/ChartVersionSelectorModal.tsx b/apps/web/src/components/charts/discoverChartDetail/ChartVersionSelectorModal.tsx similarity index 100% rename from src/components/charts/discoverChartDetail/ChartVersionSelectorModal.tsx rename to apps/web/src/components/charts/discoverChartDetail/ChartVersionSelectorModal.tsx diff --git a/src/components/charts/discoverChartDetail/DiscoverChartDetails.scss b/apps/web/src/components/charts/discoverChartDetail/DiscoverChartDetails.scss similarity index 100% rename from src/components/charts/discoverChartDetail/DiscoverChartDetails.scss rename to apps/web/src/components/charts/discoverChartDetail/DiscoverChartDetails.scss diff --git a/src/components/charts/discoverChartDetail/DiscoverChartDetails.tsx b/apps/web/src/components/charts/discoverChartDetail/DiscoverChartDetails.tsx similarity index 100% rename from src/components/charts/discoverChartDetail/DiscoverChartDetails.tsx rename to apps/web/src/components/charts/discoverChartDetail/DiscoverChartDetails.tsx diff --git a/src/components/charts/discoverChartDetail/constants.ts b/apps/web/src/components/charts/discoverChartDetail/constants.ts similarity index 100% rename from src/components/charts/discoverChartDetail/constants.ts rename to apps/web/src/components/charts/discoverChartDetail/constants.ts diff --git a/src/components/charts/discoverChartDetail/types.ts b/apps/web/src/components/charts/discoverChartDetail/types.ts similarity index 100% rename from src/components/charts/discoverChartDetail/types.ts rename to apps/web/src/components/charts/discoverChartDetail/types.ts diff --git a/src/components/charts/list/AddChartSource.tsx b/apps/web/src/components/charts/list/AddChartSource.tsx similarity index 100% rename from src/components/charts/list/AddChartSource.tsx rename to apps/web/src/components/charts/list/AddChartSource.tsx diff --git a/src/components/charts/list/ChartGroup.tsx b/apps/web/src/components/charts/list/ChartGroup.tsx similarity index 100% rename from src/components/charts/list/ChartGroup.tsx rename to apps/web/src/components/charts/list/ChartGroup.tsx diff --git a/src/components/charts/list/ChartListPopUp.tsx b/apps/web/src/components/charts/list/ChartListPopUp.tsx similarity index 100% rename from src/components/charts/list/ChartListPopUp.tsx rename to apps/web/src/components/charts/list/ChartListPopUp.tsx diff --git a/src/components/charts/list/ChartListPopUpRow.tsx b/apps/web/src/components/charts/list/ChartListPopUpRow.tsx similarity index 100% rename from src/components/charts/list/ChartListPopUpRow.tsx rename to apps/web/src/components/charts/list/ChartListPopUpRow.tsx diff --git a/src/components/charts/list/DiscoverCharts.tsx b/apps/web/src/components/charts/list/DiscoverCharts.tsx similarity index 100% rename from src/components/charts/list/DiscoverCharts.tsx rename to apps/web/src/components/charts/list/DiscoverCharts.tsx diff --git a/src/components/charts/list/list.scss b/apps/web/src/components/charts/list/list.scss similarity index 100% rename from src/components/charts/list/list.scss rename to apps/web/src/components/charts/list/list.scss diff --git a/src/components/charts/modal/ChartGroupBasicDeploy.tsx b/apps/web/src/components/charts/modal/ChartGroupBasicDeploy.tsx similarity index 100% rename from src/components/charts/modal/ChartGroupBasicDeploy.tsx rename to apps/web/src/components/charts/modal/ChartGroupBasicDeploy.tsx diff --git a/src/components/charts/modal/CreateChartGroup.tsx b/apps/web/src/components/charts/modal/CreateChartGroup.tsx similarity index 100% rename from src/components/charts/modal/CreateChartGroup.tsx rename to apps/web/src/components/charts/modal/CreateChartGroup.tsx diff --git a/src/components/charts/modal/DeployChart.scss b/apps/web/src/components/charts/modal/DeployChart.scss similarity index 100% rename from src/components/charts/modal/DeployChart.scss rename to apps/web/src/components/charts/modal/DeployChart.scss diff --git a/src/components/charts/modal/deployChart.types.ts b/apps/web/src/components/charts/modal/deployChart.types.ts similarity index 100% rename from src/components/charts/modal/deployChart.types.ts rename to apps/web/src/components/charts/modal/deployChart.types.ts diff --git a/src/components/charts/useChartGroup.ts b/apps/web/src/components/charts/useChartGroup.ts similarity index 100% rename from src/components/charts/useChartGroup.ts rename to apps/web/src/components/charts/useChartGroup.ts diff --git a/src/components/charts/util/ChartGroupCard.tsx b/apps/web/src/components/charts/util/ChartGroupCard.tsx similarity index 100% rename from src/components/charts/util/ChartGroupCard.tsx rename to apps/web/src/components/charts/util/ChartGroupCard.tsx diff --git a/src/components/charts/util/ChartSelect.tsx b/apps/web/src/components/charts/util/ChartSelect.tsx similarity index 100% rename from src/components/charts/util/ChartSelect.tsx rename to apps/web/src/components/charts/util/ChartSelect.tsx diff --git a/src/components/checkList/AllChartsCheck.tsx b/apps/web/src/components/checkList/AllChartsCheck.tsx similarity index 100% rename from src/components/checkList/AllChartsCheck.tsx rename to apps/web/src/components/checkList/AllChartsCheck.tsx diff --git a/src/components/checkList/AllCheckModal.tsx b/apps/web/src/components/checkList/AllCheckModal.tsx similarity index 100% rename from src/components/checkList/AllCheckModal.tsx rename to apps/web/src/components/checkList/AllCheckModal.tsx diff --git a/src/components/checkList/AppCheckList.tsx b/apps/web/src/components/checkList/AppCheckList.tsx similarity index 100% rename from src/components/checkList/AppCheckList.tsx rename to apps/web/src/components/checkList/AppCheckList.tsx diff --git a/src/components/checkList/ChartCheckList.tsx b/apps/web/src/components/checkList/ChartCheckList.tsx similarity index 100% rename from src/components/checkList/ChartCheckList.tsx rename to apps/web/src/components/checkList/ChartCheckList.tsx diff --git a/src/components/checkList/CustomAppDeploy.tsx b/apps/web/src/components/checkList/CustomAppDeploy.tsx similarity index 100% rename from src/components/checkList/CustomAppDeploy.tsx rename to apps/web/src/components/checkList/CustomAppDeploy.tsx diff --git a/src/components/checkList/GlobalAllCheckModal.tsx b/apps/web/src/components/checkList/GlobalAllCheckModal.tsx similarity index 100% rename from src/components/checkList/GlobalAllCheckModal.tsx rename to apps/web/src/components/checkList/GlobalAllCheckModal.tsx diff --git a/src/components/checkList/GlobalChartCheck.tsx b/apps/web/src/components/checkList/GlobalChartCheck.tsx similarity index 100% rename from src/components/checkList/GlobalChartCheck.tsx rename to apps/web/src/components/checkList/GlobalChartCheck.tsx diff --git a/src/components/checkList/SampleAppDeploy.tsx b/apps/web/src/components/checkList/SampleAppDeploy.tsx similarity index 100% rename from src/components/checkList/SampleAppDeploy.tsx rename to apps/web/src/components/checkList/SampleAppDeploy.tsx diff --git a/src/components/checkList/checklist.scss b/apps/web/src/components/checkList/checklist.scss similarity index 100% rename from src/components/checkList/checklist.scss rename to apps/web/src/components/checkList/checklist.scss diff --git a/src/components/checkList/checklist.service.ts b/apps/web/src/components/checkList/checklist.service.ts similarity index 100% rename from src/components/checkList/checklist.service.ts rename to apps/web/src/components/checkList/checklist.service.ts diff --git a/src/components/checkList/checklist.type.ts b/apps/web/src/components/checkList/checklist.type.ts similarity index 100% rename from src/components/checkList/checklist.type.ts rename to apps/web/src/components/checkList/checklist.type.ts diff --git a/src/components/ciConfig/BuildContext.tsx b/apps/web/src/components/ciConfig/BuildContext.tsx similarity index 100% rename from src/components/ciConfig/BuildContext.tsx rename to apps/web/src/components/ciConfig/BuildContext.tsx diff --git a/src/components/ciConfig/CIAdvancedConfig.tsx b/apps/web/src/components/ciConfig/CIAdvancedConfig.tsx similarity index 100% rename from src/components/ciConfig/CIAdvancedConfig.tsx rename to apps/web/src/components/ciConfig/CIAdvancedConfig.tsx diff --git a/src/components/ciConfig/CIBuildConfigDiff.tsx b/apps/web/src/components/ciConfig/CIBuildConfigDiff.tsx similarity index 100% rename from src/components/ciConfig/CIBuildConfigDiff.tsx rename to apps/web/src/components/ciConfig/CIBuildConfigDiff.tsx diff --git a/src/components/ciConfig/CIBuildpackBuildOptions.tsx b/apps/web/src/components/ciConfig/CIBuildpackBuildOptions.tsx similarity index 100% rename from src/components/ciConfig/CIBuildpackBuildOptions.tsx rename to apps/web/src/components/ciConfig/CIBuildpackBuildOptions.tsx diff --git a/src/components/ciConfig/CIConfig.scss b/apps/web/src/components/ciConfig/CIConfig.scss similarity index 100% rename from src/components/ciConfig/CIConfig.scss rename to apps/web/src/components/ciConfig/CIConfig.scss diff --git a/src/components/ciConfig/CIConfig.tsx b/apps/web/src/components/ciConfig/CIConfig.tsx similarity index 100% rename from src/components/ciConfig/CIConfig.tsx rename to apps/web/src/components/ciConfig/CIConfig.tsx diff --git a/src/components/ciConfig/CIConfig.utils.ts b/apps/web/src/components/ciConfig/CIConfig.utils.ts similarity index 100% rename from src/components/ciConfig/CIConfig.utils.ts rename to apps/web/src/components/ciConfig/CIConfig.utils.ts diff --git a/src/components/ciConfig/CIConfigDiffView.tsx b/apps/web/src/components/ciConfig/CIConfigDiffView.tsx similarity index 100% rename from src/components/ciConfig/CIConfigDiffView.tsx rename to apps/web/src/components/ciConfig/CIConfigDiffView.tsx diff --git a/src/components/ciConfig/CIConfigForm.tsx b/apps/web/src/components/ciConfig/CIConfigForm.tsx similarity index 100% rename from src/components/ciConfig/CIConfigForm.tsx rename to apps/web/src/components/ciConfig/CIConfigForm.tsx diff --git a/src/components/ciConfig/CIContainerRegistryConfig.tsx b/apps/web/src/components/ciConfig/CIContainerRegistryConfig.tsx similarity index 100% rename from src/components/ciConfig/CIContainerRegistryConfig.tsx rename to apps/web/src/components/ciConfig/CIContainerRegistryConfig.tsx diff --git a/src/components/ciConfig/CICreateDockerfileOption.tsx b/apps/web/src/components/ciConfig/CICreateDockerfileOption.tsx similarity index 100% rename from src/components/ciConfig/CICreateDockerfileOption.tsx rename to apps/web/src/components/ciConfig/CICreateDockerfileOption.tsx diff --git a/src/components/ciConfig/CIDockerFileConfig.tsx b/apps/web/src/components/ciConfig/CIDockerFileConfig.tsx similarity index 100% rename from src/components/ciConfig/CIDockerFileConfig.tsx rename to apps/web/src/components/ciConfig/CIDockerFileConfig.tsx diff --git a/src/components/ciConfig/CISelfDockerBuildOption.tsx b/apps/web/src/components/ciConfig/CISelfDockerBuildOption.tsx similarity index 100% rename from src/components/ciConfig/CISelfDockerBuildOption.tsx rename to apps/web/src/components/ciConfig/CISelfDockerBuildOption.tsx diff --git a/src/components/ciConfig/CreateDockerFileLanguageOptions.tsx b/apps/web/src/components/ciConfig/CreateDockerFileLanguageOptions.tsx similarity index 100% rename from src/components/ciConfig/CreateDockerFileLanguageOptions.tsx rename to apps/web/src/components/ciConfig/CreateDockerFileLanguageOptions.tsx diff --git a/src/components/ciConfig/TargetPlatformSelector.tsx b/apps/web/src/components/ciConfig/TargetPlatformSelector.tsx similarity index 100% rename from src/components/ciConfig/TargetPlatformSelector.tsx rename to apps/web/src/components/ciConfig/TargetPlatformSelector.tsx diff --git a/src/components/ciConfig/ciConfigConstant.ts b/apps/web/src/components/ciConfig/ciConfigConstant.ts similarity index 100% rename from src/components/ciConfig/ciConfigConstant.ts rename to apps/web/src/components/ciConfig/ciConfigConstant.ts diff --git a/src/components/ciConfig/service.tsx b/apps/web/src/components/ciConfig/service.tsx similarity index 100% rename from src/components/ciConfig/service.tsx rename to apps/web/src/components/ciConfig/service.tsx diff --git a/src/components/ciConfig/types.tsx b/apps/web/src/components/ciConfig/types.tsx similarity index 100% rename from src/components/ciConfig/types.tsx rename to apps/web/src/components/ciConfig/types.tsx diff --git a/src/components/ciConfig/utils.tsx b/apps/web/src/components/ciConfig/utils.tsx similarity index 100% rename from src/components/ciConfig/utils.tsx rename to apps/web/src/components/ciConfig/utils.tsx diff --git a/src/components/ciPipeline/CIPipelineAdvanced.tsx b/apps/web/src/components/ciPipeline/CIPipelineAdvanced.tsx similarity index 100% rename from src/components/ciPipeline/CIPipelineAdvanced.tsx rename to apps/web/src/components/ciPipeline/CIPipelineAdvanced.tsx diff --git a/src/components/ciPipeline/ConfigureWebhook.tsx b/apps/web/src/components/ciPipeline/ConfigureWebhook.tsx similarity index 100% rename from src/components/ciPipeline/ConfigureWebhook.tsx rename to apps/web/src/components/ciPipeline/ConfigureWebhook.tsx diff --git a/src/components/ciPipeline/ExternalCIPipeline.tsx b/apps/web/src/components/ciPipeline/ExternalCIPipeline.tsx similarity index 100% rename from src/components/ciPipeline/ExternalCIPipeline.tsx rename to apps/web/src/components/ciPipeline/ExternalCIPipeline.tsx diff --git a/src/components/ciPipeline/LinkedCIPipelineEdit.tsx b/apps/web/src/components/ciPipeline/LinkedCIPipelineEdit.tsx similarity index 100% rename from src/components/ciPipeline/LinkedCIPipelineEdit.tsx rename to apps/web/src/components/ciPipeline/LinkedCIPipelineEdit.tsx diff --git a/src/components/ciPipeline/LinkedCIPipelineView.tsx b/apps/web/src/components/ciPipeline/LinkedCIPipelineView.tsx similarity index 100% rename from src/components/ciPipeline/LinkedCIPipelineView.tsx rename to apps/web/src/components/ciPipeline/LinkedCIPipelineView.tsx diff --git a/src/components/ciPipeline/Readme.md b/apps/web/src/components/ciPipeline/Readme.md similarity index 100% rename from src/components/ciPipeline/Readme.md rename to apps/web/src/components/ciPipeline/Readme.md diff --git a/src/components/ciPipeline/SourceMaterials.tsx b/apps/web/src/components/ciPipeline/SourceMaterials.tsx similarity index 100% rename from src/components/ciPipeline/SourceMaterials.tsx rename to apps/web/src/components/ciPipeline/SourceMaterials.tsx diff --git a/src/components/ciPipeline/Webhook/WebhookDetailsModal.tsx b/apps/web/src/components/ciPipeline/Webhook/WebhookDetailsModal.tsx similarity index 100% rename from src/components/ciPipeline/Webhook/WebhookDetailsModal.tsx rename to apps/web/src/components/ciPipeline/Webhook/WebhookDetailsModal.tsx diff --git a/src/components/ciPipeline/Webhook/types.ts b/apps/web/src/components/ciPipeline/Webhook/types.ts similarity index 100% rename from src/components/ciPipeline/Webhook/types.ts rename to apps/web/src/components/ciPipeline/Webhook/types.ts diff --git a/src/components/ciPipeline/Webhook/webhook.service.ts b/apps/web/src/components/ciPipeline/Webhook/webhook.service.ts similarity index 100% rename from src/components/ciPipeline/Webhook/webhook.service.ts rename to apps/web/src/components/ciPipeline/Webhook/webhook.service.ts diff --git a/src/components/ciPipeline/Webhook/webhook.utils.ts b/apps/web/src/components/ciPipeline/Webhook/webhook.utils.ts similarity index 100% rename from src/components/ciPipeline/Webhook/webhook.utils.ts rename to apps/web/src/components/ciPipeline/Webhook/webhook.utils.ts diff --git a/src/components/ciPipeline/Webhook/webhookDetails.scss b/apps/web/src/components/ciPipeline/Webhook/webhookDetails.scss similarity index 100% rename from src/components/ciPipeline/Webhook/webhookDetails.scss rename to apps/web/src/components/ciPipeline/Webhook/webhookDetails.scss diff --git a/src/components/ciPipeline/WebhookSelectorCondition.tsx b/apps/web/src/components/ciPipeline/WebhookSelectorCondition.tsx similarity index 100% rename from src/components/ciPipeline/WebhookSelectorCondition.tsx rename to apps/web/src/components/ciPipeline/WebhookSelectorCondition.tsx diff --git a/src/components/ciPipeline/ciPipeline.scss b/apps/web/src/components/ciPipeline/ciPipeline.scss similarity index 100% rename from src/components/ciPipeline/ciPipeline.scss rename to apps/web/src/components/ciPipeline/ciPipeline.scss diff --git a/src/components/ciPipeline/ciPipeline.service.ts b/apps/web/src/components/ciPipeline/ciPipeline.service.ts similarity index 100% rename from src/components/ciPipeline/ciPipeline.service.ts rename to apps/web/src/components/ciPipeline/ciPipeline.service.ts diff --git a/src/components/ciPipeline/types.ts b/apps/web/src/components/ciPipeline/types.ts similarity index 100% rename from src/components/ciPipeline/types.ts rename to apps/web/src/components/ciPipeline/types.ts diff --git a/src/components/ciPipeline/validationRules.ts b/apps/web/src/components/ciPipeline/validationRules.ts similarity index 100% rename from src/components/ciPipeline/validationRules.ts rename to apps/web/src/components/ciPipeline/validationRules.ts diff --git a/src/components/cluster/Cluster.md b/apps/web/src/components/cluster/Cluster.md similarity index 100% rename from src/components/cluster/Cluster.md rename to apps/web/src/components/cluster/Cluster.md diff --git a/src/components/cluster/Cluster.tsx b/apps/web/src/components/cluster/Cluster.tsx similarity index 100% rename from src/components/cluster/Cluster.tsx rename to apps/web/src/components/cluster/Cluster.tsx diff --git a/src/components/cluster/ClusterCodeEditor.tsx b/apps/web/src/components/cluster/ClusterCodeEditor.tsx similarity index 100% rename from src/components/cluster/ClusterCodeEditor.tsx rename to apps/web/src/components/cluster/ClusterCodeEditor.tsx diff --git a/src/components/cluster/ClusterComponentModal.tsx b/apps/web/src/components/cluster/ClusterComponentModal.tsx similarity index 100% rename from src/components/cluster/ClusterComponentModal.tsx rename to apps/web/src/components/cluster/ClusterComponentModal.tsx diff --git a/src/components/cluster/ClusterForm.tsx b/apps/web/src/components/cluster/ClusterForm.tsx similarity index 100% rename from src/components/cluster/ClusterForm.tsx rename to apps/web/src/components/cluster/ClusterForm.tsx diff --git a/src/components/cluster/ClusterInfoStepsModal.tsx b/apps/web/src/components/cluster/ClusterInfoStepsModal.tsx similarity index 100% rename from src/components/cluster/ClusterInfoStepsModal.tsx rename to apps/web/src/components/cluster/ClusterInfoStepsModal.tsx diff --git a/src/components/cluster/ClusterInstallStatus.tsx b/apps/web/src/components/cluster/ClusterInstallStatus.tsx similarity index 100% rename from src/components/cluster/ClusterInstallStatus.tsx rename to apps/web/src/components/cluster/ClusterInstallStatus.tsx diff --git a/src/components/cluster/UseNameListDropdown.tsx b/apps/web/src/components/cluster/UseNameListDropdown.tsx similarity index 100% rename from src/components/cluster/UseNameListDropdown.tsx rename to apps/web/src/components/cluster/UseNameListDropdown.tsx diff --git a/src/components/cluster/cluster.scss b/apps/web/src/components/cluster/cluster.scss similarity index 100% rename from src/components/cluster/cluster.scss rename to apps/web/src/components/cluster/cluster.scss diff --git a/src/components/cluster/cluster.service.ts b/apps/web/src/components/cluster/cluster.service.ts similarity index 100% rename from src/components/cluster/cluster.service.ts rename to apps/web/src/components/cluster/cluster.service.ts diff --git a/src/components/cluster/cluster.type.ts b/apps/web/src/components/cluster/cluster.type.ts similarity index 100% rename from src/components/cluster/cluster.type.ts rename to apps/web/src/components/cluster/cluster.type.ts diff --git a/src/components/cluster/cluster.util.ts b/apps/web/src/components/cluster/cluster.util.ts similarity index 100% rename from src/components/cluster/cluster.util.ts rename to apps/web/src/components/cluster/cluster.util.ts diff --git a/src/components/command/Command.tsx b/apps/web/src/components/command/Command.tsx similarity index 100% rename from src/components/command/Command.tsx rename to apps/web/src/components/command/Command.tsx diff --git a/src/components/command/CommandErrorBoundary.tsx b/apps/web/src/components/command/CommandErrorBoundary.tsx similarity index 100% rename from src/components/command/CommandErrorBoundary.tsx rename to apps/web/src/components/command/CommandErrorBoundary.tsx diff --git a/src/components/command/Readme.md b/apps/web/src/components/command/Readme.md similarity index 100% rename from src/components/command/Readme.md rename to apps/web/src/components/command/Readme.md diff --git a/src/components/command/command.css b/apps/web/src/components/command/command.css similarity index 100% rename from src/components/command/command.css rename to apps/web/src/components/command/command.css diff --git a/src/components/command/command.types.ts b/apps/web/src/components/command/command.types.ts similarity index 100% rename from src/components/command/command.types.ts rename to apps/web/src/components/command/command.types.ts diff --git a/src/components/command/command.util.ts b/apps/web/src/components/command/command.util.ts similarity index 100% rename from src/components/command/command.util.ts rename to apps/web/src/components/command/command.util.ts diff --git a/src/components/command/index.ts b/apps/web/src/components/command/index.ts similarity index 100% rename from src/components/command/index.ts rename to apps/web/src/components/command/index.ts diff --git a/src/components/common/Accordian/Accordian.tsx b/apps/web/src/components/common/Accordian/Accordian.tsx similarity index 100% rename from src/components/common/Accordian/Accordian.tsx rename to apps/web/src/components/common/Accordian/Accordian.tsx diff --git a/src/components/common/AppDetailsEmptyState.tsx b/apps/web/src/components/common/AppDetailsEmptyState.tsx similarity index 100% rename from src/components/common/AppDetailsEmptyState.tsx rename to apps/web/src/components/common/AppDetailsEmptyState.tsx diff --git a/src/components/common/Carousel/Carousel.scss b/apps/web/src/components/common/Carousel/Carousel.scss similarity index 100% rename from src/components/common/Carousel/Carousel.scss rename to apps/web/src/components/common/Carousel/Carousel.scss diff --git a/src/components/common/Carousel/Carousel.tsx b/apps/web/src/components/common/Carousel/Carousel.tsx similarity index 100% rename from src/components/common/Carousel/Carousel.tsx rename to apps/web/src/components/common/Carousel/Carousel.tsx diff --git a/src/components/common/ClusterMetaDataBar/ClusterMetaData.scss b/apps/web/src/components/common/ClusterMetaDataBar/ClusterMetaData.scss similarity index 100% rename from src/components/common/ClusterMetaDataBar/ClusterMetaData.scss rename to apps/web/src/components/common/ClusterMetaDataBar/ClusterMetaData.scss diff --git a/src/components/common/ClusterMetaDataBar/ClusterMetaDataBar.tsx b/apps/web/src/components/common/ClusterMetaDataBar/ClusterMetaDataBar.tsx similarity index 100% rename from src/components/common/ClusterMetaDataBar/ClusterMetaDataBar.tsx rename to apps/web/src/components/common/ClusterMetaDataBar/ClusterMetaDataBar.tsx diff --git a/src/components/common/ClusterMetaDataBar/types.ts b/apps/web/src/components/common/ClusterMetaDataBar/types.ts similarity index 100% rename from src/components/common/ClusterMetaDataBar/types.ts rename to apps/web/src/components/common/ClusterMetaDataBar/types.ts diff --git a/src/components/common/ClusterNotReachableDailog/ClusterNotReachableDialog.tsx b/apps/web/src/components/common/ClusterNotReachableDailog/ClusterNotReachableDialog.tsx similarity index 100% rename from src/components/common/ClusterNotReachableDailog/ClusterNotReachableDialog.tsx rename to apps/web/src/components/common/ClusterNotReachableDailog/ClusterNotReachableDialog.tsx diff --git a/src/components/common/ClusterNotReachableDailog/ClusterNotReachableDialog.type.ts b/apps/web/src/components/common/ClusterNotReachableDailog/ClusterNotReachableDialog.type.ts similarity index 100% rename from src/components/common/ClusterNotReachableDailog/ClusterNotReachableDialog.type.ts rename to apps/web/src/components/common/ClusterNotReachableDailog/ClusterNotReachableDialog.type.ts diff --git a/src/components/common/ContentCard/ContentCard.scss b/apps/web/src/components/common/ContentCard/ContentCard.scss similarity index 100% rename from src/components/common/ContentCard/ContentCard.scss rename to apps/web/src/components/common/ContentCard/ContentCard.scss diff --git a/src/components/common/ContentCard/ContentCard.tsx b/apps/web/src/components/common/ContentCard/ContentCard.tsx similarity index 100% rename from src/components/common/ContentCard/ContentCard.tsx rename to apps/web/src/components/common/ContentCard/ContentCard.tsx diff --git a/src/components/common/ContentCard/ContentCard.types.ts b/apps/web/src/components/common/ContentCard/ContentCard.types.ts similarity index 100% rename from src/components/common/ContentCard/ContentCard.types.ts rename to apps/web/src/components/common/ContentCard/ContentCard.types.ts diff --git a/src/components/common/Contexts/AppContext.ts b/apps/web/src/components/common/Contexts/AppContext.ts similarity index 100% rename from src/components/common/Contexts/AppContext.ts rename to apps/web/src/components/common/Contexts/AppContext.ts diff --git a/src/components/common/Contexts/index.ts b/apps/web/src/components/common/Contexts/index.ts similarity index 100% rename from src/components/common/Contexts/index.ts rename to apps/web/src/components/common/Contexts/index.ts diff --git a/src/components/common/DatePickers/Calender.tsx b/apps/web/src/components/common/DatePickers/Calender.tsx similarity index 100% rename from src/components/common/DatePickers/Calender.tsx rename to apps/web/src/components/common/DatePickers/Calender.tsx diff --git a/src/components/common/DatePickers/DayPickerRangeController.tsx b/apps/web/src/components/common/DatePickers/DayPickerRangeController.tsx similarity index 100% rename from src/components/common/DatePickers/DayPickerRangeController.tsx rename to apps/web/src/components/common/DatePickers/DayPickerRangeController.tsx diff --git a/src/components/common/DatePickers/calendar.css b/apps/web/src/components/common/DatePickers/calendar.css similarity index 100% rename from src/components/common/DatePickers/calendar.css rename to apps/web/src/components/common/DatePickers/calendar.css diff --git a/src/components/common/DeploymentTypeIcon/DeploymentTypeIcon.tsx b/apps/web/src/components/common/DeploymentTypeIcon/DeploymentTypeIcon.tsx similarity index 100% rename from src/components/common/DeploymentTypeIcon/DeploymentTypeIcon.tsx rename to apps/web/src/components/common/DeploymentTypeIcon/DeploymentTypeIcon.tsx diff --git a/src/components/common/DeprecatedUpdateWarn.tsx b/apps/web/src/components/common/DeprecatedUpdateWarn.tsx similarity index 100% rename from src/components/common/DeprecatedUpdateWarn.tsx rename to apps/web/src/components/common/DeprecatedUpdateWarn.tsx diff --git a/src/components/common/Description/GenericDescription.scss b/apps/web/src/components/common/Description/GenericDescription.scss similarity index 100% rename from src/components/common/Description/GenericDescription.scss rename to apps/web/src/components/common/Description/GenericDescription.scss diff --git a/src/components/common/Description/GenericDescription.tsx b/apps/web/src/components/common/Description/GenericDescription.tsx similarity index 100% rename from src/components/common/Description/GenericDescription.tsx rename to apps/web/src/components/common/Description/GenericDescription.tsx diff --git a/src/components/common/DynamicTabs/DynamicTabs.component.tsx b/apps/web/src/components/common/DynamicTabs/DynamicTabs.component.tsx similarity index 100% rename from src/components/common/DynamicTabs/DynamicTabs.component.tsx rename to apps/web/src/components/common/DynamicTabs/DynamicTabs.component.tsx diff --git a/src/components/common/DynamicTabs/DynamicTabs.scss b/apps/web/src/components/common/DynamicTabs/DynamicTabs.scss similarity index 100% rename from src/components/common/DynamicTabs/DynamicTabs.scss rename to apps/web/src/components/common/DynamicTabs/DynamicTabs.scss diff --git a/src/components/common/DynamicTabs/DynamicTabs.timer.tsx b/apps/web/src/components/common/DynamicTabs/DynamicTabs.timer.tsx similarity index 100% rename from src/components/common/DynamicTabs/DynamicTabs.timer.tsx rename to apps/web/src/components/common/DynamicTabs/DynamicTabs.timer.tsx diff --git a/src/components/common/DynamicTabs/DynamicTabs.tsx b/apps/web/src/components/common/DynamicTabs/DynamicTabs.tsx similarity index 100% rename from src/components/common/DynamicTabs/DynamicTabs.tsx rename to apps/web/src/components/common/DynamicTabs/DynamicTabs.tsx diff --git a/src/components/common/DynamicTabs/Types.ts b/apps/web/src/components/common/DynamicTabs/Types.ts similarity index 100% rename from src/components/common/DynamicTabs/Types.ts rename to apps/web/src/components/common/DynamicTabs/Types.ts diff --git a/src/components/common/DynamicTabs/Utils.ts b/apps/web/src/components/common/DynamicTabs/Utils.ts similarity index 100% rename from src/components/common/DynamicTabs/Utils.ts rename to apps/web/src/components/common/DynamicTabs/Utils.ts diff --git a/src/components/common/DynamicTabs/__tests__/DynamicTabs.test.tsx b/apps/web/src/components/common/DynamicTabs/__tests__/DynamicTabs.test.tsx similarity index 100% rename from src/components/common/DynamicTabs/__tests__/DynamicTabs.test.tsx rename to apps/web/src/components/common/DynamicTabs/__tests__/DynamicTabs.test.tsx diff --git a/src/components/common/DynamicTabs/index.ts b/apps/web/src/components/common/DynamicTabs/index.ts similarity index 100% rename from src/components/common/DynamicTabs/index.ts rename to apps/web/src/components/common/DynamicTabs/index.ts diff --git a/src/components/common/DynamicTabs/useTabs.ts b/apps/web/src/components/common/DynamicTabs/useTabs.ts similarity index 100% rename from src/components/common/DynamicTabs/useTabs.ts rename to apps/web/src/components/common/DynamicTabs/useTabs.ts diff --git a/src/components/common/ExportToCsv/ExportToCsv.tsx b/apps/web/src/components/common/ExportToCsv/ExportToCsv.tsx similarity index 100% rename from src/components/common/ExportToCsv/ExportToCsv.tsx rename to apps/web/src/components/common/ExportToCsv/ExportToCsv.tsx diff --git a/src/components/common/ExportToCsv/constants.ts b/apps/web/src/components/common/ExportToCsv/constants.ts similarity index 100% rename from src/components/common/ExportToCsv/constants.ts rename to apps/web/src/components/common/ExportToCsv/constants.ts diff --git a/src/components/common/ExportToCsv/exportToCsv.scss b/apps/web/src/components/common/ExportToCsv/exportToCsv.scss similarity index 100% rename from src/components/common/ExportToCsv/exportToCsv.scss rename to apps/web/src/components/common/ExportToCsv/exportToCsv.scss diff --git a/src/components/common/FloatingVariablesSuggestions/FloatingVariablesSuggestions.tsx b/apps/web/src/components/common/FloatingVariablesSuggestions/FloatingVariablesSuggestions.tsx similarity index 100% rename from src/components/common/FloatingVariablesSuggestions/FloatingVariablesSuggestions.tsx rename to apps/web/src/components/common/FloatingVariablesSuggestions/FloatingVariablesSuggestions.tsx diff --git a/src/components/common/FloatingVariablesSuggestions/SuggestionItem.tsx b/apps/web/src/components/common/FloatingVariablesSuggestions/SuggestionItem.tsx similarity index 100% rename from src/components/common/FloatingVariablesSuggestions/SuggestionItem.tsx rename to apps/web/src/components/common/FloatingVariablesSuggestions/SuggestionItem.tsx diff --git a/src/components/common/FloatingVariablesSuggestions/Suggestions.tsx b/apps/web/src/components/common/FloatingVariablesSuggestions/Suggestions.tsx similarity index 100% rename from src/components/common/FloatingVariablesSuggestions/Suggestions.tsx rename to apps/web/src/components/common/FloatingVariablesSuggestions/Suggestions.tsx diff --git a/src/components/common/FloatingVariablesSuggestions/SuggestionsInfo.tsx b/apps/web/src/components/common/FloatingVariablesSuggestions/SuggestionsInfo.tsx similarity index 100% rename from src/components/common/FloatingVariablesSuggestions/SuggestionsInfo.tsx rename to apps/web/src/components/common/FloatingVariablesSuggestions/SuggestionsInfo.tsx diff --git a/src/components/common/FloatingVariablesSuggestions/__tests__/FloatingVariablesSuggestions.test.tsx b/apps/web/src/components/common/FloatingVariablesSuggestions/__tests__/FloatingVariablesSuggestions.test.tsx similarity index 100% rename from src/components/common/FloatingVariablesSuggestions/__tests__/FloatingVariablesSuggestions.test.tsx rename to apps/web/src/components/common/FloatingVariablesSuggestions/__tests__/FloatingVariablesSuggestions.test.tsx diff --git a/src/components/common/FloatingVariablesSuggestions/__tests__/Suggestions.test.tsx b/apps/web/src/components/common/FloatingVariablesSuggestions/__tests__/Suggestions.test.tsx similarity index 100% rename from src/components/common/FloatingVariablesSuggestions/__tests__/Suggestions.test.tsx rename to apps/web/src/components/common/FloatingVariablesSuggestions/__tests__/Suggestions.test.tsx diff --git a/src/components/common/FloatingVariablesSuggestions/__tests__/SuggestionsInfo.test.tsx b/apps/web/src/components/common/FloatingVariablesSuggestions/__tests__/SuggestionsInfo.test.tsx similarity index 100% rename from src/components/common/FloatingVariablesSuggestions/__tests__/SuggestionsInfo.test.tsx rename to apps/web/src/components/common/FloatingVariablesSuggestions/__tests__/SuggestionsInfo.test.tsx diff --git a/src/components/common/FloatingVariablesSuggestions/__tests__/SuggestionsItem.test.tsx b/apps/web/src/components/common/FloatingVariablesSuggestions/__tests__/SuggestionsItem.test.tsx similarity index 100% rename from src/components/common/FloatingVariablesSuggestions/__tests__/SuggestionsItem.test.tsx rename to apps/web/src/components/common/FloatingVariablesSuggestions/__tests__/SuggestionsItem.test.tsx diff --git a/src/components/common/FloatingVariablesSuggestions/__tests__/service.test.ts b/apps/web/src/components/common/FloatingVariablesSuggestions/__tests__/service.test.ts similarity index 100% rename from src/components/common/FloatingVariablesSuggestions/__tests__/service.test.ts rename to apps/web/src/components/common/FloatingVariablesSuggestions/__tests__/service.test.ts diff --git a/src/components/common/FloatingVariablesSuggestions/constants.ts b/apps/web/src/components/common/FloatingVariablesSuggestions/constants.ts similarity index 100% rename from src/components/common/FloatingVariablesSuggestions/constants.ts rename to apps/web/src/components/common/FloatingVariablesSuggestions/constants.ts diff --git a/src/components/common/FloatingVariablesSuggestions/mocks.ts b/apps/web/src/components/common/FloatingVariablesSuggestions/mocks.ts similarity index 100% rename from src/components/common/FloatingVariablesSuggestions/mocks.ts rename to apps/web/src/components/common/FloatingVariablesSuggestions/mocks.ts diff --git a/src/components/common/FloatingVariablesSuggestions/service.ts b/apps/web/src/components/common/FloatingVariablesSuggestions/service.ts similarity index 100% rename from src/components/common/FloatingVariablesSuggestions/service.ts rename to apps/web/src/components/common/FloatingVariablesSuggestions/service.ts diff --git a/src/components/common/FloatingVariablesSuggestions/types.ts b/apps/web/src/components/common/FloatingVariablesSuggestions/types.ts similarity index 100% rename from src/components/common/FloatingVariablesSuggestions/types.ts rename to apps/web/src/components/common/FloatingVariablesSuggestions/types.ts diff --git a/src/components/common/GitInfoMaterial.tsx b/apps/web/src/components/common/GitInfoMaterial.tsx similarity index 100% rename from src/components/common/GitInfoMaterial.tsx rename to apps/web/src/components/common/GitInfoMaterial.tsx diff --git a/src/components/common/GitTabs/GitProviderTab.tsx b/apps/web/src/components/common/GitTabs/GitProviderTab.tsx similarity index 100% rename from src/components/common/GitTabs/GitProviderTab.tsx rename to apps/web/src/components/common/GitTabs/GitProviderTab.tsx diff --git a/src/components/common/GitTabs/GitProviderTabIcons.tsx b/apps/web/src/components/common/GitTabs/GitProviderTabIcons.tsx similarity index 100% rename from src/components/common/GitTabs/GitProviderTabIcons.tsx rename to apps/web/src/components/common/GitTabs/GitProviderTabIcons.tsx diff --git a/src/components/common/GitTabs/constants.ts b/apps/web/src/components/common/GitTabs/constants.ts similarity index 100% rename from src/components/common/GitTabs/constants.ts rename to apps/web/src/components/common/GitTabs/constants.ts diff --git a/src/components/common/GitTabs/types.ts b/apps/web/src/components/common/GitTabs/types.ts similarity index 100% rename from src/components/common/GitTabs/types.ts rename to apps/web/src/components/common/GitTabs/types.ts diff --git a/src/components/common/GitTabs/utils.tsx b/apps/web/src/components/common/GitTabs/utils.tsx similarity index 100% rename from src/components/common/GitTabs/utils.tsx rename to apps/web/src/components/common/GitTabs/utils.tsx diff --git a/src/components/common/HiddenInput/HiddenInput.tsx b/apps/web/src/components/common/HiddenInput/HiddenInput.tsx similarity index 100% rename from src/components/common/HiddenInput/HiddenInput.tsx rename to apps/web/src/components/common/HiddenInput/HiddenInput.tsx diff --git a/src/components/common/HiddenInput/types.ts b/apps/web/src/components/common/HiddenInput/types.ts similarity index 100% rename from src/components/common/HiddenInput/types.ts rename to apps/web/src/components/common/HiddenInput/types.ts diff --git a/src/components/common/LazyImage/LazyImage.tsx b/apps/web/src/components/common/LazyImage/LazyImage.tsx similarity index 100% rename from src/components/common/LazyImage/LazyImage.tsx rename to apps/web/src/components/common/LazyImage/LazyImage.tsx diff --git a/src/components/common/List/List.tsx b/apps/web/src/components/common/List/List.tsx similarity index 100% rename from src/components/common/List/List.tsx rename to apps/web/src/components/common/List/List.tsx diff --git a/src/components/common/List/list.scss b/apps/web/src/components/common/List/list.scss similarity index 100% rename from src/components/common/List/list.scss rename to apps/web/src/components/common/List/list.scss diff --git a/src/components/common/MultiSelect/MultiSelect.tsx b/apps/web/src/components/common/MultiSelect/MultiSelect.tsx similarity index 100% rename from src/components/common/MultiSelect/MultiSelect.tsx rename to apps/web/src/components/common/MultiSelect/MultiSelect.tsx diff --git a/src/components/common/MultiSelect/index.tsx b/apps/web/src/components/common/MultiSelect/index.tsx similarity index 100% rename from src/components/common/MultiSelect/index.tsx rename to apps/web/src/components/common/MultiSelect/index.tsx diff --git a/src/components/common/Select/Select.tsx b/apps/web/src/components/common/Select/Select.tsx similarity index 100% rename from src/components/common/Select/Select.tsx rename to apps/web/src/components/common/Select/Select.tsx diff --git a/src/components/common/Select/select.css b/apps/web/src/components/common/Select/select.css similarity index 100% rename from src/components/common/Select/select.css rename to apps/web/src/components/common/Select/select.css diff --git a/src/components/common/Select/types.ts b/apps/web/src/components/common/Select/types.ts similarity index 100% rename from src/components/common/Select/types.ts rename to apps/web/src/components/common/Select/types.ts diff --git a/src/components/common/TLSConnectionForm/TLSConnectionForm.component.tsx b/apps/web/src/components/common/TLSConnectionForm/TLSConnectionForm.component.tsx similarity index 100% rename from src/components/common/TLSConnectionForm/TLSConnectionForm.component.tsx rename to apps/web/src/components/common/TLSConnectionForm/TLSConnectionForm.component.tsx diff --git a/src/components/common/TLSConnectionForm/TLSInputField.tsx b/apps/web/src/components/common/TLSConnectionForm/TLSInputField.tsx similarity index 100% rename from src/components/common/TLSConnectionForm/TLSInputField.tsx rename to apps/web/src/components/common/TLSConnectionForm/TLSInputField.tsx diff --git a/src/components/common/TLSConnectionForm/index.ts b/apps/web/src/components/common/TLSConnectionForm/index.ts similarity index 100% rename from src/components/common/TLSConnectionForm/index.ts rename to apps/web/src/components/common/TLSConnectionForm/index.ts diff --git a/src/components/common/TLSConnectionForm/types.ts b/apps/web/src/components/common/TLSConnectionForm/types.ts similarity index 100% rename from src/components/common/TLSConnectionForm/types.ts rename to apps/web/src/components/common/TLSConnectionForm/types.ts diff --git a/src/components/common/TLSConnectionForm/utils.ts b/apps/web/src/components/common/TLSConnectionForm/utils.ts similarity index 100% rename from src/components/common/TLSConnectionForm/utils.ts rename to apps/web/src/components/common/TLSConnectionForm/utils.ts diff --git a/src/components/common/ValidateForm/ValidateForm.tsx b/apps/web/src/components/common/ValidateForm/ValidateForm.tsx similarity index 100% rename from src/components/common/ValidateForm/ValidateForm.tsx rename to apps/web/src/components/common/ValidateForm/ValidateForm.tsx diff --git a/src/components/common/ValidateForm/validateForm.css b/apps/web/src/components/common/ValidateForm/validateForm.css similarity index 100% rename from src/components/common/ValidateForm/validateForm.css rename to apps/web/src/components/common/ValidateForm/validateForm.css diff --git a/src/components/common/awsRegionList.json b/apps/web/src/components/common/awsRegionList.json similarity index 100% rename from src/components/common/awsRegionList.json rename to apps/web/src/components/common/awsRegionList.json diff --git a/src/components/common/eaEmptyState/EAEmptyState.tsx b/apps/web/src/components/common/eaEmptyState/EAEmptyState.tsx similarity index 100% rename from src/components/common/eaEmptyState/EAEmptyState.tsx rename to apps/web/src/components/common/eaEmptyState/EAEmptyState.tsx diff --git a/src/components/common/eaEmptyState/eaEmptyState.css b/apps/web/src/components/common/eaEmptyState/eaEmptyState.css similarity index 100% rename from src/components/common/eaEmptyState/eaEmptyState.css rename to apps/web/src/components/common/eaEmptyState/eaEmptyState.css diff --git a/src/components/common/edge/colors.tsx b/apps/web/src/components/common/edge/colors.tsx similarity index 100% rename from src/components/common/edge/colors.tsx rename to apps/web/src/components/common/edge/colors.tsx diff --git a/src/components/common/edge/rectangularEdge.tsx b/apps/web/src/components/common/edge/rectangularEdge.tsx similarity index 100% rename from src/components/common/edge/rectangularEdge.tsx rename to apps/web/src/components/common/edge/rectangularEdge.tsx diff --git a/src/components/common/edge/straightEdge.tsx b/apps/web/src/components/common/edge/straightEdge.tsx similarity index 100% rename from src/components/common/edge/straightEdge.tsx rename to apps/web/src/components/common/edge/straightEdge.tsx diff --git a/src/components/common/emptyState/ChartEmptyState.tsx b/apps/web/src/components/common/emptyState/ChartEmptyState.tsx similarity index 100% rename from src/components/common/emptyState/ChartEmptyState.tsx rename to apps/web/src/components/common/emptyState/ChartEmptyState.tsx diff --git a/src/components/common/errorBoundary.tsx b/apps/web/src/components/common/errorBoundary.tsx similarity index 100% rename from src/components/common/errorBoundary.tsx rename to apps/web/src/components/common/errorBoundary.tsx diff --git a/src/components/common/formFields/CopyButton.tsx b/apps/web/src/components/common/formFields/CopyButton.tsx similarity index 100% rename from src/components/common/formFields/CopyButton.tsx rename to apps/web/src/components/common/formFields/CopyButton.tsx diff --git a/src/components/common/formFields/CustomPassword.tsx b/apps/web/src/components/common/formFields/CustomPassword.tsx similarity index 100% rename from src/components/common/formFields/CustomPassword.tsx rename to apps/web/src/components/common/formFields/CustomPassword.tsx diff --git a/src/components/common/formFields/DevtronSwitch.tsx b/apps/web/src/components/common/formFields/DevtronSwitch.tsx similarity index 100% rename from src/components/common/formFields/DevtronSwitch.tsx rename to apps/web/src/components/common/formFields/DevtronSwitch.tsx diff --git a/src/components/common/formFields/Typeahead.tsx b/apps/web/src/components/common/formFields/Typeahead.tsx similarity index 100% rename from src/components/common/formFields/Typeahead.tsx rename to apps/web/src/components/common/formFields/Typeahead.tsx diff --git a/src/components/common/formFields/Widgets/Widgets.scss b/apps/web/src/components/common/formFields/Widgets/Widgets.scss similarity index 100% rename from src/components/common/formFields/Widgets/Widgets.scss rename to apps/web/src/components/common/formFields/Widgets/Widgets.scss diff --git a/src/components/common/formFields/Widgets/Widgets.tsx b/apps/web/src/components/common/formFields/Widgets/Widgets.tsx similarity index 100% rename from src/components/common/formFields/Widgets/Widgets.tsx rename to apps/web/src/components/common/formFields/Widgets/Widgets.tsx diff --git a/src/components/common/formFields/Widgets/Widgets.type.ts b/apps/web/src/components/common/formFields/Widgets/Widgets.type.ts similarity index 100% rename from src/components/common/formFields/Widgets/Widgets.type.ts rename to apps/web/src/components/common/formFields/Widgets/Widgets.type.ts diff --git a/src/components/common/formFields/customPassword.css b/apps/web/src/components/common/formFields/customPassword.css similarity index 100% rename from src/components/common/formFields/customPassword.css rename to apps/web/src/components/common/formFields/customPassword.css diff --git a/src/components/common/helpers/Helpers.tsx b/apps/web/src/components/common/helpers/Helpers.tsx similarity index 100% rename from src/components/common/helpers/Helpers.tsx rename to apps/web/src/components/common/helpers/Helpers.tsx diff --git a/src/components/common/helpers/compareVersion.ts b/apps/web/src/components/common/helpers/compareVersion.ts similarity index 100% rename from src/components/common/helpers/compareVersion.ts rename to apps/web/src/components/common/helpers/compareVersion.ts diff --git a/src/components/common/helpers/isEmpty.ts b/apps/web/src/components/common/helpers/isEmpty.ts similarity index 100% rename from src/components/common/helpers/isEmpty.ts rename to apps/web/src/components/common/helpers/isEmpty.ts diff --git a/src/components/common/helpers/isSubset.ts b/apps/web/src/components/common/helpers/isSubset.ts similarity index 100% rename from src/components/common/helpers/isSubset.ts rename to apps/web/src/components/common/helpers/isSubset.ts diff --git a/src/components/common/helpers/time.ts b/apps/web/src/components/common/helpers/time.ts similarity index 100% rename from src/components/common/helpers/time.ts rename to apps/web/src/components/common/helpers/time.ts diff --git a/src/components/common/helpers/types.ts b/apps/web/src/components/common/helpers/types.ts similarity index 100% rename from src/components/common/helpers/types.ts rename to apps/web/src/components/common/helpers/types.ts diff --git a/src/components/common/helpers/utils.tsx b/apps/web/src/components/common/helpers/utils.tsx similarity index 100% rename from src/components/common/helpers/utils.tsx rename to apps/web/src/components/common/helpers/utils.tsx diff --git a/src/components/common/helpers/workflowURL.ts b/apps/web/src/components/common/helpers/workflowURL.ts similarity index 100% rename from src/components/common/helpers/workflowURL.ts rename to apps/web/src/components/common/helpers/workflowURL.ts diff --git a/src/components/common/hooks/FileReader.ts b/apps/web/src/components/common/hooks/FileReader.ts similarity index 100% rename from src/components/common/hooks/FileReader.ts rename to apps/web/src/components/common/hooks/FileReader.ts diff --git a/src/components/common/hooks/__tests__/FileReader.test.tsx b/apps/web/src/components/common/hooks/__tests__/FileReader.test.tsx similarity index 100% rename from src/components/common/hooks/__tests__/FileReader.test.tsx rename to apps/web/src/components/common/hooks/__tests__/FileReader.test.tsx diff --git a/src/components/common/hooks/constants.ts b/apps/web/src/components/common/hooks/constants.ts similarity index 100% rename from src/components/common/hooks/constants.ts rename to apps/web/src/components/common/hooks/constants.ts diff --git a/src/components/common/hooks/types.ts b/apps/web/src/components/common/hooks/types.ts similarity index 100% rename from src/components/common/hooks/types.ts rename to apps/web/src/components/common/hooks/types.ts diff --git a/src/components/common/icons/Icons.tsx b/apps/web/src/components/common/icons/Icons.tsx similarity index 100% rename from src/components/common/icons/Icons.tsx rename to apps/web/src/components/common/icons/Icons.tsx diff --git a/src/components/common/index.ts b/apps/web/src/components/common/index.ts similarity index 100% rename from src/components/common/index.ts rename to apps/web/src/components/common/index.ts diff --git a/src/components/common/lineChart/lineChart.css b/apps/web/src/components/common/lineChart/lineChart.css similarity index 100% rename from src/components/common/lineChart/lineChart.css rename to apps/web/src/components/common/lineChart/lineChart.css diff --git a/src/components/common/lineChart/lineChart.tsx b/apps/web/src/components/common/lineChart/lineChart.tsx similarity index 100% rename from src/components/common/lineChart/lineChart.tsx rename to apps/web/src/components/common/lineChart/lineChart.tsx diff --git a/src/components/common/lineChart/types.tsx b/apps/web/src/components/common/lineChart/types.tsx similarity index 100% rename from src/components/common/lineChart/types.tsx rename to apps/web/src/components/common/lineChart/types.tsx diff --git a/src/components/common/navigation/Navigation.tsx b/apps/web/src/components/common/navigation/Navigation.tsx similarity index 100% rename from src/components/common/navigation/Navigation.tsx rename to apps/web/src/components/common/navigation/Navigation.tsx diff --git a/src/components/common/navigation/NavigationRoutes.tsx b/apps/web/src/components/common/navigation/NavigationRoutes.tsx similarity index 100% rename from src/components/common/navigation/NavigationRoutes.tsx rename to apps/web/src/components/common/navigation/NavigationRoutes.tsx diff --git a/src/components/common/navigation/navigation.scss b/apps/web/src/components/common/navigation/navigation.scss similarity index 100% rename from src/components/common/navigation/navigation.scss rename to apps/web/src/components/common/navigation/navigation.scss diff --git a/src/components/common/navigation/types.ts b/apps/web/src/components/common/navigation/types.ts similarity index 100% rename from src/components/common/navigation/types.ts rename to apps/web/src/components/common/navigation/types.ts diff --git a/src/components/deploymentConfig/ChartSelectorDropdown.tsx b/apps/web/src/components/deploymentConfig/ChartSelectorDropdown.tsx similarity index 100% rename from src/components/deploymentConfig/ChartSelectorDropdown.tsx rename to apps/web/src/components/deploymentConfig/ChartSelectorDropdown.tsx diff --git a/src/components/deploymentConfig/DeploymentConfig.tsx b/apps/web/src/components/deploymentConfig/DeploymentConfig.tsx similarity index 100% rename from src/components/deploymentConfig/DeploymentConfig.tsx rename to apps/web/src/components/deploymentConfig/DeploymentConfig.tsx diff --git a/src/components/deploymentConfig/DeploymentConfig.utils.ts b/apps/web/src/components/deploymentConfig/DeploymentConfig.utils.ts similarity index 100% rename from src/components/deploymentConfig/DeploymentConfig.utils.ts rename to apps/web/src/components/deploymentConfig/DeploymentConfig.utils.ts diff --git a/src/components/deploymentConfig/DeploymentConfigReducer.ts b/apps/web/src/components/deploymentConfig/DeploymentConfigReducer.ts similarity index 100% rename from src/components/deploymentConfig/DeploymentConfigReducer.ts rename to apps/web/src/components/deploymentConfig/DeploymentConfigReducer.ts diff --git a/src/components/deploymentConfig/DeploymentTemplateView/DeploymentConfigFormCTA.tsx b/apps/web/src/components/deploymentConfig/DeploymentTemplateView/DeploymentConfigFormCTA.tsx similarity index 100% rename from src/components/deploymentConfig/DeploymentTemplateView/DeploymentConfigFormCTA.tsx rename to apps/web/src/components/deploymentConfig/DeploymentTemplateView/DeploymentConfigFormCTA.tsx diff --git a/src/components/deploymentConfig/DeploymentTemplateView/DeploymentConfigToolbar.tsx b/apps/web/src/components/deploymentConfig/DeploymentTemplateView/DeploymentConfigToolbar.tsx similarity index 100% rename from src/components/deploymentConfig/DeploymentTemplateView/DeploymentConfigToolbar.tsx rename to apps/web/src/components/deploymentConfig/DeploymentTemplateView/DeploymentConfigToolbar.tsx diff --git a/src/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateEditorView.tsx b/apps/web/src/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateEditorView.tsx similarity index 100% rename from src/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateEditorView.tsx rename to apps/web/src/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateEditorView.tsx diff --git a/src/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateGUIView.tsx b/apps/web/src/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateGUIView.tsx similarity index 100% rename from src/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateGUIView.tsx rename to apps/web/src/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateGUIView.tsx diff --git a/src/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateOptionsTab.tsx b/apps/web/src/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateOptionsTab.tsx similarity index 100% rename from src/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateOptionsTab.tsx rename to apps/web/src/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateOptionsTab.tsx diff --git a/src/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateOverride.tsx b/apps/web/src/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateOverride.tsx similarity index 100% rename from src/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateOverride.tsx rename to apps/web/src/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateOverride.tsx diff --git a/src/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateOverrideForm.tsx b/apps/web/src/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateOverrideForm.tsx similarity index 100% rename from src/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateOverrideForm.tsx rename to apps/web/src/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateOverrideForm.tsx diff --git a/src/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateReadOnlyEditorView.tsx b/apps/web/src/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateReadOnlyEditorView.tsx similarity index 100% rename from src/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateReadOnlyEditorView.tsx rename to apps/web/src/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateReadOnlyEditorView.tsx diff --git a/src/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateView.component.tsx b/apps/web/src/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateView.component.tsx similarity index 100% rename from src/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateView.component.tsx rename to apps/web/src/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateView.component.tsx diff --git a/src/components/deploymentConfig/Readme.md b/apps/web/src/components/deploymentConfig/Readme.md similarity index 100% rename from src/components/deploymentConfig/Readme.md rename to apps/web/src/components/deploymentConfig/Readme.md diff --git a/src/components/deploymentConfig/ReadmeConfig.tsx b/apps/web/src/components/deploymentConfig/ReadmeConfig.tsx similarity index 100% rename from src/components/deploymentConfig/ReadmeConfig.tsx rename to apps/web/src/components/deploymentConfig/ReadmeConfig.tsx diff --git a/src/components/deploymentConfig/constants.tsx b/apps/web/src/components/deploymentConfig/constants.tsx similarity index 100% rename from src/components/deploymentConfig/constants.tsx rename to apps/web/src/components/deploymentConfig/constants.tsx diff --git a/src/components/deploymentConfig/deploymentConfig.scss b/apps/web/src/components/deploymentConfig/deploymentConfig.scss similarity index 100% rename from src/components/deploymentConfig/deploymentConfig.scss rename to apps/web/src/components/deploymentConfig/deploymentConfig.scss diff --git a/src/components/deploymentConfig/service.tsx b/apps/web/src/components/deploymentConfig/service.tsx similarity index 100% rename from src/components/deploymentConfig/service.tsx rename to apps/web/src/components/deploymentConfig/service.tsx diff --git a/src/components/deploymentConfig/types.tsx b/apps/web/src/components/deploymentConfig/types.tsx similarity index 100% rename from src/components/deploymentConfig/types.tsx rename to apps/web/src/components/deploymentConfig/types.tsx diff --git a/src/components/deploymentConfig/utils.tsx b/apps/web/src/components/deploymentConfig/utils.tsx similarity index 100% rename from src/components/deploymentConfig/utils.tsx rename to apps/web/src/components/deploymentConfig/utils.tsx diff --git a/src/components/dockerRegistry/Docker.tsx b/apps/web/src/components/dockerRegistry/Docker.tsx similarity index 100% rename from src/components/dockerRegistry/Docker.tsx rename to apps/web/src/components/dockerRegistry/Docker.tsx diff --git a/src/components/dockerRegistry/ManageRegistry.tsx b/apps/web/src/components/dockerRegistry/ManageRegistry.tsx similarity index 100% rename from src/components/dockerRegistry/ManageRegistry.tsx rename to apps/web/src/components/dockerRegistry/ManageRegistry.tsx diff --git a/src/components/dockerRegistry/creatableStyles.ts b/apps/web/src/components/dockerRegistry/creatableStyles.ts similarity index 100% rename from src/components/dockerRegistry/creatableStyles.ts rename to apps/web/src/components/dockerRegistry/creatableStyles.ts diff --git a/src/components/dockerRegistry/dockerType.tsx b/apps/web/src/components/dockerRegistry/dockerType.tsx similarity index 100% rename from src/components/dockerRegistry/dockerType.tsx rename to apps/web/src/components/dockerRegistry/dockerType.tsx diff --git a/src/components/dockerRegistry/service.tsx b/apps/web/src/components/dockerRegistry/service.tsx similarity index 100% rename from src/components/dockerRegistry/service.tsx rename to apps/web/src/components/dockerRegistry/service.tsx diff --git a/src/components/external-apps/ExternalAppService.ts b/apps/web/src/components/external-apps/ExternalAppService.ts similarity index 100% rename from src/components/external-apps/ExternalAppService.ts rename to apps/web/src/components/external-apps/ExternalAppService.ts diff --git a/src/components/external-apps/ExternalApps.tsx b/apps/web/src/components/external-apps/ExternalApps.tsx similarity index 100% rename from src/components/external-apps/ExternalApps.tsx rename to apps/web/src/components/external-apps/ExternalApps.tsx diff --git a/src/components/externalArgoApps/ExternalArgoApp.tsx b/apps/web/src/components/externalArgoApps/ExternalArgoApp.tsx similarity index 100% rename from src/components/externalArgoApps/ExternalArgoApp.tsx rename to apps/web/src/components/externalArgoApps/ExternalArgoApp.tsx diff --git a/src/components/externalArgoApps/ExternalArgoAppDetail.tsx b/apps/web/src/components/externalArgoApps/ExternalArgoAppDetail.tsx similarity index 100% rename from src/components/externalArgoApps/ExternalArgoAppDetail.tsx rename to apps/web/src/components/externalArgoApps/ExternalArgoAppDetail.tsx diff --git a/src/components/externalArgoApps/externalArgoApp.type.ts b/apps/web/src/components/externalArgoApps/externalArgoApp.type.ts similarity index 100% rename from src/components/externalArgoApps/externalArgoApp.type.ts rename to apps/web/src/components/externalArgoApps/externalArgoApp.type.ts diff --git a/src/components/externalLinks/ExternalLinks.component.tsx b/apps/web/src/components/externalLinks/ExternalLinks.component.tsx similarity index 100% rename from src/components/externalLinks/ExternalLinks.component.tsx rename to apps/web/src/components/externalLinks/ExternalLinks.component.tsx diff --git a/src/components/externalLinks/ExternalLinks.service.ts b/apps/web/src/components/externalLinks/ExternalLinks.service.ts similarity index 100% rename from src/components/externalLinks/ExternalLinks.service.ts rename to apps/web/src/components/externalLinks/ExternalLinks.service.ts diff --git a/src/components/externalLinks/ExternalLinks.tsx b/apps/web/src/components/externalLinks/ExternalLinks.tsx similarity index 100% rename from src/components/externalLinks/ExternalLinks.tsx rename to apps/web/src/components/externalLinks/ExternalLinks.tsx diff --git a/src/components/externalLinks/ExternalLinks.type.ts b/apps/web/src/components/externalLinks/ExternalLinks.type.ts similarity index 100% rename from src/components/externalLinks/ExternalLinks.type.ts rename to apps/web/src/components/externalLinks/ExternalLinks.type.ts diff --git a/src/components/externalLinks/ExternalLinks.utils.ts b/apps/web/src/components/externalLinks/ExternalLinks.utils.ts similarity index 100% rename from src/components/externalLinks/ExternalLinks.utils.ts rename to apps/web/src/components/externalLinks/ExternalLinks.utils.ts diff --git a/src/components/externalLinks/ExternalLinksCRUD/AddExternalLink.scss b/apps/web/src/components/externalLinks/ExternalLinksCRUD/AddExternalLink.scss similarity index 100% rename from src/components/externalLinks/ExternalLinksCRUD/AddExternalLink.scss rename to apps/web/src/components/externalLinks/ExternalLinksCRUD/AddExternalLink.scss diff --git a/src/components/externalLinks/ExternalLinksCRUD/AddExternalLink.tsx b/apps/web/src/components/externalLinks/ExternalLinksCRUD/AddExternalLink.tsx similarity index 100% rename from src/components/externalLinks/ExternalLinksCRUD/AddExternalLink.tsx rename to apps/web/src/components/externalLinks/ExternalLinksCRUD/AddExternalLink.tsx diff --git a/src/components/externalLinks/ExternalLinksCRUD/ConfigureLinkAction.tsx b/apps/web/src/components/externalLinks/ExternalLinksCRUD/ConfigureLinkAction.tsx similarity index 100% rename from src/components/externalLinks/ExternalLinksCRUD/ConfigureLinkAction.tsx rename to apps/web/src/components/externalLinks/ExternalLinksCRUD/ConfigureLinkAction.tsx diff --git a/src/components/externalLinks/ExternalLinksCRUD/DeleteExternalLinkDialog.tsx b/apps/web/src/components/externalLinks/ExternalLinksCRUD/DeleteExternalLinkDialog.tsx similarity index 100% rename from src/components/externalLinks/ExternalLinksCRUD/DeleteExternalLinkDialog.tsx rename to apps/web/src/components/externalLinks/ExternalLinksCRUD/DeleteExternalLinkDialog.tsx diff --git a/src/components/externalLinks/ExternalLinksCRUD/IdentifierSelector.tsx b/apps/web/src/components/externalLinks/ExternalLinksCRUD/IdentifierSelector.tsx similarity index 100% rename from src/components/externalLinks/ExternalLinksCRUD/IdentifierSelector.tsx rename to apps/web/src/components/externalLinks/ExternalLinksCRUD/IdentifierSelector.tsx diff --git a/src/components/externalLinks/ExternalLinksFilters.tsx b/apps/web/src/components/externalLinks/ExternalLinksFilters.tsx similarity index 100% rename from src/components/externalLinks/ExternalLinksFilters.tsx rename to apps/web/src/components/externalLinks/ExternalLinksFilters.tsx diff --git a/src/components/externalLinks/externalLinks.component.scss b/apps/web/src/components/externalLinks/externalLinks.component.scss similarity index 100% rename from src/components/externalLinks/externalLinks.component.scss rename to apps/web/src/components/externalLinks/externalLinks.component.scss diff --git a/src/components/externalLinks/externalLinks.scss b/apps/web/src/components/externalLinks/externalLinks.scss similarity index 100% rename from src/components/externalLinks/externalLinks.scss rename to apps/web/src/components/externalLinks/externalLinks.scss diff --git a/src/components/gitOps/GitOpsConfiguration.tsx b/apps/web/src/components/gitOps/GitOpsConfiguration.tsx similarity index 100% rename from src/components/gitOps/GitOpsConfiguration.tsx rename to apps/web/src/components/gitOps/GitOpsConfiguration.tsx diff --git a/src/components/gitOps/UpdateConfirmationDialog.tsx b/apps/web/src/components/gitOps/UpdateConfirmationDialog.tsx similarity index 100% rename from src/components/gitOps/UpdateConfirmationDialog.tsx rename to apps/web/src/components/gitOps/UpdateConfirmationDialog.tsx diff --git a/src/components/gitOps/UserGitRepConfiguration.tsx b/apps/web/src/components/gitOps/UserGitRepConfiguration.tsx similarity index 100% rename from src/components/gitOps/UserGitRepConfiguration.tsx rename to apps/web/src/components/gitOps/UserGitRepConfiguration.tsx diff --git a/src/components/gitOps/UserGitRepo.tsx b/apps/web/src/components/gitOps/UserGitRepo.tsx similarity index 100% rename from src/components/gitOps/UserGitRepo.tsx rename to apps/web/src/components/gitOps/UserGitRepo.tsx diff --git a/src/components/gitOps/__tests__/GitOpsConfiguration.test.tsx b/apps/web/src/components/gitOps/__tests__/GitOpsConfiguration.test.tsx similarity index 100% rename from src/components/gitOps/__tests__/GitOpsConfiguration.test.tsx rename to apps/web/src/components/gitOps/__tests__/GitOpsConfiguration.test.tsx diff --git a/src/components/gitOps/constants.ts b/apps/web/src/components/gitOps/constants.ts similarity index 100% rename from src/components/gitOps/constants.ts rename to apps/web/src/components/gitOps/constants.ts diff --git a/src/components/gitOps/gitops.scss b/apps/web/src/components/gitOps/gitops.scss similarity index 100% rename from src/components/gitOps/gitops.scss rename to apps/web/src/components/gitOps/gitops.scss diff --git a/src/components/gitOps/gitops.service.tsx b/apps/web/src/components/gitOps/gitops.service.tsx similarity index 100% rename from src/components/gitOps/gitops.service.tsx rename to apps/web/src/components/gitOps/gitops.service.tsx diff --git a/src/components/gitOps/gitops.type.ts b/apps/web/src/components/gitOps/gitops.type.ts similarity index 100% rename from src/components/gitOps/gitops.type.ts rename to apps/web/src/components/gitOps/gitops.type.ts diff --git a/src/components/gitOps/utils.ts b/apps/web/src/components/gitOps/utils.ts similarity index 100% rename from src/components/gitOps/utils.ts rename to apps/web/src/components/gitOps/utils.ts diff --git a/src/components/gitProvider/AddGitHostConfigModal.tsx b/apps/web/src/components/gitProvider/AddGitHostConfigModal.tsx similarity index 100% rename from src/components/gitProvider/AddGitHostConfigModal.tsx rename to apps/web/src/components/gitProvider/AddGitHostConfigModal.tsx diff --git a/src/components/gitProvider/GitProvider.tsx b/apps/web/src/components/gitProvider/GitProvider.tsx similarity index 100% rename from src/components/gitProvider/GitProvider.tsx rename to apps/web/src/components/gitProvider/GitProvider.tsx diff --git a/src/components/gitProvider/gitProvider.scss b/apps/web/src/components/gitProvider/gitProvider.scss similarity index 100% rename from src/components/gitProvider/gitProvider.scss rename to apps/web/src/components/gitProvider/gitProvider.scss diff --git a/src/components/gitProvider/gitProvider.service.tsx b/apps/web/src/components/gitProvider/gitProvider.service.tsx similarity index 100% rename from src/components/gitProvider/gitProvider.service.tsx rename to apps/web/src/components/gitProvider/gitProvider.service.tsx diff --git a/src/components/gitProvider/gitProvider.util.tsx b/apps/web/src/components/gitProvider/gitProvider.util.tsx similarity index 100% rename from src/components/gitProvider/gitProvider.util.tsx rename to apps/web/src/components/gitProvider/gitProvider.util.tsx diff --git a/src/components/gitProvider/types.ts b/apps/web/src/components/gitProvider/types.ts similarity index 100% rename from src/components/gitProvider/types.ts rename to apps/web/src/components/gitProvider/types.ts diff --git a/src/components/globalConfigurations/GlobalConfiguration.tsx b/apps/web/src/components/globalConfigurations/GlobalConfiguration.tsx similarity index 100% rename from src/components/globalConfigurations/GlobalConfiguration.tsx rename to apps/web/src/components/globalConfigurations/GlobalConfiguration.tsx diff --git a/src/components/globalConfigurations/GlobalConfigurationProvider.tsx b/apps/web/src/components/globalConfigurations/GlobalConfigurationProvider.tsx similarity index 100% rename from src/components/globalConfigurations/GlobalConfigurationProvider.tsx rename to apps/web/src/components/globalConfigurations/GlobalConfigurationProvider.tsx diff --git a/src/components/globalConfigurations/Readme.md b/apps/web/src/components/globalConfigurations/Readme.md similarity index 100% rename from src/components/globalConfigurations/Readme.md rename to apps/web/src/components/globalConfigurations/Readme.md diff --git a/src/components/globalConfigurations/globalConfiguration.type.ts b/apps/web/src/components/globalConfigurations/globalConfiguration.type.ts similarity index 100% rename from src/components/globalConfigurations/globalConfiguration.type.ts rename to apps/web/src/components/globalConfigurations/globalConfiguration.type.ts diff --git a/src/components/globalConfigurations/globalConfigurations.scss b/apps/web/src/components/globalConfigurations/globalConfigurations.scss similarity index 100% rename from src/components/globalConfigurations/globalConfigurations.scss rename to apps/web/src/components/globalConfigurations/globalConfigurations.scss diff --git a/src/components/globalConfigurations/types.ts b/apps/web/src/components/globalConfigurations/types.ts similarity index 100% rename from src/components/globalConfigurations/types.ts rename to apps/web/src/components/globalConfigurations/types.ts diff --git a/src/components/hostURL/HostURL.tsx b/apps/web/src/components/hostURL/HostURL.tsx similarity index 100% rename from src/components/hostURL/HostURL.tsx rename to apps/web/src/components/hostURL/HostURL.tsx diff --git a/src/components/hostURL/hosturl.scss b/apps/web/src/components/hostURL/hosturl.scss similarity index 100% rename from src/components/hostURL/hosturl.scss rename to apps/web/src/components/hostURL/hosturl.scss diff --git a/src/components/hostURL/hosturl.service.ts b/apps/web/src/components/hostURL/hosturl.service.ts similarity index 100% rename from src/components/hostURL/hosturl.service.ts rename to apps/web/src/components/hostURL/hosturl.service.ts diff --git a/src/components/hostURL/hosturl.type.ts b/apps/web/src/components/hostURL/hosturl.type.ts similarity index 100% rename from src/components/hostURL/hosturl.type.ts rename to apps/web/src/components/hostURL/hosturl.type.ts diff --git a/src/components/hyperion/EnvironmentSelect.scss b/apps/web/src/components/hyperion/EnvironmentSelect.scss similarity index 100% rename from src/components/hyperion/EnvironmentSelect.scss rename to apps/web/src/components/hyperion/EnvironmentSelect.scss diff --git a/src/components/hyperion/EnvironmentSelect.tsx b/apps/web/src/components/hyperion/EnvironmentSelect.tsx similarity index 100% rename from src/components/hyperion/EnvironmentSelect.tsx rename to apps/web/src/components/hyperion/EnvironmentSelect.tsx diff --git a/src/components/login/Login.tsx b/apps/web/src/components/login/Login.tsx similarity index 100% rename from src/components/login/Login.tsx rename to apps/web/src/components/login/Login.tsx diff --git a/src/components/login/constants.ts b/apps/web/src/components/login/constants.ts similarity index 100% rename from src/components/login/constants.ts rename to apps/web/src/components/login/constants.ts diff --git a/src/components/login/login.scss b/apps/web/src/components/login/login.scss similarity index 100% rename from src/components/login/login.scss rename to apps/web/src/components/login/login.scss diff --git a/src/components/login/login.service.ts b/apps/web/src/components/login/login.service.ts similarity index 100% rename from src/components/login/login.service.ts rename to apps/web/src/components/login/login.service.ts diff --git a/src/components/login/login.types.ts b/apps/web/src/components/login/login.types.ts similarity index 100% rename from src/components/login/login.types.ts rename to apps/web/src/components/login/login.types.ts diff --git a/src/components/material/CreateMaterial.tsx b/apps/web/src/components/material/CreateMaterial.tsx similarity index 100% rename from src/components/material/CreateMaterial.tsx rename to apps/web/src/components/material/CreateMaterial.tsx diff --git a/src/components/material/MaterialList.tsx b/apps/web/src/components/material/MaterialList.tsx similarity index 100% rename from src/components/material/MaterialList.tsx rename to apps/web/src/components/material/MaterialList.tsx diff --git a/src/components/material/MaterialView.tsx b/apps/web/src/components/material/MaterialView.tsx similarity index 100% rename from src/components/material/MaterialView.tsx rename to apps/web/src/components/material/MaterialView.tsx diff --git a/src/components/material/Readme.md b/apps/web/src/components/material/Readme.md similarity index 100% rename from src/components/material/Readme.md rename to apps/web/src/components/material/Readme.md diff --git a/src/components/material/UpdateMaterial.tsx b/apps/web/src/components/material/UpdateMaterial.tsx similarity index 100% rename from src/components/material/UpdateMaterial.tsx rename to apps/web/src/components/material/UpdateMaterial.tsx diff --git a/src/components/material/constants.ts b/apps/web/src/components/material/constants.ts similarity index 100% rename from src/components/material/constants.ts rename to apps/web/src/components/material/constants.ts diff --git a/src/components/material/material.scss b/apps/web/src/components/material/material.scss similarity index 100% rename from src/components/material/material.scss rename to apps/web/src/components/material/material.scss diff --git a/src/components/material/material.service.ts b/apps/web/src/components/material/material.service.ts similarity index 100% rename from src/components/material/material.service.ts rename to apps/web/src/components/material/material.service.ts diff --git a/src/components/material/material.types.ts b/apps/web/src/components/material/material.types.ts similarity index 100% rename from src/components/material/material.types.ts rename to apps/web/src/components/material/material.types.ts diff --git a/src/components/notifications/AddNotification.tsx b/apps/web/src/components/notifications/AddNotification.tsx similarity index 100% rename from src/components/notifications/AddNotification.tsx rename to apps/web/src/components/notifications/AddNotification.tsx diff --git a/src/components/notifications/ConfigurationTab.tsx b/apps/web/src/components/notifications/ConfigurationTab.tsx similarity index 100% rename from src/components/notifications/ConfigurationTab.tsx rename to apps/web/src/components/notifications/ConfigurationTab.tsx diff --git a/src/components/notifications/CreateHeaderDetails.tsx b/apps/web/src/components/notifications/CreateHeaderDetails.tsx similarity index 100% rename from src/components/notifications/CreateHeaderDetails.tsx rename to apps/web/src/components/notifications/CreateHeaderDetails.tsx diff --git a/src/components/notifications/ModifyRecipientsModal.tsx b/apps/web/src/components/notifications/ModifyRecipientsModal.tsx similarity index 100% rename from src/components/notifications/ModifyRecipientsModal.tsx rename to apps/web/src/components/notifications/ModifyRecipientsModal.tsx diff --git a/src/components/notifications/NotificationTab.tsx b/apps/web/src/components/notifications/NotificationTab.tsx similarity index 100% rename from src/components/notifications/NotificationTab.tsx rename to apps/web/src/components/notifications/NotificationTab.tsx diff --git a/src/components/notifications/Notifications.tsx b/apps/web/src/components/notifications/Notifications.tsx similarity index 100% rename from src/components/notifications/Notifications.tsx rename to apps/web/src/components/notifications/Notifications.tsx diff --git a/src/components/notifications/SESConfigModal.tsx b/apps/web/src/components/notifications/SESConfigModal.tsx similarity index 100% rename from src/components/notifications/SESConfigModal.tsx rename to apps/web/src/components/notifications/SESConfigModal.tsx diff --git a/src/components/notifications/SMTPConfigModal.tsx b/apps/web/src/components/notifications/SMTPConfigModal.tsx similarity index 100% rename from src/components/notifications/SMTPConfigModal.tsx rename to apps/web/src/components/notifications/SMTPConfigModal.tsx diff --git a/src/components/notifications/SlackConfigModal.tsx b/apps/web/src/components/notifications/SlackConfigModal.tsx similarity index 100% rename from src/components/notifications/SlackConfigModal.tsx rename to apps/web/src/components/notifications/SlackConfigModal.tsx diff --git a/src/components/notifications/WebhookConfigModal.tsx b/apps/web/src/components/notifications/WebhookConfigModal.tsx similarity index 100% rename from src/components/notifications/WebhookConfigModal.tsx rename to apps/web/src/components/notifications/WebhookConfigModal.tsx diff --git a/src/components/notifications/notifications.scss b/apps/web/src/components/notifications/notifications.scss similarity index 100% rename from src/components/notifications/notifications.scss rename to apps/web/src/components/notifications/notifications.scss diff --git a/src/components/notifications/notifications.service.ts b/apps/web/src/components/notifications/notifications.service.ts similarity index 100% rename from src/components/notifications/notifications.service.ts rename to apps/web/src/components/notifications/notifications.service.ts diff --git a/src/components/notifications/notifications.util.tsx b/apps/web/src/components/notifications/notifications.util.tsx similarity index 100% rename from src/components/notifications/notifications.util.tsx rename to apps/web/src/components/notifications/notifications.util.tsx diff --git a/src/components/notifications/types.tsx b/apps/web/src/components/notifications/types.tsx similarity index 100% rename from src/components/notifications/types.tsx rename to apps/web/src/components/notifications/types.tsx diff --git a/src/components/onboardingGuide/GuideCommonHeader.tsx b/apps/web/src/components/onboardingGuide/GuideCommonHeader.tsx similarity index 100% rename from src/components/onboardingGuide/GuideCommonHeader.tsx rename to apps/web/src/components/onboardingGuide/GuideCommonHeader.tsx diff --git a/src/components/onboardingGuide/OnboardingGuide.constants.ts b/apps/web/src/components/onboardingGuide/OnboardingGuide.constants.ts similarity index 100% rename from src/components/onboardingGuide/OnboardingGuide.constants.ts rename to apps/web/src/components/onboardingGuide/OnboardingGuide.constants.ts diff --git a/src/components/onboardingGuide/OnboardingGuide.tsx b/apps/web/src/components/onboardingGuide/OnboardingGuide.tsx similarity index 100% rename from src/components/onboardingGuide/OnboardingGuide.tsx rename to apps/web/src/components/onboardingGuide/OnboardingGuide.tsx diff --git a/src/components/onboardingGuide/OnboardingGuide.type.ts b/apps/web/src/components/onboardingGuide/OnboardingGuide.type.ts similarity index 100% rename from src/components/onboardingGuide/OnboardingGuide.type.ts rename to apps/web/src/components/onboardingGuide/OnboardingGuide.type.ts diff --git a/src/components/onboardingGuide/onboarding.utils.ts b/apps/web/src/components/onboardingGuide/onboarding.utils.ts similarity index 100% rename from src/components/onboardingGuide/onboarding.utils.ts rename to apps/web/src/components/onboardingGuide/onboarding.utils.ts diff --git a/src/components/onboardingGuide/onboardingGuide.scss b/apps/web/src/components/onboardingGuide/onboardingGuide.scss similarity index 100% rename from src/components/onboardingGuide/onboardingGuide.scss rename to apps/web/src/components/onboardingGuide/onboardingGuide.scss diff --git a/src/components/project/Project.tsx b/apps/web/src/components/project/Project.tsx similarity index 100% rename from src/components/project/Project.tsx rename to apps/web/src/components/project/Project.tsx diff --git a/src/components/project/ProjectList.tsx b/apps/web/src/components/project/ProjectList.tsx similarity index 100% rename from src/components/project/ProjectList.tsx rename to apps/web/src/components/project/ProjectList.tsx diff --git a/src/components/project/project.scss b/apps/web/src/components/project/project.scss similarity index 100% rename from src/components/project/project.scss rename to apps/web/src/components/project/project.scss diff --git a/src/components/project/service.ts b/apps/web/src/components/project/service.ts similarity index 100% rename from src/components/project/service.ts rename to apps/web/src/components/project/service.ts diff --git a/src/components/project/types.ts b/apps/web/src/components/project/types.ts similarity index 100% rename from src/components/project/types.ts rename to apps/web/src/components/project/types.ts diff --git a/src/components/scopedVariables/DescriptionTab.tsx b/apps/web/src/components/scopedVariables/DescriptionTab.tsx similarity index 100% rename from src/components/scopedVariables/DescriptionTab.tsx rename to apps/web/src/components/scopedVariables/DescriptionTab.tsx diff --git a/src/components/scopedVariables/Descriptor.tsx b/apps/web/src/components/scopedVariables/Descriptor.tsx similarity index 100% rename from src/components/scopedVariables/Descriptor.tsx rename to apps/web/src/components/scopedVariables/Descriptor.tsx diff --git a/src/components/scopedVariables/DescriptorSearchBar.tsx b/apps/web/src/components/scopedVariables/DescriptorSearchBar.tsx similarity index 100% rename from src/components/scopedVariables/DescriptorSearchBar.tsx rename to apps/web/src/components/scopedVariables/DescriptorSearchBar.tsx diff --git a/src/components/scopedVariables/SavedVariables.tsx b/apps/web/src/components/scopedVariables/SavedVariables.tsx similarity index 100% rename from src/components/scopedVariables/SavedVariables.tsx rename to apps/web/src/components/scopedVariables/SavedVariables.tsx diff --git a/src/components/scopedVariables/SavedVariablesContent.tsx b/apps/web/src/components/scopedVariables/SavedVariablesContent.tsx similarity index 100% rename from src/components/scopedVariables/SavedVariablesContent.tsx rename to apps/web/src/components/scopedVariables/SavedVariablesContent.tsx diff --git a/src/components/scopedVariables/ScopedVariables.tsx b/apps/web/src/components/scopedVariables/ScopedVariables.tsx similarity index 100% rename from src/components/scopedVariables/ScopedVariables.tsx rename to apps/web/src/components/scopedVariables/ScopedVariables.tsx diff --git a/src/components/scopedVariables/ScopedVariablesEditor.tsx b/apps/web/src/components/scopedVariables/ScopedVariablesEditor.tsx similarity index 100% rename from src/components/scopedVariables/ScopedVariablesEditor.tsx rename to apps/web/src/components/scopedVariables/ScopedVariablesEditor.tsx diff --git a/src/components/scopedVariables/ScopedVariablesLoader.tsx b/apps/web/src/components/scopedVariables/ScopedVariablesLoader.tsx similarity index 100% rename from src/components/scopedVariables/ScopedVariablesLoader.tsx rename to apps/web/src/components/scopedVariables/ScopedVariablesLoader.tsx diff --git a/src/components/scopedVariables/UploadScopedVariables.tsx b/apps/web/src/components/scopedVariables/UploadScopedVariables.tsx similarity index 100% rename from src/components/scopedVariables/UploadScopedVariables.tsx rename to apps/web/src/components/scopedVariables/UploadScopedVariables.tsx diff --git a/src/components/scopedVariables/VariablesList.tsx b/apps/web/src/components/scopedVariables/VariablesList.tsx similarity index 100% rename from src/components/scopedVariables/VariablesList.tsx rename to apps/web/src/components/scopedVariables/VariablesList.tsx diff --git a/src/components/scopedVariables/__tests__/Descriptor.test.tsx b/apps/web/src/components/scopedVariables/__tests__/Descriptor.test.tsx similarity index 100% rename from src/components/scopedVariables/__tests__/Descriptor.test.tsx rename to apps/web/src/components/scopedVariables/__tests__/Descriptor.test.tsx diff --git a/src/components/scopedVariables/__tests__/DescriptorSearchBar.test.tsx b/apps/web/src/components/scopedVariables/__tests__/DescriptorSearchBar.test.tsx similarity index 100% rename from src/components/scopedVariables/__tests__/DescriptorSearchBar.test.tsx rename to apps/web/src/components/scopedVariables/__tests__/DescriptorSearchBar.test.tsx diff --git a/src/components/scopedVariables/__tests__/SavedVariables.test.tsx b/apps/web/src/components/scopedVariables/__tests__/SavedVariables.test.tsx similarity index 100% rename from src/components/scopedVariables/__tests__/SavedVariables.test.tsx rename to apps/web/src/components/scopedVariables/__tests__/SavedVariables.test.tsx diff --git a/src/components/scopedVariables/__tests__/ScopedVariables.test.tsx b/apps/web/src/components/scopedVariables/__tests__/ScopedVariables.test.tsx similarity index 100% rename from src/components/scopedVariables/__tests__/ScopedVariables.test.tsx rename to apps/web/src/components/scopedVariables/__tests__/ScopedVariables.test.tsx diff --git a/src/components/scopedVariables/__tests__/ScopedVariablesEditor.test.tsx b/apps/web/src/components/scopedVariables/__tests__/ScopedVariablesEditor.test.tsx similarity index 100% rename from src/components/scopedVariables/__tests__/ScopedVariablesEditor.test.tsx rename to apps/web/src/components/scopedVariables/__tests__/ScopedVariablesEditor.test.tsx diff --git a/src/components/scopedVariables/__tests__/ScopedVariablesLoader.test.tsx b/apps/web/src/components/scopedVariables/__tests__/ScopedVariablesLoader.test.tsx similarity index 100% rename from src/components/scopedVariables/__tests__/ScopedVariablesLoader.test.tsx rename to apps/web/src/components/scopedVariables/__tests__/ScopedVariablesLoader.test.tsx diff --git a/src/components/scopedVariables/__tests__/UploadScopedVariables.test.tsx b/apps/web/src/components/scopedVariables/__tests__/UploadScopedVariables.test.tsx similarity index 100% rename from src/components/scopedVariables/__tests__/UploadScopedVariables.test.tsx rename to apps/web/src/components/scopedVariables/__tests__/UploadScopedVariables.test.tsx diff --git a/src/components/scopedVariables/__tests__/VariablesList.test.tsx b/apps/web/src/components/scopedVariables/__tests__/VariablesList.test.tsx similarity index 100% rename from src/components/scopedVariables/__tests__/VariablesList.test.tsx rename to apps/web/src/components/scopedVariables/__tests__/VariablesList.test.tsx diff --git a/src/components/scopedVariables/__tests__/utils.test.tsx b/apps/web/src/components/scopedVariables/__tests__/utils.test.tsx similarity index 100% rename from src/components/scopedVariables/__tests__/utils.test.tsx rename to apps/web/src/components/scopedVariables/__tests__/utils.test.tsx diff --git a/src/components/scopedVariables/constants.tsx b/apps/web/src/components/scopedVariables/constants.tsx similarity index 100% rename from src/components/scopedVariables/constants.tsx rename to apps/web/src/components/scopedVariables/constants.tsx diff --git a/src/components/scopedVariables/mocks.ts b/apps/web/src/components/scopedVariables/mocks.ts similarity index 100% rename from src/components/scopedVariables/mocks.ts rename to apps/web/src/components/scopedVariables/mocks.ts diff --git a/src/components/scopedVariables/service.ts b/apps/web/src/components/scopedVariables/service.ts similarity index 100% rename from src/components/scopedVariables/service.ts rename to apps/web/src/components/scopedVariables/service.ts diff --git a/src/components/scopedVariables/styles.scss b/apps/web/src/components/scopedVariables/styles.scss similarity index 100% rename from src/components/scopedVariables/styles.scss rename to apps/web/src/components/scopedVariables/styles.scss diff --git a/src/components/scopedVariables/types.tsx b/apps/web/src/components/scopedVariables/types.tsx similarity index 100% rename from src/components/scopedVariables/types.tsx rename to apps/web/src/components/scopedVariables/types.tsx diff --git a/src/components/scopedVariables/utils.tsx b/apps/web/src/components/scopedVariables/utils.tsx similarity index 100% rename from src/components/scopedVariables/utils.tsx rename to apps/web/src/components/scopedVariables/utils.tsx diff --git a/src/components/security/AddCVEPolicy/ExposureList.tsx b/apps/web/src/components/security/AddCVEPolicy/ExposureList.tsx similarity index 100% rename from src/components/security/AddCVEPolicy/ExposureList.tsx rename to apps/web/src/components/security/AddCVEPolicy/ExposureList.tsx diff --git a/src/components/security/AddCVEPolicy/VulnerabilityExposure.tsx b/apps/web/src/components/security/AddCVEPolicy/VulnerabilityExposure.tsx similarity index 100% rename from src/components/security/AddCVEPolicy/VulnerabilityExposure.tsx rename to apps/web/src/components/security/AddCVEPolicy/VulnerabilityExposure.tsx diff --git a/src/components/security/AddCVEPolicy/index.tsx b/apps/web/src/components/security/AddCVEPolicy/index.tsx similarity index 100% rename from src/components/security/AddCVEPolicy/index.tsx rename to apps/web/src/components/security/AddCVEPolicy/index.tsx diff --git a/src/components/security/AddCveModal.tsx b/apps/web/src/components/security/AddCveModal.tsx similarity index 100% rename from src/components/security/AddCveModal.tsx rename to apps/web/src/components/security/AddCveModal.tsx diff --git a/src/components/security/DeleteCVEModal.tsx b/apps/web/src/components/security/DeleteCVEModal.tsx similarity index 100% rename from src/components/security/DeleteCVEModal.tsx rename to apps/web/src/components/security/DeleteCVEModal.tsx diff --git a/src/components/security/Readme.md b/apps/web/src/components/security/Readme.md similarity index 100% rename from src/components/security/Readme.md rename to apps/web/src/components/security/Readme.md diff --git a/src/components/security/Security.tsx b/apps/web/src/components/security/Security.tsx similarity index 100% rename from src/components/security/Security.tsx rename to apps/web/src/components/security/Security.tsx diff --git a/src/components/security/SecurityPoliciesTab.tsx b/apps/web/src/components/security/SecurityPoliciesTab.tsx similarity index 100% rename from src/components/security/SecurityPoliciesTab.tsx rename to apps/web/src/components/security/SecurityPoliciesTab.tsx diff --git a/src/components/security/SecurityPolicyApp.tsx b/apps/web/src/components/security/SecurityPolicyApp.tsx similarity index 100% rename from src/components/security/SecurityPolicyApp.tsx rename to apps/web/src/components/security/SecurityPolicyApp.tsx diff --git a/src/components/security/SecurityPolicyCluster.tsx b/apps/web/src/components/security/SecurityPolicyCluster.tsx similarity index 100% rename from src/components/security/SecurityPolicyCluster.tsx rename to apps/web/src/components/security/SecurityPolicyCluster.tsx diff --git a/src/components/security/SecurityPolicyEdit.tsx b/apps/web/src/components/security/SecurityPolicyEdit.tsx similarity index 100% rename from src/components/security/SecurityPolicyEdit.tsx rename to apps/web/src/components/security/SecurityPolicyEdit.tsx diff --git a/src/components/security/SecurityPolicyEnvironment.tsx b/apps/web/src/components/security/SecurityPolicyEnvironment.tsx similarity index 100% rename from src/components/security/SecurityPolicyEnvironment.tsx rename to apps/web/src/components/security/SecurityPolicyEnvironment.tsx diff --git a/src/components/security/SecurityPolicyGlobal.tsx b/apps/web/src/components/security/SecurityPolicyGlobal.tsx similarity index 100% rename from src/components/security/SecurityPolicyGlobal.tsx rename to apps/web/src/components/security/SecurityPolicyGlobal.tsx diff --git a/src/components/security/SecurityScansTab/SecurityScansTab.tsx b/apps/web/src/components/security/SecurityScansTab/SecurityScansTab.tsx similarity index 100% rename from src/components/security/SecurityScansTab/SecurityScansTab.tsx rename to apps/web/src/components/security/SecurityScansTab/SecurityScansTab.tsx diff --git a/src/components/security/SecurityScansTab/constants.tsx b/apps/web/src/components/security/SecurityScansTab/constants.tsx similarity index 100% rename from src/components/security/SecurityScansTab/constants.tsx rename to apps/web/src/components/security/SecurityScansTab/constants.tsx diff --git a/src/components/security/SecurityScansTab/types.tsx b/apps/web/src/components/security/SecurityScansTab/types.tsx similarity index 100% rename from src/components/security/SecurityScansTab/types.tsx rename to apps/web/src/components/security/SecurityScansTab/types.tsx diff --git a/src/components/security/SecurityScansTab/utils.tsx b/apps/web/src/components/security/SecurityScansTab/utils.tsx similarity index 100% rename from src/components/security/SecurityScansTab/utils.tsx rename to apps/web/src/components/security/SecurityScansTab/utils.tsx diff --git a/src/components/security/security.scss b/apps/web/src/components/security/security.scss similarity index 100% rename from src/components/security/security.scss rename to apps/web/src/components/security/security.scss diff --git a/src/components/security/security.service.ts b/apps/web/src/components/security/security.service.ts similarity index 100% rename from src/components/security/security.service.ts rename to apps/web/src/components/security/security.service.ts diff --git a/src/components/security/security.types.ts b/apps/web/src/components/security/security.types.ts similarity index 100% rename from src/components/security/security.types.ts rename to apps/web/src/components/security/security.types.ts diff --git a/src/components/security/security.util.tsx b/apps/web/src/components/security/security.util.tsx similarity index 100% rename from src/components/security/security.util.tsx rename to apps/web/src/components/security/security.util.tsx diff --git a/src/components/util/KeyValueFileInput.tsx b/apps/web/src/components/util/KeyValueFileInput.tsx similarity index 100% rename from src/components/util/KeyValueFileInput.tsx rename to apps/web/src/components/util/KeyValueFileInput.tsx diff --git a/src/components/util/URLUtil.ts b/apps/web/src/components/util/URLUtil.ts similarity index 100% rename from src/components/util/URLUtil.ts rename to apps/web/src/components/util/URLUtil.ts diff --git a/src/components/v2/HelmAppOverview/HelmAppOverview.tsx b/apps/web/src/components/v2/HelmAppOverview/HelmAppOverview.tsx similarity index 100% rename from src/components/v2/HelmAppOverview/HelmAppOverview.tsx rename to apps/web/src/components/v2/HelmAppOverview/HelmAppOverview.tsx diff --git a/src/components/v2/appDetails/AppDetails.component.tsx b/apps/web/src/components/v2/appDetails/AppDetails.component.tsx similarity index 100% rename from src/components/v2/appDetails/AppDetails.component.tsx rename to apps/web/src/components/v2/appDetails/AppDetails.component.tsx diff --git a/src/components/v2/appDetails/NodeTreeDetailTab.tsx b/apps/web/src/components/v2/appDetails/NodeTreeDetailTab.tsx similarity index 100% rename from src/components/v2/appDetails/NodeTreeDetailTab.tsx rename to apps/web/src/components/v2/appDetails/NodeTreeDetailTab.tsx diff --git a/src/components/v2/appDetails/ReleaseStatusEmptyState.tsx b/apps/web/src/components/v2/appDetails/ReleaseStatusEmptyState.tsx similarity index 100% rename from src/components/v2/appDetails/ReleaseStatusEmptyState.tsx rename to apps/web/src/components/v2/appDetails/ReleaseStatusEmptyState.tsx diff --git a/src/components/v2/appDetails/SyncError.component.tsx b/apps/web/src/components/v2/appDetails/SyncError.component.tsx similarity index 100% rename from src/components/v2/appDetails/SyncError.component.tsx rename to apps/web/src/components/v2/appDetails/SyncError.component.tsx diff --git a/src/components/v2/appDetails/__mocks__/index.store.mock.ts b/apps/web/src/components/v2/appDetails/__mocks__/index.store.mock.ts similarity index 100% rename from src/components/v2/appDetails/__mocks__/index.store.mock.ts rename to apps/web/src/components/v2/appDetails/__mocks__/index.store.mock.ts diff --git a/src/components/v2/appDetails/__tests__/index.store.test.ts b/apps/web/src/components/v2/appDetails/__tests__/index.store.test.ts similarity index 100% rename from src/components/v2/appDetails/__tests__/index.store.test.ts rename to apps/web/src/components/v2/appDetails/__tests__/index.store.test.ts diff --git a/src/components/v2/appDetails/appDetails.api.ts b/apps/web/src/components/v2/appDetails/appDetails.api.ts similarity index 100% rename from src/components/v2/appDetails/appDetails.api.ts rename to apps/web/src/components/v2/appDetails/appDetails.api.ts diff --git a/src/components/v2/appDetails/appDetails.scss b/apps/web/src/components/v2/appDetails/appDetails.scss similarity index 100% rename from src/components/v2/appDetails/appDetails.scss rename to apps/web/src/components/v2/appDetails/appDetails.scss diff --git a/src/components/v2/appDetails/appDetails.store.ts b/apps/web/src/components/v2/appDetails/appDetails.store.ts similarity index 100% rename from src/components/v2/appDetails/appDetails.store.ts rename to apps/web/src/components/v2/appDetails/appDetails.store.ts diff --git a/src/components/v2/appDetails/appDetails.type.ts b/apps/web/src/components/v2/appDetails/appDetails.type.ts similarity index 100% rename from src/components/v2/appDetails/appDetails.type.ts rename to apps/web/src/components/v2/appDetails/appDetails.type.ts diff --git a/src/components/v2/appDetails/ea/EAAppDetail.component.tsx b/apps/web/src/components/v2/appDetails/ea/EAAppDetail.component.tsx similarity index 100% rename from src/components/v2/appDetails/ea/EAAppDetail.component.tsx rename to apps/web/src/components/v2/appDetails/ea/EAAppDetail.component.tsx diff --git a/src/components/v2/appDetails/index.store.ts b/apps/web/src/components/v2/appDetails/index.store.ts similarity index 100% rename from src/components/v2/appDetails/index.store.ts rename to apps/web/src/components/v2/appDetails/index.store.ts diff --git a/src/components/v2/appDetails/k8Resource/K8Resource.component.tsx b/apps/web/src/components/v2/appDetails/k8Resource/K8Resource.component.tsx similarity index 100% rename from src/components/v2/appDetails/k8Resource/K8Resource.component.tsx rename to apps/web/src/components/v2/appDetails/k8Resource/K8Resource.component.tsx diff --git a/src/components/v2/appDetails/k8Resource/NodeTreeTabList.scss b/apps/web/src/components/v2/appDetails/k8Resource/NodeTreeTabList.scss similarity index 100% rename from src/components/v2/appDetails/k8Resource/NodeTreeTabList.scss rename to apps/web/src/components/v2/appDetails/k8Resource/NodeTreeTabList.scss diff --git a/src/components/v2/appDetails/k8Resource/NodeTreeTabList.tsx b/apps/web/src/components/v2/appDetails/k8Resource/NodeTreeTabList.tsx similarity index 100% rename from src/components/v2/appDetails/k8Resource/NodeTreeTabList.tsx rename to apps/web/src/components/v2/appDetails/k8Resource/NodeTreeTabList.tsx diff --git a/src/components/v2/appDetails/k8Resource/k8resources.scss b/apps/web/src/components/v2/appDetails/k8Resource/k8resources.scss similarity index 100% rename from src/components/v2/appDetails/k8Resource/k8resources.scss rename to apps/web/src/components/v2/appDetails/k8Resource/k8resources.scss diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/EphemeralContainerDrawer.tsx b/apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/EphemeralContainerDrawer.tsx similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeDetail/EphemeralContainerDrawer.tsx rename to apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/EphemeralContainerDrawer.tsx diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetail.component.tsx b/apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetail.component.tsx similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetail.component.tsx rename to apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetail.component.tsx diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/CopyToast.tsx b/apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/CopyToast.tsx similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/CopyToast.tsx rename to apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/CopyToast.tsx diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/CustomLogsModal/CustomLogsModal.tsx b/apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/CustomLogsModal/CustomLogsModal.tsx similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/CustomLogsModal/CustomLogsModal.tsx rename to apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/CustomLogsModal/CustomLogsModal.tsx diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/CustomLogsModal/customLogsModal.scss b/apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/CustomLogsModal/customLogsModal.scss similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/CustomLogsModal/customLogsModal.scss rename to apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/CustomLogsModal/customLogsModal.scss diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/Events.component.tsx b/apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/Events.component.tsx similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/Events.component.tsx rename to apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/Events.component.tsx diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/EventsTable.tsx b/apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/EventsTable.tsx similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/EventsTable.tsx rename to apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/EventsTable.tsx diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/LogViewer.component.tsx b/apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/LogViewer.component.tsx similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/LogViewer.component.tsx rename to apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/LogViewer.component.tsx diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/Logs.component.tsx b/apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/Logs.component.tsx similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/Logs.component.tsx rename to apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/Logs.component.tsx diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/Manifest.component.tsx b/apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/Manifest.component.tsx similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/Manifest.component.tsx rename to apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/Manifest.component.tsx diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/Summary.component.tsx b/apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/Summary.component.tsx similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/Summary.component.tsx rename to apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/Summary.component.tsx diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/Terminal.component.tsx b/apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/Terminal.component.tsx similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/Terminal.component.tsx rename to apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/Terminal.component.tsx diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/node.type.ts b/apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/node.type.ts similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/node.type.ts rename to apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/node.type.ts diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/nodeDetailTab.scss b/apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/nodeDetailTab.scss similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/nodeDetailTab.scss rename to apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/nodeDetailTab.scss diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/Terminal.tsx b/apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/Terminal.tsx similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/Terminal.tsx rename to apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/Terminal.tsx diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/TerminalWrapper.component.tsx b/apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/TerminalWrapper.component.tsx similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/TerminalWrapper.component.tsx rename to apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/TerminalWrapper.component.tsx diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/__mocks__/terminalWrapper.mock.tsx b/apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/__mocks__/terminalWrapper.mock.tsx similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/__mocks__/terminalWrapper.mock.tsx rename to apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/__mocks__/terminalWrapper.mock.tsx diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/__tests__/Terminal.component.test.tsx b/apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/__tests__/Terminal.component.test.tsx similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/__tests__/Terminal.component.test.tsx rename to apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/__tests__/Terminal.component.test.tsx diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/__tests__/TerminalWrapper.test.tsx b/apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/__tests__/TerminalWrapper.test.tsx similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/__tests__/TerminalWrapper.test.tsx rename to apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/__tests__/TerminalWrapper.test.tsx diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/constants.ts b/apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/constants.ts similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/constants.ts rename to apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/constants.ts diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/terminal.scss b/apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/terminal.scss similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/terminal.scss rename to apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/terminal.scss diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/terminal.type.ts b/apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/terminal.type.ts similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/terminal.type.ts rename to apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/terminal.type.ts diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/terminal.utils.tsx b/apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/terminal.utils.tsx similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/terminal.utils.tsx rename to apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/terminal.utils.tsx diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/nodeDetail.api.ts b/apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/nodeDetail.api.ts similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeDetail/nodeDetail.api.ts rename to apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/nodeDetail.api.ts diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/nodeDetail.css b/apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/nodeDetail.css similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeDetail/nodeDetail.css rename to apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/nodeDetail.css diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/nodeDetail.type.ts b/apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/nodeDetail.type.ts similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeDetail/nodeDetail.type.ts rename to apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/nodeDetail.type.ts diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/nodeDetail.util.ts b/apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/nodeDetail.util.ts similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeDetail/nodeDetail.util.ts rename to apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/nodeDetail.util.ts diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/sampleConfig.json b/apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/sampleConfig.json similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeDetail/sampleConfig.json rename to apps/web/src/components/v2/appDetails/k8Resource/nodeDetail/sampleConfig.json diff --git a/src/components/v2/appDetails/k8Resource/nodeType/Node.component.tsx b/apps/web/src/components/v2/appDetails/k8Resource/nodeType/Node.component.tsx similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeType/Node.component.tsx rename to apps/web/src/components/v2/appDetails/k8Resource/nodeType/Node.component.tsx diff --git a/src/components/v2/appDetails/k8Resource/nodeType/NodeDelete.component.tsx b/apps/web/src/components/v2/appDetails/k8Resource/nodeType/NodeDelete.component.tsx similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeType/NodeDelete.component.tsx rename to apps/web/src/components/v2/appDetails/k8Resource/nodeType/NodeDelete.component.tsx diff --git a/src/components/v2/appDetails/k8Resource/nodeType/NodeTree.component.tsx b/apps/web/src/components/v2/appDetails/k8Resource/nodeType/NodeTree.component.tsx similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeType/NodeTree.component.tsx rename to apps/web/src/components/v2/appDetails/k8Resource/nodeType/NodeTree.component.tsx diff --git a/src/components/v2/appDetails/k8Resource/nodeType/PodHeader.component.tsx b/apps/web/src/components/v2/appDetails/k8Resource/nodeType/PodHeader.component.tsx similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeType/PodHeader.component.tsx rename to apps/web/src/components/v2/appDetails/k8Resource/nodeType/PodHeader.component.tsx diff --git a/src/components/v2/appDetails/k8Resource/nodeType/PodPopup.tsx b/apps/web/src/components/v2/appDetails/k8Resource/nodeType/PodPopup.tsx similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeType/PodPopup.tsx rename to apps/web/src/components/v2/appDetails/k8Resource/nodeType/PodPopup.tsx diff --git a/src/components/v2/appDetails/k8Resource/nodeType/__mocks__/NodeTree.component.mock.ts b/apps/web/src/components/v2/appDetails/k8Resource/nodeType/__mocks__/NodeTree.component.mock.ts similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeType/__mocks__/NodeTree.component.mock.ts rename to apps/web/src/components/v2/appDetails/k8Resource/nodeType/__mocks__/NodeTree.component.mock.ts diff --git a/src/components/v2/appDetails/k8Resource/nodeType/__tests__/NodeTree.component.test.ts b/apps/web/src/components/v2/appDetails/k8Resource/nodeType/__tests__/NodeTree.component.test.ts similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeType/__tests__/NodeTree.component.test.ts rename to apps/web/src/components/v2/appDetails/k8Resource/nodeType/__tests__/NodeTree.component.test.ts diff --git a/src/components/v2/appDetails/k8Resource/nodeType/nodeType.scss b/apps/web/src/components/v2/appDetails/k8Resource/nodeType/nodeType.scss similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeType/nodeType.scss rename to apps/web/src/components/v2/appDetails/k8Resource/nodeType/nodeType.scss diff --git a/src/components/v2/appDetails/k8Resource/nodeType/nodeType.util.ts b/apps/web/src/components/v2/appDetails/k8Resource/nodeType/nodeType.util.ts similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeType/nodeType.util.ts rename to apps/web/src/components/v2/appDetails/k8Resource/nodeType/nodeType.util.ts diff --git a/src/components/v2/appDetails/k8Resource/nodeType/types.ts b/apps/web/src/components/v2/appDetails/k8Resource/nodeType/types.ts similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeType/types.ts rename to apps/web/src/components/v2/appDetails/k8Resource/nodeType/types.ts diff --git a/src/components/v2/appDetails/k8Resource/nodeType/useNodeTreeReducer.ts b/apps/web/src/components/v2/appDetails/k8Resource/nodeType/useNodeTreeReducer.ts similarity index 100% rename from src/components/v2/appDetails/k8Resource/nodeType/useNodeTreeReducer.ts rename to apps/web/src/components/v2/appDetails/k8Resource/nodeType/useNodeTreeReducer.ts diff --git a/src/components/v2/appDetails/logAnalyzer/LogAnalyzer.component.tsx b/apps/web/src/components/v2/appDetails/logAnalyzer/LogAnalyzer.component.tsx similarity index 100% rename from src/components/v2/appDetails/logAnalyzer/LogAnalyzer.component.tsx rename to apps/web/src/components/v2/appDetails/logAnalyzer/LogAnalyzer.component.tsx diff --git a/src/components/v2/appDetails/sourceInfo/EnvironmentSelector.component.tsx b/apps/web/src/components/v2/appDetails/sourceInfo/EnvironmentSelector.component.tsx similarity index 100% rename from src/components/v2/appDetails/sourceInfo/EnvironmentSelector.component.tsx rename to apps/web/src/components/v2/appDetails/sourceInfo/EnvironmentSelector.component.tsx diff --git a/src/components/v2/appDetails/sourceInfo/environment.type.ts b/apps/web/src/components/v2/appDetails/sourceInfo/environment.type.ts similarity index 100% rename from src/components/v2/appDetails/sourceInfo/environment.type.ts rename to apps/web/src/components/v2/appDetails/sourceInfo/environment.type.ts diff --git a/src/components/v2/appDetails/sourceInfo/environmentStatus/AppStatusDetailModal.tsx b/apps/web/src/components/v2/appDetails/sourceInfo/environmentStatus/AppStatusDetailModal.tsx similarity index 100% rename from src/components/v2/appDetails/sourceInfo/environmentStatus/AppStatusDetailModal.tsx rename to apps/web/src/components/v2/appDetails/sourceInfo/environmentStatus/AppStatusDetailModal.tsx diff --git a/src/components/v2/appDetails/sourceInfo/environmentStatus/ChartUsedCard.tsx b/apps/web/src/components/v2/appDetails/sourceInfo/environmentStatus/ChartUsedCard.tsx similarity index 100% rename from src/components/v2/appDetails/sourceInfo/environmentStatus/ChartUsedCard.tsx rename to apps/web/src/components/v2/appDetails/sourceInfo/environmentStatus/ChartUsedCard.tsx diff --git a/src/components/v2/appDetails/sourceInfo/environmentStatus/ConfigStatusModal.component.tsx b/apps/web/src/components/v2/appDetails/sourceInfo/environmentStatus/ConfigStatusModal.component.tsx similarity index 100% rename from src/components/v2/appDetails/sourceInfo/environmentStatus/ConfigStatusModal.component.tsx rename to apps/web/src/components/v2/appDetails/sourceInfo/environmentStatus/ConfigStatusModal.component.tsx diff --git a/src/components/v2/appDetails/sourceInfo/environmentStatus/CurrentSyncStatus.tsx b/apps/web/src/components/v2/appDetails/sourceInfo/environmentStatus/CurrentSyncStatus.tsx similarity index 100% rename from src/components/v2/appDetails/sourceInfo/environmentStatus/CurrentSyncStatus.tsx rename to apps/web/src/components/v2/appDetails/sourceInfo/environmentStatus/CurrentSyncStatus.tsx diff --git a/src/components/v2/appDetails/sourceInfo/environmentStatus/EnvironmentStatus.component.tsx b/apps/web/src/components/v2/appDetails/sourceInfo/environmentStatus/EnvironmentStatus.component.tsx similarity index 100% rename from src/components/v2/appDetails/sourceInfo/environmentStatus/EnvironmentStatus.component.tsx rename to apps/web/src/components/v2/appDetails/sourceInfo/environmentStatus/EnvironmentStatus.component.tsx diff --git a/src/components/v2/appDetails/sourceInfo/environmentStatus/HelmAppConfigApplyStatusCard.tsx b/apps/web/src/components/v2/appDetails/sourceInfo/environmentStatus/HelmAppConfigApplyStatusCard.tsx similarity index 100% rename from src/components/v2/appDetails/sourceInfo/environmentStatus/HelmAppConfigApplyStatusCard.tsx rename to apps/web/src/components/v2/appDetails/sourceInfo/environmentStatus/HelmAppConfigApplyStatusCard.tsx diff --git a/src/components/v2/appDetails/sourceInfo/environmentStatus/NotesDrawer.tsx b/apps/web/src/components/v2/appDetails/sourceInfo/environmentStatus/NotesDrawer.tsx similarity index 100% rename from src/components/v2/appDetails/sourceInfo/environmentStatus/NotesDrawer.tsx rename to apps/web/src/components/v2/appDetails/sourceInfo/environmentStatus/NotesDrawer.tsx diff --git a/src/components/v2/appDetails/sourceInfo/environmentStatus/constants.ts b/apps/web/src/components/v2/appDetails/sourceInfo/environmentStatus/constants.ts similarity index 100% rename from src/components/v2/appDetails/sourceInfo/environmentStatus/constants.ts rename to apps/web/src/components/v2/appDetails/sourceInfo/environmentStatus/constants.ts diff --git a/src/components/v2/appDetails/sourceInfo/environmentStatus/environmentStatus.scss b/apps/web/src/components/v2/appDetails/sourceInfo/environmentStatus/environmentStatus.scss similarity index 100% rename from src/components/v2/appDetails/sourceInfo/environmentStatus/environmentStatus.scss rename to apps/web/src/components/v2/appDetails/sourceInfo/environmentStatus/environmentStatus.scss diff --git a/src/components/v2/appDetails/sourceInfo/environmentStatus/notesDrawer.type.ts b/apps/web/src/components/v2/appDetails/sourceInfo/environmentStatus/notesDrawer.type.ts similarity index 100% rename from src/components/v2/appDetails/sourceInfo/environmentStatus/notesDrawer.type.ts rename to apps/web/src/components/v2/appDetails/sourceInfo/environmentStatus/notesDrawer.type.ts diff --git a/src/components/v2/appDetails/sourceInfo/rotatePods/RotatePodsModal.component.tsx b/apps/web/src/components/v2/appDetails/sourceInfo/rotatePods/RotatePodsModal.component.tsx similarity index 100% rename from src/components/v2/appDetails/sourceInfo/rotatePods/RotatePodsModal.component.tsx rename to apps/web/src/components/v2/appDetails/sourceInfo/rotatePods/RotatePodsModal.component.tsx diff --git a/src/components/v2/appDetails/sourceInfo/rotatePods/RotateResponseModal.tsx b/apps/web/src/components/v2/appDetails/sourceInfo/rotatePods/RotateResponseModal.tsx similarity index 100% rename from src/components/v2/appDetails/sourceInfo/rotatePods/RotateResponseModal.tsx rename to apps/web/src/components/v2/appDetails/sourceInfo/rotatePods/RotateResponseModal.tsx diff --git a/src/components/v2/appDetails/sourceInfo/rotatePods/rotatePodsModal.service.ts b/apps/web/src/components/v2/appDetails/sourceInfo/rotatePods/rotatePodsModal.service.ts similarity index 100% rename from src/components/v2/appDetails/sourceInfo/rotatePods/rotatePodsModal.service.ts rename to apps/web/src/components/v2/appDetails/sourceInfo/rotatePods/rotatePodsModal.service.ts diff --git a/src/components/v2/appDetails/sourceInfo/rotatePods/rotatePodsModal.type.ts b/apps/web/src/components/v2/appDetails/sourceInfo/rotatePods/rotatePodsModal.type.ts similarity index 100% rename from src/components/v2/appDetails/sourceInfo/rotatePods/rotatePodsModal.type.ts rename to apps/web/src/components/v2/appDetails/sourceInfo/rotatePods/rotatePodsModal.type.ts diff --git a/src/components/v2/appDetails/sourceInfo/scaleWorkloads/ScaleWorkloadsModal.component.tsx b/apps/web/src/components/v2/appDetails/sourceInfo/scaleWorkloads/ScaleWorkloadsModal.component.tsx similarity index 100% rename from src/components/v2/appDetails/sourceInfo/scaleWorkloads/ScaleWorkloadsModal.component.tsx rename to apps/web/src/components/v2/appDetails/sourceInfo/scaleWorkloads/ScaleWorkloadsModal.component.tsx diff --git a/src/components/v2/appDetails/sourceInfo/scaleWorkloads/scaleWorkloadsModal.scss b/apps/web/src/components/v2/appDetails/sourceInfo/scaleWorkloads/scaleWorkloadsModal.scss similarity index 100% rename from src/components/v2/appDetails/sourceInfo/scaleWorkloads/scaleWorkloadsModal.scss rename to apps/web/src/components/v2/appDetails/sourceInfo/scaleWorkloads/scaleWorkloadsModal.scss diff --git a/src/components/v2/appDetails/sourceInfo/scaleWorkloads/scaleWorkloadsModal.service.ts b/apps/web/src/components/v2/appDetails/sourceInfo/scaleWorkloads/scaleWorkloadsModal.service.ts similarity index 100% rename from src/components/v2/appDetails/sourceInfo/scaleWorkloads/scaleWorkloadsModal.service.ts rename to apps/web/src/components/v2/appDetails/sourceInfo/scaleWorkloads/scaleWorkloadsModal.service.ts diff --git a/src/components/v2/appDetails/sourceInfo/scaleWorkloads/scaleWorkloadsModal.type.ts b/apps/web/src/components/v2/appDetails/sourceInfo/scaleWorkloads/scaleWorkloadsModal.type.ts similarity index 100% rename from src/components/v2/appDetails/sourceInfo/scaleWorkloads/scaleWorkloadsModal.type.ts rename to apps/web/src/components/v2/appDetails/sourceInfo/scaleWorkloads/scaleWorkloadsModal.type.ts diff --git a/src/components/v2/appDetails/sourceInfo/sourceInfo.css b/apps/web/src/components/v2/appDetails/sourceInfo/sourceInfo.css similarity index 100% rename from src/components/v2/appDetails/sourceInfo/sourceInfo.css rename to apps/web/src/components/v2/appDetails/sourceInfo/sourceInfo.css diff --git a/src/components/v2/appDetails/sourceInfo/utils.tsx b/apps/web/src/components/v2/appDetails/sourceInfo/utils.tsx similarity index 100% rename from src/components/v2/appDetails/sourceInfo/utils.tsx rename to apps/web/src/components/v2/appDetails/sourceInfo/utils.tsx diff --git a/src/components/v2/assets/icons/ic-404-error.png b/apps/web/src/components/v2/assets/icons/ic-404-error.png similarity index 100% rename from src/components/v2/assets/icons/ic-404-error.png rename to apps/web/src/components/v2/assets/icons/ic-404-error.png diff --git a/src/components/v2/assets/icons/ic-abort.svg b/apps/web/src/components/v2/assets/icons/ic-abort.svg similarity index 100% rename from src/components/v2/assets/icons/ic-abort.svg rename to apps/web/src/components/v2/assets/icons/ic-abort.svg diff --git a/src/components/v2/assets/icons/ic-alert-triangle.svg b/apps/web/src/components/v2/assets/icons/ic-alert-triangle.svg similarity index 100% rename from src/components/v2/assets/icons/ic-alert-triangle.svg rename to apps/web/src/components/v2/assets/icons/ic-alert-triangle.svg diff --git a/src/components/v2/assets/icons/ic-cancelled.svg b/apps/web/src/components/v2/assets/icons/ic-cancelled.svg similarity index 100% rename from src/components/v2/assets/icons/ic-cancelled.svg rename to apps/web/src/components/v2/assets/icons/ic-cancelled.svg diff --git a/src/components/v2/assets/icons/ic-check.svg b/apps/web/src/components/v2/assets/icons/ic-check.svg similarity index 100% rename from src/components/v2/assets/icons/ic-check.svg rename to apps/web/src/components/v2/assets/icons/ic-check.svg diff --git a/src/components/v2/assets/icons/ic-chevron-down.svg b/apps/web/src/components/v2/assets/icons/ic-chevron-down.svg similarity index 100% rename from src/components/v2/assets/icons/ic-chevron-down.svg rename to apps/web/src/components/v2/assets/icons/ic-chevron-down.svg diff --git a/src/components/v2/assets/icons/ic-close.svg b/apps/web/src/components/v2/assets/icons/ic-close.svg similarity index 100% rename from src/components/v2/assets/icons/ic-close.svg rename to apps/web/src/components/v2/assets/icons/ic-close.svg diff --git a/src/components/v2/assets/icons/ic-code-compare.svg b/apps/web/src/components/v2/assets/icons/ic-code-compare.svg similarity index 100% rename from src/components/v2/assets/icons/ic-code-compare.svg rename to apps/web/src/components/v2/assets/icons/ic-code-compare.svg diff --git a/src/components/v2/assets/icons/ic-compare.svg b/apps/web/src/components/v2/assets/icons/ic-compare.svg similarity index 100% rename from src/components/v2/assets/icons/ic-compare.svg rename to apps/web/src/components/v2/assets/icons/ic-compare.svg diff --git a/src/components/v2/assets/icons/ic-connect.svg b/apps/web/src/components/v2/assets/icons/ic-connect.svg similarity index 100% rename from src/components/v2/assets/icons/ic-connect.svg rename to apps/web/src/components/v2/assets/icons/ic-connect.svg diff --git a/src/components/v2/assets/icons/ic-copy.svg b/apps/web/src/components/v2/assets/icons/ic-copy.svg similarity index 100% rename from src/components/v2/assets/icons/ic-copy.svg rename to apps/web/src/components/v2/assets/icons/ic-copy.svg diff --git a/src/components/v2/assets/icons/ic-disconnect.svg b/apps/web/src/components/v2/assets/icons/ic-disconnect.svg similarity index 100% rename from src/components/v2/assets/icons/ic-disconnect.svg rename to apps/web/src/components/v2/assets/icons/ic-disconnect.svg diff --git a/src/components/v2/assets/icons/ic-dropdown-filled.svg b/apps/web/src/components/v2/assets/icons/ic-dropdown-filled.svg similarity index 100% rename from src/components/v2/assets/icons/ic-dropdown-filled.svg rename to apps/web/src/components/v2/assets/icons/ic-dropdown-filled.svg diff --git a/src/components/v2/assets/icons/ic-edit.svg b/apps/web/src/components/v2/assets/icons/ic-edit.svg similarity index 100% rename from src/components/v2/assets/icons/ic-edit.svg rename to apps/web/src/components/v2/assets/icons/ic-edit.svg diff --git a/src/components/v2/assets/icons/ic-errorInfo.svg b/apps/web/src/components/v2/assets/icons/ic-errorInfo.svg similarity index 100% rename from src/components/v2/assets/icons/ic-errorInfo.svg rename to apps/web/src/components/v2/assets/icons/ic-errorInfo.svg diff --git a/src/components/v2/assets/icons/ic-info-filled-gray.svg b/apps/web/src/components/v2/assets/icons/ic-info-filled-gray.svg similarity index 100% rename from src/components/v2/assets/icons/ic-info-filled-gray.svg rename to apps/web/src/components/v2/assets/icons/ic-info-filled-gray.svg diff --git a/src/components/v2/assets/icons/ic-info-filled.svg b/apps/web/src/components/v2/assets/icons/ic-info-filled.svg similarity index 100% rename from src/components/v2/assets/icons/ic-info-filled.svg rename to apps/web/src/components/v2/assets/icons/ic-info-filled.svg diff --git a/src/components/v2/assets/icons/ic-info-outline-gray.svg b/apps/web/src/components/v2/assets/icons/ic-info-outline-gray.svg similarity index 100% rename from src/components/v2/assets/icons/ic-info-outline-gray.svg rename to apps/web/src/components/v2/assets/icons/ic-info-outline-gray.svg diff --git a/src/components/v2/assets/icons/ic-locked.svg b/apps/web/src/components/v2/assets/icons/ic-locked.svg similarity index 100% rename from src/components/v2/assets/icons/ic-locked.svg rename to apps/web/src/components/v2/assets/icons/ic-locked.svg diff --git a/src/components/v2/assets/icons/ic-menu-dot.svg b/apps/web/src/components/v2/assets/icons/ic-menu-dot.svg similarity index 100% rename from src/components/v2/assets/icons/ic-menu-dot.svg rename to apps/web/src/components/v2/assets/icons/ic-menu-dot.svg diff --git a/src/components/v2/assets/icons/ic-object.svg b/apps/web/src/components/v2/assets/icons/ic-object.svg similarity index 100% rename from src/components/v2/assets/icons/ic-object.svg rename to apps/web/src/components/v2/assets/icons/ic-object.svg diff --git a/src/components/v2/assets/icons/ic-play.svg b/apps/web/src/components/v2/assets/icons/ic-play.svg similarity index 100% rename from src/components/v2/assets/icons/ic-play.svg rename to apps/web/src/components/v2/assets/icons/ic-play.svg diff --git a/src/components/v2/assets/icons/ic-question.svg b/apps/web/src/components/v2/assets/icons/ic-question.svg similarity index 100% rename from src/components/v2/assets/icons/ic-question.svg rename to apps/web/src/components/v2/assets/icons/ic-question.svg diff --git a/src/components/v2/assets/icons/ic-restore.svg b/apps/web/src/components/v2/assets/icons/ic-restore.svg similarity index 100% rename from src/components/v2/assets/icons/ic-restore.svg rename to apps/web/src/components/v2/assets/icons/ic-restore.svg diff --git a/src/components/v2/assets/icons/ic-scale-down.svg b/apps/web/src/components/v2/assets/icons/ic-scale-down.svg similarity index 100% rename from src/components/v2/assets/icons/ic-scale-down.svg rename to apps/web/src/components/v2/assets/icons/ic-scale-down.svg diff --git a/src/components/v2/assets/icons/ic-select-container.svg b/apps/web/src/components/v2/assets/icons/ic-select-container.svg similarity index 100% rename from src/components/v2/assets/icons/ic-select-container.svg rename to apps/web/src/components/v2/assets/icons/ic-select-container.svg diff --git a/src/components/v2/assets/icons/ic-stop.svg b/apps/web/src/components/v2/assets/icons/ic-stop.svg similarity index 100% rename from src/components/v2/assets/icons/ic-stop.svg rename to apps/web/src/components/v2/assets/icons/ic-stop.svg diff --git a/src/components/v2/chartDeploymentHistory/ChartDeploymentHistory.component.tsx b/apps/web/src/components/v2/chartDeploymentHistory/ChartDeploymentHistory.component.tsx similarity index 100% rename from src/components/v2/chartDeploymentHistory/ChartDeploymentHistory.component.tsx rename to apps/web/src/components/v2/chartDeploymentHistory/ChartDeploymentHistory.component.tsx diff --git a/src/components/v2/chartDeploymentHistory/DockerImageDetails.tsx b/apps/web/src/components/v2/chartDeploymentHistory/DockerImageDetails.tsx similarity index 100% rename from src/components/v2/chartDeploymentHistory/DockerImageDetails.tsx rename to apps/web/src/components/v2/chartDeploymentHistory/DockerImageDetails.tsx diff --git a/src/components/v2/chartDeploymentHistory/DockerListModal.tsx b/apps/web/src/components/v2/chartDeploymentHistory/DockerListModal.tsx similarity index 100% rename from src/components/v2/chartDeploymentHistory/DockerListModal.tsx rename to apps/web/src/components/v2/chartDeploymentHistory/DockerListModal.tsx diff --git a/src/components/v2/chartDeploymentHistory/RollbackConfirmationDialog.tsx b/apps/web/src/components/v2/chartDeploymentHistory/RollbackConfirmationDialog.tsx similarity index 100% rename from src/components/v2/chartDeploymentHistory/RollbackConfirmationDialog.tsx rename to apps/web/src/components/v2/chartDeploymentHistory/RollbackConfirmationDialog.tsx diff --git a/src/components/v2/chartDeploymentHistory/chartDeploymentHistory.scss b/apps/web/src/components/v2/chartDeploymentHistory/chartDeploymentHistory.scss similarity index 100% rename from src/components/v2/chartDeploymentHistory/chartDeploymentHistory.scss rename to apps/web/src/components/v2/chartDeploymentHistory/chartDeploymentHistory.scss diff --git a/src/components/v2/chartDeploymentHistory/chartDeploymentHistory.service.ts b/apps/web/src/components/v2/chartDeploymentHistory/chartDeploymentHistory.service.ts similarity index 100% rename from src/components/v2/chartDeploymentHistory/chartDeploymentHistory.service.ts rename to apps/web/src/components/v2/chartDeploymentHistory/chartDeploymentHistory.service.ts diff --git a/src/components/v2/common/ReactSelect.utils.tsx b/apps/web/src/components/v2/common/ReactSelect.utils.tsx similarity index 100% rename from src/components/v2/common/ReactSelect.utils.tsx rename to apps/web/src/components/v2/common/ReactSelect.utils.tsx diff --git a/src/components/v2/common/ReactSelectCustomization.tsx b/apps/web/src/components/v2/common/ReactSelectCustomization.tsx similarity index 100% rename from src/components/v2/common/ReactSelectCustomization.tsx rename to apps/web/src/components/v2/common/ReactSelectCustomization.tsx diff --git a/src/components/v2/common/message.ui.tsx b/apps/web/src/components/v2/common/message.ui.tsx similarity index 100% rename from src/components/v2/common/message.ui.tsx rename to apps/web/src/components/v2/common/message.ui.tsx diff --git a/src/components/v2/devtronStackManager/AboutDevtronView.scss b/apps/web/src/components/v2/devtronStackManager/AboutDevtronView.scss similarity index 100% rename from src/components/v2/devtronStackManager/AboutDevtronView.scss rename to apps/web/src/components/v2/devtronStackManager/AboutDevtronView.scss diff --git a/src/components/v2/devtronStackManager/AboutDevtronView.tsx b/apps/web/src/components/v2/devtronStackManager/AboutDevtronView.tsx similarity index 100% rename from src/components/v2/devtronStackManager/AboutDevtronView.tsx rename to apps/web/src/components/v2/devtronStackManager/AboutDevtronView.tsx diff --git a/src/components/v2/devtronStackManager/DevtronStackManager.component.tsx b/apps/web/src/components/v2/devtronStackManager/DevtronStackManager.component.tsx similarity index 100% rename from src/components/v2/devtronStackManager/DevtronStackManager.component.tsx rename to apps/web/src/components/v2/devtronStackManager/DevtronStackManager.component.tsx diff --git a/src/components/v2/devtronStackManager/DevtronStackManager.service.tsx b/apps/web/src/components/v2/devtronStackManager/DevtronStackManager.service.tsx similarity index 100% rename from src/components/v2/devtronStackManager/DevtronStackManager.service.tsx rename to apps/web/src/components/v2/devtronStackManager/DevtronStackManager.service.tsx diff --git a/src/components/v2/devtronStackManager/DevtronStackManager.tsx b/apps/web/src/components/v2/devtronStackManager/DevtronStackManager.tsx similarity index 100% rename from src/components/v2/devtronStackManager/DevtronStackManager.tsx rename to apps/web/src/components/v2/devtronStackManager/DevtronStackManager.tsx diff --git a/src/components/v2/devtronStackManager/DevtronStackManager.type.ts b/apps/web/src/components/v2/devtronStackManager/DevtronStackManager.type.ts similarity index 100% rename from src/components/v2/devtronStackManager/DevtronStackManager.type.ts rename to apps/web/src/components/v2/devtronStackManager/DevtronStackManager.type.ts diff --git a/src/components/v2/devtronStackManager/DevtronStackManager.utils.ts b/apps/web/src/components/v2/devtronStackManager/DevtronStackManager.utils.ts similarity index 100% rename from src/components/v2/devtronStackManager/DevtronStackManager.utils.ts rename to apps/web/src/components/v2/devtronStackManager/DevtronStackManager.utils.ts diff --git a/src/components/v2/devtronStackManager/SuccessModalComponent.tsx b/apps/web/src/components/v2/devtronStackManager/SuccessModalComponent.tsx similarity index 100% rename from src/components/v2/devtronStackManager/SuccessModalComponent.tsx rename to apps/web/src/components/v2/devtronStackManager/SuccessModalComponent.tsx diff --git a/src/components/v2/devtronStackManager/devtronStackManager.component.scss b/apps/web/src/components/v2/devtronStackManager/devtronStackManager.component.scss similarity index 100% rename from src/components/v2/devtronStackManager/devtronStackManager.component.scss rename to apps/web/src/components/v2/devtronStackManager/devtronStackManager.component.scss diff --git a/src/components/v2/devtronStackManager/devtronStackManager.scss b/apps/web/src/components/v2/devtronStackManager/devtronStackManager.scss similarity index 100% rename from src/components/v2/devtronStackManager/devtronStackManager.scss rename to apps/web/src/components/v2/devtronStackManager/devtronStackManager.scss diff --git a/src/components/v2/headers/AppHeader.component.tsx b/apps/web/src/components/v2/headers/AppHeader.component.tsx similarity index 100% rename from src/components/v2/headers/AppHeader.component.tsx rename to apps/web/src/components/v2/headers/AppHeader.component.tsx diff --git a/src/components/v2/headers/ChartHeader.component.tsx b/apps/web/src/components/v2/headers/ChartHeader.component.tsx similarity index 100% rename from src/components/v2/headers/ChartHeader.component.tsx rename to apps/web/src/components/v2/headers/ChartHeader.component.tsx diff --git a/src/components/v2/headers/EAHeader.component.tsx b/apps/web/src/components/v2/headers/EAHeader.component.tsx similarity index 100% rename from src/components/v2/headers/EAHeader.component.tsx rename to apps/web/src/components/v2/headers/EAHeader.component.tsx diff --git a/src/components/v2/headers/appHeader.type.ts b/apps/web/src/components/v2/headers/appHeader.type.ts similarity index 100% rename from src/components/v2/headers/appHeader.type.ts rename to apps/web/src/components/v2/headers/appHeader.type.ts diff --git a/src/components/v2/headers/header.scss b/apps/web/src/components/v2/headers/header.scss similarity index 100% rename from src/components/v2/headers/header.scss rename to apps/web/src/components/v2/headers/header.scss diff --git a/src/components/v2/index.tsx b/apps/web/src/components/v2/index.tsx similarity index 100% rename from src/components/v2/index.tsx rename to apps/web/src/components/v2/index.tsx diff --git a/src/components/v2/utils/tabUtils/link.type.ts b/apps/web/src/components/v2/utils/tabUtils/link.type.ts similarity index 100% rename from src/components/v2/utils/tabUtils/link.type.ts rename to apps/web/src/components/v2/utils/tabUtils/link.type.ts diff --git a/src/components/v2/utils/tabUtils/tab.json.ts b/apps/web/src/components/v2/utils/tabUtils/tab.json.ts similarity index 100% rename from src/components/v2/utils/tabUtils/tab.json.ts rename to apps/web/src/components/v2/utils/tabUtils/tab.json.ts diff --git a/src/components/v2/utils/tabUtils/useTab.ts b/apps/web/src/components/v2/utils/tabUtils/useTab.ts similarity index 100% rename from src/components/v2/utils/tabUtils/useTab.ts rename to apps/web/src/components/v2/utils/tabUtils/useTab.ts diff --git a/src/components/v2/utils/tableUtils/Table.util.tsx b/apps/web/src/components/v2/utils/tableUtils/Table.util.tsx similarity index 100% rename from src/components/v2/utils/tableUtils/Table.util.tsx rename to apps/web/src/components/v2/utils/tableUtils/Table.util.tsx diff --git a/src/components/v2/utils/tableUtils/table.scss b/apps/web/src/components/v2/utils/tableUtils/table.scss similarity index 100% rename from src/components/v2/utils/tableUtils/table.scss rename to apps/web/src/components/v2/utils/tableUtils/table.scss diff --git a/src/components/v2/utils/tableUtils/table.type.ts b/apps/web/src/components/v2/utils/tableUtils/table.type.ts similarity index 100% rename from src/components/v2/utils/tableUtils/table.type.ts rename to apps/web/src/components/v2/utils/tableUtils/table.type.ts diff --git a/src/components/v2/utils/useSharedState.ts b/apps/web/src/components/v2/utils/useSharedState.ts similarity index 100% rename from src/components/v2/utils/useSharedState.ts rename to apps/web/src/components/v2/utils/useSharedState.ts diff --git a/src/components/v2/values/ChartValues.component.tsx b/apps/web/src/components/v2/values/ChartValues.component.tsx similarity index 100% rename from src/components/v2/values/ChartValues.component.tsx rename to apps/web/src/components/v2/values/ChartValues.component.tsx diff --git a/src/components/v2/values/chartValuesDiff/ChartRepoSelector.tsx b/apps/web/src/components/v2/values/chartValuesDiff/ChartRepoSelector.tsx similarity index 100% rename from src/components/v2/values/chartValuesDiff/ChartRepoSelector.tsx rename to apps/web/src/components/v2/values/chartValuesDiff/ChartRepoSelector.tsx diff --git a/src/components/v2/values/chartValuesDiff/ChartValuesEditor.tsx b/apps/web/src/components/v2/values/chartValuesDiff/ChartValuesEditor.tsx similarity index 100% rename from src/components/v2/values/chartValuesDiff/ChartValuesEditor.tsx rename to apps/web/src/components/v2/values/chartValuesDiff/ChartValuesEditor.tsx diff --git a/src/components/v2/values/chartValuesDiff/ChartValuesGUIView.tsx b/apps/web/src/components/v2/values/chartValuesDiff/ChartValuesGUIView.tsx similarity index 100% rename from src/components/v2/values/chartValuesDiff/ChartValuesGUIView.tsx rename to apps/web/src/components/v2/values/chartValuesDiff/ChartValuesGUIView.tsx diff --git a/src/components/v2/values/chartValuesDiff/ChartValuesView.component.tsx b/apps/web/src/components/v2/values/chartValuesDiff/ChartValuesView.component.tsx similarity index 100% rename from src/components/v2/values/chartValuesDiff/ChartValuesView.component.tsx rename to apps/web/src/components/v2/values/chartValuesDiff/ChartValuesView.component.tsx diff --git a/src/components/v2/values/chartValuesDiff/ChartValuesView.constants.ts b/apps/web/src/components/v2/values/chartValuesDiff/ChartValuesView.constants.ts similarity index 100% rename from src/components/v2/values/chartValuesDiff/ChartValuesView.constants.ts rename to apps/web/src/components/v2/values/chartValuesDiff/ChartValuesView.constants.ts diff --git a/src/components/v2/values/chartValuesDiff/ChartValuesView.reducer.ts b/apps/web/src/components/v2/values/chartValuesDiff/ChartValuesView.reducer.ts similarity index 100% rename from src/components/v2/values/chartValuesDiff/ChartValuesView.reducer.ts rename to apps/web/src/components/v2/values/chartValuesDiff/ChartValuesView.reducer.ts diff --git a/src/components/v2/values/chartValuesDiff/ChartValuesView.scss b/apps/web/src/components/v2/values/chartValuesDiff/ChartValuesView.scss similarity index 100% rename from src/components/v2/values/chartValuesDiff/ChartValuesView.scss rename to apps/web/src/components/v2/values/chartValuesDiff/ChartValuesView.scss diff --git a/src/components/v2/values/chartValuesDiff/ChartValuesView.tsx b/apps/web/src/components/v2/values/chartValuesDiff/ChartValuesView.tsx similarity index 100% rename from src/components/v2/values/chartValuesDiff/ChartValuesView.tsx rename to apps/web/src/components/v2/values/chartValuesDiff/ChartValuesView.tsx diff --git a/src/components/v2/values/chartValuesDiff/ChartValuesView.type.ts b/apps/web/src/components/v2/values/chartValuesDiff/ChartValuesView.type.ts similarity index 100% rename from src/components/v2/values/chartValuesDiff/ChartValuesView.type.ts rename to apps/web/src/components/v2/values/chartValuesDiff/ChartValuesView.type.ts diff --git a/src/components/v2/values/chartValuesDiff/ChartValuesView.utils.ts b/apps/web/src/components/v2/values/chartValuesDiff/ChartValuesView.utils.ts similarity index 100% rename from src/components/v2/values/chartValuesDiff/ChartValuesView.utils.ts rename to apps/web/src/components/v2/values/chartValuesDiff/ChartValuesView.utils.ts diff --git a/src/components/v2/values/chartValuesDiff/ChartValuesViewUtils.scss b/apps/web/src/components/v2/values/chartValuesDiff/ChartValuesViewUtils.scss similarity index 100% rename from src/components/v2/values/chartValuesDiff/ChartValuesViewUtils.scss rename to apps/web/src/components/v2/values/chartValuesDiff/ChartValuesViewUtils.scss diff --git a/src/components/v2/values/chartValuesDiff/ProjectUpdateModal.tsx b/apps/web/src/components/v2/values/chartValuesDiff/ProjectUpdateModal.tsx similarity index 100% rename from src/components/v2/values/chartValuesDiff/ProjectUpdateModal.tsx rename to apps/web/src/components/v2/values/chartValuesDiff/ProjectUpdateModal.tsx diff --git a/src/components/v2/values/chartValuesDiff/constant.ts b/apps/web/src/components/v2/values/chartValuesDiff/constant.ts similarity index 100% rename from src/components/v2/values/chartValuesDiff/constant.ts rename to apps/web/src/components/v2/values/chartValuesDiff/constant.ts diff --git a/src/components/v2/values/common/chartValues.api.ts b/apps/web/src/components/v2/values/common/chartValues.api.ts similarity index 100% rename from src/components/v2/values/common/chartValues.api.ts rename to apps/web/src/components/v2/values/common/chartValues.api.ts diff --git a/src/components/workflowEditor/CDSuccessModal.tsx b/apps/web/src/components/workflowEditor/CDSuccessModal.tsx similarity index 100% rename from src/components/workflowEditor/CDSuccessModal.tsx rename to apps/web/src/components/workflowEditor/CDSuccessModal.tsx diff --git a/src/components/workflowEditor/CreateWorkflow.tsx b/apps/web/src/components/workflowEditor/CreateWorkflow.tsx similarity index 100% rename from src/components/workflowEditor/CreateWorkflow.tsx rename to apps/web/src/components/workflowEditor/CreateWorkflow.tsx diff --git a/src/components/workflowEditor/DeprecatedPipelineWarning.tsx b/apps/web/src/components/workflowEditor/DeprecatedPipelineWarning.tsx similarity index 100% rename from src/components/workflowEditor/DeprecatedPipelineWarning.tsx rename to apps/web/src/components/workflowEditor/DeprecatedPipelineWarning.tsx diff --git a/src/components/workflowEditor/DeprecatedWarningModal.tsx b/apps/web/src/components/workflowEditor/DeprecatedWarningModal.tsx similarity index 100% rename from src/components/workflowEditor/DeprecatedWarningModal.tsx rename to apps/web/src/components/workflowEditor/DeprecatedWarningModal.tsx diff --git a/src/components/workflowEditor/EmptyWorkflow.tsx b/apps/web/src/components/workflowEditor/EmptyWorkflow.tsx similarity index 100% rename from src/components/workflowEditor/EmptyWorkflow.tsx rename to apps/web/src/components/workflowEditor/EmptyWorkflow.tsx diff --git a/src/components/workflowEditor/NoGitOpsConfiguredWarning.tsx b/apps/web/src/components/workflowEditor/NoGitOpsConfiguredWarning.tsx similarity index 100% rename from src/components/workflowEditor/NoGitOpsConfiguredWarning.tsx rename to apps/web/src/components/workflowEditor/NoGitOpsConfiguredWarning.tsx diff --git a/src/components/workflowEditor/NoGitOpsRepoConfiguredWarning.tsx b/apps/web/src/components/workflowEditor/NoGitOpsRepoConfiguredWarning.tsx similarity index 100% rename from src/components/workflowEditor/NoGitOpsRepoConfiguredWarning.tsx rename to apps/web/src/components/workflowEditor/NoGitOpsRepoConfiguredWarning.tsx diff --git a/src/components/workflowEditor/PipelineSelect.tsx b/apps/web/src/components/workflowEditor/PipelineSelect.tsx similarity index 100% rename from src/components/workflowEditor/PipelineSelect.tsx rename to apps/web/src/components/workflowEditor/PipelineSelect.tsx diff --git a/src/components/workflowEditor/SourceTypeCard.tsx b/apps/web/src/components/workflowEditor/SourceTypeCard.tsx similarity index 100% rename from src/components/workflowEditor/SourceTypeCard.tsx rename to apps/web/src/components/workflowEditor/SourceTypeCard.tsx diff --git a/src/components/workflowEditor/ToggleCDSelectButton.tsx b/apps/web/src/components/workflowEditor/ToggleCDSelectButton.tsx similarity index 100% rename from src/components/workflowEditor/ToggleCDSelectButton.tsx rename to apps/web/src/components/workflowEditor/ToggleCDSelectButton.tsx diff --git a/src/components/workflowEditor/Workflow.tsx b/apps/web/src/components/workflowEditor/Workflow.tsx similarity index 100% rename from src/components/workflowEditor/Workflow.tsx rename to apps/web/src/components/workflowEditor/Workflow.tsx diff --git a/src/components/workflowEditor/WorkflowOptionsModal.tsx b/apps/web/src/components/workflowEditor/WorkflowOptionsModal.tsx similarity index 100% rename from src/components/workflowEditor/WorkflowOptionsModal.tsx rename to apps/web/src/components/workflowEditor/WorkflowOptionsModal.tsx diff --git a/src/components/workflowEditor/constants.ts b/apps/web/src/components/workflowEditor/constants.ts similarity index 100% rename from src/components/workflowEditor/constants.ts rename to apps/web/src/components/workflowEditor/constants.ts diff --git a/src/components/workflowEditor/index.ts b/apps/web/src/components/workflowEditor/index.ts similarity index 100% rename from src/components/workflowEditor/index.ts rename to apps/web/src/components/workflowEditor/index.ts diff --git a/src/components/workflowEditor/nodes/CDNode.tsx b/apps/web/src/components/workflowEditor/nodes/CDNode.tsx similarity index 100% rename from src/components/workflowEditor/nodes/CDNode.tsx rename to apps/web/src/components/workflowEditor/nodes/CDNode.tsx diff --git a/src/components/workflowEditor/nodes/CINode.tsx b/apps/web/src/components/workflowEditor/nodes/CINode.tsx similarity index 100% rename from src/components/workflowEditor/nodes/CINode.tsx rename to apps/web/src/components/workflowEditor/nodes/CINode.tsx diff --git a/src/components/workflowEditor/nodes/StaticNode.tsx b/apps/web/src/components/workflowEditor/nodes/StaticNode.tsx similarity index 100% rename from src/components/workflowEditor/nodes/StaticNode.tsx rename to apps/web/src/components/workflowEditor/nodes/StaticNode.tsx diff --git a/src/components/workflowEditor/nodes/WebhookNode.tsx b/apps/web/src/components/workflowEditor/nodes/WebhookNode.tsx similarity index 100% rename from src/components/workflowEditor/nodes/WebhookNode.tsx rename to apps/web/src/components/workflowEditor/nodes/WebhookNode.tsx diff --git a/src/components/workflowEditor/nodes/WebhookTippyCard.tsx b/apps/web/src/components/workflowEditor/nodes/WebhookTippyCard.tsx similarity index 100% rename from src/components/workflowEditor/nodes/WebhookTippyCard.tsx rename to apps/web/src/components/workflowEditor/nodes/WebhookTippyCard.tsx diff --git a/src/components/workflowEditor/service.ts b/apps/web/src/components/workflowEditor/service.ts similarity index 100% rename from src/components/workflowEditor/service.ts rename to apps/web/src/components/workflowEditor/service.ts diff --git a/src/components/workflowEditor/types.ts b/apps/web/src/components/workflowEditor/types.ts similarity index 100% rename from src/components/workflowEditor/types.ts rename to apps/web/src/components/workflowEditor/types.ts diff --git a/src/components/workflowEditor/utils.tsx b/apps/web/src/components/workflowEditor/utils.tsx similarity index 100% rename from src/components/workflowEditor/utils.tsx rename to apps/web/src/components/workflowEditor/utils.tsx diff --git a/src/components/workflowEditor/workflowEditor.constants.ts b/apps/web/src/components/workflowEditor/workflowEditor.constants.ts similarity index 100% rename from src/components/workflowEditor/workflowEditor.constants.ts rename to apps/web/src/components/workflowEditor/workflowEditor.constants.ts diff --git a/src/components/workflowEditor/workflowEditor.scss b/apps/web/src/components/workflowEditor/workflowEditor.scss similarity index 100% rename from src/components/workflowEditor/workflowEditor.scss rename to apps/web/src/components/workflowEditor/workflowEditor.scss diff --git a/src/components/workflowEditor/workflowEditor.tsx b/apps/web/src/components/workflowEditor/workflowEditor.tsx similarity index 100% rename from src/components/workflowEditor/workflowEditor.tsx rename to apps/web/src/components/workflowEditor/workflowEditor.tsx diff --git a/src/config/constantMessaging.ts b/apps/web/src/config/constantMessaging.ts similarity index 100% rename from src/config/constantMessaging.ts rename to apps/web/src/config/constantMessaging.ts diff --git a/src/config/constants.ts b/apps/web/src/config/constants.ts similarity index 100% rename from src/config/constants.ts rename to apps/web/src/config/constants.ts diff --git a/src/config/index.ts b/apps/web/src/config/index.ts similarity index 100% rename from src/config/index.ts rename to apps/web/src/config/index.ts diff --git a/src/config/routes.ts b/apps/web/src/config/routes.ts similarity index 100% rename from src/config/routes.ts rename to apps/web/src/config/routes.ts diff --git a/src/config/searchWorker.ts b/apps/web/src/config/searchWorker.ts similarity index 100% rename from src/config/searchWorker.ts rename to apps/web/src/config/searchWorker.ts diff --git a/src/config/utils.ts b/apps/web/src/config/utils.ts similarity index 100% rename from src/config/utils.ts rename to apps/web/src/config/utils.ts diff --git a/src/css/application.scss b/apps/web/src/css/application.scss similarity index 100% rename from src/css/application.scss rename to apps/web/src/css/application.scss diff --git a/src/css/base.scss b/apps/web/src/css/base.scss similarity index 100% rename from src/css/base.scss rename to apps/web/src/css/base.scss diff --git a/src/css/colorPalette.scss b/apps/web/src/css/colorPalette.scss similarity index 100% rename from src/css/colorPalette.scss rename to apps/web/src/css/colorPalette.scss diff --git a/src/css/forms.scss b/apps/web/src/css/forms.scss similarity index 100% rename from src/css/forms.scss rename to apps/web/src/css/forms.scss diff --git a/src/css/formulae.scss b/apps/web/src/css/formulae.scss similarity index 100% rename from src/css/formulae.scss rename to apps/web/src/css/formulae.scss diff --git a/src/css/icons.scss b/apps/web/src/css/icons.scss similarity index 100% rename from src/css/icons.scss rename to apps/web/src/css/icons.scss diff --git a/src/css/modal.scss b/apps/web/src/css/modal.scss similarity index 100% rename from src/css/modal.scss rename to apps/web/src/css/modal.scss diff --git a/src/css/patternfly.scss b/apps/web/src/css/patternfly.scss similarity index 100% rename from src/css/patternfly.scss rename to apps/web/src/css/patternfly.scss diff --git a/src/css/triggerView.scss b/apps/web/src/css/triggerView.scss similarity index 100% rename from src/css/triggerView.scss rename to apps/web/src/css/triggerView.scss diff --git a/src/css/whiteCard.scss b/apps/web/src/css/whiteCard.scss similarity index 100% rename from src/css/whiteCard.scss rename to apps/web/src/css/whiteCard.scss diff --git a/src/css/workflow.scss b/apps/web/src/css/workflow.scss similarity index 100% rename from src/css/workflow.scss rename to apps/web/src/css/workflow.scss diff --git a/src/custom.d.ts b/apps/web/src/custom.d.ts similarity index 100% rename from src/custom.d.ts rename to apps/web/src/custom.d.ts diff --git a/src/index.tsx b/apps/web/src/index.tsx similarity index 100% rename from src/index.tsx rename to apps/web/src/index.tsx diff --git a/src/service-worker.ts b/apps/web/src/service-worker.ts similarity index 100% rename from src/service-worker.ts rename to apps/web/src/service-worker.ts diff --git a/src/services/fetchWithFullRoute.ts b/apps/web/src/services/fetchWithFullRoute.ts similarity index 100% rename from src/services/fetchWithFullRoute.ts rename to apps/web/src/services/fetchWithFullRoute.ts diff --git a/src/services/service.ts b/apps/web/src/services/service.ts similarity index 100% rename from src/services/service.ts rename to apps/web/src/services/service.ts diff --git a/src/services/service.types.ts b/apps/web/src/services/service.types.ts similarity index 100% rename from src/services/service.types.ts rename to apps/web/src/services/service.types.ts diff --git a/src/setupTests.js b/apps/web/src/setupTests.js similarity index 100% rename from src/setupTests.js rename to apps/web/src/setupTests.js diff --git a/src/stories/Button.stories.tsx b/apps/web/src/stories/Button.stories.tsx similarity index 100% rename from src/stories/Button.stories.tsx rename to apps/web/src/stories/Button.stories.tsx diff --git a/src/stories/SelectPicker.stories.tsx b/apps/web/src/stories/SelectPicker.stories.tsx similarity index 100% rename from src/stories/SelectPicker.stories.tsx rename to apps/web/src/stories/SelectPicker.stories.tsx diff --git a/src/stories/ToastManager.stories.tsx b/apps/web/src/stories/ToastManager.stories.tsx similarity index 100% rename from src/stories/ToastManager.stories.tsx rename to apps/web/src/stories/ToastManager.stories.tsx diff --git a/src/stories/useForm.stories.tsx b/apps/web/src/stories/useForm.stories.tsx similarity index 100% rename from src/stories/useForm.stories.tsx rename to apps/web/src/stories/useForm.stories.tsx diff --git a/src/uploadTestReport.py b/apps/web/src/uploadTestReport.py similarity index 100% rename from src/uploadTestReport.py rename to apps/web/src/uploadTestReport.py diff --git a/src/util/MurmurHash3.ts b/apps/web/src/util/MurmurHash3.ts similarity index 100% rename from src/util/MurmurHash3.ts rename to apps/web/src/util/MurmurHash3.ts diff --git a/src/util/Subject.ts b/apps/web/src/util/Subject.ts similarity index 100% rename from src/util/Subject.ts rename to apps/web/src/util/Subject.ts diff --git a/src/util/Util.ts b/apps/web/src/util/Util.ts similarity index 100% rename from src/util/Util.ts rename to apps/web/src/util/Util.ts diff --git a/src/util/__tests__/Subject.test.ts b/apps/web/src/util/__tests__/Subject.test.ts similarity index 100% rename from src/util/__tests__/Subject.test.ts rename to apps/web/src/util/__tests__/Subject.test.ts diff --git a/src/vite-env.d.ts b/apps/web/src/vite-env.d.ts similarity index 100% rename from src/vite-env.d.ts rename to apps/web/src/vite-env.d.ts diff --git a/src/yaml.worker.js b/apps/web/src/yaml.worker.js similarity index 100% rename from src/yaml.worker.js rename to apps/web/src/yaml.worker.js diff --git a/tsconfig.jest.json b/apps/web/tsconfig.jest.json similarity index 100% rename from tsconfig.jest.json rename to apps/web/tsconfig.jest.json diff --git a/tsconfig.json b/apps/web/tsconfig.json similarity index 100% rename from tsconfig.json rename to apps/web/tsconfig.json diff --git a/vite.config.mts b/apps/web/vite.config.mts similarity index 99% rename from vite.config.mts rename to apps/web/vite.config.mts index 6b08970ec8..d782321ba8 100644 --- a/vite.config.mts +++ b/apps/web/vite.config.mts @@ -99,7 +99,6 @@ export default defineConfig(({ mode }) => { port: 3000, }, build: { - sourcemap: true, rollupOptions: { output: { manualChunks(id: string) { diff --git a/package.json b/package.json index 2a099eff78..6408a003b3 100644 --- a/package.json +++ b/package.json @@ -1,161 +1,11 @@ { - "name": "dashboard", - "version": "0.2.0", - "private": true, - "homepage": "/dashboard", - "dependencies": { - "@devtron-labs/devtron-fe-common-lib": "0.5.2", - "@esbuild-plugins/node-globals-polyfill": "0.2.3", - "@rjsf/core": "^5.13.3", - "@rjsf/utils": "^5.13.3", - "@rjsf/validator-ajv8": "^5.13.3", - "@sentry/browser": "7.50.0", - "@sentry/integrations": "7.50.0", - "@sentry/tracing": "7.50.0", - "@tippyjs/react": "4.2.6", - "@typeform/embed-react": "2.20.0", - "@types/marked": "4.0.8", - "@vitejs/plugin-react": "4.3.1", - "command-line-parser": "^0.2.10", - "compute-histogram": "^0.9.11", - "dayjs": "^1.11.8", - "dompurify": "^3.0.2", - "fast-json-patch": "^3.1.1", - "flexsearch": "^0.6.32", - "jsonpath-plus": "^9.0.0", - "marked": "4.3.0", - "moment": "^2.29.4", - "monaco-editor": "0.44.0", - "monaco-yaml": "5.1.1", - "query-string": "^7.1.1", - "react": "^17.0.2", - "react-csv": "^2.2.2", - "react-dates": "^21.8.0", - "react-dom": "^17.0.2", - "react-draggable": "^4.4.5", - "react-ga4": "^1.4.1", - "react-gtm-module": "^2.0.11", - "react-keybind": "^0.9.4", - "react-mde": "^11.5.0", - "react-monaco-editor": "^0.55.0", - "react-router-dom": "^5.3.4", - "react-select": "5.8.0", - "react-virtualized": "^9.22.5", - "recharts": "^2.1.9", - "rollup-plugin-node-polyfills": "0.2.1", - "rxjs": "^7.5.4", - "sockjs-client": "1.6.1", - "tippy.js": "^6.3.7", - "vite": "5.4.6", - "vite-plugin-require-transform": "1.0.21", - "vite-plugin-svgr": "^2.4.0", - "xterm": "^4.19.0", - "xterm-addon-fit": "^0.5.0", - "xterm-addon-search": "^0.9.0", - "xterm-webfont": "^2.0.0", - "yaml": "^2.4.1" - }, + "name": "devtron-frontend", + "version": "1.0.0", "scripts": { - "prepare": "husky install", - "lint": "tsc --noEmit && eslint 'src/**/*.{js,jsx,ts,tsx}' --max-warnings 0", - "lint-fix": "eslint 'src/**/*.{js,jsx,ts,tsx}' --fix", - "start": "vite --open", - "build": "NODE_OPTIONS=--max_old_space_size=4096 vite build", - "serve": "vite preview", - "build-light": "NODE_OPTIONS=--max_old_space_size=4096 GENERATE_SOURCEMAP=false vite build", - "build-k8s-app": "NODE_OPTIONS=--max_old_space_size=4096 GENERATE_SOURCEMAP=false VITE_K8S_CLIENT=true vite build", - "test": "vitest test", - "test-coverage:watch": "npm run test -- --coverage", - "test-coverage": "npm run test -- --coverage --watchAll=false", - "test:ci": "jest --watchAll=false --ci --json --coverage --testLocationInResults --outputFile=report.json", - "jest": "jest", - "lint-staged": "lint-staged", - "storybook": "IS_STORYBOOK=true storybook dev -p 6006", - "build-storybook": "IS_STORYBOOK=true storybook build" - }, - "browserslist": [ - ">0.2%", - "not dead", - "not ie <= 11", - "not op_mini all" - ], - "devDependencies": { - "@chromatic-com/storybook": "^1.8.0", - "@playwright/test": "^1.32.1", - "@sentry/cli": "^2.2.0", - "@storybook/addon-a11y": "^8.2.9", - "@storybook/addon-actions": "^8.2.9", - "@storybook/addon-essentials": "^8.2.9", - "@storybook/addon-interactions": "^8.2.9", - "@storybook/addon-links": "^8.2.9", - "@storybook/blocks": "^8.2.9", - "@storybook/react": "^8.2.9", - "@storybook/react-vite": "^8.2.9", - "@storybook/test": "^8.2.9", - "@testing-library/jest-dom": "^5.16.2", - "@testing-library/react": "^12.1.4", - "@types/jest": "^27.4.1", - "@types/node": "20.11.0", - "@types/react": "17.0.39", - "@types/react-csv": "^1.1.3", - "@types/react-dom": "17.0.13", - "@types/react-router-dom": "^5.3.3", - "@types/react-transition-group": "^4.4.4", - "@types/recharts": "^1.8.23", - "@types/recompose": "^0.30.10", - "@typescript-eslint/eslint-plugin": "8.3.0", - "@typescript-eslint/parser": "8.3.0", - "env-cmd": "10.1.0", - "eslint": "^8.56.0", - "eslint-config-airbnb": "^19.0.4", - "eslint-config-prettier": "^9.1.0", - "eslint-import-resolver-typescript": "^3.6.1", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-jsx-a11y": "^6.8.0", - "eslint-plugin-prettier": "^5.1.2", - "eslint-plugin-react": "^7.33.2", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-storybook": "^0.8.0", - "husky": "^7.0.4", - "jest-extended": "^2.0.0", - "jest-junit": "^13.0.0", - "jsdom-worker": "^0.2.1", - "lint-staged": "12.5.0", - "mock-socket": "^9.2.1", - "prettier": "^3.1.1", - "react-test-render": "^1.1.2", - "sass": "^1.69.7", - "storybook": "^8.2.9", - "ts-jest": "29.2.5", - "ts-node": "10.9.2", - "typescript": "5.5.4", - "vite-plugin-pwa": "0.20.2", - "vite-tsconfig-paths": "5.0.1", - "vitest": "2.0.5", - "workbox-core": "7.1.0", - "workbox-navigation-preload": "7.1.0", - "workbox-precaching": "7.1.0", - "workbox-routing": "7.1.0", - "workbox-strategies": "7.1.0", - "workbox-window": "7.1.0", - "worker-loader": "3.0.8" + "build": "pnpm run -r build", + "lint": "pnpm run -r lint" }, - "jest": { - "collectCoverageFrom": [ - "**/*.{ts,tsx,js,jsx}", - "!**/?(*.)+(mock).+(ts|js)", - "!**/node_modules/**", - "!**/coverage/**", - "!**/serviceWorker.ts", - "!**/index.tsx", - "!**/setupProxy.js" - ], - "setupFilesAfterEnv": [ - "jest-extended" - ], - "moduleNameMapper": { - "monaco-editor": "/node_modules/react-monaco-editor", - "monaco-yaml": "/node_modules/react-monaco-editor" - } - } + "devDependencies": { + "husky": "^7.0.4" + } } diff --git a/packages/devtron-fe-common-lib/.eslintignore b/packages/devtron-fe-common-lib/.eslintignore new file mode 100755 index 0000000000..e9659cf413 --- /dev/null +++ b/packages/devtron-fe-common-lib/.eslintignore @@ -0,0 +1,69 @@ +.eslintrc.cjs + +# Files with ESLint errors/warnings +src/Common/AddCDButton/AddCDButton.tsx +src/Common/Api.ts +src/Common/AppStatus/AppStatus.tsx +src/Common/AppStatus/utils.ts +src/Common/BreadCrumb/BreadCrumb.tsx +src/Common/BreadCrumb/BreadcrumbStore.tsx +src/Common/CIPipeline.Types.ts +src/Common/ChartVersionAndTypeSelector.tsx +src/Common/Checkbox.tsx +src/Common/ClipboardButton/ClipboardButton.tsx +src/Common/ClipboardButton/__tests__/ClipboardButton.test.tsx +src/Common/CodeEditor/CodeEditor.tsx +src/Common/Common.service.ts +src/Common/CustomInput/CustomInput.tsx +src/Common/CustomTagSelector/PropagateTagInfo.tsx +src/Common/CustomTagSelector/ResizableTagTextArea.tsx +src/Common/CustomTagSelector/TagDetails.tsx +src/Common/CustomTagSelector/TagLabelSelect.tsx +src/Common/CustomTagSelector/TagLabelValueSelector.tsx +src/Common/CustomTagSelector/TagSelector.utils.ts +src/Common/CustomTagSelector/ValidationRules.ts +src/Common/DebouncedSearch/DebouncedSearch.tsx +src/Common/DebouncedSearch/Utils.ts +src/Common/DebouncedSearch/__tests__/DebouncedSearch.test.tsx +src/Common/DeleteComponentModal/DeleteComponent.tsx +src/Common/DevtronProgressing/DevtronProgressing.tsx +src/Common/Dialogs/ConfirmationDialog.tsx +src/Common/Dialogs/DialogForm.tsx +src/Common/Dialogs/ForceDeleteDialog.tsx +src/Common/DraggableWrapper/DraggableButton.tsx +src/Common/DraggableWrapper/DraggableWrapper.tsx +src/Common/Drawer/Drawer.tsx +src/Common/Grid/Grid.tsx +src/Common/Helper.tsx +src/Common/Hooks/UseClickOutside/UseClickOutside.tsx +src/Common/Hooks/UseSuperAdmin/UseSuperAdmin.tsx +src/Common/Hooks/UseWindowSize/UseWindowSize.tsx +src/Common/ImageTags.tsx +src/Common/InfoColorBar/InfoColourbar.tsx +src/Common/Modals/Modal.tsx +src/Common/Modals/VisibleModal.tsx +src/Common/Modals/VisibleModal2.tsx +src/Common/MultiSelectCustomization.tsx +src/Common/PopupMenu.tsx +src/Common/Progressing.tsx +src/Common/RJSF/Form.tsx +src/Common/RJSF/config.ts +src/Common/RJSF/templates/ArrayFieldTemplate.tsx +src/Common/RJSF/templates/BaseInput.tsx +src/Common/RJSF/templates/ButtonTemplates/AddButton.tsx +src/Common/RJSF/templates/ButtonTemplates/RemoveButton.tsx +src/Common/RJSF/templates/ButtonTemplates/SubmitButton.tsx +src/Common/RJSF/templates/Field.tsx +src/Common/RJSF/templates/FieldErrorTemplate.tsx +src/Common/RJSF/templates/WrapIfAdditionalTemplate.tsx +src/Common/RJSF/widgets/Checkbox.tsx +src/Common/RJSF/widgets/Select.tsx +src/Common/Reload.tsx +src/Common/ResizableTextarea.tsx +src/Common/Security/ScanVulnerabilitiesTable.tsx +src/Common/Select/Select.tsx +src/Common/ServerError.ts +src/Common/TippyCustomized.tsx +src/Common/ToastBody.tsx +src/Common/Toggle/Toggle.tsx +src/Common/Types.ts diff --git a/packages/devtron-fe-common-lib/.eslintrc.cjs b/packages/devtron-fe-common-lib/.eslintrc.cjs new file mode 100644 index 0000000000..82b5933a7f --- /dev/null +++ b/packages/devtron-fe-common-lib/.eslintrc.cjs @@ -0,0 +1,151 @@ +/* + * Copyright (c) 2024. Devtron Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +module.exports = { + parser: '@typescript-eslint/parser', + plugins: ['@typescript-eslint', 'react', 'prettier', 'import'], + env: { + browser: true, + es2021: true, + }, + parserOptions: { + ecmaVersion: 2021, + sourceType: 'module', + ecmaFeatures: { + jsx: true, + }, + project: ['./tsconfig.json'], + }, + globals: { + JSX: true, + }, + extends: [ + 'eslint:recommended', + 'plugin:react/recommended', + 'plugin:react/jsx-runtime', + 'plugin:@typescript-eslint/eslint-recommended', + 'airbnb', + 'airbnb/hooks', + 'prettier', + ], + rules: { + 'prettier/prettier': ['error'], + 'linebreak-style': ['error', 'unix'], + 'no-console': 'warn', + 'no-var': 'error', + 'no-duplicate-imports': 'error', + 'no-shadow': 'off', + '@typescript-eslint/no-shadow': 'warn', + '@typescript-eslint/explicit-function-return-type': 'off', + '@typescript-eslint/explicit-member-accessibility': 'off', + // Since we are using typescript, we can disable the no-unused-vars rule for enum,etc + 'no-unused-vars': 'off', + '@typescript-eslint/no-unused-vars': 'error', + 'react/jsx-filename-extension': [ + 'error', + { + extensions: ['tsx'], + }, + ], + 'react/jsx-props-no-spreading': 'off', + 'react/prefer-stateless-function': 'off', + 'jsx-a11y/click-events-have-key-events': 'off', + 'jsx-a11y/no-static-element-interactions': 'off', + 'jsx-a11y/no-noninteractive-element-interactions': 'off', + 'no-underscore-dangle': 'off', + 'import/no-extraneous-dependencies': [ + 'warn', + { + devDependencies: true, + }, + ], + 'import/no-named-as-default-member': 'off', + 'no-plusplus': [ + 'error', + { + allowForLoopAfterthoughts: true, + }, + ], + // Since we dont use prop-types, we can disable this rule + 'react/require-default-props': 'off', + 'react-hooks/exhaustive-deps': 'off', + 'react/function-component-definition': [ + 'warn', + { + namedComponents: 'arrow-function', + unnamedComponents: 'arrow-function', + }, + ], + 'react/jsx-uses-react': 'off', + 'react/react-in-jsx-scope': 'off', + // additional rules: + '@typescript-eslint/no-floating-promises': 'error', + 'import/prefer-default-export': 'off', + 'import/extensions': [ + 'warn', + 'ignorePackages', + { + js: 'never', + jsx: 'never', + ts: 'never', + tsx: 'never', + }, + ], + // Re-add this while resolving ESLint issues + 'import/no-cycle': 'off', + 'import/prefer-default-export': 'off', + 'no-restricted-exports': 'off', + 'import/named': 'off', + }, + overrides: [ + { + files: ['*.ts', '*.tsx'], + rules: { + 'no-undef': 'off', + 'no-restricted-imports': [ + 'error', + { + paths: [ + { + name: 'react-toastify', + message: 'Please use "ToastManager.showToast" instead.', + } + ], + }, + ], + }, + }, + ], + settings: { + react: { + version: 'detect', + }, + 'import/parsers': { + '@typescript-eslint/parser': ['.ts', '.tsx'], + }, + 'import/resolver': { + typescript: { + alwaysTryTypes: true, + }, + node: { + moduleDirectory: ['src', 'node_modules'], + extensions: ['.js', '.jsx', '.ts', '.tsx'], + }, + }, + 'import/ignore': ['\\.png$', '\\.jpg$', '\\.svg$'], + }, + ignorePatterns: ['.eslintrc.cjs', 'vite.config.ts'], +} diff --git a/packages/devtron-fe-common-lib/package.json b/packages/devtron-fe-common-lib/package.json new file mode 100644 index 0000000000..348b5ea158 --- /dev/null +++ b/packages/devtron-fe-common-lib/package.json @@ -0,0 +1,114 @@ +{ + "name": "@devtron-labs/devtron-fe-common-lib", + "version": "0.5.0-patch-1", + "description": "Supporting common component library", + "type": "module", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "files": [ + "dist" + ], + "repository": { + "type": "git", + "url": "https://github.com/devtron-labs/devtron-fe-common-lib.git" + }, + "author": "Devtron", + "license": "ISC", + "bugs": { + "url": "https://github.com/devtron-labs/devtron-fe-common-lib/issues" + }, + "homepage": "https://github.com/devtron-labs/devtron-fe-common-lib#readme", + "sideEffects": [ + "**/*.css" + ], + "scripts": { + "lint": "tsc --noEmit && NODE_OPTIONS=--max_old_space_size=3072 eslint 'src/**/*.{js,jsx,ts,tsx}' --max-warnings 0", + "lint-fix": "eslint 'src/**/*.{js,jsx,ts,tsx}' --fix", + "test": "exit 0", + "dev": "NODE_OPTIONS=--max_old_space_size=3072 vite", + "build": "NODE_OPTIONS=--max_old_space_size=3072 vite build", + "build-watch": "NODE_OPTIONS=--max_old_space_size=3072 vite build --sourcemap --watch", + "build-lib": "vite build", + "preview": "vite preview" + }, + "devDependencies": { + "@esbuild-plugins/node-globals-polyfill": "0.2.3", + "@sentry/browser": "^7.31.1", + "@testing-library/jest-dom": "^5.16.2", + "@testing-library/react": "^12.1.4", + "@tippyjs/react": "^4.2.0", + "@typeform/embed-react": "2.20.0", + "@types/react": "17.0.39", + "@types/react-dom": "17.0.13", + "@types/react-router-dom": "^5.3.3", + "@typescript-eslint/eslint-plugin": "8.3.0", + "@typescript-eslint/parser": "8.3.0", + "@vitejs/plugin-react": "4.3.1", + "eslint": "^8.56.0", + "eslint-config-airbnb": "^19.0.4", + "eslint-config-prettier": "^9.1.0", + "eslint-import-resolver-typescript": "^3.6.1", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-jsx-a11y": "^6.8.0", + "eslint-plugin-prettier": "^5.1.2", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.6.0", + "glob": "^10.3.3", + "moment": "^2.29.4", + "monaco-editor": "0.44.0", + "monaco-yaml": "5.1.1", + "prettier": "^3.1.1", + "react-ga4": "^1.4.1", + "react-mde": "^11.5.0", + "react-toastify": "9.1.3", + "typescript": "5.5.4", + "vite": "5.4.6", + "vite-plugin-dts": "4.0.3", + "vite-plugin-lib-inject-css": "2.1.0", + "vite-plugin-svgr": "^2.4.0", + "vite-tsconfig-paths": "5.0.1" + }, + "peerDependencies": { + "@rjsf/core": "^5.13.3", + "@rjsf/utils": "^5.13.3", + "@rjsf/validator-ajv8": "^5.13.3", + "@typeform/embed-react": "2.20.0", + "dompurify": "^3.0.2", + "marked": "4.3.0", + "react": "^17.0.2", + "react-dom": "^17.0.2", + "react-draggable": "^4.4.5", + "react-ga4": "^1.4.1", + "react-keybind": "^0.9.4", + "react-mde": "^11.5.0", + "react-router": "^5.3.0", + "react-router-dom": "^5.3.0", + "react-select": "5.8.0", + "rxjs": "^7.8.1", + "yaml": "^2.4.1" + }, + "dependencies": { + "@types/react-dates": "^21.8.6", + "ansi_up": "^5.2.1", + "dayjs": "^1.11.13", + "fast-json-patch": "^3.1.1", + "jsonpath-plus": "^9.0.0", + "react-dates": "^21.8.0", + "react-monaco-editor": "^0.54.0", + "sass": "^1.69.7", + "tippy.js": "^6.3.7", + "tslib": "2.7.0" + }, + "overrides": { + "react-dates": { + "react": "^17.0.2", + "react-dom": "^17.0.2" + }, + "react-monaco-editor": { + "monaco-editor": "0.44.0" + }, + "vite-plugin-svgr": { + "vite": "5.4.6" + } + } +} diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-abort.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-abort.svg new file mode 100644 index 0000000000..5c0dd3ee29 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-abort.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-aborted.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-aborted.svg new file mode 100644 index 0000000000..f3421e20b9 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-aborted.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-add.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-add.svg new file mode 100644 index 0000000000..9122c36849 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-add.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-appstatus-cancelled.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-appstatus-cancelled.svg new file mode 100644 index 0000000000..21ab44b96b --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-appstatus-cancelled.svg @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-arrow-backward.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-arrow-backward.svg new file mode 100644 index 0000000000..935b4eabd9 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-arrow-backward.svg @@ -0,0 +1,19 @@ + + + + + \ No newline at end of file diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-arrow-counter-clockwise.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-arrow-counter-clockwise.svg new file mode 100644 index 0000000000..f9b31a8290 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-arrow-counter-clockwise.svg @@ -0,0 +1,21 @@ + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-arrow-down.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-arrow-down.svg new file mode 100644 index 0000000000..3e9f488d71 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-arrow-down.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-arrow-forward.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-arrow-forward.svg new file mode 100644 index 0000000000..04ecd2f764 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-arrow-forward.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-arrow-out.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-arrow-out.svg new file mode 100644 index 0000000000..59232ad794 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-arrow-out.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-arrow-right.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-arrow-right.svg new file mode 100644 index 0000000000..8b85828b74 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-arrow-right.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-arrow-square-out.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-arrow-square-out.svg new file mode 100644 index 0000000000..f06080fb53 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-arrow-square-out.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-arrow-up-down.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-arrow-up-down.svg new file mode 100644 index 0000000000..ed2616839c --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-arrow-up-down.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-bold.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-bold.svg new file mode 100644 index 0000000000..db13723f4e --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-bold.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-book-open.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-book-open.svg new file mode 100644 index 0000000000..8580592b5f --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-book-open.svg @@ -0,0 +1,19 @@ + + + + + \ No newline at end of file diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-bot.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-bot.svg new file mode 100644 index 0000000000..de1e7b5bc5 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-bot.svg @@ -0,0 +1,23 @@ + + + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-branch-main.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-branch-main.svg new file mode 100644 index 0000000000..eeb6944c3a --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-branch-main.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-branch.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-branch.svg new file mode 100644 index 0000000000..4f1dbd3360 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-branch.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-branch2.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-branch2.svg new file mode 100644 index 0000000000..67ebaf0275 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-branch2.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-bug.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-bug.svg new file mode 100644 index 0000000000..dc73c87738 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-bug.svg @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-calendar.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-calendar.svg new file mode 100644 index 0000000000..2eac93e0cd --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-calendar.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-calender-blank.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-calender-blank.svg new file mode 100644 index 0000000000..2274fc4e21 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-calender-blank.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-caret-down.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-caret-down.svg new file mode 100644 index 0000000000..e5be2501be --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-caret-down.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-caret-left-small.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-caret-left-small.svg new file mode 100644 index 0000000000..f0a8083592 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-caret-left-small.svg @@ -0,0 +1,19 @@ + + + + + \ No newline at end of file diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-charts.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-charts.svg new file mode 100644 index 0000000000..354ce37a04 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-charts.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-chat-circle-dots.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-chat-circle-dots.svg new file mode 100644 index 0000000000..ae72f37f7e --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-chat-circle-dots.svg @@ -0,0 +1,23 @@ + + + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-check-all.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-check-all.svg new file mode 100644 index 0000000000..0a8d5067f8 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-check-all.svg @@ -0,0 +1,21 @@ + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-check-circle.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-check-circle.svg new file mode 100644 index 0000000000..13e828cbc2 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-check-circle.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-check-grey.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-check-grey.svg new file mode 100644 index 0000000000..947a12bb4b --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-check-grey.svg @@ -0,0 +1,21 @@ + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-check-square.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-check-square.svg new file mode 100644 index 0000000000..eaa8a13076 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-check-square.svg @@ -0,0 +1,20 @@ + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-check.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-check.svg new file mode 100644 index 0000000000..ca583daf0c --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-check.svg @@ -0,0 +1,21 @@ + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-checked-list.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-checked-list.svg new file mode 100644 index 0000000000..e63617d291 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-checked-list.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-chevron-down.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-chevron-down.svg new file mode 100644 index 0000000000..45c5ef3ae6 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-chevron-down.svg @@ -0,0 +1,21 @@ + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-circle.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-circle.svg new file mode 100644 index 0000000000..80d746bb93 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-circle.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-clair.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-clair.svg new file mode 100644 index 0000000000..a39c01734b --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-clair.svg @@ -0,0 +1,21 @@ + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-clock.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-clock.svg new file mode 100644 index 0000000000..e50af603f0 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-clock.svg @@ -0,0 +1,19 @@ + + + + + \ No newline at end of file diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-close.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-close.svg new file mode 100644 index 0000000000..474e6d4610 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-close.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-code-commit.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-code-commit.svg new file mode 100644 index 0000000000..fcc486ccf8 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-code-commit.svg @@ -0,0 +1,19 @@ + + + + + \ No newline at end of file diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-code.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-code.svg new file mode 100644 index 0000000000..9706ced882 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-code.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-collapse-all.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-collapse-all.svg new file mode 100644 index 0000000000..8fd9ef2d0f --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-collapse-all.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-commit.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-commit.svg new file mode 100644 index 0000000000..ed4548692c --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-commit.svg @@ -0,0 +1,23 @@ + + + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-compare.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-compare.svg new file mode 100644 index 0000000000..44de5bf2b0 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-compare.svg @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-copy.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-copy.svg new file mode 100644 index 0000000000..6bc8e5feeb --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-copy.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-cpu.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-cpu.svg new file mode 100644 index 0000000000..d1554b2820 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-cpu.svg @@ -0,0 +1,20 @@ + + + + + + \ No newline at end of file diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-cross.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-cross.svg new file mode 100644 index 0000000000..6afa81ad14 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-cross.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-delete-interactive.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-delete-interactive.svg new file mode 100644 index 0000000000..80ccbcab54 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-delete-interactive.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-diff-file-updated.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-diff-file-updated.svg new file mode 100644 index 0000000000..59d0b24593 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-diff-file-updated.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-disconnected.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-disconnected.svg new file mode 100644 index 0000000000..95e068ae83 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-disconnected.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-discord-fill.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-discord-fill.svg new file mode 100644 index 0000000000..131605ed23 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-discord-fill.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-docker.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-docker.svg new file mode 100644 index 0000000000..adc41c809c --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-docker.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-download.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-download.svg new file mode 100644 index 0000000000..45d0bfc1d9 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-download.svg @@ -0,0 +1,21 @@ + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-drag.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-drag.svg new file mode 100644 index 0000000000..fc98f2f7ea --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-drag.svg @@ -0,0 +1,24 @@ + + + + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-dropdown-filled.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-dropdown-filled.svg new file mode 100644 index 0000000000..975b72b765 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-dropdown-filled.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-edit-file.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-edit-file.svg new file mode 100644 index 0000000000..0921252ddc --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-edit-file.svg @@ -0,0 +1,20 @@ + + + + + + \ No newline at end of file diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-enter.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-enter.svg new file mode 100644 index 0000000000..277adb1b23 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-enter.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-error-cross.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-error-cross.svg new file mode 100644 index 0000000000..8d031050a5 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-error-cross.svg @@ -0,0 +1,24 @@ + + + + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-error-exclamation.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-error-exclamation.svg new file mode 100644 index 0000000000..920fd3eff4 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-error-exclamation.svg @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-error-medium.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-error-medium.svg new file mode 100644 index 0000000000..8bdb1c1303 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-error-medium.svg @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-error.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-error.svg new file mode 100644 index 0000000000..f577501d70 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-error.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-errorInfo.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-errorInfo.svg new file mode 100644 index 0000000000..4e78a05ff1 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-errorInfo.svg @@ -0,0 +1,23 @@ + + + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-exclamation.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-exclamation.svg new file mode 100644 index 0000000000..155c1f2bc3 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-exclamation.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-exit-fullscreen.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-exit-fullscreen.svg new file mode 100644 index 0000000000..4132bd4be2 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-exit-fullscreen.svg @@ -0,0 +1,19 @@ + + + + + \ No newline at end of file diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-expand-all.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-expand-all.svg new file mode 100644 index 0000000000..8d287e60ed --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-expand-all.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-expand.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-expand.svg new file mode 100644 index 0000000000..1b1cc5bf3b --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-expand.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-feedback.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-feedback.svg new file mode 100644 index 0000000000..18eab1c75b --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-feedback.svg @@ -0,0 +1,19 @@ + + + + + \ No newline at end of file diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-file-text.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-file-text.svg new file mode 100644 index 0000000000..4dae2ba031 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-file-text.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-files.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-files.svg new file mode 100644 index 0000000000..d8822a21c3 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-files.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-filter-applied.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-filter-applied.svg new file mode 100644 index 0000000000..1f0ca62c7f --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-filter-applied.svg @@ -0,0 +1,20 @@ + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-filter.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-filter.svg new file mode 100644 index 0000000000..b0c39fd489 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-filter.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-folder.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-folder.svg new file mode 100644 index 0000000000..d86f013c95 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-folder.svg @@ -0,0 +1,19 @@ + + + + + \ No newline at end of file diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-fullscreen-2.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-fullscreen-2.svg new file mode 100644 index 0000000000..d4cec2f1d2 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-fullscreen-2.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-fullscreen.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-fullscreen.svg new file mode 100644 index 0000000000..2e33d463ca --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-fullscreen.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-header.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-header.svg new file mode 100644 index 0000000000..49772bd5f1 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-header.svg @@ -0,0 +1,21 @@ + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-help-outline.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-help-outline.svg new file mode 100644 index 0000000000..90c5ffc0eb --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-help-outline.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-help.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-help.svg new file mode 100644 index 0000000000..562d3e5a69 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-help.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-image.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-image.svg new file mode 100644 index 0000000000..0b702b9bd3 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-image.svg @@ -0,0 +1,20 @@ + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-in-progress.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-in-progress.svg new file mode 100644 index 0000000000..7a141c867e --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-in-progress.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-info-filled-override.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-info-filled-override.svg new file mode 100644 index 0000000000..1ffa16cf8f --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-info-filled-override.svg @@ -0,0 +1,20 @@ + + + + + + \ No newline at end of file diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-info-filled.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-info-filled.svg new file mode 100644 index 0000000000..f65ce117cc --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-info-filled.svg @@ -0,0 +1,20 @@ + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-info-outlined.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-info-outlined.svg new file mode 100644 index 0000000000..064d92b96e --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-info-outlined.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-italic.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-italic.svg new file mode 100644 index 0000000000..ba864706ac --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-italic.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-k8s-job.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-k8s-job.svg new file mode 100644 index 0000000000..99bb19e81c --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-k8s-job.svg @@ -0,0 +1,19 @@ + + + + + \ No newline at end of file diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-lego-block.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-lego-block.svg new file mode 100644 index 0000000000..01033dc539 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-lego-block.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-lines.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-lines.svg new file mode 100644 index 0000000000..093a1d9754 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-lines.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-link.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-link.svg new file mode 100644 index 0000000000..a901f83053 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-link.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-locked.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-locked.svg new file mode 100644 index 0000000000..6aa0323de6 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-locked.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-mechanical-operation.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-mechanical-operation.svg new file mode 100644 index 0000000000..3d470c3258 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-mechanical-operation.svg @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-megaphone.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-megaphone.svg new file mode 100644 index 0000000000..33bdf144ed --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-megaphone.svg @@ -0,0 +1,19 @@ + + + + + \ No newline at end of file diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-memory.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-memory.svg new file mode 100644 index 0000000000..e7a41596bf --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-memory.svg @@ -0,0 +1,19 @@ + + + + + \ No newline at end of file diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-message.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-message.svg new file mode 100644 index 0000000000..5d845a87b6 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-message.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-minus.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-minus.svg new file mode 100644 index 0000000000..9d3faf6e8e --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-minus.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-nav-rocket.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-nav-rocket.svg new file mode 100644 index 0000000000..f60a637d8c --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-nav-rocket.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-onboarding.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-onboarding.svg new file mode 100644 index 0000000000..5249dee503 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-onboarding.svg @@ -0,0 +1,19 @@ + + + + + \ No newline at end of file diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-open-box.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-open-box.svg new file mode 100644 index 0000000000..2b76f5c65c --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-open-box.svg @@ -0,0 +1,19 @@ + + + + + \ No newline at end of file diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-open-in-new.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-open-in-new.svg new file mode 100644 index 0000000000..59232ad794 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-open-in-new.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-ordered-list.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-ordered-list.svg new file mode 100644 index 0000000000..b65be4eeaa --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-ordered-list.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-pencil.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-pencil.svg new file mode 100644 index 0000000000..ab5f96e85e --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-pencil.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-person.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-person.svg new file mode 100644 index 0000000000..e1b8ffdf64 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-person.svg @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-progressing.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-progressing.svg new file mode 100644 index 0000000000..8b8884b415 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-progressing.svg @@ -0,0 +1,22 @@ + + + + + + + + \ No newline at end of file diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-pull-request.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-pull-request.svg new file mode 100644 index 0000000000..9ba5cc6299 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-pull-request.svg @@ -0,0 +1,19 @@ + + + + + \ No newline at end of file diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-pulsate-status.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-pulsate-status.svg new file mode 100644 index 0000000000..519e70b817 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-pulsate-status.svg @@ -0,0 +1,21 @@ + + + + + \ No newline at end of file diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-quote.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-quote.svg new file mode 100644 index 0000000000..7df7aae3ab --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-quote.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-regex.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-regex.svg new file mode 100644 index 0000000000..6cbafd73bf --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-regex.svg @@ -0,0 +1,19 @@ + + + + + \ No newline at end of file diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-release-open.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-release-open.svg new file mode 100644 index 0000000000..2b76f5c65c --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-release-open.svg @@ -0,0 +1,19 @@ + + + + + \ No newline at end of file diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-rocket-fail.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-rocket-fail.svg new file mode 100644 index 0000000000..53c83bc9c7 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-rocket-fail.svg @@ -0,0 +1,20 @@ + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-rotate-devtron.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-rotate-devtron.svg new file mode 100644 index 0000000000..241fe07efe --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-rotate-devtron.svg @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-search.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-search.svg new file mode 100644 index 0000000000..aecad2a895 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-search.svg @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-sort-arrow-down.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-sort-arrow-down.svg new file mode 100644 index 0000000000..45c28adcfd --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-sort-arrow-down.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-stamp.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-stamp.svg new file mode 100644 index 0000000000..573cb0a0cb --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-stamp.svg @@ -0,0 +1,9 @@ + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-strikethrough.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-strikethrough.svg new file mode 100644 index 0000000000..d77c6404bb --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-strikethrough.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-success.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-success.svg new file mode 100644 index 0000000000..a3c2e3a269 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-success.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-tag.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-tag.svg new file mode 100644 index 0000000000..f71d3f1f85 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-tag.svg @@ -0,0 +1,20 @@ + + + + + + \ No newline at end of file diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-timeout-red.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-timeout-red.svg new file mode 100644 index 0000000000..da3064b284 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-timeout-red.svg @@ -0,0 +1,21 @@ + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-timer.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-timer.svg new file mode 100644 index 0000000000..65b0a099fe --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-timer.svg @@ -0,0 +1,19 @@ + + + + + \ No newline at end of file diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-trivy.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-trivy.svg new file mode 100644 index 0000000000..172130005f --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-trivy.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-unordered-list.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-unordered-list.svg new file mode 100644 index 0000000000..7a02458ef9 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-unordered-list.svg @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-view-variable-toggle.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-view-variable-toggle.svg new file mode 100644 index 0000000000..3c7ec5400e --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-view-variable-toggle.svg @@ -0,0 +1,24 @@ + + + + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-visibility-on.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-visibility-on.svg new file mode 100644 index 0000000000..5649af0206 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-visibility-on.svg @@ -0,0 +1,20 @@ + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-vulnerability-not-found.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-vulnerability-not-found.svg new file mode 100644 index 0000000000..000bb7be69 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-vulnerability-not-found.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-warning.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-warning.svg new file mode 100644 index 0000000000..abbd63fa23 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-warning.svg @@ -0,0 +1,23 @@ + + + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-webhook.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-webhook.svg new file mode 100644 index 0000000000..3a4183e54c --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-webhook.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/ic-world.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-world.svg new file mode 100644 index 0000000000..3fb41ca719 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/ic-world.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Icon/inject-tag.svg b/packages/devtron-fe-common-lib/src/Assets/Icon/inject-tag.svg new file mode 100644 index 0000000000..45be26643a --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Icon/inject-tag.svg @@ -0,0 +1,21 @@ + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Img/app-not-deployed.png b/packages/devtron-fe-common-lib/src/Assets/Img/app-not-deployed.png new file mode 100755 index 0000000000000000000000000000000000000000..f728141e87e4f16d51c2261e467e2819d570808b GIT binary patch literal 51038 zcmeFZRaYHNv;`UnfsH!^_W;4&-QC@NV6?vmi{?(Xie3GVKG`OZ1_FWjg5(4$B9 z7+tk$t*TX3bI$5;d08=d7;Knt-@d_1hzl!z`v!LRb;SW7zuu_VCk%bvz#J9D1iw{H z;U0hc#{W%1SU}kg?5qNEH0bvo+S(O491cylXkoZSFzRSmjs908hvlz${g_R^BZ_SJjZ)45!?(?dna zQ^j>FQ@Q)`!r`KI>+yo;absV5CmZ>6H#ByD(uqE(kcrlmVzrS<0yc(*H^GHkt$Ut?t%JCL*~ zEhSAoBSbQ{={j6IE)>K@3oe+)cF~TU1^r(%{W}0r+D;e0H&tVzwH{88>SG(Qv|z)% zN$Xb`RT7lBxnlG<7(iF^iw)-tT88bU;~(`jqjKX3?-6AzJWKblTd`M9JDf~N|1O

~b#D?&n!Bg!>S^v}h{P`hXrnoNM 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¨Q_B?=%;mD<09J^Vlo7ULYm$yzB&c(!w2B;67|5 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 eBxWgo_|M$8W#vB68GU;hfWXt$&t;ucLK6V + + + + + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Img/empty-noresult@2x.png b/packages/devtron-fe-common-lib/src/Assets/Img/empty-noresult@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..5c2f3e6870d4901d4d364795c255cb4f3d6ce688 GIT binary patch literal 71740 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 literal 0 HcmV?d00001 diff --git a/packages/devtron-fe-common-lib/src/Assets/Img/ic-empty-error@2x.png b/packages/devtron-fe-common-lib/src/Assets/Img/ic-empty-error@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..5b1c1db2b1b052f5eea995f40f5b12817e045905 GIT binary patch literal 26446 zcmeEu<9B3D)Nj($vF)T|8xz~cL=zhm+nJu&n%J1wp4fIKwr%_7S$Dnf-*7+N57l+L z`mFAKYVZBqtPWFFltO~XhlhZGK$4LbSA~FpjQt$Ku+X0?@nE{0&k535RZ0}1a)R*a z^NqNfmW;WA0tDUXH7o>Vh!q6zzgs>B{^x*z_>uz&@#S-d{BJD>@IRkI#^!wa-)rIj zZjA3kO@x3DhL8~#`Q`z6>I?G|Yi{X2HI?td?oS;E0D$ zlHE5c9#zwKkCz~nR?I4Dv&f>NLSEx8BAkW<{=?kry)yPX$>(h0?)GrsZg$>&0bb&J z`2Em!z~em0eo-P?Z34uFl>CWi`2VN>m$x9W50?cH2|*qU2W*^3Rik`*c| zW53XqGM~11Tt#a+E_PO<8Ukp`pN(ztAT>!1GyFTgcOH#y5VSa2v4zWse%Cvv7b<-Y zqi&?a$lhrtfLvNTu5tS$Wm5xqY%zJ>beGO-ppe90Oc=}}$pw>667Z*oxyr6$5%bm< zAOpz|Jp#)Dzy{p07b*U0=z8g4L6*b9h#f@Ju~5iPw&sn#5CoMNC>4l3jDKQw;Re%?FTTp$U9tH2B2%Jv%E! z*2D3PnTh>JHz5!@pr_s}XLBGtG}yMzJPKXGdwl}vshmqHbsh301RD{e-16J!FXr|1 zWPLt_A$hgye!ZHDz-^;Z=yan2m7psrQ9K+E1Gzt}$8|F2!PqDDc9LBw>{3hfs}2E` zCz@trN@Kme+yqYA=I5U~H%v62fkCd!0(+V%(5mFC)+@wfVr|^`I|*?Ils177Ld@tE z6bj*Pgk@Y&GZ86_jkYN0d~Brf{j%LA9;O6k{;(rZ6$uf6<{HBm;hzb!4-8D3wB5_Bw|G~&AMM8YK;*n7IG|DgwA_LKq(C2 zXfzz3d{j)Q>;b#qh!9h01mjv{c$#bHZVfzthh+g@CUn961_1_og07SBW-HlU-e~d1 zCUAg5I%_qyH;_*w**9l|pM+=j#;CCaphCK`FqBTUKkm~f5yU>Q@Gsl!EehZQT5I6X zX=^d}Sz`ee+#2a<(lFrXrCF37x8o1-A*zUs7$ryAY-mzt9}M z0CX(m1*A|;s!R$Ke+&gUbhC*z3a?)NEXWmGA79{b*{AqVDFA?hUsfH@cLQr$D~^ir z!%p}OtD4hgqZmpylU9Wp+C^xF2nDmKwGfhB?XagAg1*XcUcR1HF%gsvYm>@(<}IT4!gr5&lxij5BSpkmI>9SN!^zn*#ewGY zKs4=e@d4-i!)ws{=cXm$?vwn<@O5p(rwlIjC;wpw@JK;K)zrHV)Eh{*fKxS6sbgw~ z2SY0tUdJd<=rRgudfbO{^IoDlF;vaWzV8K9+JFm!bp0?`!MiyA6Paj3Gypy&?p&R> z$Pzh3u})&~_@|Ag1^Utn0p`*P*=)f)pZhD7UUbjv`SUPTCku~#5*GKQga%_^I5C*0 zt|%G->g~eVc5uuFYu_r8M69!V+M<@)+#sQA@8R)=xS1yqmsw+ z0#?lB1q2Ghz9Jf#HlP)rmw8NBT882few9ad`l_M(Qx|s#xZNXbl!yy9MPr!|GFao? zY3AeX^*}x0ql;HaR^%`Fp}8fn+0`r~RwfuhK+HU~Np82(y)(j+6|^^EZS)5h+y`ru z&Qtd>Z{MLC3BK+{A3XPotPM*TgS^p-x8zFtXwWo)qQ3n~(I|}mYqu8G2HadOszoFT z!uwB5GmDRMABsht{iJV3@tQ3 z_$|^(6F=AkO~ra!eAF_w_Ch#!9yx}7_TyU4u{QyhVdZ}OE00hD1zbC~EF!QOfgYOW zbR4!B=~F!G%Ay=L{nnmfQl=)>$-Wi)UHd@G-mLXRg8`YW1tV+2$c zhbV&fY8>M}f6!9tfZbI|G`^0MQ2OWlXKo>4YLLW&N+@EOL6o_!1f?18;O~4e;TilquZ`hy6t>*lAQZjk?F}!mk?wI14$Kox;dhX z2d+n5M-8Iu|n~OhV0b2@3*X1I84ltO@Ur>Y87w z`_W{b`?aQYm2+1lG?_?%^=h87ifPni&u~U~<7|+m(|!P|t}Bwf3mESxtqmfNa0x_PZG`RVVp$o#?A#3pfqil%7KG(kUexjv~a+StIgi6hz_S z$f86tvac69dyMW^+qu;iQ>}^$yML25E(S|@GQSoA7PXq65(b4=b@|G5RLH6i`Y^oh zd|#rZl$%Y~zITbwhphigiK~z^PTZLCl<;D(S>2t)4o$ZXaHaM76lNu%VxGlYLHOhE z*QoJ<6>?Pl6%k!0RTicv@mi^d@HZj@89cJ(4)^Xbp8|be3^ShxL@mzdIpY^7?~LvT ze_7Mjb?tN%Jxa7Zi63Jmjs#2WO&IQ^;2NEtp?^y9C?!_6H6}A)Ak`viZo%KXsq(}E zN0b($;*F(=>4`#2C%F$&e0Dt3Qz#50DBwEs6SX`mAtpMS(H1>>{&nBor6-#h8H&V) zTs}FqxXQFGFL)AC5c5~UngARnIIGe7L;tf;F$mC64=l5E?;_hwbZr+?y@44HC-LR( z2HK&x=t_I8({*SHSX8l=#nmL_Q*c0GT-CS89ls!~xk(ZE7{$;L&zag`we5W?TfJ-b zRqj;yJ}tjYR(pN3!rhvTvHuw8DX(n|M_zpsh|yx?xQV`ox&W4jKYlQ?)pHVFT^`+E zj=9JCBJ{^^aQ;`#`tpeZ{071?By$k_78^DbK*xMyRS5I8Ga?Agj!=X7wA?~LtPvdh zmw=vF*b~_VFzgKFaNiH^N;(=G$B=wPDmTE@D5g}E8W6fu$8m0oT3Q%{}G;)rawl7Gr5X*sHXk zXv_;mLd~QOtVY|8OC#<{q8P~S|0Qx0UliDACiidq^zA0Q_LCw1mGX-0Id*u#m6W%ww!+ z`H1Es1&<1{s%H|BcfnFbbloQuB257XWL&KZ_P$37^8rVK zu1gIpjcl}3F*^zVS}?2ly~2qSvG!y*Vm(g&AiLbyJCi+&uL|B;t5M0T_;piFxK4@N ztc>(&&Hgiks}WuEcxpICAm3PBy?N##E0G}%{tWxBl_#dHwnBU zc0IH`cJuHNPa!s#S*w@(%@C5%V4+o}+q0D!tkgS~cnSf{o6{LQ?a5GfY4}f5RA9I* z9VvVayV<;QZTmiefuu*ymbyKENA7g7{%ZojnwF-@Y+9)%J;P;lw$8V(Ji|-E=%ifwlJNGTh-`AhqKa&)!aF{JGm6xs*O#=v_FEi6k_ZK{<1U^m2k< zEzOE9Hy&YS)^hQ7VqfQD^!})Y(e(mV^ROoS-EaUwZ2H^K|5#SeIyomhF7>`1svh&Q zfPX(@bnUql0r>Ufb7Uz>{_gXIxW!>JAyS79cWX=jgrgXRsPmA_VTZL5@>|9gpzt$= zefvhtY$bt?z)fw4H1Sd)=#z}{2`<-Q-h*M-f>7b~D|GN3Ww1(SUT9u8)97~I`ed7f zy$V(-1VS(UG(z=^*4~U51j1pY{v?AhT*TqTsh-N3l*VroV+KRo*M=D}G1&5j-6$+Q z<*QF0EeBl-N)n_8yr0NgE7C@JN5vlIx8dRz)Z+9*H%2E+fPN-^P}3 z*P->$QL5if4xRF^&kJ`e8@|r*e>)072jws&1Pd2tCp#nA>P9g>4Xh_1tB%p<(?G4M zgoibUa!~C!$t91#ABrNKuw7mFcQ%|wuTZJr;B+W;7yX*db6Ax8uvmn98pxxO2V?(& zD-foSo|`}cSpEzFSy)HL3`&?FFV!-Ec*f1@}G;CVeC{b{{uJ&-0#Aj4z!tetdb z&PYM~ttI_mkW~OhKut#poZ6g8=_k~+*yIIh=Dyoi{}ykHKC$<%Y9xvu^sJLp+#2tzl+wgdz*0~$5PXCjMQYF_o6pvRP(osJ8X3oI09-YHmu zWGv4_{@(YDu98^T)<$vjd-&zv=k=-TCZ5OQ*y|>}EEH{s763vXRb_b5nI+W;N;5-#Xl>XXxFxQ5_4v7iq7 zlf$y*EVa3^n-i!>+k!-MtI$kboXwiwN^w$zmfAzNv{7L=B>Jv*agbHSYmyA}pEyGB zS{xArr-U_x({CL0g37YJIY!H<(qmu7o6iF%XX;G`B5TqL(Be>Yo2|znpWA=UJtbU+ zYrt7d09AVu4UQ$GOgzw8nu!)V{zOYeUi(9Rj801nDQ^82u-?0`S5GiI4tv14{D1&A z->*L5He*M9#gLx zi06h**|+tT(KbuY(!*h1H#!-}{wwyWZ|+*oik^}XQG`grADB3IsW>}b9$aXJ+BzJ9 zPUNA1=Q^wNN3$=+RZ8v-?LwuIl7GEfZWv2Aa4>MEgljktO~B$i$P$#ZzN9$KN;%L z_b1M8k339%>+EVc^`NV!=1QnI%W3iD9m-$|qsujJR-F^M>dfJ?#R*em4x&Zo7uZV_ zx))q$WKU5DB%E>FXTHk(>jKdlix+%&4}9s}bPuRMSMg_FhZN4vgNQN7(zQ-*&vbqL*2NKONA$d!jpP<2KVu(y(5K$G=NZVZrc&Idb+R zqFy-*?#NFFlP$-gdV)Ux7f@4GfWpKaT8h4xChT-6L4P8;iln)*DA3&<1n{<2l+w7m ze*A_i^LkjPU2`{}N#!7VApe-4MS%Uue|Wg)zlEOyb;ZEu3+xb|xd4kFHtV@b zg#TPoQlnR0{Hv8J46*Box;q6aBTt+P!BNLntf((Vq%c&jm9$RfDJzoY;*^#+Rm7D=qsI*CHneLG48SUm#MBGfxNqiF1~j zFbZ>fOByPdj(>6HmS*F4UH+Dq>(_oh7)1o;;3z%7(&MlV?mNZM3IFwXjLeaYJi4!K*ivS* z>)Nxd#aaKLBl}f$w;7;5KoNEN5ryACC~1y&q)b_rIvfqw*nx!)(Fdv8L3$;tLF$Wl zn*Wxio<~STNK^U4s|rgLNw%(Hdn&c4K3_VG7v6a>FNchoP2rMbj+2g4^uT0YdRkE5 z9s4V}*5!+GBI^gSg!23KmNepdPb-t zAc){Ou_?BdxF83eVF0T^d(mEojLT$~YCdMymJu?n{`oD1ycU{nihFBV>$34$E z1A*lzwW5oO$N*E{SganYf7r^Ibx^9piRxsf>p@Ozp1-Bd_`+pe62xL=aymxYXGA3i;yhiMc?1DTO{n=W*s!l>#hJ+stkLib1=_`i~Wa1{h#Hv&| z9I-a$UXA(mvd^pXRi`g~Fnk8q{+Gjm{H9t{27A&Q!d5vrSG71g zvL^=*RtV+9)Q|?1EE3Y%e^MU*^^nH|24JzBHQWm+9kwx3=U^UYqKw*a0iX@Frqic1 z^7T+|`4Qd}s9Vc{)=YJ6Q;^!mkq|}V@7biAlmSPPZ0W2&jmnLbC6)(OZ6HG~JP8ya zIE@$2ar;LZa&{LYSXGfO#5YWl89iVE$_!>{1q4TGIaEu#sxQoYAThVx0#%1N-W8T9$%B6fojVj#spohw zVng4HE!~KA9{9Sv91*QydX-07uu`+LD(BaJA=i-4^sY}W-okjqLDRRp)%e{pM)1~V zioJ&k8PJe_kZof5j3G{piDWC$Fm+dSzj9HuwnH&0jfx>HX*d>*Di$}17O!fHYh-FT z6dxPi^YK&Yorzy1ak6E_E=b z{cm6cj~e4)H7F4dlaDsP(XAUoY+4Du_8U3g05TeORk@z`!%MHE!F3+RZxci@=UriS zsx3w_KHIla@5Aapzg#>HTSc$Nn@8YlACy<@9yan_ z@wISgb;L7lw7BhMY7Ruqrm|4QPUIwm>s?)OG&xUZ# zYj=4X8NojVDI~h+w9i;eJLeqbRLiDr1u65$LE}>Oh_2gg=n_a_Cui&(cdul z+(>u781eqZ38lD{Y4Xwgp>4o?zaO0A_&*;{o?_7^29-^I!_A;S&6eZRg&)9Rg)l9W9rEjh3p=9Duc!lQq;Q3i zt7`H8#H^)m&pX_rnujCfuQK?UQH22bvv?bxG7PzWsJKd#$oSovf4-e>NFYAChjk*5XZrlDuDh?Zf^5ztgK;Q!h6!Q@>GD732yeD=(-aGK_u_4b7 zD-TK)o+cGbc0pnIl9DdD|58c#B;HCHQP47`=5{$%Y0_kC?{>mHRAAXsM?xM81W0_G zP60%06r8@cpjRpZV(Rmh*-7g+KME6@^~k7V-F~{VhySaK^JM>4E;BHO1vWg`j4w;=K703n=E3nO1 zR{D3v-o~)xycMu;l)wMBn*M_Amr@2>r`i=8yf*v%E&SL?osd0GDhOK@Wl~l$6T?gT zAl}(pQW$fMT^s@E&Ux;Olr%W~x7@(REK`^7IbKnr$O14d8^t(3U)Az}x3=MvnMW|| zkkJi{9gbSWMN5J!rcl6vmQnticorJ%@=98j#-z{MV$hJnmWR+%)7Eo=GHXNK^f%5< zE%c6-8yJ3!SBnjc{~^H`IVz?wRaxG7B;Rq=WS%+P&^Loj9}zw1e?hU&e=NM167 zLHk*QZ2iSC&Jv7LY-eYQsP0pjzf^D5MlAE~ncp~@*lhbUSFc}Y$160h-4}$H#?NpD z|ML4w>$rf4m@3{r2z{gjc?oe`L?c7uimaNrGvBCRxovqG0a>D|kNr{4#TsmAQKO7G z8TUiub?eS$ch~LrS0W??!Er)~_{0;6ElAIlm1GJAv^c2+*#;{m6J?|$(LWb!^a4>R zx=z)(9;R1U&qUi16;Xh6)^OjJ#4wS)7TiSztW6BGz(mo?u`)My4qI%y3l@RvR~R95 zl5e;f7M$EKJyM1&0&*a<1qE~&sP7p&tYSFNWLglJ`k)lqj_GadmV2E?5-diBxa_xI z=`_S4MPXfrgickD0radX9ZI!gpm7m})`MSgtu-uD%`bmB1z!ydvNQPygpPi82tc6) z{<3Bt$G8>d`g#FxxA7NdP#YOBNXO#bOMn=SrQW@4kmOpgq>?G6@EK1om~HB`Oo^Q; z7AlbqU?Ku?!E_R7*)rMB4vG$axlDJMMrd=IYEgHe!WN_D!NCGiwj)qEnbF|h6XfBc z@Y@Q-D_=m!M+ZpVE(_R-cGB7ZJ!bYc5g zB&7l!kUdc%I!jgZH{sv#8A*3PT#%&nVb#)i#T5k&R-VOKlrm_|rV{ShM}6 zdlUuh?L|Yg2^AV@25Y=~L|7T6#?4+qeOxdmAK}EdO7oAx_Bc}|s2t6vmb?FBG9)@Q ziGR>fg7q@hWQ@D@5Ek=aohc(~xj*Ka@IaGV46@R3how~MZKi^dJSQcFbZO`xH2=3W z?{!v+orObBHp}*4fxD!_z2|AhKQyYBrzX($IxgdA9n0XgGKpeW26A&Zx=_(O_~9}) z5g1JrtC@o8)2mlB3sCQ4R||%&I3J7IH?er;7+Pv~$VGxkBJx-?ApE{I8xE`;OVW0e zhpeP*mIUcxNse9l?+k(#E>+d$SaPLwm$^xSc%Qd{Gnc#y(r4qdf!tp2(7#eBaM478 z{RH*anfsfP&fnC~Mnw%HFxz>mrSGK;z`yT@kaAZFc4F);J?vEM|FGVo4T#=P8~Vof zhN&O!#s4y_$ZspkcuqP>4H5F-HV|&y7!{k(FuNkXWagh8{M)XTFJ;i7GzGf_>~1T+ zl13nwh(pn?+n#7jP#6n1944C^_Q<7-h#o*({j1=ox7-#n?}(e1u7oX6+D)K$8Pd|U z9V?YD#IUZ_pywe_T1=qz_L*F0(G}JRQL8vUaz05X@!zG4^v$S*VZ9n5Y#!WF6U<&9 zft`Bi)a`SV(llT=D%Bh(OjbXW>&50TX$6hb5?;~YD4stfObd$sPsz;j`@3v%2>cCMJ*;0 z7otra%aS?E$-&pOoyXu6}`6Gh;U6|Kg0|+MTPh@!<8lMs>)e&tvNff5`n!$ApU2 zP+MD~t6_2`bUImaA?kAU&}iu7_}XP!N=;>Ls%^X2bk-S1qgI*{t?Hv#&glk~o097eBvCPkO86+YbpU6kTzgS!)Gfk<3Gw#p+1fEZGm0T^Rg4p<6pzs}sCg)* z=_ZWY?!<39taa=s!yB!=Mqx?#x0QeY80gy8(G*(Kq6eLH7Tyo*fL|iUi2;>9Nx=(@ z+!#Oj-vdd$i!_y4(iY|)>&q5C!?)xNW3sF`KHu?m=9SB4($LS8c${#fuOuP%h$0e_ zn}-(WFbOU;tF^W2<0y4LRB(H_DAimR#2H&&uo)q#{4{5AAfCB3(D3_++*oXpbv}qM zxpv*HZBKYEKUQ6WI5GcPcrkDIQl7+Nnn)wK5o;au2jS^Ju8;;EBx_n@2vKEy8kPA9B*iA#MEhvsoYdK9NnTX z6yXJh$ak0%ORxRnCx2GZ9|ztcL(~ecB7rJIvEKAf(n~6)k#GI4K2{R#+z%hV6!Z4B z=)~&S`c*ircN^*x0u@30d8UbJ$p+Q~$GwtpI;mPap!whW&ioQ0uA>7nh#6ikA)ZTyp$vowfyGwKav@?MX}y3=G~dd5vz3v?EY|7|Ei|3J5$IN2C6xV}um zP9ygrIESijX4L1Rw(&huV<8uT*Y%&6HqzXWlmdupmNMkIJGa74hO%XBy@4 zKQ7nzQ{-auD~4eG^JP?U7l#~%d~s;$JzC3_x*B0+sC0AJ>#GoE5Oq? z$r7BiXxkQS;Ts>pdR%UeL9M8(l_V`4(ljg%Cre8R;nlI)wnt|p@hB%BS^Y=y&Qt{TD*yqx0TWZQsLfvOZQ?C#GgXinJ4bwFEtnRa004t3NwTggN~%%9NN0tK^! z<;256s7t{;z!+S3w6h~A48oAc4E!%S(rO9%h!Q9=*Dit`u#3s3P+E={P-1Z|L+88G zPj$%?M=L7}OWR(cN6r#0*x_33WXKI$Cgs!nu)vKVuBqN7(;~b9fE!_YX|*KmPuVwp zwaD(VsTxDuUJuX4p6ZHGho0&_BZr#KRknH{2W2}2;RGxXNJV7lD@T|rj*-XNkX-a2 zVo4FD3|?vpQ<)Y^F52KPTSQ*Dff6dK{_vFWkLSC?q(00l59Bp1P$lcz%h#xI9LDb{ z3-tOZ&;jWJr9}kNc?yD`jW;r6rYRpo)3cX<7i5KMC zY!${W0%ZPNTTAJ4z?i_G4Mzm|eMQ7|knlY9kO_W#;})X>Ly4|w zadQx{ds9=>Hc+MoA`x^8UU;<&x^#;m*MRgK;049NoAZ~A_W4m2O@t9v}V{lb``z0d~J^#0FmdnntEwCS(%jH&rokih@nMTvBRLyyI@YjHd zFlc|X&8Oh|`s2>6nS|>7anMt%7HsyAQ2{}s5UonR<(5{?W7=#s1B%nX=@6alhxDrH z!MW~=^UYr3NMSEn(>LwBVCThRx%Zz22S`UHT8|}DTt>CTY8~M-kne9O4 zCsn*$hgHYecN}V%xjylkbSCeuQ!VJIZP&do#j_K{e+hHRWiIs?aK^OX<##ILTO?Ku0?Q zc>jBy%jyZ?zuv=J#Ob=j#A5QJDZ=} zT<#{s6UQt{2sT&Mu=4n11i4byC|a?#W`^+B#~>6iWH@$BjXggx-kI;}*U0;@FG?~8 zrKJa2NZxu&dYTj5@DogN947unBx~e$5F`XgSw#P})Nn~={ZR}J&8n|FFYPdnd8hN^ zwQ@a^O#Z&v5sy~!HTRD)r2?pxATisBY+7b1%XaRU+iwEvz%XtGdLUQmUx9EJ2ahWM zY0&qpw9;Ndddtc%@p$KWA4?~+Aj|KsLtDfWEn#C+%WDg#15Ws4rim#@VgJ~J$I9IV z`i2tPBM`vl{GU01sVdHP@F4HjSpN1ec0VhY?hrT%d~q=;Jr{iQ)_1mrH4P$HQeI@Ut^A+i;ixRX((u{Z}7$CfPR-!` z^zSL58V3haZp--Z1?k~}e^43^>KLW5W-}m4wUsJ(C+}N3cGfw*0P|;NC`nR~)pcI!y?Z z3rFRmO=0XeL#!LT-!0~+KeX8Db9w2^Ea7ik&I(O>^lnFMCCkSf{Oe2pA68=jHmcJE zY}(R?DHft!SPS$lR};U%T&+tC$kRAi1L=7xFC}iueFCx>JCQsrbJ6!+*n;S;@FDi! zUL$U_EUq8;3|(Fjon@-Jphe`UMT2P#jVOYLgcP6-`sNm4Ot0hEOr~WqO1-%br5L;h z;W1q8JyrdBqls9i9qd_095P;0`K2L2Z?+3is^(6nJK~Wc zZNRyADS@ruA5>$L;nj#Ft}+9AmXSX(z{!~gGk;->q(4gn8_`moy9*u^5eCAKKTzGp z>K`SPK%kf>%k#=XEiug>HToR5%P%SzVdkr^IYLWhDC`8NzvuQ$;{r32->mv`I~x;! zJ&GZsz5l6%^5=J0Tp}5sS^7W^zTIDU*d+H?KGD=zXSFT+?dHzy0#E;S`Sfb`b#*79 zop?`Q-kzAaa2&m)EW9h!CoO#np_gR-_J=@v;|7(UgGhmWS?1}XK?$00=I7ZCRY^nb z5n4hxOYr6;E5bW;)dgSM6Bi`l@#w`^g7!P0q^z}>?q`$h>68oCI`7mw<&~sep17lJ z^LIO&m~tOB@+bV4;SUR<^$#N2T*=0nj5a5Q#3rj|F zcP1O)`1k%gwJNb4Jnt)c^M$v+vjr*cBSe?Qx04YLwP0ZJ7a76Nnt%*Yu)uMCm;D1(x$rvSD#qck_8k*72VPr$e{!6%J*@ zfW-hcU*Mo;T{EG}u9EEcEe=k`R=X~tndso=11sqQ4E2f&=ZtPJX(4~H$^f5e z%~GteVBZxoJ+Ci#weO2!v)~F6KuKEH)U&h~httW(D3;^Qn{mYPie8H3;;7yj{XMzG zu)tYe-|@6}sWu6VpZp9%<;i~5;wB;~JpNTp=qEHi`vjetRd+IH+#3ESNWn05SHAeW(1a`-RMY!X)SYE)Tb$0_aAIu|sT#v6`q|Ev z5~5B&)ms#DXcHgWKdtx+23wIERkzZsj9DTh8m~Sgd-Eg!)*zG~rkH9fFaQA((o2;@ zR(%@HHQ5)&w_;7|oIqPjyP$I9=bj%9v~P zDmEZqA(%zQy4*T@Xw5M@|2NdGVZ(HsTW&)V88!%d+*M)aA0cw~tl2q=nJ6%?=@ zGVqZ%o;X#~Nm11cwoP$Tp01x*!~N)+-oiWFbtn%MCzj_QLd_(8*7T6P8exaL4bw6F z7T&~eCodX?_`^q!-OrpcQZfA~40_zBRoM3s%LWHXoPk3^Nq0~%)djA|f=Ve=r$y&m z5RXIiG98CSbH5ixNPlUygh!FiPbWnEGACf{f8oX|y%t422QWl>En+Vs45FsXt>0yl zwu>&C5Jm#!fJvw?)yEYcwWmn#4)&kgwM<}^5|eo z4^hM=U0_0eFr4h*97iT3eTQSacW0$o3!}etUScl*_{fEjq%10zYy-F(3*nN!w+H%>Da*R$`o4sSsb%gKEh`*;mM*8H)6|s)HySsGBi#3QyDlBE4FDxR=c4Ahj9gZ7 zpS$^uhF@;xk~Mi9{<@i8MHg8K4zjoCZWW&%s(}>h3>rnSE?rgQ2^;?(+Wd2~BrYu-Z~OA5GRXO^o)|r^uHBBs9Ht zqfx{#5o{vmFbENfU5I`P%4fTHDVo;}0oA2j;z2jR)qJt{z!syiu0i(cp2ZlnP!J0S z@Y;r-<1@51*tpl^R~8DziRo39f&kXoo|U$mD2fjGMx=P*Z5PJ+CQ^4lLwIgR@m2ni z!>v%khzr4*wXxK}*gK6L03DKjDfyc#!g01VJ2Rvf)}gL$)mziv|0se>Ul2qx%p3B@ zs4yHAzFkEcL_aq4EQqE`42*`>{vDY$wr1hp# zLVAhKvl(^=MRy^^Sx{K>3`Dn=$28_2sZ+%iUz+w|4`PgA!*B@_na$%;ii$+LIgSxh)Wc|zK;#dty-v2(g zYk!2tnH9EwAcG0m7=Q0!@dIw|{SwjeYnSq=!7CeOeQRV_>@gM*!0gZzu)8P9j7yOH z9*cwB5}K|m)9WY)0H>2pN`~}A6Y_n4PAh8&JI8W~088Zgu$%3*9&kXhl|e~r6zf~t z>*{mHZzeA~*wFoX+>LeTwyLBEeYP5~+9-VZ0o&t~?l}bXNCEK-DBLB8MVrrWlf#MQ zLc#LXuw1xHuRahxJA%baV;N?x$dF#x#G!@iwrj6D9OGKS2JU0vHOr$#W&z+&XGb@q zC_+y+&a{rVWv<5x&{9-K?_gWho_)V_V>&iuLrm4lZOFa*an1_}Hqdc^g&C(vuMfqAZ2DDnSDj5M|J#{(ML_C$!=q?u}Z8Da9hJtio zM3<^$kW1X?GGyq3IdW{RU5%2$E`A2zlNkeWivmLM3X7 z9@9u>BE47Kw_3;0dRifEplXh5#FW%oK=(2$0x@)$ZXAv+_v{0@h;lXXmwTMZ{=Zr2 zWc44t_Bc!DBek6?*@_?c6h?zqFIGCliUudE(Tzu$TYozqj3F|iXWY+ZD+v&2LX*>j zLqpOBP0+&12#MTJ+!H0s<(W`(cJiPUbx zhJ~&zD_>93qSylVl0|4-SN9q}t!&*|VMOgo1scbNH&nFfn475_I6%}@>+5N6h*-$o z3>h%I`w3K6c~G+8zFZqm(u+0Qe@{jIDymb*YL(CDPpbhet}L18uWq5YCPx51^^Nc^ zxTO}AYr*x!IzUT)4SAXdxYEni+dt~$iQ8=_NO6pkrx|dso~B))VtqLr)wIJ<@OIRY zHuaTSQ9aqN=z^#j6AI*VZNknb2tH|vxTKQh)%#gyOWDYX=ueLfERJT*;r+}7iXvPC zL~#Dmr^QqWzCS*&x^Fe8GfXitl>4w0ER>5*wSE-{n6RU7^*DPwyB`W)k>zspIbp|F z5x=Rs?xXi`F4afj8J9Wi1{pi8=jhbDdLMI##3W6YEE+3j~|0$LVD8A z?2mX?0FkDDRSW`|k#s?_Amgj;{^e)&4|hi7(Ub^t{|1WbiQ9@ODl{0qe^X5@i%B68 z=w~|#i1?;<^Z^}B15E{LZOX;07hg_HgBU(+(qTD`D&Y5dLxd}pU?d|J#5ne+!%?ji zfO#j}z9WB-?F&ukrx`Muou~Cm1xeqCLS7#06pZ78R{ zgP?GMk^{L7&-=d*4yxyG!^&7L?2HvLa%bH})j~i}mH+o&00cl0x0+?HSL|G6*&?Ah zpl=g1e3R}V)`3RL{jNyOuo6OuxbrNNZtJ*M&LQsiS8lQyr<<*Amv!}Y{Jw#4?>^!Z zQ3ktpB_H(jA6YSql3|GR)mBLy*D^+kDa{LD@eZ)tjl&+c^n<7>Vw#HH1cAQ$QH&As zEH>AKR4wj^=Av0_-{?hqQ!Ms9l?#-A4rZdmIKFekZdGt($L{3fzoU@Fq=0CdwT)U? zhddI-XY%+Q&2zUiWqQw8iWS#-78;`dhT-0v1c2kTJNgMdJ&xY@j-VpMKHfLg_4=jSri2bc%q`XG=Kl zAgdT_WN11z6KaC|Qc3ghjg#b;+l`jX3?U_b)@H2k;+E z-hGR@G6OCF-B%di1gj@tr8bjBg8Jv-sAwa<%JZM}>iqeSwzbaWfbdB^!*QvmxV`_= z+*xkLwQOM&3mSq1m&V=Q-5r8-aCdhL9^4@~jZ1>NySp_I+#MQ%J6z6N+%fi#dVs20 zRja-^ckYaN)4qJV{yD`&#s{4quo(OIbbCvs`*nw*)?T4=NxNJBY`sz8;nklgM{-?p zi4+4)?A=NX02({&{SzRJE+ysO_!~;w?RZw-4YHx{1}*1yx~{9yw+S?G$k9|rW!L6w zv(Tp0kZJ(CC=x>b|RQr>121eT4Kg&}$2Iw>{nK#s}Yn39X=?8Vg>nN3a(b z6%)y%Lc3o>kDxkKEs&Y|bmTjWtR#kc896%fJb4C38mA=qa`>#P0M06Qm3wN+u~O1x zj9LLUZ8;|IPBza=`$1>FziSXJ)>8=i#QukFU1$7Fzv#2=I(;GGHZSL3$ zn%I2^J9))e1O(nEn8+dC!9fYjcwfB}3aOXQzSLhpE+jD%9sVF%qC2MR%N#5r?OEsN z{gKJ_Lx|8m%%+Otzw~kqTunt)1G)TqPh$XPNXi5=>g$S(&h<4XOsgNPXn&uD5^eS9 z3!txJDGaU8eMU!w>&q%t?5sja4u3u=0ZIF7{w1+G#J#tbLm&BsAg4qcGb~7N|J9u9 z{6=mu1fE^hD0ZeatWxwh^j{*5Qt=wzgg(Ku_)NX(;kMHL_cIV!39}Xn)|nQ-SK56G zdYQ;e6=}oaPO~H8hVZgMCP<>{qL33%CW@5#@z*V~x*z(8T=RYBLW%rli1nk);52co zBx!_p`F@2yS$2mY0ImnV%$Wh}jb%=pfIh8+T7v@G1o?|9K|%obhf_jU2#nJU13T&U9_)q`x8~6MF>~)ZhOrY z$wDPTdPqW7**pGL2w-Vk!Qo5q8JQcP_Y`|qsi z3S0rWjV^f}sO`U5j|{LU)m4sZ@EbhNeNiU`T!lX!LlolUIP zX)h<+P)%M-83qrkyFTib2O@C@q^>Ng%wfF-rmGw88;|r2A-9It?5&hF>UVNUlM;s; znu4qhq;s;>Zlf|p0~;T#JCa}KG^`>x#a>vrEZh?k?p@a#D^DELt?kr-%TZ^@2+$31 z0eZD2+Z%42%zQ8zZld@4_e`kShvi8IcfaLhq3?QP48Up>@kk2P+Uam&{c!&Zo!T#H zNPL|-Ln+ZCcM|JI2dFW}r&rDg?7C}#Kw2V$X4~yLac`?F)7-l+!{uInvEx|{hXFP z2GJp31I(?ZLD`6q>S1?O=5`(AdeP9r#>*LsYWvpnr$IjmF(IqvlycS8E zO5DktV9*i~&gvc9K-`eig}p$g2TS&Rs-Ud0c^Y87W~c^Nx@&SV{;HNZ*4{_~$F)(g zl9Q#JmZK7t99M@|Rz3JQ-B8}tK(&XOOgC)b@i>mD0qk>HW8QlCb$`L>^>drj@E}J+ zot_+N3^6Xt1GpKbT6bVC(Y&Ib44^b{p$=+0oiC(B`U%Aw;IfPo6zCyOTM+=cHJ&AH zd~%WmG&PFlDzn$NSK0-Ow%haD6s;O)!74kNDnToq^&kbU62Oq6E5Y?rF0r+EerE@~ ztk>&4>tGTExEI4MJd{FD2P_T^T6E!Lap1bQ>UeRg8kj+eiD!Q<~ zgvFzVHQ;`(f!3z5=+C4q!0YEGv~JHYF(a!{q)3$h_*Bn^T8V-Z8VReGYbfHvi06ei z>SlXYABjt8qY{%8>&yZM zZ2kp5I9r5~a6xvmisQ^2hJB zLmUvCl{UQDA65QR6ol9Gwo}k9@upKN*zlGU0b{{Y1+D42kXN~n^0DnmveOx{?yK+aY(B&MGZ!j z-9ee?Xlt%FS>>_?VFQEp_owddw}z0#(oY4gsITcnWo+D$vM(;@I}mF}kQ2-?79pLX}F1X7QUKY`74y z-Ii{OtO`aX>9LlRD8q1Q8JTY2LU*faFqaK7qPqH!oI=!J`5ep`v4J>5WG zlmj;9k-x*m`Rk#mDXxsB4aqK1g+m#0c?=wVN+Ct#Uy25Bczl>3Rsx%qpT#Z^IP!%* zqAgef&OdUQjKW;Gm^uh;*(a)KSCeW8FH*z!uha{qg%_*G@TE~(gdUW&!Cny+Pw>wY zD?*-vmJf>Vl*df2)y&}zC7;`G!$tO`+LoS{)IgWCaeito#1_%LH=WV~`gDFU;qEOZ z`4cp|Pi4Qxa!j<5vXasGkGhuohZ(;|BzEK$rRNm3e}-=O1}&#Ht^%ke}+ur^{`}ZpszhM$eSEp`PA7d z)`=O+%Jz`8g(}i^Rc2<82%h~|9nV98YBT%w>(kCa%z4n{?gL)vDY9OcQ*AvuDI;RC zn(6S{lVN+7us8gAKq&{WRA8W)-t%K=b3p2!B-Wq-v8%D;lz_gdb6+;oF}n%ftizG4 zZVG!s%-U|=zT-uQd3(phEgxR29=V7UE*`-~Px?hTcqR6Tk=k?JO4Q`fTh`-+D(YPs zGOJ!%ffUSxy(0W+aJxK5%nbGjXI5n^7h}@2#R4DIs z_AP6pZBqZ=IW;Alr)VdobMkHsYc?;FELgeBFURSgH(nOFX`m%V+rh#YEGgy{chWd= z8u#cY7q%ZZo*B%z4#|-`ADT)pDd7{le-dBY+dc)n>pWVWq+FR^()q*f2-0d1$^TjZ6Ne} zau676mw1aH8egda&z3TMJ=N_4kX@(#QFbD_?*R_qGFDymx3g4TJG~;LnG@`kKoK7+ zo9ETt6xT_OEwSfCWoW6Z_5qE)+|%`3)sD?#cpV15#=Ys^1+tBVBLQ5QQ>aS2M3S1H|hwrp%3AJS2$wk2n4 z30Y#oaw}8jOpUJDjIfJc3aFTH(jh^;;oXADZzez-82zmXBH@8stSSUCJVKLW&L8u^ z>Zqe$Q06y7QT=Zpf-|k{OX7xeux>s3Y7K;&;8VDg19oaAY&SCDj+5psF%f4fiLCbg5rZ15fHDQD6B^XzKlg=VY(c3009C= zsuHD#9!DGnGh~YaKWX#poK6NSd9KI~1-f-$wM4~fpsVK(S zvF;i*6KvumGlBA1NBgPcDLJ^i&ize-_&G2ScC60@^AZ9>EJ1DY@<(HJb=hq0ikPRN z>CokZSQq%uX?}`XzdvZrc&IgC948>91`!JE3B968ttyfO*SNB0LEX))| zIN4=JyNsCQom%iGkSZmR0{b(J*Ow{%=VkqOmMrAbSv_-gkk+!g183Vw8F#bxH-OLX za8mikFGs(wWBP^DXMI|{2ysjg*Ns{68bU9dd0kWO%Qh`9N%z*$*bXhuq;85<58){d zWpXt^z{;DSW@Em;tZSbAQqQupn)@xy_o)S=sCQDg zrkfXiul#!4#uZW&#uz*< z`u{}pZSHByTx7jj6&>CG4p*~C=(H%(qR=3(Fsv_g538hF9OZ;viMXBahsU6U~<>gx^+N{g_ z^6+HItTa7bD;;1&aQ>SwmQ1tN(_il^TaV3s`C83B+$v3{Mal6|-HYG+d|n@1GqXYF ze^<)P_zKMiNqlu56l;1azrU`p_gI8J9HxEtdr|CIS)wjvcL8&h6%;y;3+gflu)s&!tMCRw#{6t&$^N z*ZG)tViYKYHyG-l$Apsyl#@qQ$T0;B7s?~@L|(?UWqhd%gE;u8lf7#hJtP;T zL*9V@B>xehc>*=ZR<`durfA9$J^(#k<+c)i3DV)U#?n$mtv8(Nu|u#gr#+`^Y|YO` z-0xhS^mun9^)H!YO56qaokS1zn!tOf(tOQqiBO2$0sB8ZI&8hdpsY@Um@9j*%crlhebAcmlV!2wor4yOe%eC+YDc zp<^+);Qodj{%6{0Bz)|tK4f_47~dD1(?EYMR^!tO+87A*1Rr zrw$VQaex6he{L!(rhE^UbbyL{X`n(z&J|^apqRzGfGEfH z-T8Ufw(Vf@5B@et_60E*c9xwjt{SebmX7T{!`0{efcdtkc>LrYx|Rj@RC#xh;}P_E zdRg0AVh+)d<@E2m)b-=~VcAM5;G{CT$vE|r8nsEINyY#dMqi1|lx4tkLKv9N&>qKw zkGm^cOET5R;_pPTTIn#6_0)__5#r<;!CHs&@#0t`lUzX$Sq<&8pI`%jgmap2!-CCm(^g<%WS@DnOB zr?D0~n7)LBv4zZ8jGCct$C{i2NyOoE{1*aU$GWk+SN&7XfNND+Hz6+ZgJv(3>k!g5 z2?N80Lv<&1GDLE_tDuy!N;`EGq{H9+2A@qy;q>iBrmQ$L!E>82)^D{fgQ?P2PEx_v zQa&o*NjY(nP-HB7czD9AMV_s0fvqF)*G@bz{nB7ggIya>+tHOlQKLeg66G-j?*w6c zf=)bSi#6Y|$^6KIJ})GFty27@>pw!?s$t6Ptli-B2-Pw{gWdNN!hy)6E*l8|B&BF* zX&I1wD~bydCq#w|jRV88sTxKySLsM;4x89Z2K;2m7ww@$)6HS(ZxFUqQ72QHscmSW zBV&g_SYoS`y_q~V{nY$4#|`ldJW+9ILn@EQ z>PiivbJmYD?vD*norob@5h`2v3k=1fqUmrmI12}JM>1K3GQsXGRZt)xNro@WCS7K? zY$;bMB-12MF1-j02zgzcF1@1USYwAYcsXK0EYa==bn z86vE-ROm+$tE4pU+*j|n<+=J5&#^Z3_gLm~bxeYBCrj4MQt#>nZ&M62(aG{HRqF#* zF>ixX0ywp#zEHGr!V&H5M94JPRa^vf=Gn-FSWDBx`)X$Tk|u6=a9hah_y3Lt=&UP$ z4q$SITde9hJ?uZlsp!3V^u64XMj>5p#e_aKk2jupwOe3Xy{h3q#R2b&%V;q}* z{EZArAtz<(?Nsr?F33Khoy;-Taedht;^onj3^&5!+=4%@yb-i#m2d)P0@NDQz(Y(I zwSGZ;@CkBCXs2kSWZrMlBKyqcI0=u`WH1zW-38q^h(eJx>9~Z{k_^unGi1b~Dz{R( z)g7mAXNRdjzGxFlhA*($Z6%PY(3TzY|4!!gUP9%-?p=QPCJ}d$55106eU@G&>Bpsv zYyYo9qJ<)oL&$qotSLa?(!vw_k#Bd|nJ%~J%9GY?%*AX+QDp<#$-$3e%DkDwt;oKU zYJNo@>hm5MmZtFfKN}U5?s2?Xg4_$dpa;Z?$D<}ko3?V9?Vtckf5k78{4hy3Oee+# zt0N&}AncD8mx5PQk&offQ=Ij@x%rfaJmx-k(e_bF{z2j$!I^&OpLU3u8tl2h9gP$G6qZ*{)TwgHrV{j-H8446E_l-G;x@SB^?X;mOku-ISR%VhXmu znW!>U+@6i=g7(znZo+TU;vW6dfjKm=gu`qYUc0fYnQSfo1UbXGJNO<_X>xxwQJn%- z)v3SeJTHSB+iK5_8x`2(U6v}Py^FEBv~aKDYw=W+n#RZIrp~)ul4$Z<*~hCcpo|pQ`;j&RN$1lfupQ1^YSFOv07s%zFeVikk{(3QSJ?o=SJ+US8H6_ zOOT@sRY@@Xk$uV`dmQ3!+E;hHP?K?B=Uh-$0~*TU^jyhE`Twa8YLv4~;i?>Q7F+@i8K z8zXZhLf9E>Az)clFcV4d%bKMCHUPW5W&*2j+O8@~m~>tynGn-gyLkeh6c|59WPf$u z9~t_o=w8DNbd~{k%fz`Ba{faD7Df8}2dO>xv+V2ibS@&q`qalC?J`Ko0yR1q?JYg1 zIKc5&ov9>=O0|<2Bn*UB94Ui|Wif6qw=0{#>PM;8MkziD3OQBg!@^+-$X1~3S}Kk} z<1uEbj+w{YH{)|-!lVQ9edQU0eq;t1H79OQo1xv|J z+ahoZHPgLUimO(@OL(wOZpt0$Q;}})b9lq~w6Q?a_$8EkreOAijICFDikx(@O42IN ziU+@mxQ!dA>UFEpHSFu40@WJbit=B!?k0UD4?*2hvum1GrK7Hu*|o=7G=Yn|-1$K( zo#;A^@RjG`ILDacWQQ-)=}vF$Yj_O^(cPY+flvE?tJ+Tg9$^xP(*fe$BYFUGWKd_^ z#tOwKhp%~m)k38K8lsl%=^8l2hU5FDJ|_KgVGu%1wF4;ieLp>P_ZowC>vh z?PrX}BWoWM4i+^2$qCqw0m8bX_ttixcEbav@Hw}Vr~>oyNbNORAE1b5E1b1>4>?yl z=+dQiJz*f0OMju=x=ELSTrZK53Wje7P}t6rw~4sHm)kDW?6>prpQ*PKHu9GWv$yhdmfhTO!D|bZMi8Huo-EE<-z)QT)f|B*H-e9w^ z?!DPhuO4r>bB9EDt<=TmmcMuTqV=uF0d!GUHxi^H?E@bAUbU>c{eW6$<+PHw7!k;1 zCBtLg)`T7Vmj|{DY1+APFS-VX*f*k)yJs{|w04!onuP*GZa~4&cK6pZoA9i7x$6*> zq2-&IbHzG!%;_9vS_rzgpKEL(hS8C{XW`rq&u$Nss9fgqj~7(h88S>pHu_rVvG9ml zPZ^ZPmR4WZ2dcRrbkPnN);n z4vpI`bjWF9n1UpEWFMUZ`KKsL0U9L9Yn4#R>__!b#!cF+`f64=Wb~m*a$Qh`f97HY zYi8~3>x((i=PhYr;=7j`Ijc!uN@q+-&+@~%Uf`jhl^PEFH`*7A5ZYbSB(hg$NSS~k z(@EVB{Tf>{;jYusoMESC&LzQ}PchTdA8an5O~Xe*lXm1+9(=s;zdyP-QeV65McZz} z%zl)43Fg`a{lhKWTb{3W-fc!>B-)8j=?1^Qz5gU(W>8l~c>+_QC+*u6*)J<&l8Tg4 ziEgSR(LC;DTd(w+1;pe0m1i0Nkk;8%&dvErm0}NhM)vKNDl=orh>U$7WsXe1Se){H zq{%@@Rv50u3u;2#x+hzR>pbI~h~q=+PW|&>tkn>!HnXW^I=h&g;<5>AyU}j0E0#tn zw{O}cJiOl4E+blwS4zL*q(mETvU2!+MiNcK2fJxdHG*~oqqc_~DTwQCD}O1B$p|Pb z?u!PyN#eWrPoD2=^{TqONSeXpB*4+%*wy^v%7B4^J|&1(vIbm5A=iM753z_;#Jg*C7I3J`^}1;CvFAl;deJt>vQ(wfnUWaBD{E|s+fiw6q1&!!~Pl3+Vm>`j$OuM8iY>bZA==S2`_d6}919Nf1$ zMCV@o4=w*8qGEbYjS0|b*z0CLSoQ{~CV*xuHh{CO$HgOx9ywM{a4vl08CH?%QT3Y; zNyXFA9oIkC8^S#z0-*Vay}s!c%tm5{^;4!eVtxtRF9FOYCu_d!cef^ZCI#Y>~)+R_l+WS{!TYngL1%hH*8JmtBG#x=-Q65tzmS83Cz|ueib6Ec z6DC6)-$8j;&Siikq}#Zuw{`!ojQi+|y?9uaUE9KRF(Bpo(5vC}8u{Ob(1(LR5DFRw l4iTMH^#5|Op|bU*P}el9zhOe><5xCNa#G5YRpLg${{x&i-iZJJ literal 0 HcmV?d00001 diff --git a/packages/devtron-fe-common-lib/src/Assets/Img/ic-loading-failure.png b/packages/devtron-fe-common-lib/src/Assets/Img/ic-loading-failure.png new file mode 100644 index 0000000000000000000000000000000000000000..c10fb40260a09b504cbfc1e7ca0697d80635c249 GIT binary patch literal 84391 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 literal 0 HcmV?d00001 diff --git a/packages/devtron-fe-common-lib/src/Assets/Img/ic-not-authorized.svg b/packages/devtron-fe-common-lib/src/Assets/Img/ic-not-authorized.svg new file mode 100644 index 0000000000..19e23c9115 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Img/ic-not-authorized.svg @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Img/ic-not-found.svg b/packages/devtron-fe-common-lib/src/Assets/Img/ic-not-found.svg new file mode 100644 index 0000000000..8b65623aed --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Img/ic-not-found.svg @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Img/ic-page-not-found.svg b/packages/devtron-fe-common-lib/src/Assets/Img/ic-page-not-found.svg new file mode 100644 index 0000000000..fb6b07245c --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Assets/Img/ic-page-not-found.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/devtron-fe-common-lib/src/Assets/Img/lifebuoy.png b/packages/devtron-fe-common-lib/src/Assets/Img/lifebuoy.png new file mode 100644 index 0000000000000000000000000000000000000000..1a71e76f62dd6c55f55b78e1d2870dd1749c5b92 GIT binary patch literal 4564 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

<~OycbD8qUh&75 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 T&Jrb&v%#LK>8h5gybApvn { + if (tooltipContent) { + return ( +

+

Click to add

+ + {tooltipContent} +
+ ) + } + + return
Click to add here
+} + +export default function AddCDButton({ + position, + addCDButtons, + endNode, + startNode, + handleAddCD, + tooltipContent, +}: Readonly) { + const referenceNode = position === AddCDPositions.RIGHT ? endNode : startNode + const handleAddCDClick = () => { + handleAddCD(position) + } + + if (addCDButtons?.includes(position)) { + return ( + } + className="default-tt" + arrow={false} + > + + + + + + ) + } + + return null +} diff --git a/packages/devtron-fe-common-lib/src/Common/AddCDButton/index.ts b/packages/devtron-fe-common-lib/src/Common/AddCDButton/index.ts new file mode 100644 index 0000000000..b0199ebc14 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Common/AddCDButton/index.ts @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2024. Devtron Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export { default as AddCDButton } from './AddCDButton' +export { handleAddCD } from './utils' diff --git a/packages/devtron-fe-common-lib/src/Common/AddCDButton/types.ts b/packages/devtron-fe-common-lib/src/Common/AddCDButton/types.ts new file mode 100644 index 0000000000..708f2c5da5 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Common/AddCDButton/types.ts @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2024. Devtron Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { AddCDPositions, AddPipelineType, EdgeEndNodeType, EdgeNodeType, Point } from '../Types' + +export interface AddCDButtonProps { + position: AddCDPositions + addCDButtons: AddCDPositions[] + endNode: Point & EdgeEndNodeType + startNode: Point & EdgeNodeType + handleAddCD: (position: AddCDPositions) => void + tooltipContent?: string +} + +export interface HandleAddCD { + position: AddCDPositions + handleCDSelect: ( + workflowId: number | string, + ciPipelineId: number | string, + parentPipelineType: string, + parentPipelineId: number | string, + isWebhookCD?: boolean, + childPipelineId?: number | string, + addType?: AddPipelineType, + ) => void + startNode: EdgeNodeType + endNode: EdgeEndNodeType + workflowId: number | string + ciPipelineId: number | string + isWebhookCD: boolean + isParallelEdge: boolean +} + +export interface GetPipelineType { + startNode: EdgeNodeType +} + +export interface TooltipContentProps { + tooltipContent?: string +} diff --git a/packages/devtron-fe-common-lib/src/Common/AddCDButton/utils.tsx b/packages/devtron-fe-common-lib/src/Common/AddCDButton/utils.tsx new file mode 100644 index 0000000000..800029ab84 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Common/AddCDButton/utils.tsx @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2024. Devtron Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { AddCDPositions, AddPipelineType, PipelineType, WorkflowNodeType } from '../Types' +import { HandleAddCD, GetPipelineType } from './types' + +const getPipelineType = ({ startNode }: GetPipelineType) => { + if (startNode.type === WorkflowNodeType.WEBHOOK) { + return PipelineType.WEBHOOK + } + + if (startNode.type === WorkflowNodeType.CI) { + return PipelineType.CI_PIPELINE + } + + return PipelineType.CD_PIPELINE +} + +export const handleAddCD = ({ + position, + handleCDSelect, + startNode, + endNode, + workflowId, + ciPipelineId, + isWebhookCD, + isParallelEdge, +}: HandleAddCD) => { + if (!handleCDSelect) { + return + } + const pipelineType = getPipelineType({ startNode }) + const addPipelineType = + isParallelEdge && position === AddCDPositions.RIGHT ? AddPipelineType.PARALLEL : AddPipelineType.SEQUENTIAL + const endNodeId = !isParallelEdge && position === AddCDPositions.RIGHT ? endNode.id : null + + handleCDSelect(workflowId, ciPipelineId, pipelineType, startNode.id, isWebhookCD, endNodeId, addPipelineType) +} diff --git a/packages/devtron-fe-common-lib/src/Common/Api.ts b/packages/devtron-fe-common-lib/src/Common/Api.ts new file mode 100644 index 0000000000..a657d208da --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Common/Api.ts @@ -0,0 +1,267 @@ +/* + * Copyright (c) 2024. Devtron Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { MutableRefObject } from 'react' +import { ServerErrors } from './ServerError' +import { FALLBACK_REQUEST_TIMEOUT, Host, URLS } from './Constants' +import { ResponseType, APIOptions } from './Types' + +const responseMessages = { + 100: 'Continue', + 101: 'Switching Protocols', + 102: 'Processing(WebDAV)', + 200: 'OK', + 201: 'Created', + 202: 'Accepted', + 203: 'Non - Authoritative Information', + 204: 'No Content', + 205: 'Reset Content', + 206: 'Partial Content', + 207: 'Multi - Status(WebDAV)', + 208: 'Already Reported(WebDAV)', + 226: 'IM Used', + 300: 'Multiple Choices', + 301: 'Moved Permanently', + 302: 'Found', + 303: 'See Other', + 304: 'Not Modified', + 305: 'Use Proxy', + 307: 'Temporary Redirect', + 308: 'Permanent Redirect(experimental)', + 400: 'Bad Request', + 401: 'Unauthorized', + 402: 'Payment Required', + 403: 'Forbidden', + 404: 'Not Found', + 405: 'Method Not Allowed', + 406: 'Not Acceptable', + 407: 'Proxy Authentication Required', + 408: 'Request Timeout', + 409: 'Conflict', + 410: 'Gone', + 411: 'Length Required', + 412: 'Precondition Failed', + 413: 'Request Entity Too Large', + 414: 'Request - URI Too Long', + 415: 'Unsupported Media Type', + 416: 'Requested Range Not Satisfiable', + 417: 'Expectation Failed', + 418: "I'm a teapot", + 420: 'Enhance Your Calm(Twitter)', + 422: 'Unprocessable Entity(WebDAV)', + 423: 'Locked(WebDAV)', + 424: 'Failed Dependency(WebDAV)', + 425: 'Reserved for WebDAV', + 426: 'Upgrade Required', + 428: 'Precondition Required', + 429: 'Too Many Requests', + 431: 'Request Header Fields Too Large', + 444: 'No Response(Nginx)', + 449: 'Retry With(Microsoft)', + 450: 'Blocked by Windows Parental Controls(Microsoft)', + 451: 'Unavailable For Legal Reasons', + 499: 'Client Closed Request(Nginx)', + 500: 'Internal Server Error', + 501: 'Not Implemented', + 502: 'Bad Gateway', + 503: 'Service Unavailable', + 504: 'Gateway Timeout', + 505: 'HTTP Version Not Supported', + 506: 'Variant Also Negotiates(Experimental)', + 507: 'Insufficient Storage(WebDAV)', + 508: 'Loop Detected(WebDAV)', + 509: 'Bandwidth Limit Exceeded(Apache)', + 510: 'Not Extended', + 511: 'Network Authentication Required', + 598: 'Network read timeout error', + 599: 'Network connect timeout error', +} + +function handleLogout() { + const continueParam = `${window.location.pathname.replace(window.__BASE_URL__, '')}${window.location.search}` + window.location.href = `${window.location.origin}${window.__BASE_URL__}${URLS.LOGIN_SSO}?continue=${continueParam}` +} + +async function handleServerError(contentType, response) { + // Test for HTTP Status Code + const code: number = response.status + let status: string = response.statusText || responseMessages[code] + const serverError = new ServerErrors({ code, errors: [] }) + if (contentType !== 'application/json') { + // used for better debugging, + status = `${responseMessages[code]}. Please try again.` + } else { + const responseBody = await response.json() + if (responseBody.errors) { + serverError.errors = responseBody.errors + } + } + serverError.errors = + serverError.errors.length > 0 ? serverError.errors : [{ code, internalMessage: status, userMessage: status }] + throw serverError +} + +async function fetchAPI( + url: string, + type: string, + data: K, + signal: AbortSignal, + preventAutoLogout = false, + isMultipartRequest?: boolean, +): Promise { + const options = { + method: type, + signal, + body: data ? JSON.stringify(data) : undefined, + } + // eslint-disable-next-line dot-notation + options['credentials'] = 'include' as RequestCredentials + return fetch( + `${Host}/${url}`, + !isMultipartRequest + ? options + : ({ + method: type, + body: data, + } as RequestInit), + ).then( + async (response) => { + const contentType = response.headers.get('Content-Type') + if (response.status === 401) { + if (preventAutoLogout) { + throw new ServerErrors({ + code: 401, + errors: [ + { code: 401, internalMessage: 'Please login again', userMessage: 'Please login again' }, + ], + }) + } else { + handleLogout() + return { code: 401, status: 'Unauthorized', result: [] } + } + } else if (response.status >= 300 && response.status <= 599) { + return await handleServerError(contentType, response) + } else { + if (contentType === 'application/json') { + return response.json().then((responseBody) => { + if (responseBody.code >= 300 && responseBody.code <= 599) { + // Test Code in Response Body, despite successful HTTP Response Code + throw new ServerErrors({ code: responseBody.code, errors: responseBody.errors }) + } else { + // Successfull Response. Expected Response Type {code, result, status} + return responseBody + } + }) + } + if (contentType === 'octet-stream' || contentType === 'application/octet-stream') { + // used in getArtifact() API only + return response + } + } + }, + (error) => { + // Network call fails. Handle Failed to Fetch + const err = { + code: 0, + userMessage: error.message, + internalMessage: error.message, + moreInfo: error.message, + } + throw new ServerErrors({ code: 0, errors: [err] }) + }, + ) +} + +function fetchInTime( + url: string, + type: string, + data: T, + options?: APIOptions, + isMultipartRequest?: boolean, +): Promise { + const controller = new AbortController() + const { signal } = controller + const timeoutPromise: Promise = new Promise((resolve, reject) => { + const requestTimeout = (window as any)?._env_?.GLOBAL_API_TIMEOUT || FALLBACK_REQUEST_TIMEOUT + const timeout = options?.timeout ? options.timeout : requestTimeout + + setTimeout(() => { + controller.abort() + reject({ + code: 408, + errors: [{ code: 408, internalMessage: 'Request cancelled', userMessage: 'Request Cancelled' }], + }) + }, timeout) + }) + return Promise.race([ + fetchAPI(url, type, data, options?.signal || signal, options?.preventAutoLogout || false, isMultipartRequest), + timeoutPromise, + ]).catch((err) => { + if (err instanceof ServerErrors) { + throw err + } else { + throw new ServerErrors({ + code: 408, + errors: [ + { + code: 408, + internalMessage: 'That took longer than expected.', + userMessage: 'That took longer than expected.', + }, + ], + }) + } + }) +} + +export const post = ( + url: string, + data: K, + options?: APIOptions, + isMultipartRequest?: boolean, +): Promise> => fetchInTime(url, 'POST', data, options, isMultipartRequest) + +export const put = (url: string, data: K, options?: APIOptions): Promise> => + fetchInTime(url, 'PUT', data, options) + +export const patch = (url: string, data: K, options?: APIOptions): Promise> => + fetchInTime(url, 'PATCH', data, options) + +export const get = (url: string, options?: APIOptions): Promise> => + fetchInTime(url, 'GET', null, options) + +export const trash = (url: string, data?: K, options?: APIOptions): Promise> => + fetchInTime(url, 'DELETE', data, options) + +/** + * Aborts the previous request before triggering next request + */ +export const abortPreviousRequests = ( + callback: () => Promise, + abortControllerRef: MutableRefObject, +): Promise => { + abortControllerRef.current.abort() + // eslint-disable-next-line no-param-reassign + abortControllerRef.current = new AbortController() + return callback() +} + +/** + * Returns true if the error is due to a aborted request + */ +export const getIsRequestAborted = (error) => + // The 0 code is common for aborted and blocked requests + error && error.code === 0 && error.message.search('abort|aborted') diff --git a/packages/devtron-fe-common-lib/src/Common/AppStatus/AppStatus.tsx b/packages/devtron-fe-common-lib/src/Common/AppStatus/AppStatus.tsx new file mode 100644 index 0000000000..b9654779fb --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Common/AppStatus/AppStatus.tsx @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2024. Devtron Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import Tippy from '@tippyjs/react' +import { ReactComponent as ICErrorCross } from '@Icons/ic-error-cross.svg' +import { ReactComponent as InfoIcon } from '../../Assets/Icon/ic-info-outlined.svg' +import { StatusConstants, YET_TO_RUN } from './constants' +import { AppStatusType } from './types' +import { triggerStatus } from './utils' + +export default function AppStatus({ + appStatus, + isDeploymentStatus = false, + isJobView = false, + isVirtualEnv, + hideStatusMessage = false, +}: AppStatusType) { + let status = appStatus + if (isDeploymentStatus) { + status = triggerStatus(appStatus) + } + const appStatusLowerCase = status?.toLowerCase() + const isNotDeployed = appStatusLowerCase === StatusConstants.NOT_DEPLOYED.noSpaceLower + const isNotReady = appStatus === StatusConstants.NOT_READY.normalCase + const statusMessage = status || (isVirtualEnv ? StatusConstants.NOT_AVILABLE.normalCase : '-') + const notDeployed = isJobView ? YET_TO_RUN : StatusConstants.NOT_DEPLOYED.normalCase + const textContent = isNotDeployed ? notDeployed : statusMessage + + const getIconClass = () => { + if (isNotDeployed) { + return StatusConstants.NOT_DEPLOYED.lowerCase + } + if (isNotReady) { + return StatusConstants.NOT_READY.lowerCase + } + return appStatusLowerCase + } + + const iconClass = getIconClass() + + const renderIcon = () => { + if (iconClass) { + return iconClass === 'failed' || iconClass === 'error' ? ( + + ) : ( + + ) + } + if (isVirtualEnv) { + return ( + + ) + } + return ( + +
+ +
+
+ ) + } + + return hideStatusMessage ? ( + iconClass || isVirtualEnv ? ( + +
{renderIcon()}
+
+ ) : ( + renderIcon() + ) + ) : ( +
+
{renderIcon()}
+

+ {textContent} +

+
+ ) +} diff --git a/packages/devtron-fe-common-lib/src/Common/AppStatus/constants.ts b/packages/devtron-fe-common-lib/src/Common/AppStatus/constants.ts new file mode 100644 index 0000000000..8760292bc2 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Common/AppStatus/constants.ts @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2024. Devtron Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export const StatusConstants = { + NOT_DEPLOYED: { + noSpaceLower: 'notdeployed', + normalCase: 'Not deployed', + lowerCase: 'not-deployed', + }, + NOT_READY: { + noSpaceLower: 'notready', + normalCase: 'Not Ready', + lowerCase: 'not-ready', + }, + APP_STATUS: { + noSpaceLower: 'appStatus', + normalText: 'App status', + }, + PROJECT: { + pluralLower: 'projects', + lowerCase: 'project', + }, + CLUSTER: { + pluralLower: 'clusters', + lowerCase: 'cluster', + }, + NAMESPACE: { + pluralLower: 'namespaces', + lowerCase: 'namespace', + }, + ENVIRONMENT: { + pluralLower: 'environments', + lowerCase: 'environment', + }, + NOT_AVILABLE: { + normalCase: 'Not available', + }, +} + +export const YET_TO_RUN = 'Yet to run' diff --git a/packages/devtron-fe-common-lib/src/Common/AppStatus/index.ts b/packages/devtron-fe-common-lib/src/Common/AppStatus/index.ts new file mode 100644 index 0000000000..80874e0f57 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Common/AppStatus/index.ts @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2024. Devtron Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export { default as AppStatus } from './AppStatus' +export * from './utils' diff --git a/packages/devtron-fe-common-lib/src/Common/AppStatus/types.ts b/packages/devtron-fe-common-lib/src/Common/AppStatus/types.ts new file mode 100644 index 0000000000..d2d050be86 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Common/AppStatus/types.ts @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2024. Devtron Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export interface AppStatusType { + appStatus: string + isDeploymentStatus?: boolean + isJobView?: boolean + isVirtualEnv?: boolean + /** + * Hide the status message if true and show status message in tooltip + * + * @default false + */ + hideStatusMessage?: boolean +} diff --git a/packages/devtron-fe-common-lib/src/Common/AppStatus/utils.ts b/packages/devtron-fe-common-lib/src/Common/AppStatus/utils.ts new file mode 100644 index 0000000000..1afe10c6bb --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Common/AppStatus/utils.ts @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2024. Devtron Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { TIMELINE_STATUS } from '../../Shared/constants' + +export const triggerStatus = (triggerDetailStatus: string): string => { + const triggerStatus = triggerDetailStatus?.toUpperCase() + if (triggerStatus === TIMELINE_STATUS.ABORTED || triggerStatus === TIMELINE_STATUS.DEGRADED) { + return 'Failed' + } + if (triggerStatus === TIMELINE_STATUS.HEALTHY) { + return 'Succeeded' + } + if (triggerStatus === TIMELINE_STATUS.INPROGRESS) { + return 'Inprogress' + } + return triggerDetailStatus +} diff --git a/packages/devtron-fe-common-lib/src/Common/BreadCrumb/BreadCrumb.tsx b/packages/devtron-fe-common-lib/src/Common/BreadCrumb/BreadCrumb.tsx new file mode 100644 index 0000000000..38d9bc5c5e --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Common/BreadCrumb/BreadCrumb.tsx @@ -0,0 +1,124 @@ +/* + * Copyright (c) 2024. Devtron Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React, { useMemo, useEffect } from 'react' +import { Link, useRouteMatch, useParams } from 'react-router-dom' +import { useBreadcrumbContext } from './BreadcrumbStore' +import { ConditionalWrap } from '../Helper' +import { Breadcrumb, Breadcrumbs, UseBreadcrumbOptionalProps, UseBreadcrumbState } from './Types' + +export const BreadcrumbContext = React.createContext(null) + +export function useBreadcrumb(props?: UseBreadcrumbOptionalProps, deps?: any[]): UseBreadcrumbState { + const sep = props?.sep || '/' + deps = deps || [] + const { url, path } = useRouteMatch() + const params = useParams() + const { state, setState } = useBreadcrumbContext() + + useEffect(() => { + if (!props || !props.alias) return + setState((state) => ({ ...state, alias: { ...state.alias, ...props.alias } })) + return () => resetCrumb(Object.keys(props.alias)) + }, deps) + + function setCrumb(props) { + setState((state) => ({ ...state, alias: { ...state.alias, ...props } })) + } + + function resetCrumb(props: string[]) { + const tempAlias = props.reduce((agg, curr, idx) => { + delete agg[curr] + return agg + }, state.alias) + setState((state) => ({ ...state, alias: tempAlias })) + } + + const levels: Breadcrumb[] = useMemo(() => { + const paths = path.split('/').filter(Boolean) + const urls = url.split('/').filter(Boolean) + return paths.map((path, idx) => { + const crumb: Breadcrumb = { to: urls[idx], name: path } + if (path.startsWith(':') && params[path.replace(':', '')]) { + crumb.className = 'param' + } + return crumb + }) + }, [path, url]) + const { res: breadcrumbs } = useMemo( + () => + levels.reduce( + (agg, curr, idx) => { + const { res, prefix } = agg + const { to, name } = curr + res.push({ + to: + !state.alias[name]?.component || (state.alias[name]?.component && state.alias[name]?.linked) + ? `${prefix}${to}` + : null, + name: + typeof state.alias[name] === 'object' + ? state.alias[name]?.component + ? state.alias[name].component + : null + : state.alias[name] || name, + className: curr.className || '', + }) + return { res, prefix: `${prefix}${curr.to}${sep}` } + }, + { res: [], prefix: '/' }, + ), + [levels, state], + ) + + return { breadcrumbs, setCrumb, resetCrumb } +} + +export const BreadCrumb: React.FC = ({ + breadcrumbs, + sep = '/', + className = 'dc__devtron-breadcrumb__item', +}) => { + const { url } = useRouteMatch() + const filteredCrumbs = breadcrumbs.filter((crumb) => !!crumb.name) + return ( + <> + {filteredCrumbs.map((breadcrumb, idx) => ( + + ( + + {children} + + )} + > + {breadcrumb.name} + + + {idx + 1 !== filteredCrumbs.length && breadcrumb.name && ( + {sep} + )} + + ))} + + ) +} diff --git a/packages/devtron-fe-common-lib/src/Common/BreadCrumb/BreadcrumbStore.tsx b/packages/devtron-fe-common-lib/src/Common/BreadCrumb/BreadcrumbStore.tsx new file mode 100644 index 0000000000..a0384df1b2 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Common/BreadCrumb/BreadcrumbStore.tsx @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2024. Devtron Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React, { createContext, useState } from 'react' +import { BreadcrumbTextProps } from './Types' + +const initialState = { + alias: {}, +} + +export const BreadcrumbText = ({ heading, isActive }: BreadcrumbTextProps) => ( +

{heading}

+) + +const Store = ({ children }) => { + const [state, setState] = useState(initialState) + return {children} +} + +export const BreadcrumbContext = createContext({ + state: { alias: {} }, + setState: null, +}) + +export function useBreadcrumbContext() { + const context = React.useContext(BreadcrumbContext) + if (!context) { + throw new Error(`breadcrumb components cannot be used outside Breadcrumb context`) + } + return context +} + +export default Store diff --git a/packages/devtron-fe-common-lib/src/Common/BreadCrumb/Types.ts b/packages/devtron-fe-common-lib/src/Common/BreadCrumb/Types.ts new file mode 100644 index 0000000000..c447b989c6 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Common/BreadCrumb/Types.ts @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2024. Devtron Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export interface Breadcrumb { + to: string + name: string + className?: string +} + +export interface UseBreadcrumbState { + breadcrumbs: Breadcrumb[] + setCrumb: (props: { [key: string]: any }) => void + resetCrumb: (props: string[]) => void +} + +export interface AdvancedAlias { + component: any + linked: boolean +} + +export interface UseBreadcrumbProps { + sep?: string + alias?: { [key: string]: AdvancedAlias | any } +} + +export interface Breadcrumbs { + breadcrumbs: Breadcrumb[] + sep?: string + className?: string +} + +export type UseBreadcrumbOptionalProps = UseBreadcrumbProps | null + +export interface BreadcrumbTextProps { + heading: string + isActive?: boolean +} diff --git a/packages/devtron-fe-common-lib/src/Common/CIPipeline.Types.ts b/packages/devtron-fe-common-lib/src/Common/CIPipeline.Types.ts new file mode 100644 index 0000000000..86418dfdee --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Common/CIPipeline.Types.ts @@ -0,0 +1,285 @@ +/* + * Copyright (c) 2024. Devtron Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export interface MaterialType { + name: string + type: string + value: string + gitMaterialId: number + id: number + isSelected: boolean + gitHostId: number + gitProviderId: number + regex?: string + isRegex: boolean +} + +export interface Githost { + id: number + name: string + active: boolean + webhookSecret: string + webhookUrl: string +} + +export interface WebhookEvent { + id: number + gitHostId: number + name: string + isActive: boolean + selectors: WebhookEventSelectors[] +} + +interface WebhookEventSelectors { + id: number + eventId: number + name: string + selector: string + toShowInCiFilter: boolean + fixValue: string + toShow: boolean + possibleValues: string + isActive: boolean +} + +export interface CiPipelineSourceTypeOption { + label: string + value: string + isDisabled: boolean + isSelected: boolean + isWebhook: boolean +} + +export enum RefVariableType { + GLOBAL = 'GLOBAL', + FROM_PREVIOUS_STEP = 'FROM_PREVIOUS_STEP', + NEW = 'NEW', +} + +export enum PluginType { + INLINE = 'INLINE', + PLUGIN_REF = 'REF_PLUGIN', +} + +export enum ScriptType { + SHELL = 'SHELL', + DOCKERFILE = 'DOCKERFILE', + CONTAINERIMAGE = 'CONTAINER_IMAGE', +} + +export enum MountPath { + TRUE = 'Yes', + FALSE = 'No', +} + +export enum ConditionType { + SKIP = 'SKIP', + TRIGGER = 'TRIGGER', + PASS = 'PASS', + FAIL = 'FAIL', +} + +export enum RefVariableStageType { + PRE_CI = 'PRE_CI', + POST_CI = 'POST_CI', +} + +export interface VariableType { + id: number + name: string + value: string + format: string + description: string + defaultValue: string + allowEmptyValue: boolean + variableType: RefVariableType + refVariableStepIndex: number + refVariableName: string + refVariableStage?: RefVariableStageType + variableStepIndexInPlugin?: number +} + +interface CommandArgsMap { + command: string + args: string[] +} + +export interface PortMapType { + portOnLocal: number + portOnContainer: number +} +interface ConditionDetails { + id: number + conditionOnVariable: string + conditionOperator: string + conditionType: ConditionType + conditionalValue: string +} + +export interface InlineStepDetailType { + scriptType: ScriptType + isMountCustomScript?: boolean + script?: string + dockerFileExists?: boolean + mountPath?: string + mountCodeToContainer?: boolean + mountDirectoryFromHost?: boolean + containerImagePath?: string + imagePullSecret?: string + commandArgsMap?: CommandArgsMap[] + portMap?: PortMapType[] + mountPathMap?: { + filePathOnDisk: string + filePathOnContainer: string + }[] + inputVariables?: VariableType[] + outputVariables?: VariableType[] + conditionDetails: ConditionDetails[] + storeScriptAt?: string + mountCodeToContainerPath?: string +} + +interface PluginRefStepDetailType { + id: number + pluginId: number + inputVariables?: VariableType[] + outputVariables?: VariableType[] + conditionDetails?: ConditionDetails[] +} + +export interface StepType { + id: number + index: number + name: string + description: string + stepType: PluginType + outputDirectoryPath: string[] + inlineStepDetail?: InlineStepDetailType + pluginRefStepDetail?: PluginRefStepDetailType + triggerIfParentStageFail: boolean + isMandatory?: boolean +} + +export interface BuildStageType { + id: number + steps: StepType[] +} + +export enum CIBuildType { + SELF_DOCKERFILE_BUILD_TYPE = 'self-dockerfile-build', + MANAGED_DOCKERFILE_BUILD_TYPE = 'managed-dockerfile-build', + BUILDPACK_BUILD_TYPE = 'buildpack-build', +} + +export interface BuildPackConfigType { + builderId: string + language: string + languageVersion: string + projectPath: string + builderLangEnvParam?: string + currentBuilderLangEnvParam?: string + buildPacks?: any + args?: Record +} + +export interface DockerBuildConfigType { + dockerfileContent: string + dockerfileRelativePath: string + buildContext: string + dockerfilePath?: string + dockerfileRepository?: string + args?: Record + targetPlatform?: any + language?: string + languageFramework?: string +} + +export interface CIBuildConfigType { + buildPackConfig: BuildPackConfigType + ciBuildType: CIBuildType + dockerBuildConfig: DockerBuildConfigType + gitMaterialId: number + buildContextGitMaterialId: number + id?: number + useRootBuildContext: boolean +} + +export interface DockerConfigOverrideType { + dockerRegistry: string + dockerRepository: string + ciBuildConfig: CIBuildConfigType +} + +export interface FormType { + name: string + args: { key: string; value: string }[] + materials: MaterialType[] + gitHost: Githost + webhookEvents: WebhookEvent[] + ciPipelineSourceTypeOptions: CiPipelineSourceTypeOption[] + webhookConditionList: { selectorId: number; value: string }[] + triggerType: string + scanEnabled?: boolean + beforeDockerBuildScripts?: { + id: number + name: string + outputLocation: string + script: string + isCollapsed: boolean + index: number + }[] + afterDockerBuildScripts?: { + id: number + name: string + outputLocation: string + script: string + isCollapsed: boolean + index: number + }[] + ciPipelineEditable: true + preBuildStage?: BuildStageType + postBuildStage?: BuildStageType + isDockerConfigOverridden?: boolean + dockerConfigOverride?: DockerConfigOverrideType + isOffendingMandatoryPlugin?: boolean +} + +export interface ErrorObj { + isValid: boolean + message: string | null +} +export interface TaskErrorObj { + isValid: boolean + name: ErrorObj + inlineStepDetail?: { inputVariables?: ErrorObj[]; outputVariables?: ErrorObj[] } + pluginRefStepDetail?: { inputVariables?: ErrorObj[]; outputVariables?: ErrorObj[] } +} +export interface FormErrorObjectType { + name: ErrorObj + materials?: MaterialType[] + preBuildStage?: { + isValid: boolean + steps: TaskErrorObj[] + } + buildStage?: { + isValid: boolean + name: ErrorObj + } + postBuildStage?: { + isValid: boolean + steps: TaskErrorObj[] + } +} diff --git a/packages/devtron-fe-common-lib/src/Common/ChartVersionAndTypeSelector.tsx b/packages/devtron-fe-common-lib/src/Common/ChartVersionAndTypeSelector.tsx new file mode 100644 index 0000000000..7272120ba1 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Common/ChartVersionAndTypeSelector.tsx @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2024. Devtron Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { useEffect, useState } from 'react' +import { fetchChartTemplateVersions } from './Common.service' +import { ChartVersionAndTypeSelectorProps, DeploymentChartVersionType } from './Types' +import { getFilteredChartVersions, showError } from './Helper' +import { SelectPicker, SelectPickerVariantType } from '@Shared/Components' + +// @TODO: Generalize this component to be used in CodeEditor as Chart selector toolbar +// when the Code Editor is moved to the fe-common-lib +const ChartVersionAndTypeSelector = ({ setSelectedChartRefId }: ChartVersionAndTypeSelectorProps) => { + const [charts, setCharts] = useState([]) + const [selectedChartType, setSelectedChartType] = useState(null) + const [chartVersionOptions, setChartVersionOptions] = useState([]) + const [chartTypeOptions, setChartTypeOptions] = useState([]) + const [selectedChartVersion, setSelectedChartVersion] = useState(null) + + useEffect(() => { + fetchChartTemplateVersions() + .then((res) => { + const charts = res?.result || [] + setCharts(charts) + // Extract unique chart types from the data + const chartTypeOptions = [...new Set(charts.map((item) => item.chartType))].map((type) => ({ + value: type, + label: type, + })) + setChartTypeOptions(chartTypeOptions) + const filteredVersions = getFilteredChartVersions(charts, chartTypeOptions[0]) + selectFirstChartVersion(filteredVersions) + }) + .catch((err) => { + showError(err) + }) + }, []) + + const selectFirstChartVersion = (filteredVersions) => { + setChartVersionOptions(filteredVersions) + setSelectedChartVersion(filteredVersions[0]) // Select the first chart version by default + setSelectedChartRefId(filteredVersions[0]?.chartRefId) + } + + // Function to update chart version options based on selected chart type + const handleChartTypeChange = (selectedOption) => { + setSelectedChartType(selectedOption) + const filteredVersions = getFilteredChartVersions(charts, selectedOption) + selectFirstChartVersion(filteredVersions) + } + + // Function to handle the change of the selected chart version + const handleChartVersionChange = (selectedOption) => { + setSelectedChartVersion(selectedOption) + setSelectedChartRefId(selectedOption.chartRefId) + } + + return ( +
+
+ Chart Type + +
+
+ Chart Version + +
+
+ ) +} + +export default ChartVersionAndTypeSelector diff --git a/packages/devtron-fe-common-lib/src/Common/Checkbox.tsx b/packages/devtron-fe-common-lib/src/Common/Checkbox.tsx new file mode 100644 index 0000000000..ee6b18d41f --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Common/Checkbox.tsx @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2024. Devtron Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React, { Component } from 'react' +import { CheckboxProps } from './Types' + +/* +Valid States of Checkbox: +1. disabled: true, checked: false, value: XXX +2. disabled: true, checked: true, value: INTERMIDIATE +3. disabled: true, checked: true, value: CHECKED +4. disabled: true, checked: false, value: XXX +5. disabled: false, checked: true, value: INTERMIDIATE +6. disabled: false, checked: true, value: CHECKED +*/ +// TODO: Associate label with input element +export class Checkbox extends Component { + render() { + const rootClassName = `${this.props.rootClassName ? this.props.rootClassName : ''}` + return ( + + ) + } +} diff --git a/packages/devtron-fe-common-lib/src/Common/ClipboardButton/ClipboardButton.tsx b/packages/devtron-fe-common-lib/src/Common/ClipboardButton/ClipboardButton.tsx new file mode 100644 index 0000000000..878b55a779 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Common/ClipboardButton/ClipboardButton.tsx @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2024. Devtron Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { useState, useEffect, useCallback } from 'react' +import Tippy from '@tippyjs/react' +import { copyToClipboard, noop, stopPropagation } from '../Helper' +import ClipboardProps from './types' +import { ReactComponent as ICCopy } from '../../Assets/Icon/ic-copy.svg' +import { ReactComponent as Check } from '../../Assets/Icon/ic-check.svg' + +/** + * @param content - Content to be copied + * @param copiedTippyText - Text to be shown in the tippy when the content is copied, default 'Copied!' + * @param duration - Duration for which the tippy should be shown, default 1000 + * @param trigger - To trigger the copy action outside the button, if set to true the content will be copied, use case being triggering the copy action from outside the component + * @param setTrigger - Callback function to set the trigger outside the button + * @param rootClassName - additional classes to add to button + * @param iconSize - size of svg icon to be shown, default 16 (icon-dim-16) + */ +export default function ClipboardButton({ + content, + copiedTippyText = 'Copied!', + duration = 1000, + trigger, + setTrigger = noop, + rootClassName = '', + iconSize = 16, +}: ClipboardProps) { + const [copied, setCopied] = useState(false) + const [enableTippy, setEnableTippy] = useState(false) + + const handleTextCopied = () => { + setCopied(true) + } + const isTriggerUndefined = typeof trigger === 'undefined' + + const handleEnableTippy = () => setEnableTippy(true) + const handleDisableTippy = () => setEnableTippy(false) + const handleCopyContent = useCallback( + (e?) => { + if (e) stopPropagation(e) + copyToClipboard(content, handleTextCopied) + }, + [content], + ) + const iconClassName = `icon-dim-${iconSize} dc__no-shrink` + + useEffect(() => { + if (!copied) return + + const timeout = setTimeout(() => { + setCopied(false) + setTrigger(false) + }, duration) + + return () => clearTimeout(timeout) + }, [copied, duration, setTrigger]) + + useEffect(() => { + if (!isTriggerUndefined && trigger) { + setCopied(true) + handleCopyContent() + } + }, [trigger, handleCopyContent]) + return ( + + + + ) +} diff --git a/packages/devtron-fe-common-lib/src/Common/ClipboardButton/__tests__/ClipboardButton.test.tsx b/packages/devtron-fe-common-lib/src/Common/ClipboardButton/__tests__/ClipboardButton.test.tsx new file mode 100644 index 0000000000..6dd6d75caf --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Common/ClipboardButton/__tests__/ClipboardButton.test.tsx @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2024. Devtron Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from 'react' +import { render, screen, fireEvent } from '@testing-library/react' +import ClipboardButton from '../ClipboardButton' + +jest.mock('../../helpers/Helpers', () => ({ + copyToClipboard: jest.fn().mockImplementation((content, callback) => { + callback() + }), +})) + +describe('When ClipboardButton mounts', () => { + beforeEach(() => { + jest.clearAllMocks() + }) + + it('should show the copy icon', () => { + render( + , + ) + expect(screen.getByRole('button')).toBeTruthy() + }) + + it('should show tippy on hover', () => { + render( + , + ) + fireEvent.mouseEnter(screen.getByRole('button')) + expect(screen.getByText('Copy')).toBeTruthy() + }) + + it('should show copiedTippyText when trigger is true', () => { + render() + expect(screen.getByText('test')).toBeTruthy() + }) + + it('should call copyToClipboard when clicked', () => { + render( + , + ) + fireEvent.click(screen.getByRole('button')) + expect(screen.getByText('test')).toBeTruthy() + }) +}) diff --git a/packages/devtron-fe-common-lib/src/Common/ClipboardButton/types.ts b/packages/devtron-fe-common-lib/src/Common/ClipboardButton/types.ts new file mode 100644 index 0000000000..94eb735542 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Common/ClipboardButton/types.ts @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2024. Devtron Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export default interface ClipboardProps { + content: string + copiedTippyText?: string + duration?: number + trigger?: boolean + setTrigger?: React.Dispatch> + rootClassName?: string + iconSize?: number +} diff --git a/packages/devtron-fe-common-lib/src/Common/CodeEditor/CodeEditor.reducer.ts b/packages/devtron-fe-common-lib/src/Common/CodeEditor/CodeEditor.reducer.ts new file mode 100644 index 0000000000..8b22e19234 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Common/CodeEditor/CodeEditor.reducer.ts @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2024. Devtron Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { MODES } from '../Constants' +import { Action, CodeEditorInitialValueType, CodeEditorState, CodeEditorThemesKeys } from './types' + +export const CodeEditorReducer = (state: CodeEditorState, action: Action) => { + switch (action.type) { + case 'changeLanguage': + return { ...state, mode: action.value } + case 'setDiff': + return { ...state, diffMode: action.value } + case 'setTheme': + return { ...state, theme: action.value } + case 'setCode': + return { ...state, code: action.value } + case 'setHeight': + return { ...state, height: action.value.toString() } + default: + return state + } +} + +export const initialState = ({ + mode, + theme, + value, + diffView, + noParsing, +}: CodeEditorInitialValueType): CodeEditorState => ({ + mode: mode as MODES, + theme: (theme || CodeEditorThemesKeys.vs) as CodeEditorThemesKeys, + code: value, + diffMode: diffView, + noParsing: [MODES.JSON, MODES.YAML].includes(mode as MODES) ? noParsing : true, +}) diff --git a/packages/devtron-fe-common-lib/src/Common/CodeEditor/CodeEditor.tsx b/packages/devtron-fe-common-lib/src/Common/CodeEditor/CodeEditor.tsx new file mode 100644 index 0000000000..5429f19df8 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Common/CodeEditor/CodeEditor.tsx @@ -0,0 +1,525 @@ +/* + * Copyright (c) 2024. Devtron Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React, { useEffect, useMemo, useReducer, useRef, useState } from 'react' +import MonacoEditor, { MonacoDiffEditor } from 'react-monaco-editor' +import YAML from 'yaml' +import ReactGA from 'react-ga4' +import * as monaco from 'monaco-editor/esm/vs/editor/editor.api' +import { configureMonacoYaml } from 'monaco-yaml' + +import { ReactComponent as Info } from '../../Assets/Icon/ic-info-filled.svg' +import { ReactComponent as ErrorIcon } from '../../Assets/Icon/ic-error-exclamation.svg' +import { ReactComponent as WarningIcon } from '../../Assets/Icon/ic-warning.svg' +import './codeEditor.scss' +import 'monaco-editor' + +import { YAMLStringify, cleanKubeManifest, useJsonYaml } from '../Helper' +import { useWindowSize } from '../Hooks' +import Select from '../Select/Select' +import RadioGroup from '../RadioGroup/RadioGroup' +import ClipboardButton from '../ClipboardButton/ClipboardButton' +import { Progressing } from '../Progressing' +import { + CodeEditorComposition, + CodeEditorHeaderComposition, + CodeEditorHeaderInterface, + CodeEditorInterface, + CodeEditorThemesKeys, + InformationBarProps, +} from './types' +import { CodeEditorReducer, initialState } from './CodeEditor.reducer' +import { MODES } from '../Constants' + +const CodeEditorContext = React.createContext(null) + +function useCodeEditorContext() { + const context = React.useContext(CodeEditorContext) + if (!context) { + throw new Error(`cannot be rendered outside the component`) + } + return context +} + +const INITIAL_HEIGHT_WHEN_DYNAMIC_HEIGHT = 100 + +const CodeEditor: React.FC & CodeEditorComposition = React.memo( + ({ + value, + mode = MODES.JSON, + noParsing = false, + defaultValue = '', + children, + tabSize = 2, + lineDecorationsWidth = 0, + height = 450, + inline = false, + shebang = '', + onChange, + readOnly, + diffView, + theme = '', + loading, + customLoader, + focus, + validatorSchema, + chartVersion, + isKubernetes = true, + cleanData = false, + onBlur, + onFocus, + adjustEditorHeightToContent = false, + disableSearch = false, + }) => { + if (cleanData) { + value = cleanKubeManifest(value) + defaultValue = cleanKubeManifest(defaultValue) + } + + const editorRef = useRef(null) + const monacoRef = useRef(null) + const { width, height: windowHeight } = useWindowSize() + const memoisedReducer = React.useCallback(CodeEditorReducer, []) + const [state, dispatch] = useReducer(memoisedReducer, initialState({ mode, theme, value, diffView, noParsing })) + const [, json, yamlCode, error] = useJsonYaml(state.code, tabSize, state.mode, !state.noParsing) + const [, originalJson, originlaYaml] = useJsonYaml(defaultValue, tabSize, state.mode, !state.noParsing) + const [contentHeight, setContentHeight] = useState( + adjustEditorHeightToContent ? INITIAL_HEIGHT_WHEN_DYNAMIC_HEIGHT : height, + ) + /** + * TODO: can be removed with this new merge into react-monaco-editor :) + * see: https://github.com/react-monaco-editor/react-monaco-editor/pull/955 + * */ + const onChangeRef = useRef(onChange) + onChangeRef.current = onChange + monaco.editor.defineTheme(CodeEditorThemesKeys.vsDarkDT, { + base: 'vs-dark', + inherit: true, + rules: [ + // @ts-ignore + { background: '#0B0F22' }, + ], + colors: { + 'editor.background': '#0B0F22', + }, + }) + + monaco.editor.defineTheme(CodeEditorThemesKeys.networkStatusInterface, { + base: 'vs-dark', + inherit: true, + rules: [ + // @ts-ignore + { background: '#1A1A1A' }, + ], + colors: { + 'editor.background': '#1A1A1A', + }, + }) + + monaco.editor.defineTheme(CodeEditorThemesKeys.deleteDraft, { + base: 'vs', + inherit: true, + rules: [], + colors: { + 'diffEditor.insertedTextBackground': '#ffd4d1', + 'diffEditor.removedTextBackground': '#ffffff33', + }, + }) + + monaco.editor.defineTheme(CodeEditorThemesKeys.unpublished, { + base: 'vs', + inherit: true, + rules: [], + colors: { + 'diffEditor.insertedTextBackground': '#eaf1dd', + 'diffEditor.removedTextBackground': '#ffffff33', + }, + }) + + useEffect(() => { + const rule = !disableSearch + ? null + : monaco.editor.addKeybindingRule({ + command: null, + keybinding: monaco.KeyCode.KeyF | monaco.KeyMod.CtrlCmd, + }) + return () => { + rule?.dispose() + } + }, [disableSearch]) + + const editorDidMount = (editor, monaco) => { + if ( + mode === MODES.YAML && + editor && + typeof editor.getModel === 'function' && + typeof editor.getModel().updateOptions === 'function' + ) { + editor.getModel().updateOptions({ tabSize: 2 }) + } + + if (editor) { + if (typeof editor.onDidFocusEditorWidget === 'function' && typeof onFocus === 'function') { + editor.onDidFocusEditorWidget(onFocus) + } + + if (typeof editor.onDidBlurEditorWidget === 'function' && typeof onBlur === 'function') { + editor.onDidBlurEditorWidget(onBlur) + } + } + + if (adjustEditorHeightToContent && editor) { + if (!('getModifiedEditor' in editor)) { + editor.onDidContentSizeChange(() => { + setContentHeight(editor.getContentHeight()) + }) + setContentHeight(editor.getContentHeight()) + return + } + const modifiedEditor = editor.getModifiedEditor() + const originalEditor = editor.getOriginalEditor() + originalEditor.onDidContentSizeChange(() => { + setContentHeight( + Math.max( + typeof contentHeight === 'number' ? contentHeight : Number.MIN_SAFE_INTEGER, + originalEditor.getContentHeight(), + ), + ) + }) + modifiedEditor.onDidContentSizeChange(() => { + setContentHeight( + Math.max( + typeof contentHeight === 'number' ? contentHeight : Number.MIN_SAFE_INTEGER, + modifiedEditor.getContentHeight(), + ), + ) + }) + setContentHeight(Math.max(modifiedEditor.getContentHeight(), modifiedEditor.getContentHeight())) + } + + editorRef.current = editor + monacoRef.current = monaco + } + + const editorHeight = useMemo(() => { + if (!adjustEditorHeightToContent) { + return height + } + return contentHeight + }, [height, contentHeight, adjustEditorHeightToContent]) + + useEffect(() => { + if (!validatorSchema) { + return + } + const config = configureMonacoYaml(monaco, { + enableSchemaRequest: true, + isKubernetes, + schemas: [ + { + uri: `https://github.com/devtron-labs/devtron/tree/main/scripts/devtron-reference-helm-charts/reference-chart_${chartVersion}/schema.json`, // id of the first schema + fileMatch: ['*'], // associate with our model + schema: validatorSchema, + }, + ], + }) + return () => { + config.dispose() + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [validatorSchema, chartVersion]) + useEffect(() => { + if (!editorRef.current) { + return + } + editorRef.current.updateOptions({ readOnly }) + }, [readOnly]) + + useEffect(() => { + if (!editorRef.current) { + return + } + editorRef.current.layout() + }, [width, windowHeight]) + + const setCode = (value: string) => { + dispatch({ type: 'setCode', value }) + onChangeRef.current?.(value) + } + + useEffect(() => { + if (noParsing) { + setCode(value) + + return + } + let obj + if (value === state.code) { + return + } + try { + obj = JSON.parse(value) + } catch (err) { + try { + obj = YAML.parse(value) + } catch (err) {} + } + let final = value + if (obj) { + final = state.mode === 'json' ? JSON.stringify(obj, null, tabSize) : YAMLStringify(obj) + } + setCode(final) + }, [value, noParsing]) + + useEffect(() => { + dispatch({ type: 'setDiff', value: diffView }) + }, [diffView]) + + useEffect(() => { + if (focus) { + editorRef.current.focus() + } + }, [focus]) + + function handleOnChange(newValue, e) { + setCode(newValue) + } + + function handleLanguageChange(mode: 'json' | 'yaml') { + dispatch({ type: 'changeLanguage', value: mode }) + setCode(mode === 'json' ? json : yamlCode) + } + + const options: monaco.editor.IEditorConstructionOptions = { + selectOnLineNumbers: true, + roundedSelection: false, + readOnly, + lineDecorationsWidth, + automaticLayout: true, + scrollBeyondLastLine: false, + ...(adjustEditorHeightToContent + ? { + overviewRulerLanes: adjustEditorHeightToContent ? 0 : 1, + } + : {}), + minimap: { + enabled: false, + }, + scrollbar: { + alwaysConsumeMouseWheel: false, + vertical: inline ? 'hidden' : 'auto', + ...(adjustEditorHeightToContent + ? { + vertical: 'hidden', + verticalScrollbarSize: 0, + verticalSliderSize: 0, + } + : {}), + }, + lineNumbers(lineNumber) { + return `${lineNumber}` + }, + } + + const diffViewOptions: monaco.editor.IDiffEditorConstructionOptions = { + ...options, + useInlineViewWhenSpaceIsLimited: false, + } + + return ( + + {children} + {loading ? ( + + ) : ( + <> + {shebang &&
{shebang}
} + {state.diffMode ? ( + + ) : ( + + )} + + )} +
+ ) + }, +) + +const Header: React.FC & CodeEditorHeaderComposition = ({ + children, + className, + hideDefaultSplitHeader, +}) => { + const { defaultValue } = useCodeEditorContext() + return ( +
+ {children} + {!hideDefaultSplitHeader && defaultValue && } +
+ ) +} + +const ThemeChanger = ({}) => { + const { readOnly, state, dispatch } = useCodeEditorContext() + function handleChangeTheme(e) { + dispatch({ type: 'setTheme', value: e.target.value }) + } + + const themes = ['vs', 'vs-dark'] + return ( + + ) +} + +const LanguageChanger = ({}) => { + const { readOnly, handleLanguageChange, state } = useCodeEditorContext() + if (state.noParsing) { + return null + } + return ( +
+ { + ReactGA.event({ + category: 'JSON-YAML Switch', + action: `${event.target.value} view`, + }) + handleLanguageChange(event.target.value) + }} + > + JSON + YAML + +
+ ) +} + +const ValidationError = () => { + const { error } = useCodeEditorContext() + return error ?
{error}
: null +} + +const Warning: React.FC = (props) => ( +
+ + {props.text} + {props.children} +
+) + +const ErrorBar: React.FC = (props) => ( +
+ + {props.text} + {props.children} +
+) + +const Information: React.FC = (props) => ( +
+ + {props.text} + {props.children} +
+) + +const Clipboard = () => { + const { state } = useCodeEditorContext() + return +} + +const SplitPane = ({}) => { + const { state, dispatch, readOnly } = useCodeEditorContext() + function handleToggle(e) { + if (readOnly) { + return + } + dispatch({ type: 'setDiff', value: !state.diffMode }) + } + return ( +
+
+ {state.diffMode ? 'Hide comparison' : 'Compare with default'} +
+ ) +} +// TODO: CodeEditor should be composed of CodeEditorPlaceholder +const CodeEditorPlaceholder = ({ className = '', style = {}, customLoader }): JSX.Element => { + const { height } = useCodeEditorContext() + + if (customLoader) { + return customLoader + } + + return ( +
+
+
+ +
+
+
+ ) +} + +CodeEditor.LanguageChanger = LanguageChanger +CodeEditor.ThemeChanger = ThemeChanger +CodeEditor.ValidationError = ValidationError +CodeEditor.Clipboard = Clipboard +CodeEditor.Header = Header +CodeEditor.Warning = Warning +CodeEditor.ErrorBar = ErrorBar +CodeEditor.Information = Information + +export default CodeEditor diff --git a/packages/devtron-fe-common-lib/src/Common/CodeEditor/codeEditor.scss b/packages/devtron-fe-common-lib/src/Common/CodeEditor/codeEditor.scss new file mode 100644 index 0000000000..586a19b8a4 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Common/CodeEditor/codeEditor.scss @@ -0,0 +1,173 @@ +/* + * Copyright (c) 2024. Devtron Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +.code-editor__header { + height: 40px; + background: var(--N100); + padding: 0 16px; + border-bottom: 1px solid var(--N200); + + .radio-group { + height: 24px; + overflow: hidden; + } + + .radio-group input[type='checkbox']:checked + .radio__item-label { + background: var(--N700); + border-radius: 0; + color: var(--white); + } + + .radio__item-label { + padding: 0 8px; + display: inline-block; + width: 100%; + height: 100%; + line-height: 24px; + cursor: pointer; + } + + .radio-group { + padding: 0; + } + + .code-editor__split-pane { + color: var(--N700); + margin-left: auto; + fill: var(--N700); + } + + label.form__error { + margin-left: 8px; + } + + button.clipboard { + margin-left: auto; + height: 20px; + width: 20px; + padding: 0; + background: transparent; + border: unset; + outline: unset; + + svg { + height: 100%; + width: 100%; + } + + &:active { + svg { + height: 90%; + width: 90%; + + path { + fill: green; + } + } + } + } +} + +.code-editor__header-error { + padding: 8px 16px; + font-size: 12px; + border: solid 1px #d6dbdf; + background-color: var(--R100); + font-weight: normal; + font-stretch: normal; + font-style: normal; + line-height: 1.33; + letter-spacing: normal; + color: #f32e2e; +} + +.code-editor-container { + width: 100%; + border: 1px solid #d6dbdf; + border-radius: 4px; + overflow: hidden; +} + +.react-monaco-editor-container { + min-height: 300px; +} + +.code-editor__warning { + font-size: 12px; + font-weight: 400; + line-height: 1.33; + letter-spacing: normal; + color: var(--Y700); + height: auto; + padding: 8px 16px; + border-bottom: 1px solid #d6dbdf; + background-color: var(--Y100); +} + +.code-editor__information { + font-size: 12px; + font-weight: 400; + line-height: 1.33; + letter-spacing: normal; + color: var(--N900); + height: auto; + padding: 8px 16px; + border-bottom: 1px solid #d6dbdf; + background-color: var(--B100); +} + +.code-editor__information-info-icon { + width: 16px; + height: 16px; + margin: 0 8px 0 0; + vertical-align: bottom; +} + +.code-editor__toggle { + .toggle__switch { + width: 32px; + margin: 0 12px; + } + + color: var(--white); +} + +.diff-icon { + height: 20px; + width: 20px; + margin-right: 4px; + background: url('../../Assets/Icon/ic-compare.svg'); +} + +.code-editor__error { + background-color: #fde7e7; + color: #862020; + font-size: 12px; + font-weight: 400; + line-height: 1.33; + padding: 8px 16px; + border-bottom: 1px solid #d6dbdf; +} + +.monaco-editor-hover { + margin-left: 40px; +} + +.monaco-scrollable-element { + & > .visible { + z-index: 9; + } +} diff --git a/packages/devtron-fe-common-lib/src/Common/CodeEditor/index.ts b/packages/devtron-fe-common-lib/src/Common/CodeEditor/index.ts new file mode 100644 index 0000000000..b3fc4c73cd --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Common/CodeEditor/index.ts @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2024. Devtron Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export { default as CodeEditor } from './CodeEditor' +export * from './types' diff --git a/packages/devtron-fe-common-lib/src/Common/CodeEditor/types.ts b/packages/devtron-fe-common-lib/src/Common/CodeEditor/types.ts new file mode 100644 index 0000000000..280c51a2c7 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Common/CodeEditor/types.ts @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2024. Devtron Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { MODES } from '../Constants' + +export interface InformationBarProps { + text: string + className?: string + children?: React.ReactNode +} + +interface CodeEditorBaseInterface { + value?: string + lineDecorationsWidth?: number + responseType?: string + onChange?: (string) => void + onBlur?: () => void + onFocus?: () => void + children?: any + defaultValue?: string + mode?: MODES | string + tabSize?: number + readOnly?: boolean + noParsing?: boolean + inline?: boolean + shebang?: string | JSX.Element + diffView?: boolean + loading?: boolean + customLoader?: JSX.Element + theme?: string + original?: string + focus?: boolean + validatorSchema?: any + isKubernetes?: boolean + cleanData?: boolean + chartVersion?: any + /** + * If true, disable the in-built search of monaco editor + * @default false + */ + disableSearch?: boolean +} + +export type CodeEditorInterface = CodeEditorBaseInterface & + ( + | { + adjustEditorHeightToContent?: boolean + height?: never + } + | { + adjustEditorHeightToContent?: never + height?: number | string + } + ) + +export interface CodeEditorHeaderInterface { + children?: any + className?: string + hideDefaultSplitHeader?: boolean +} +export interface CodeEditorComposition { + Header?: React.FC + LanguageChanger?: React.FC + ThemeChanger?: React.FC + ValidationError?: React.FC + Clipboard?: React.FC + Warning?: React.FC + ErrorBar?: React.FC + Information?: React.FC +} +export interface CodeEditorHeaderComposition { + LanguageChanger?: React.FC + ThemeChanger?: React.FC + ValidationError?: React.FC + Clipboard?: React.FC +} + +export type ActionTypes = 'changeLanguage' | 'setDiff' | 'setTheme' | 'setCode' | 'setHeight' + +export interface Action { + type: ActionTypes + value: any +} + +export enum CodeEditorThemesKeys { + vsDarkDT = 'vs-dark--dt', + deleteDraft = 'delete-draft', + unpublished = 'unpublished', + vs = 'vs', + networkStatusInterface = 'network-status-interface', +} + +export interface CodeEditorInitialValueType { + mode: string + diffView: boolean + theme?: string + value: string + noParsing?: boolean +} + +export interface CodeEditorState { + mode: MODES + diffMode: boolean + theme: CodeEditorThemesKeys + code: string + noParsing: boolean +} + +export enum CodeEditorActionTypes { + reInit = 'reInit', + submitLoading = 'submitLoading', + overrideLoading = 'overrideLoading', + success = 'success', +} diff --git a/packages/devtron-fe-common-lib/src/Common/Common.service.ts b/packages/devtron-fe-common-lib/src/Common/Common.service.ts new file mode 100644 index 0000000000..99e28ff6c0 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Common/Common.service.ts @@ -0,0 +1,513 @@ +/* + * Copyright (c) 2024. Devtron Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import moment from 'moment' +import { RuntimeParamsAPIResponseType, RuntimeParamsListItemType } from '@Shared/types' +import { getIsManualApprovalSpecific, sanitizeUserApprovalConfig, stringComparatorBySortOrder } from '@Shared/Helpers' +import { get, post } from './Api' +import { ROUTES } from './Constants' +import { getUrlWithSearchParams, sortCallback } from './Helper' +import { + TeamList, + ResponseType, + DeploymentNodeType, + CDModalTab, + FilterStates, + CDMaterialServiceEnum, + CDMaterialServiceQueryParams, + CDMaterialResponseType, + CDMaterialsMetaInfo, + CDMaterialsApprovalInfo, + CDMaterialFilterQuery, + ImagePromotionMaterialInfo, + EnvironmentListHelmResponse, + UserGroupApproverType, + ImageApprovalPolicyUserGroupDataType, + ImageApprovalPolicyType, + ImageApprovalUsersInfoDTO, + UserApprovalMetadataType, + UserApprovalConfigType, + CDMaterialListModalServiceUtilProps, +} from './Types' +import { ApiResourceType } from '../Pages' +import { API_TOKEN_PREFIX } from '@Shared/constants' +import { DefaultUserKey } from '@Shared/types' + +export const getTeamListMin = (): Promise => { + // ignore active field + const URL = `${ROUTES.PROJECT_LIST_MIN}` + return get(URL).then((response) => { + let list = [] + if (response && response.result && Array.isArray(response.result)) { + list = response.result + } + list = list.sort((a, b) => sortCallback('name', a, b)) + return { + code: response.code, + status: response.status, + result: list, + } + }) +} + +interface UserRole extends ResponseType { + result?: { + roles: string[] + superAdmin: boolean + } +} + +const stageMap = { + PRECD: 'PRE', + CD: 'DEPLOY', + POSTCD: 'POST', + APPROVAL: 'APPROVAL', +} + +export const SourceTypeMap = { + BranchFixed: 'SOURCE_TYPE_BRANCH_FIXED', + WEBHOOK: 'WEBHOOK', + BranchRegex: 'SOURCE_TYPE_BRANCH_REGEX', +} + +export function getUserRole(appName?: string): Promise { + return get(`${ROUTES.USER_CHECK_ROLE}${appName ? `?appName=${appName}` : ''}`) +} + +export function setImageTags(request, pipelineId: number, artifactId: number) { + return post(`${ROUTES.IMAGE_TAGGING}/${pipelineId}/${artifactId}`, request) +} + +const sanitizeApprovalConfigFromApprovalMetadata = ( + approvalMetadata: UserApprovalMetadataType, + userApprovalConfig: UserApprovalConfigType, +): UserApprovalMetadataType => { + if (!approvalMetadata) { + return null + } + + const approvedUsersData = approvalMetadata.approvedUsersData || [] + const unsanitizedApprovalConfig = approvalMetadata.approvalConfig || userApprovalConfig + + return { + ...approvalMetadata, + approvedUsersData: approvedUsersData.map((userData) => ({ + ...userData, + userGroups: userData.userGroups?.filter((group) => !!group?.identifier && !!group?.name) ?? [], + })), + approvalConfig: sanitizeUserApprovalConfig(unsanitizedApprovalConfig), + } +} + +const cdMaterialListModal = ({ + artifacts, + offset, + artifactId, + artifactStatus, + disableDefaultSelection, + userApprovalConfig, +}: CDMaterialListModalServiceUtilProps) => { + if (!artifacts || !artifacts.length) return [] + + const markFirstSelected = offset === 0 + const startIndex = offset + let isImageMarked = disableDefaultSelection + + const materials = artifacts.map((material, index) => { + let artifactStatusValue = '' + const filterState = material.filterState ?? FilterStates.ALLOWED + + if (artifactId && artifactStatus && material.id === artifactId) { + artifactStatusValue = artifactStatus + } + + const selectImage = + !isImageMarked && markFirstSelected && filterState === FilterStates.ALLOWED ? !material.vulnerable : false + if (selectImage) { + isImageMarked = true + } + + return { + index: startIndex + index, + id: material.id, + deployedTime: material.deployed_time + ? moment(material.deployed_time).format('ddd, DD MMM YYYY, hh:mm A') + : 'Not Deployed', + deployedBy: material.deployedBy, + wfrId: material.wfrId, + tab: CDModalTab.Changes, + image: extractImage(material.image), + showChanges: false, + vulnerabilities: [], + buildTime: material.build_time || '', + isSelected: selectImage, + showSourceInfo: false, + deployed: material.deployed || false, + latest: material.latest || false, + vulnerabilitiesLoading: true, + scanned: material.scanned, + scanEnabled: material.scanEnabled, + vulnerable: material.vulnerable, + runningOnParentCd: material.runningOnParentCd, + artifactStatus: artifactStatusValue, + userApprovalMetadata: sanitizeApprovalConfigFromApprovalMetadata( + material.userApprovalMetadata, + userApprovalConfig, + ), + triggeredBy: material.triggeredBy, + isVirtualEnvironment: material.isVirtualEnvironment, + imageComment: material.imageComment, + imageReleaseTags: material.imageReleaseTags, + // It is going to be null but required in type so can't remove + lastExecution: material.lastExecution, + materialInfo: material.material_info + ? material.material_info.map((mat) => ({ + modifiedTime: mat.modifiedTime + ? moment(mat.modifiedTime).format('ddd, DD MMM YYYY, hh:mm A') + : '', + commitLink: createGitCommitUrl(mat.url, mat.revision), + author: mat.author || '', + message: mat.message || '', + revision: mat.revision || '', + tag: mat.tag || '', + webhookData: mat.webhookData || '', + url: mat.url || '', + branch: + (material.ciConfigureSourceType === SourceTypeMap.WEBHOOK + ? material.ciConfigureSourceValue + : mat.branch) || '', + type: material.ciConfigureSourceType || '', + })) + : [], + filterState, + appliedFiltersTimestamp: material.appliedFiltersTimestamp ?? '', + appliedFilters: material.appliedFilters ?? [], + appliedFiltersState: material.appliedFiltersState ?? FilterStates.ALLOWED, + createdTime: material.createdTime ?? '', + dataSource: material.data_source ?? '', + registryType: material.registryType ?? '', + imagePath: material.image ?? '', + registryName: material.registryName ?? '', + promotionApprovalMetadata: material.promotionApprovalMetadata, + deployedOnEnvironments: material.deployedOnEnvironments ?? [], + deploymentWindowArtifactMetadata: material.deploymentWindowArtifactMetadata ?? null, + configuredInReleases: material.configuredInReleases ?? [], + appWorkflowId: material.appWorkflowId ?? null, + } + }) + return materials +} + +const getImageApprovalPolicyDetailsFromMaterialResult = (cdMaterialsResult): ImageApprovalPolicyType => { + const approvalUsers: string[] = cdMaterialsResult.approvalUsers || [] + const userApprovalConfig = sanitizeUserApprovalConfig(cdMaterialsResult.userApprovalConfig) + const isPolicyConfigured = getIsManualApprovalSpecific(userApprovalConfig) + const imageApprovalUsersInfo: ImageApprovalUsersInfoDTO = cdMaterialsResult.imageApprovalUsersInfo || {} + + const approvalUsersMap = approvalUsers.reduce( + (acc, user) => { + acc[user] = true + return acc + }, + {} as Record, + ) + + const specificUsersAPIToken = userApprovalConfig.specificUsers.identifiers + .filter((user) => user.startsWith(API_TOKEN_PREFIX)) + .sort(stringComparatorBySortOrder) + const specificUsersEmails = userApprovalConfig.specificUsers.identifiers + .filter((user) => !user.startsWith(API_TOKEN_PREFIX) && user !== DefaultUserKey.system) + .sort(stringComparatorBySortOrder) + + const specificUsersData: ImageApprovalPolicyType['specificUsersData'] = { + dataStore: userApprovalConfig.specificUsers.identifiers.reduce( + (acc, email) => { + acc[email] = { + email, + hasAccess: approvalUsersMap[email] ?? false, + } + return acc + }, + {} as Record, + ), + requiredCount: userApprovalConfig.specificUsers.requiredCount, + emails: specificUsersEmails.concat(specificUsersAPIToken), + } + + const validGroups = userApprovalConfig.userGroups.map((group) => group.identifier) + + // Have moved from Object.keys(imageApprovalUsersInfo) to approvalUsers since backend is not filtering out the users without approval + // TODO: This check should be on BE. Need to remove this once BE is updated + const usersList = approvalUsers.filter((user) => user !== DefaultUserKey.system) + const groupIdentifierToUsersMap = usersList.reduce( + (acc, user) => { + const userGroups = imageApprovalUsersInfo[user] || [] + userGroups.forEach((group) => { + if (!acc[group.identifier]) { + acc[group.identifier] = {} + } + acc[group.identifier][user] = true + }) + return acc + }, + {} as Record>, + ) + + return { + isPolicyConfigured, + specificUsersData, + userGroupData: userApprovalConfig.userGroups.reduce( + (acc, group) => { + const identifier = group.identifier + // No need of handling api tokens here since they are not part of user groups + const users = Object.keys(groupIdentifierToUsersMap[identifier] || {}).sort(stringComparatorBySortOrder) + + acc[identifier] = { + dataStore: users.reduce( + (acc, user) => { + acc[user] = { + email: user, + // As of now it will always be true, but UI has handled it in a way that can support false as well + hasAccess: approvalUsersMap[user] ?? false, + } + return acc + }, + {} as Record, + ), + requiredCount: group.requiredCount, + emails: users, + } + + return acc + }, + {} as Record, + ), + // Not sorting since would change them in approval info modal to name + validGroups, + } +} + +const processCDMaterialsApprovalInfo = (enableApproval: boolean, cdMaterialsResult): CDMaterialsApprovalInfo => { + if (!enableApproval || !cdMaterialsResult) { + return { + approvalUsers: [], + userApprovalConfig: null, + canApproverDeploy: cdMaterialsResult?.canApproverDeploy ?? false, + imageApprovalPolicyDetails: null, + } + } + + return { + approvalUsers: cdMaterialsResult.approvalUsers, + userApprovalConfig: sanitizeUserApprovalConfig(cdMaterialsResult.userApprovalConfig), + canApproverDeploy: cdMaterialsResult.canApproverDeploy ?? false, + imageApprovalPolicyDetails: getImageApprovalPolicyDetailsFromMaterialResult(cdMaterialsResult), + } +} + +export const parseRuntimeParams = (response: RuntimeParamsAPIResponseType): RuntimeParamsListItemType[] => + Object.entries(response?.envVariables || {}) + .map(([key, value], index) => ({ key, value, id: index })) + .sort((a, b) => stringComparatorBySortOrder(a.key, b.key)) + +const processCDMaterialsMetaInfo = (cdMaterialsResult): CDMaterialsMetaInfo => { + if (!cdMaterialsResult) { + return { + tagsEditable: false, + appReleaseTagNames: [], + hideImageTaggingHardDelete: false, + resourceFilters: [], + totalCount: 0, + requestedUserId: 0, + runtimeParams: [], + } + } + + return { + appReleaseTagNames: cdMaterialsResult.appReleaseTagNames ?? [], + tagsEditable: cdMaterialsResult.tagsEditable ?? false, + hideImageTaggingHardDelete: cdMaterialsResult.hideImageTaggingHardDelete, + resourceFilters: cdMaterialsResult.resourceFilters ?? [], + totalCount: cdMaterialsResult.totalCount ?? 0, + requestedUserId: cdMaterialsResult.requestedUserId, + runtimeParams: parseRuntimeParams(cdMaterialsResult.runtimeParams), + } +} + +const processImagePromotionInfo = (cdMaterialsResult): ImagePromotionMaterialInfo => { + if (!cdMaterialsResult) { + return { + isApprovalPendingForPromotion: false, + imagePromotionApproverEmails: [], + } + } + + return { + isApprovalPendingForPromotion: cdMaterialsResult.isApprovalPendingForPromotion, + imagePromotionApproverEmails: cdMaterialsResult.imagePromotionApproverEmails ?? [], + } +} + +export const processCDMaterialServiceResponse = ( + cdMaterialsResult, + stage: DeploymentNodeType, + offset: number, + filter: CDMaterialFilterQuery, + disableDefaultSelection?: boolean, +): CDMaterialResponseType => { + if (!cdMaterialsResult) { + return { + materials: [], + ...processCDMaterialsMetaInfo(cdMaterialsResult), + ...processCDMaterialsApprovalInfo(false, cdMaterialsResult), + ...processImagePromotionInfo(cdMaterialsResult), + } + } + + const materials = cdMaterialListModal({ + artifacts: cdMaterialsResult.ci_artifacts, + offset: offset ?? 0, + artifactId: cdMaterialsResult.latest_wf_artifact_id, + artifactStatus: cdMaterialsResult.latest_wf_artifact_status, + disableDefaultSelection, + userApprovalConfig: cdMaterialsResult.userApprovalConfig, + }) + const approvalInfo = processCDMaterialsApprovalInfo( + stage === DeploymentNodeType.CD || stage === DeploymentNodeType.APPROVAL, + cdMaterialsResult, + ) + const metaInfo = processCDMaterialsMetaInfo(cdMaterialsResult) + const imagePromotionInfo = processImagePromotionInfo(cdMaterialsResult) + + // TODO: On update of service would remove from here + const filteredMaterials = + filter && filter === CDMaterialFilterQuery.RESOURCE + ? materials.filter((material) => material.filterState === FilterStates.ALLOWED) + : materials + + return { + materials: filteredMaterials, + ...approvalInfo, + ...metaInfo, + ...imagePromotionInfo, + } +} + +const getSanitizedQueryParams = (queryParams: CDMaterialServiceQueryParams): CDMaterialServiceQueryParams => { + const { filter, ...rest } = queryParams + return rest +} + +export const genericCDMaterialsService = ( + serviceType: CDMaterialServiceEnum, + /** + * In case of multiple candidates are there like promotion, would be sending it as null + */ + cdMaterialID: number, + /** + * Would be sending null in case we don't have stage like for case of promotion. + */ + stage: DeploymentNodeType, + signal: AbortSignal, + queryParams: CDMaterialServiceQueryParams = {}, +): Promise => { + // TODO: On update of service would remove from here + const manipulatedParams = getSanitizedQueryParams(queryParams) + + let URL + switch (serviceType) { + case CDMaterialServiceEnum.ROLLBACK: + URL = getUrlWithSearchParams( + `${ROUTES.CD_MATERIAL_GET}/${cdMaterialID}/material/rollback`, + manipulatedParams, + ) + break + + case CDMaterialServiceEnum.IMAGE_PROMOTION: + // Directly sending queryParams since do not need to get queryParams sanitized in case of image promotion + URL = getUrlWithSearchParams(ROUTES.APP_ARTIFACT_PROMOTE_MATERIAL, queryParams) + break + // Meant for handling getCDMaterialList + default: + URL = getUrlWithSearchParams(`${ROUTES.CD_MATERIAL_GET}/${cdMaterialID}/material`, { + ...manipulatedParams, + stage: stageMap[stage], + }) + break + } + + return get(URL, { signal }).then((response) => + processCDMaterialServiceResponse(response.result, stage, queryParams.offset, queryParams.filter), + ) +} + +export function extractImage(image: string): string { + return image ? image.split(':').pop() : '' +} + +export function createGitCommitUrl(url: string, revision: string): string { + if (!url || !revision) { + return 'NA' + } + if (url.indexOf('gitlab') > 0 || url.indexOf('github') > 0 || url.indexOf('azure') > 0) { + const urlpart = url.split('@') + if (urlpart.length > 1) { + return `https://${urlpart[1].split('.git')[0]}/commit/${revision}` + } + if (urlpart.length == 1) { + return `${urlpart[0].split('.git')[0]}/commit/${revision}` + } + } + if (url.indexOf('bitbucket') > 0) { + const urlpart = url.split('@') + if (urlpart.length > 1) { + return `https://${urlpart[1].split('.git')[0]}/commits/${revision}` + } + if (urlpart.length == 1) { + return `${urlpart[0].split('.git')[0]}/commits/${revision}` + } + } + return 'NA' +} + +export function fetchChartTemplateVersions() { + return get(`${ROUTES.DEPLOYMENT_TEMPLATE_LIST}?appId=-1&envId=-1`) +} + +export const getDefaultConfig = (): Promise => get(`${ROUTES.NOTIFIER}/channel/config`) + +export function getEnvironmentListMinPublic(includeAllowedDeploymentTypes?: boolean) { + return get( + `${ROUTES.ENVIRONMENT_LIST_MIN}?auth=false${includeAllowedDeploymentTypes ? '&showDeploymentOptions=true' : ''}`, + ) +} + +export function getClusterListMin() { + const URL = `${ROUTES.CLUSTER}/autocomplete` + return get(URL) +} + +export const getResourceGroupListRaw = (clusterId: string): Promise> => + get(`${ROUTES.API_RESOURCE}/${ROUTES.GVK}/${clusterId}`) + +export function getNamespaceListMin(clusterIdsCsv: string): Promise { + const URL = `${ROUTES.NAMESPACE}/autocomplete?ids=${clusterIdsCsv}` + return get(URL) +} +export function getWebhookEventsForEventId(eventId: string | number) { + const URL = `${ROUTES.GIT_HOST_EVENT}/${eventId}` + return get(URL) +} diff --git a/packages/devtron-fe-common-lib/src/Common/Constants.ts b/packages/devtron-fe-common-lib/src/Common/Constants.ts new file mode 100644 index 0000000000..ebb9574407 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Common/Constants.ts @@ -0,0 +1,553 @@ +/* + * Copyright (c) 2024. Devtron Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { RegistryTypeDetailType } from './Types' +import { getContainerRegistryIcon } from './utils' + +export const FALLBACK_REQUEST_TIMEOUT = 60000 +export const Host = window?.__ORCHESTRATOR_ROOT__ ?? '/orchestrator' + +export const DOCUMENTATION_HOME_PAGE = 'https://docs.devtron.ai' +export const DOCUMENTATION_VERSION = '/v/v0.7' +export const DISCORD_LINK = 'https://discord.devtron.ai/' +export const DOCUMENTATION = { + APP_TAGS: `${DOCUMENTATION_HOME_PAGE}${DOCUMENTATION_VERSION}/usage/applications/create-application#tags`, + APP_OVERVIEW_TAGS: `${DOCUMENTATION_HOME_PAGE}${DOCUMENTATION_VERSION}/usage/applications/overview#manage-tags`, + BLOB_STORAGE: `${DOCUMENTATION_HOME_PAGE}${DOCUMENTATION_VERSION}/getting-started/install/installation-configuration#configuration-of-blob-storage`, + GLOBAL_CONFIG_BUILD_INFRA: `${DOCUMENTATION_HOME_PAGE}${DOCUMENTATION_VERSION}/global-configurations/build-infra`, +} + +export const PATTERNS = { + KUBERNETES_KEY_PREFIX: /^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$/, + KUBERNETES_KEY_NAME: /^(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$/, + START_END_ALPHANUMERIC: /^([Az09].*[A-Za-z0-9])$|[A-Za-z0-9]$/, + ALPHANUMERIC_WITH_SPECIAL_CHAR: /^[A-Za-z0-9._-]+$/, // allow alphanumeric,(.) ,(-),(_) + ESCAPED_CHARACTERS: /[.*+?^${}()|[\]\\]/g, +} + +export const URLS = { + LOGIN_SSO: '/login/sso', + PERMISSION_GROUPS: '/global-config/auth/groups', + APP: '/app', + APP_LIST: 'list', + CHARTS_DISCOVER: '/chart-store/discover', + JOB: '/job', + CREATE_JOB: 'create-job', + GETTING_STARTED: 'getting-started', + STACK_MANAGER_ABOUT: '/stack-manager/about', + APP_LIST_HELM: 'h', + APP_CI_DETAILS: 'ci-details', + LOGS: 'Logs', + CREATE: '/create', + RELEASES: '/releases', + DEVTRON_CHARTS: 'dc', + APP_DEPLOYMNENT_HISTORY: 'deployments', + APP_DETAILS: 'details', + APP_DETAILS_K8: 'k8s-resources', // for V2 + DETAILS: '/details', + CD_DETAILS: 'cd-details', + APP_TRIGGER: 'trigger', + GLOBAL_CONFIG_DOCKER: '/global-config/docker', + DEPLOYMENT_HISTORY_CONFIGURATIONS: '/configuration', + GLOBAL_CONFIG_SCOPED_VARIABLES: '/global-config/scoped-variables', + GLOBAL_CONFIG_DEPLOYMENT_CHARTS_LIST: '/global-config/deployment-charts', + NETWORK_STATUS_INTERFACE: '/network-status-interface', +} + +export const ROUTES = { + APP: 'app', + APP_ARTIFACT_PROMOTE_MATERIAL: 'app/artifact/promotion-request/material', + PROJECT_LIST_MIN: 'team/autocomplete', + USER_CHECK_ROLE: 'user/check/roles', + IMAGE_TAGGING: 'app/image-tagging', + CI_CONFIG_GET: 'app/ci-pipeline', + CD_MATERIAL_GET: 'app/cd-pipeline', + DEPLOYMENT_TEMPLATE_LIST: 'app/template/list', + INFRA_CONFIG_PROFILE: 'infra-config/profile', + SECURITY_SCAN_EXECUTION_DETAILS: 'security/scan/executionDetail', + NOTIFIER: 'notification', + APP_LIST: 'app/list', + TELEMETRY_EVENT: 'telemetry/event', + SERVER_INFO_API: 'server', + ATTRIBUTES_USER: 'attributes/user', + UPDATE: 'update', + ENVIRONMENT_LIST_MIN: 'env/autocomplete', + CLUSTER: 'cluster', + API_RESOURCE: 'k8s/api-resources', + GVK: 'gvk', + NAMESPACE: 'env/namespace', + CLUSTER_NOTE: 'cluster/note', + APPLICATION_NOTE: 'app/note', + GIT_HOST_EVENT: 'git/host/event', + HELM_DEPLOYMENT_STATUS_TIMELINE_INSTALLED_APP: 'app-store/deployment-status/timeline', + DEPLOYMENT_STATUS: 'app/deployment-status/timeline', + MANUAL_SYNC: 'app/deployment-status/manual-sync', + CD_CONFIG: 'app/cd-pipeline', + CONFIG_CD_PIPELINE: 'config/cd-pipeline', + MODULE_CONFIGURED: 'module/config', + RESOURCE_HISTORY_DEPLOYMENT: 'resource/history/deployment', + ATTRIBUTES: 'attributes', + ATTRIBUTES_CREATE: 'attributes/create', + ATTRIBUTES_UPDATE: 'attributes/update', + APP_LIST_MIN: 'app/min', + CLUSTER_LIST_MIN: 'cluster/autocomplete', + PLUGIN_GLOBAL_LIST_DETAIL_V2: 'plugin/global/list/detail/v2', + PLUGIN_GLOBAL_LIST_V2: 'plugin/global/list/v2', + PLUGIN_GLOBAL_LIST_TAGS: 'plugin/global/list/tags', + PLUGIN_LIST_MIN: 'plugin/global/list/v2/min', + DEPLOYMENT_CHARTS_LIST: 'deployment/template/fetch', + USER_LIST_MIN: 'user/list/min', + CONFIG_DATA: 'config/data', +} + +export enum KEY_VALUE { + KEY = 'key', + VALUE = 'value', +} + +export const DEFAULT_TAG_DATA = { + key: '', + value: '', + propagate: false, + isInvalidKey: false, + isInvalidValue: false, + isSuggested: true, +} + +export enum ERROR_STATUS_CODE { + BAD_REQUEST = 400, + UNAUTHORIZED = 401, + PERMISSION_DENIED = 403, + NOT_FOUND = 404, + EXPECTATION_FAILED = 417, + INTERNAL_SERVER_ERROR = 500, + BAD_GATEWAY = 502, + SERVICE_TEMPORARY_UNAVAILABLE = 503, +} + +export const TOAST_ACCESS_DENIED = { + TITLE: 'Access denied', + SUBTITLE: 'You do not have required access to perform this action', +} + +// Empty state messgaes +export const ERROR_EMPTY_SCREEN = { + PAGE_NOT_FOUND: 'Not found', + PAGE_NOT_EXIST: 'Error 404: The requested resource could not be found. Please check the URL and try again.', + TAKE_BACK_HOME: 'Go back home', + REPORT_ISSUE: 'Report issue', + ONLY_FOR_SUPERADMIN: 'Information on this page is available only to superadmin users.', + NOT_AUTHORIZED: 'Not authorized', + REQUIRED_MANAGER_ACCESS: + 'Looks like you don’t have access to information on this page. Please contact your manager to request access.', + BAD_REQUEST: 'Bad request', + BAD_REQUEST_MESSAGE: + 'Error 400: The request could not be understood by the server due to malformed syntax. Please check your request and try again.', + TRY_AGAIN: 'Try again', + UNAUTHORIZED: 'Unauthorized', + UNAUTHORIZED_MESSAGE: + 'Error 401: You are not authorized to access this resource. Please contact your administrator for assistance.', + FORBIDDEN: 'Forbidden', + FORBIDDEN_MESSAGE: + 'Error 403: You are not authorized to access this resource. Please contact your administrator for assistance.', + INTERNAL_SERVER_ERROR: 'Internal server error', + INTERNAL_SERVER_ERROR_MESSAGE: + 'Error 500: The server encountered an unexpected condition that prevented it from fulfilling the request. Please try again later.', + BAD_GATEWAY: 'Bad gateway', + BAD_GATEWAY_MESSAGE: + 'Error 500: The server received an invalid response from an upstream server. Please try again later.', + SERVICE_TEMPORARY_UNAVAILABLE: 'Service temporary unavailable', + SERVICE_TEMPORARY_UNAVAILABLE_MESSAGE: + 'Error 503: The server is currently unable to handle the request due to a temporary overload or maintenance. Please try again later.', +} +export const TOKEN_COOKIE_NAME = 'argocd.token' +export const TriggerTypeMap = { + automatic: 'Auto', + manual: 'Manual', +} + +export const BuildStageVariable = { + PreBuild: 'preBuildStage', + Build: 'buildStage', + PostBuild: 'postBuildStage', +} + +export const REGISTRY_TYPE_MAP: Record = { + ecr: { + value: 'ecr', + label: 'ECR', + desiredFormat: '(desired format: repo-name)', + placeholderText: 'Eg. repo_name', + gettingStartedLink: 'https://docs.aws.amazon.com/AmazonECR/latest/userguide/get-set-up-for-amazon-ecr.html', + defaultRegistryURL: '', + registryURL: { + label: 'Registry URL', + defaultValue: '', + placeholder: 'Eg. xxxxxxxxxxxx.dkr.ecr.region.amazonaws.com', + }, + id: { + label: 'Access key ID', + defaultValue: '', + placeholder: '', + }, + password: { + label: 'Secret access key', + defaultValue: '', + placeholder: '', + }, + startIcon: getContainerRegistryIcon('ecr'), + }, + 'docker-hub': { + value: 'docker-hub', + label: 'Docker', + desiredFormat: '(desired format: username/repo-name)', + placeholderText: 'Eg. username/repo_name', + gettingStartedLink: 'https://docs.docker.com/docker-hub/', + defaultRegistryURL: 'docker.io', + registryURL: { + label: 'Registry URL', + defaultValue: '', + placeholder: '', + }, + id: { + label: 'Username', + defaultValue: '', + placeholder: '', + }, + password: { + label: 'Password/Token (Recommended: Token)', + defaultValue: '', + placeholder: '', + }, + startIcon: getContainerRegistryIcon('docker-hub'), + }, + acr: { + value: 'acr', + label: 'Azure', + desiredFormat: '(desired format: repo-name)', + placeholderText: 'Eg. repo_name', + gettingStartedLink: + 'https://docs.microsoft.com/en-us/azure/container-registry/container-registry-get-started-portal', + defaultRegistryURL: '', + registryURL: { + label: 'Registry URL/Login Server', + defaultValue: '', + placeholder: 'Eg. xxx.azurecr.io', + }, + id: { + label: 'Username/Registry Name', + defaultValue: '', + placeholder: '', + }, + password: { + label: 'Password', + defaultValue: '', + placeholder: '', + }, + startIcon: getContainerRegistryIcon('acr'), + }, + 'artifact-registry': { + value: 'artifact-registry', + label: 'Artifact Registry (GCP)', + desiredFormat: '(desired format: project-id/artifacts-repo/repo-name)', + placeholderText: 'Eg. project-id/artifacts-repo/repo-name', + gettingStartedLink: 'https://cloud.google.com/artifact-registry/docs/manage-repos?hl=en_US', + defaultRegistryURL: '', + registryURL: { + label: 'Registry URL', + defaultValue: '', + placeholder: 'Eg. region-docker.pkg.dev', + }, + id: { + label: 'Username', + defaultValue: '_json_key', + placeholder: '', + }, + password: { + label: 'Service Account JSON File', + defaultValue: '', + placeholder: 'Paste json file content here', + }, + startIcon: getContainerRegistryIcon('artifact-registry'), + }, + gcr: { + value: 'gcr', + label: 'GCR', + desiredFormat: '(desired format: project-id/repo-name)', + placeholderText: 'Eg. project-id/repo_name', + gettingStartedLink: 'https://cloud.google.com/container-registry/docs/quickstart', + defaultRegistryURL: 'gcr.io', + registryURL: { + label: 'Registry URL', + defaultValue: 'gcr.io', + placeholder: '', + }, + id: { + label: 'Username', + defaultValue: '_json_key', + placeholder: '', + }, + password: { + label: 'Service Account JSON File', + defaultValue: '', + placeholder: 'Paste json file content here', + }, + startIcon: getContainerRegistryIcon('gcr'), + }, + quay: { + value: 'quay', + label: 'Quay', + desiredFormat: '(desired format: username/repo-name)', + placeholderText: 'Eg. username/repo_name', + gettingStartedLink: '', + defaultRegistryURL: 'quay.io', + registryURL: { + label: 'Registry URL', + defaultValue: '', + placeholder: '', + }, + id: { + label: 'Username', + defaultValue: '', + placeholder: '', + }, + password: { + label: 'Token', + defaultValue: '', + placeholder: '', + }, + startIcon: getContainerRegistryIcon('quay'), + }, + other: { + value: 'other', + label: 'Other', + desiredFormat: '', + placeholderText: '', + gettingStartedLink: '', + defaultRegistryURL: '', + registryURL: { + label: 'Registry URL', + defaultValue: '', + placeholder: '', + }, + id: { + label: 'Username', + defaultValue: '', + placeholder: '', + }, + password: { + label: 'Password/Token', + defaultValue: '', + placeholder: '', + }, + startIcon: getContainerRegistryIcon('other'), + }, +} + +export const RepositoryAction = { + CONTAINER: 'CONTAINER', + CHART_PULL: 'CHART_PULL', + CHART_PUSH: 'CHART_PUSH', +} + +export enum MODES { + YAML = 'yaml', + JSON = 'json', + SHELL = 'shell', + DOCKERFILE = 'dockerfile', + PLAINTEXT = 'plaintext', +} + +// The values are going to be part of route that's why they may contain - +export enum APPROVAL_MODAL_TYPE { + CONFIG = 'CONFIG', + DEPLOYMENT = 'DEPLOYMENT', + IMAGE_PROMOTION = 'IMAGE-PROMOTION', +} +export const MAX_Z_INDEX = 2147483647 + +export const SELECTED_APPROVAL_TAB_STATE = { + APPROVAL: 'approval', + PENDING: 'pending', +} + +export enum SortingOrder { + /** + * Ascending order + */ + ASC = 'ASC', + /** + * Descending order + */ + DESC = 'DESC', +} + +/** + * Base page size for pagination + */ +export const DEFAULT_BASE_PAGE_SIZE = 20 + +/** + * Deployment Window + */ +export enum MODAL_TYPE { + HIBERNATE = 'HIBERNATE', + UNHIBERNATE = 'UNHIBERNATE', + RESTORE = 'RESTORE', + DEPLOY = 'DEPLOY', + RESOURCE = 'RESOURCE', + RESTART = 'RESTART', + PIPELINE = 'PIPELINE', + OVERVIEW = 'OVERVIEW', + APP_DETAILS_STATUS = 'APP_DETAILS_STATUS', +} + +export enum ACTION_STATE { + ALLOWED = 'ALLOWED', + PARTIAL = 'PARTIAL', + BLOCKED = 'BLOCKED', +} + +export enum DEPLOYMENT_WINDOW_TYPE { + MAINTENANCE = 'MAINTENANCE', + BLACKOUT = 'BLACKOUT', +} +export const arrowUnicode = '\u279d' + +export enum WEEK_DAYS_ENUM { + SUNDAY = 'SUNDAY', + MONDAY = 'MONDAY', + TUESDAY = 'TUESDAY', + WEDNESDAY = 'WEDNESDAY', + THURSDAY = 'THURSDAY', + FRIDAY = 'FRIDAY', + SATURDAY = 'SATURDAY', +} + +export enum FREQUENCY_ENUM { + FIXED = 'FIXED', + DAILY = 'DAILY', + WEEKLY = 'WEEKLY', + MONTHLY = 'MONTHLY', + YEARLY = 'YEARLY', + WEEKLY_RANGE = 'WEEKLY_RANGE', +} + +export function getOrdinal(number) { + if (number % 100 >= 11 && number % 100 <= 13) { + return `${number}th` + } + switch (number % 10) { + case 1: + return `${number}st` + case 2: + return `${number}nd` + case 3: + return `${number}rd` + default: + return `${number}th` + } +} + +export const TIME_HOUR_SUFFIX_FOR_12_HOUR_FORMAT = { + AM: 'AM', + PM: 'PM', + MIDNIGHT: 'midnight', + NOON: 'noon', +} + +export const getTimeStampAMPMSuffix = (time: string): string => { + // time is in format HH:mm 24hr format + const [hoursStr, minutesStr] = time.split(':') + const hours = parseInt(hoursStr, 10) + const minutes = parseInt(minutesStr, 10) + + if (hours === 12 && minutes === 0) { + return TIME_HOUR_SUFFIX_FOR_12_HOUR_FORMAT.NOON + } + if (hours === 0 && minutes === 0) { + return TIME_HOUR_SUFFIX_FOR_12_HOUR_FORMAT.MIDNIGHT + } + if (hours >= 12) { + return TIME_HOUR_SUFFIX_FOR_12_HOUR_FORMAT.PM + } + return TIME_HOUR_SUFFIX_FOR_12_HOUR_FORMAT.AM +} + +export enum ReactSelectInputAction { + inputChange = 'input-change', + selectOption = 'select-option', + deselectOption = 'deselect-option', + removeValue = 'remove-value', +} + +export const ZERO_TIME_STRING = '0001-01-01T00:00:00Z' + +// Excluding 0 from this list as 0 is a valid value +export const EXCLUDED_FALSY_VALUES = [undefined, null, '', NaN] as const + +export const API_STATUS_CODES = { + OK: 200, + NO_CONTENT: 204, + BAD_REQUEST: 400, + UNAUTHORIZED: 401, + PERMISSION_DENIED: 403, + NOT_FOUND: 404, + EXPECTATION_FAILED: 417, +} + +export enum SERVER_MODE { + EA_ONLY = 'EA_ONLY', + FULL = 'FULL', +} + +export const POSTHOG_EVENT_ONBOARDING = { + PREVIEW: 'Preview', + DEPLOY_CUSTOM_APP_CI_CD: 'Deploy custom app using CI/CD pipelines', + INSTALL_CUSTOM_CI_CD: 'Install CI/CD', + VIEW_APPLICATION: 'View helm application', + BROWSE_HELM_CHART: 'Browse helm chart', + CONNECT_CLUSTER: 'Connect cluster', + CONNECT_CHART_REPOSITORY: 'Connect chart repository', + TOOLTIP_OKAY: 'Tooltip okay', + TOOLTIP_DONT_SHOW_AGAIN: 'Tooltip Dont show again', + HELP: 'Clicked Help', + SKIP_AND_EXPLORE_DEVTRON: 'SkippedOnboarding', +} +export const MAX_LOGIN_COUNT = 5 +export const LOGIN_COUNT = 'login-count' +export const DEFAULT_ENV = 'devtron-ci' + +export const DATE_TIME_FORMATS = { + TWELVE_HOURS_FORMAT: 'ddd, DD MMM YYYY, hh:mm A', + TWELVE_HOURS_FORMAT_WITHOUT_WEEKDAY: 'DD MMM YYYY, hh:mm A', + TWELVE_HOURS_EXPORT_FORMAT: 'DD-MMM-YYYY hh.mm A', + DD_MMM_YYYY_HH_MM: 'DD MMM YYYY, hh:mm', + DD_MMM_YYYY: 'DD MMM YYYY', +} + +export const SEMANTIC_VERSION_DOCUMENTATION_LINK = 'https://semver.org/' + +export const VULNERABILITIES_SORT_PRIORITY = { + critical: 1, + high: 2, + medium: 3, + low: 4, + unknown: 5, +} + +// TODO: might not work need to verify +export const IS_PLATFORM_MAC_OS = window.navigator.userAgent.toUpperCase().includes('MAC') diff --git a/packages/devtron-fe-common-lib/src/Common/CustomInput/CustomInput.tsx b/packages/devtron-fe-common-lib/src/Common/CustomInput/CustomInput.tsx new file mode 100644 index 0000000000..00c71316fe --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Common/CustomInput/CustomInput.tsx @@ -0,0 +1,156 @@ +/* + * Copyright (c) 2024. Devtron Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { CustomInputProps } from './Types' +import { ReactComponent as Info } from '../../Assets/Icon/ic-info-filled-override.svg' +import { ReactComponent as ErrorIcon } from '../../Assets/Icon/ic-warning.svg' +import { useEffect, useRef } from 'react' + +export const CustomInput = ({ + name, + value, + error, + onChange, + onFocus = (e) => {}, + label, + type = 'text', + disabled = false, + labelClassName = '', + placeholder = '', + tabIndex = 0, + dataTestid = '', + isRequiredField = false, + autoFocus = false, + rootClassName = '', + autoComplete = 'off', + helperText = '', + onBlur, + readOnly = false, + noTrim = false, + onKeyPress, + defaultValue, + onKeyDown, + required, + additionalErrorInfo, + inputWrapClassName = '', + inputProps = {}, +}: CustomInputProps) => { + const inputRef = useRef() + + useEffect(() => { + setTimeout(() => { + // Added timeout to ensure the autofocus code is executed post the re-renders + if (inputRef.current && autoFocus) { + inputRef.current.focus() + } + }, 100) + }, [autoFocus]) + + function handleError(error: any): any[] { + if (!Array.isArray(error)) { + return [error] + } + return error + } + + const handleOnBlur = (event) => { + // NOTE: This is to prevent the input from being trimmed when the user do not want to trim the input + if (!noTrim) { + event.stopPropagation() + event.target.value = event.target.value?.trim() + onChange(event) + } + if (typeof onBlur === 'function') { + onBlur(event) + } + } + + const renderFormErrorWithIcon = (error: string) => ( +
+ + {error} + {error && typeof additionalErrorInfo === 'function' && additionalErrorInfo()} +
+ ) + + const getInputError = () => { + if (!error?.length) { + return null + } + if (typeof error === 'object') { + return handleError(error).map((err: string) => renderFormErrorWithIcon(err)) + } + return renderFormErrorWithIcon(error) + } + + const renderInputLabelConditionally = () => { + if (typeof label === 'string') { + return {label} + } + return label + } + + const renderInputLabel = () => { + if (!label) { + return null + } + return ( + + ) + } + + return ( +
+ {renderInputLabel()} + { + e.persist() + onChange(e) + }} + onBlur={handleOnBlur} + onFocus={onFocus} + placeholder={placeholder} + value={value} + disabled={disabled} + tabIndex={tabIndex} + autoFocus={autoFocus} + readOnly={readOnly} + onKeyPress={onKeyPress} + defaultValue={defaultValue} + onKeyDown={onKeyDown} + required={required} + // Will be passing other props like other data attributes etc from inputProps + {...inputProps} + ref={inputRef} + /> + + {getInputError()} + {helperText && ( +
+ +
{helperText}
+
+ )} +
+ ) +} diff --git a/packages/devtron-fe-common-lib/src/Common/CustomInput/Types.ts b/packages/devtron-fe-common-lib/src/Common/CustomInput/Types.ts new file mode 100644 index 0000000000..e310bf1c17 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Common/CustomInput/Types.ts @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2024. Devtron Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React, { HTMLInputTypeAttribute, InputHTMLAttributes, ReactNode } from 'react' + +export interface CustomInputProps { + name: string + value: string | number + onChange: (e: any) => void + onFocus?: (e: any) => void + autoComplete?: string + label?: string | React.ReactNode + labelClassName?: string + type?: HTMLInputTypeAttribute + disabled?: boolean + placeholder?: string + tabIndex?: number + dataTestid?: string + isRequiredField?: boolean + autoFocus?: boolean + rootClassName?: string + error?: string[] | string + helperText?: ReactNode + onBlur?: (e) => void + readOnly?: boolean + noTrim?: boolean + onKeyPress?: (e) => void + defaultValue?: string | number | ReadonlyArray | undefined + onKeyDown?: (e) => void + required?: boolean + additionalErrorInfo?: React.ReactNode + inputWrapClassName?: string + inputProps?: InputHTMLAttributes +} diff --git a/packages/devtron-fe-common-lib/src/Common/CustomInput/index.ts b/packages/devtron-fe-common-lib/src/Common/CustomInput/index.ts new file mode 100644 index 0000000000..c865270b5d --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Common/CustomInput/index.ts @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2024. Devtron Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export * from './CustomInput' +export * from './Types' diff --git a/packages/devtron-fe-common-lib/src/Common/CustomTagSelector/PropagateTagInfo.tsx b/packages/devtron-fe-common-lib/src/Common/CustomTagSelector/PropagateTagInfo.tsx new file mode 100644 index 0000000000..11497437d1 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Common/CustomTagSelector/PropagateTagInfo.tsx @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2024. Devtron Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from 'react' +import { ReactComponent as InjectTag } from '../../Assets/Icon/inject-tag.svg' +import { ReactComponent as ICHelpOutline } from '../../Assets/Icon/ic-help-outline.svg' +import { TippyCustomized } from '../TippyCustomized' +import { TippyTheme } from '../Types' +import { DOCUMENTATION } from '../Constants' + +export default function PropagateTagInfo({ isCreateApp }: { isCreateApp: boolean }) { + const additionalInfo = () => ( +
+
+ + Add a tag and click on the + + icon to + + propagate tags as labels to Kubernetes resources +
+
Use these tags to filter/identify resources via CLI or in other Kubernetes tools.
+
+ ) + return ( + +
+ + Propagate tags + +
+
+ ) +} diff --git a/packages/devtron-fe-common-lib/src/Common/CustomTagSelector/ResizableTagTextArea.tsx b/packages/devtron-fe-common-lib/src/Common/CustomTagSelector/ResizableTagTextArea.tsx new file mode 100644 index 0000000000..c0e381bae7 --- /dev/null +++ b/packages/devtron-fe-common-lib/src/Common/CustomTagSelector/ResizableTagTextArea.tsx @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2024. Devtron Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React, { useEffect, useState } from 'react' +import { useThrottledEffect } from '../Helper' +import { ResizableTagTextAreaProps } from './Types' + +export const ResizableTagTextArea = ({ + className, + minHeight, + maxHeight, + value, + onChange, + onBlur, + onFocus, + placeholder, + tabIndex, + refVar, + dependentRef, + dataTestId, + handleKeyDown, + disabled, + disableOnBlurResizeToMinHeight, +}: ResizableTagTextAreaProps) => { + const [text, setText] = useState('') + + useEffect(() => { + setText(value) + }, [value]) + + const handleChange = (event) => { + setText(event.target.value) + onChange?.(event) + } + + const reInitHeight = () => { + if (document.activeElement !== refVar.current) return + refVar.current.style.height = `${minHeight}px` + if (dependentRef) { + dependentRef.current.style.height = `${minHeight}px` + } + let nextHeight = refVar.current.scrollHeight + if (dependentRef && nextHeight < dependentRef.current.scrollHeight) { + nextHeight = dependentRef.current.scrollHeight + } + if (minHeight && nextHeight < minHeight) { + nextHeight = minHeight + } + if (maxHeight && nextHeight > maxHeight) { + nextHeight = maxHeight + } + refVar.current.style.height = `${nextHeight}px` + if (dependentRef) { + dependentRef.current.style.height = `${nextHeight}px` + } + } + + useThrottledEffect(reInitHeight, 500, [text]) + + const handleOnBlur = (event) => { + if (!disableOnBlurResizeToMinHeight) { + refVar.current.style.height = `${minHeight}px` + if (dependentRef) { + dependentRef.current.style.height = `${minHeight}px` + } + } + onBlur && onBlur(event) + } + + const handleOnFocus = (event) => { + reInitHeight() + onFocus && onFocus(event) + } + + return ( +