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} -