diff --git a/.eslintignore b/.eslintignore
index 9ff40a0db..0adc76113 100755
--- a/.eslintignore
+++ b/.eslintignore
@@ -21,7 +21,6 @@ src/Common/DebouncedSearch/DebouncedSearch.tsx
src/Common/DebouncedSearch/Utils.ts
src/Common/DebouncedSearch/__tests__/DebouncedSearch.test.tsx
src/Common/DevtronProgressing/DevtronProgressing.tsx
-src/Common/Dialogs/ConfirmationDialog.tsx
src/Common/Dialogs/DialogForm.tsx
src/Common/DraggableWrapper/DraggableButton.tsx
src/Common/DraggableWrapper/DraggableWrapper.tsx
@@ -56,5 +55,4 @@ 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/package-lock.json b/package-lock.json
index 41d779777..06ebf6472 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@devtron-labs/devtron-fe-common-lib",
- "version": "1.15.2",
+ "version": "1.16.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@devtron-labs/devtron-fe-common-lib",
- "version": "1.15.2",
+ "version": "1.16.0",
"hasInstallScript": true,
"license": "ISC",
"dependencies": {
@@ -79,7 +79,7 @@
"sharp": "^0.33.5",
"svgo": "^3.3.2",
"typescript": "5.5.4",
- "vite": "5.4.17",
+ "vite": "5.4.19",
"vite-plugin-dts": "4.0.3",
"vite-plugin-image-optimizer": "^1.1.8",
"vite-plugin-lib-inject-css": "2.1.1",
@@ -12025,9 +12025,9 @@
}
},
"node_modules/vite": {
- "version": "5.4.17",
- "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.17.tgz",
- "integrity": "sha512-5+VqZryDj4wgCs55o9Lp+p8GE78TLVg0lasCH5xFZ4jacZjtqZa6JUw9/p0WeAojaOfncSM6v77InkFPGnvPvg==",
+ "version": "5.4.19",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.19.tgz",
+ "integrity": "sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==",
"dev": true,
"dependencies": {
"esbuild": "^0.21.3",
diff --git a/package.json b/package.json
index 1f261ba7c..ffa5ad287 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@devtron-labs/devtron-fe-common-lib",
- "version": "1.15.2",
+ "version": "1.16.0",
"description": "Supporting common component library",
"type": "module",
"main": "dist/index.js",
@@ -72,7 +72,7 @@
"sharp": "^0.33.5",
"svgo": "^3.3.2",
"typescript": "5.5.4",
- "vite": "5.4.17",
+ "vite": "5.4.19",
"vite-plugin-dts": "4.0.3",
"vite-plugin-image-optimizer": "^1.1.8",
"vite-plugin-lib-inject-css": "2.1.1",
@@ -135,7 +135,7 @@
"react-dom": "^17.0.2"
},
"vite-plugin-svgr": {
- "vite": "5.4.17"
+ "vite": "5.4.19"
},
"react-virtualized-sticky-tree": {
"react": "^17.0.2",
diff --git a/src/Assets/IconV2/ic-add.svg b/src/Assets/IconV2/ic-add.svg
index e64db2edf..52bbbdea8 100644
--- a/src/Assets/IconV2/ic-add.svg
+++ b/src/Assets/IconV2/ic-add.svg
@@ -1,19 +1,3 @@
-
-
+
+
\ No newline at end of file
diff --git a/src/Assets/IconV2/ic-asterisk.svg b/src/Assets/IconV2/ic-asterisk.svg
new file mode 100644
index 000000000..1d2205af4
--- /dev/null
+++ b/src/Assets/IconV2/ic-asterisk.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/src/Assets/IconV2/ic-brain.svg b/src/Assets/IconV2/ic-brain.svg
new file mode 100644
index 000000000..a5ff6cc35
--- /dev/null
+++ b/src/Assets/IconV2/ic-brain.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/src/Assets/IconV2/ic-cluster-isolated.svg b/src/Assets/IconV2/ic-cluster-isolated.svg
new file mode 100644
index 000000000..24a017f32
--- /dev/null
+++ b/src/Assets/IconV2/ic-cluster-isolated.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/src/Assets/IconV2/ic-cluster.svg b/src/Assets/IconV2/ic-cluster.svg
index f6aea37fd..8bc0567ac 100644
--- a/src/Assets/IconV2/ic-cluster.svg
+++ b/src/Assets/IconV2/ic-cluster.svg
@@ -1,3 +1,3 @@
diff --git a/src/Assets/IconV2/ic-devtron-ai.svg b/src/Assets/IconV2/ic-devtron-ai.svg
new file mode 100644
index 000000000..ba63770be
--- /dev/null
+++ b/src/Assets/IconV2/ic-devtron-ai.svg
@@ -0,0 +1,287 @@
+
diff --git a/src/Assets/IconV2/ic-environment-isolated.svg b/src/Assets/IconV2/ic-environment-isolated.svg
new file mode 100644
index 000000000..17e3d98c6
--- /dev/null
+++ b/src/Assets/IconV2/ic-environment-isolated.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/src/Assets/IconV2/ic-environment.svg b/src/Assets/IconV2/ic-environment.svg
new file mode 100644
index 000000000..3a34316c3
--- /dev/null
+++ b/src/Assets/IconV2/ic-environment.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/Assets/IconV2/ic-folder-color.svg b/src/Assets/IconV2/ic-folder-color.svg
new file mode 100644
index 000000000..198f8b239
--- /dev/null
+++ b/src/Assets/IconV2/ic-folder-color.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/Assets/IconV2/ic-minus.svg b/src/Assets/IconV2/ic-minus.svg
new file mode 100644
index 000000000..c3e3d3831
--- /dev/null
+++ b/src/Assets/IconV2/ic-minus.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/src/Assets/IconV2/ic-openai.svg b/src/Assets/IconV2/ic-openai.svg
new file mode 100644
index 000000000..685e4a394
--- /dev/null
+++ b/src/Assets/IconV2/ic-openai.svg
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/src/Assets/IconV2/ic-paper-plane.svg b/src/Assets/IconV2/ic-paper-plane.svg
new file mode 100644
index 000000000..f0015526d
--- /dev/null
+++ b/src/Assets/IconV2/ic-paper-plane.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/Assets/IconV2/ic-shapes.svg b/src/Assets/IconV2/ic-shapes.svg
new file mode 100644
index 000000000..520e2c4e3
--- /dev/null
+++ b/src/Assets/IconV2/ic-shapes.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/Assets/IconV2/ic-sparkle-ai-color.svg b/src/Assets/IconV2/ic-sparkle-ai-color.svg
new file mode 100644
index 000000000..316cc9cbb
--- /dev/null
+++ b/src/Assets/IconV2/ic-sparkle-ai-color.svg
@@ -0,0 +1,11 @@
+
\ No newline at end of file
diff --git a/src/Assets/IconV2/ic-sparkle-color.svg b/src/Assets/IconV2/ic-sparkle-color.svg
index a2aa5c5d3..5629a5d5a 100644
--- a/src/Assets/IconV2/ic-sparkle-color.svg
+++ b/src/Assets/IconV2/ic-sparkle-color.svg
@@ -1 +1,18 @@
-
\ No newline at end of file
+
diff --git a/src/Assets/IconV2/ic-stop-fill.svg b/src/Assets/IconV2/ic-stop-fill.svg
new file mode 100644
index 000000000..c87806663
--- /dev/null
+++ b/src/Assets/IconV2/ic-stop-fill.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/Assets/Icon/ic-view-variable-toggle.svg b/src/Assets/IconV2/ic-view-variable-toggle.svg
similarity index 100%
rename from src/Assets/Icon/ic-view-variable-toggle.svg
rename to src/Assets/IconV2/ic-view-variable-toggle.svg
diff --git a/src/Assets/IconV2/ic-world-globe.svg b/src/Assets/IconV2/ic-world-globe.svg
new file mode 100644
index 000000000..321dbdffd
--- /dev/null
+++ b/src/Assets/IconV2/ic-world-globe.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/Common/Constants.ts b/src/Common/Constants.ts
index e0de61a42..a5a013b75 100644
--- a/src/Common/Constants.ts
+++ b/src/Common/Constants.ts
@@ -23,6 +23,7 @@ export const DOCUMENTATION_VERSION = '/devtron/v0.7'
export const DISCORD_LINK = 'https://discord.devtron.ai/'
export const DEFAULT_JSON_SCHEMA_URI = 'https://json-schema.org/draft/2020-12/schema'
export const LICENSE_DASHBOARD_HOME_PAGE = 'https://license.devtron.ai/dashboard'
+export const DEVTRON_GPT_LINK = 'https://chatgpt.com/g/g-6826efa4362c8191b23e7bfa0ac036db-devtron-expert'
export const PATTERNS = {
STRING: /^[a-zA-Z0-9_]+$/,
@@ -79,6 +80,7 @@ export const URLS = {
COMPARE_CLUSTERS: '/compare-clusters',
APP_CONFIG: 'edit',
GLOBAL_CONFIG: '/global-config',
+ GLOBAL_CONFIG_MANAGE_CATEGORIES: '/global-config/cluster-env/manage-categories',
GLOBAL_CONFIG_TEMPLATES_DEVTRON_APP,
GLOBAL_CONFIG_TEMPLATES_DEVTRON_APP_CREATE: `${GLOBAL_CONFIG_TEMPLATES_DEVTRON_APP}/create`,
// NOTE: using appId since we are re-using AppConfig component
@@ -90,6 +92,7 @@ export const ROUTES = {
APP: 'app',
APP_ARTIFACT_PROMOTE_MATERIAL: 'app/artifact/promotion-request/material',
APP_TEMPLATE_DATA: 'app/template/data',
+ ENVIRONMENT_CATEGORIES: 'env/categories',
PROJECT_LIST_MIN: 'team/autocomplete',
USER_CHECK_ROLE: 'user/check/roles',
IMAGE_TAGGING: 'app/image-tagging',
diff --git a/src/Common/Dialogs/ConfirmationDialog.tsx b/src/Common/Dialogs/ConfirmationDialog.tsx
deleted file mode 100644
index 9099e11b9..000000000
--- a/src/Common/Dialogs/ConfirmationDialog.tsx
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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 { stopPropagation } from '@Common/Helper'
-import { VisibleModal2 } from '../Modals/VisibleModal2'
-import {
- ConfirmationDialogBodyType,
- ConfirmationDialogButtonGroupType,
- ConfirmationDialogIconType,
- ConfirmationDialogType,
-} from './Types'
-
-/**
- * @deprecated use confirmation modal instead
- */
-const ConfirmationDialog = ({ className = '', children, close }: ConfirmationDialogType) => (
-
- {children}
-
-)
-
-const Icon = ({ src, className = '' }: ConfirmationDialogIconType) => (
-
-)
-
-const Body = ({ title, subtitle = null, children = null }: ConfirmationDialogBodyType) => (
-
-
{title}
- {subtitle &&
{subtitle}
}
- {children}
-
-)
-
-const ButtonGroup = ({ children }: ConfirmationDialogButtonGroupType) => (
- {children}
-)
-
-ConfirmationDialog.Icon = Icon
-ConfirmationDialog.Body = Body
-ConfirmationDialog.ButtonGroup = ButtonGroup
-export default ConfirmationDialog
diff --git a/src/Common/Dialogs/Types.ts b/src/Common/Dialogs/Types.ts
index 088f0fc53..14270f4d5 100644
--- a/src/Common/Dialogs/Types.ts
+++ b/src/Common/Dialogs/Types.ts
@@ -53,23 +53,7 @@ export interface ForceDeleteDialogType {
forceDeleteDialogTitle: string
forceDeleteDialogMessage: string
}
-export interface ConfirmationDialogType {
- className?: string
- children: any
- close?: (e) => void
-}
-export interface ConfirmationDialogIconType {
- src: string
- className?: string
-}
-export interface ConfirmationDialogBodyType {
- title: string
- subtitle?: ReactNode
- children?: any
-}
-export interface ConfirmationDialogButtonGroupType {
- children: any
-}
+
export interface DialogFormProps {
className: string
title: string
diff --git a/src/Common/Dialogs/index.ts b/src/Common/Dialogs/index.ts
index 0bd30979d..dbd6587a0 100644
--- a/src/Common/Dialogs/index.ts
+++ b/src/Common/Dialogs/index.ts
@@ -14,5 +14,4 @@
* limitations under the License.
*/
-export { default as ConfirmationDialog } from './ConfirmationDialog'
export * from './DialogForm'
diff --git a/src/Common/InfoColorBar/InfoColourbar.tsx b/src/Common/InfoColorBar/InfoColourbar.tsx
deleted file mode 100644
index 286e43793..000000000
--- a/src/Common/InfoColorBar/InfoColourbar.tsx
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * 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 { Link } from 'react-router-dom'
-import { InfoColourBarType } from '../Types'
-import { Tooltip } from '@Common/Tooltip'
-import { Button } from '@Shared/Components'
-import './infoColourBar.scss'
-
-/**
- * @deprecated Use InfoBlock instead
- */
-const InfoColourBar = ({
- message,
- classname,
- Icon,
- iconClass,
- iconSize,
- renderActionButton,
- linkText,
- redirectLink,
- linkOnClick,
- linkClass,
- internalLink,
- styles,
- hideIcon = false,
- textConfig,
-}: InfoColourBarType) => {
- const renderLink = () => {
- if (!linkText) {
- return null
- }
- if (redirectLink) {
- if (internalLink) {
- return (
-
- {linkText}
-
- )
- }
-
- return (
-
- {linkText}
-
- )
- }
-
- return (
- linkOnClick && (
-
- {linkText}
-
- )
- )
- }
-
- const renderMessageWrapper = () => {
- if (textConfig) {
- const { heading, description, actionButtonConfig } = textConfig
-
- return (
-
-
- {heading &&
{heading}
}
-
-
- {description}
-
-
-
- {actionButtonConfig && (
-
- )}
-
- )
- }
-
- return (
-
- {message}
- {renderLink()}
-
- )
- }
-
- return (
-
-
-
- {!hideIcon && (
-
-
-
- )}
- {renderMessageWrapper()}
-
- {typeof renderActionButton === 'function' && renderActionButton()}
-
-
- )
-}
-
-export default InfoColourBar
diff --git a/src/Common/Pagination/Pagination.tsx b/src/Common/Pagination/Pagination.tsx
index 2cf59a30e..6304f4eb3 100644
--- a/src/Common/Pagination/Pagination.tsx
+++ b/src/Common/Pagination/Pagination.tsx
@@ -16,6 +16,9 @@
import { useEffect, useState } from 'react'
+import { Button, ButtonVariantType, Icon } from '@Shared/Components'
+import { ComponentSizeType } from '@Shared/constants'
+
import PageSizeSelector from './PageSizeSelector'
import { Page, PageValueItemProps, PaginationProps } from './types'
import { createPageArr } from './utils'
@@ -88,20 +91,17 @@ const Pagination = ({
{offset + 1} - {lastPageNo} of {size}
-