@devtron-labs/devtron-fe-common-lib 1.20.3-pre-6 → 1.20.3-pre-7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/{@code-editor-BNIQ_Y3I.js → @code-editor-C-tgb5Wa.js} +8097 -7831
  2. package/dist/{@common-rjsf-t5im4iIr.js → @common-rjsf-B-hpOm7U.js} +15 -15
  3. package/dist/{@framer-motion-D-YaCAW-.js → @framer-motion-CyE9ZrhW.js} +1 -1
  4. package/dist/{@react-dates-Bo3yT8LF.js → @react-dates-DZKuosYz.js} +1 -1
  5. package/dist/{@react-select-DTi_5fIc.js → @react-select-D2LpysD2.js} +1 -1
  6. package/dist/{@react-virtualized-sticky-tree-CuvDiqTo.js → @react-virtualized-sticky-tree-ok_G4gcR.js} +1 -1
  7. package/dist/{@vendor-DMIFbFhR.js → @vendor-DwGKptu5.js} +14520 -14362
  8. package/dist/Common/API/CoreAPI.d.ts +1 -6
  9. package/dist/Common/API/index.d.ts +1 -1
  10. package/dist/Common/Common.service.d.ts +2 -1
  11. package/dist/Common/Constants.d.ts +1 -5
  12. package/dist/Common/Types.d.ts +26 -1
  13. package/dist/Pages/ResourceBrowser/ResourceBrowser.Types.d.ts +3 -3
  14. package/dist/Pages-Devtron-2.0/ApplicationManagement/Shared/index.d.ts +1 -1
  15. package/dist/Pages-Devtron-2.0/InfrastructureManagement/Shared/index.d.ts +0 -1
  16. package/dist/Shared/Components/ActionMenu/useActionMenu.hook.d.ts +1 -1
  17. package/dist/Shared/Components/Charts/index.d.ts +1 -0
  18. package/dist/Shared/Components/Charts/types.d.ts +13 -3
  19. package/dist/Shared/Components/Charts/utils.d.ts +5 -2
  20. package/dist/Shared/Components/ClusterStatusIcon/ClusterStatusIcon.d.ts +3 -0
  21. package/dist/Shared/Components/ClusterStatusIcon/index.d.ts +1 -0
  22. package/dist/Shared/Components/ClusterStatusIcon/types.d.ts +5 -0
  23. package/dist/Shared/Components/ClusterStatusIcon/utils.d.ts +2 -0
  24. package/dist/Shared/Components/ConfirmationModal/ForceDeleteConfirmationModal.d.ts +1 -1
  25. package/dist/Shared/Components/ConfirmationModal/types.d.ts +1 -1
  26. package/dist/Shared/Components/DocLink/constants.d.ts +1 -0
  27. package/dist/Shared/Components/ExportToCsv/ExportToCsv.d.ts +3 -0
  28. package/dist/Shared/Components/ExportToCsv/ExportToCsvDialog.d.ts +3 -0
  29. package/dist/Shared/Components/ExportToCsv/index.d.ts +2 -0
  30. package/dist/Shared/Components/ExportToCsv/types.d.ts +64 -0
  31. package/dist/Shared/Components/Icon/Icon.d.ts +7 -14
  32. package/dist/Shared/Components/Icon/types.d.ts +1 -1
  33. package/dist/Shared/Components/Illustration/Illustration.d.ts +1 -0
  34. package/dist/Shared/Components/Table/types.d.ts +6 -4
  35. package/dist/Shared/Components/index.d.ts +2 -0
  36. package/dist/Shared/Helpers.d.ts +1 -0
  37. package/dist/assets/ic-arrow-line-down.b6a98848.svg +3 -0
  38. package/dist/assets/{ic-bg-build.7de825b3.svg → ic-bg-build.8609d0ea.svg} +1 -1
  39. package/dist/assets/{ic-bg-production-pipelines.5965401c.svg → ic-bg-production-pipelines.2951cdc0.svg} +3 -2
  40. package/dist/assets/ic-bg-webhook.b455152d.svg +13 -0
  41. package/dist/assets/ic-edit-lines.57927b07.svg +3 -0
  42. package/dist/assets/ic-gift-animated.d848dfa3.svg +1 -0
  43. package/dist/assets/{ic-graph-negative.d49ba2b7.svg → ic-priority-medium-fill.7bab0ff8.svg} +2 -2
  44. package/dist/assets/ic-ratings.a1d31244.svg +13 -0
  45. package/dist/assets/ic-success-blue.7b3a2720.svg +4 -0
  46. package/dist/assets/img-devtron-freemium.d0657c61.webp +0 -0
  47. package/dist/index.d.ts +0 -1
  48. package/dist/index.js +1003 -1018
  49. package/package.json +3 -1
  50. package/dist/Pages-Devtron-2.0/ApplicationManagement/Shared/PageHeader/PageHeader.d.ts +0 -1
  51. package/dist/Pages-Devtron-2.0/ApplicationManagement/Shared/PageHeader/constants.d.ts +0 -2
  52. package/dist/Pages-Devtron-2.0/ApplicationManagement/Shared/PageHeader/index.d.ts +0 -1
  53. package/dist/Pages-Devtron-2.0/ApplicationManagement/Shared/PageHeader/types.d.ts +0 -12
  54. package/dist/Pages-Devtron-2.0/ApplicationManagement/Shared/PageHeader/utils.d.ts +0 -2
  55. package/dist/Shared/Components/SelectPicker/GroupedFilterSelectPicker.example.d.ts +0 -0
  56. package/dist/assets/ic-bulb.3906a732.svg +0 -7
  57. package/dist/assets/ic-circle-progress.0875625d.svg +0 -6
  58. package/dist/assets/ic-dot-circle.5ce1fccf.svg +0 -3
  59. package/dist/assets/ic-failure-color.e167df98.svg +0 -4
  60. package/dist/assets/ic-piggybank.3a4839d7.svg +0 -3
  61. package/dist/assets/ic-priority-high-fill.53755d8f.svg +0 -3
  62. package/dist/assets/ic-priority-low-fill.79e781ae.svg +0 -4
  63. package/dist/assets/ic-priority-medium-fill.9abcdc4e.svg +0 -4
  64. package/dist/assets/ic-priority-urgent-fill.78d42fa0.svg +0 -10
  65. package/dist/assets/ic-red-bulb.25e01bfc.svg +0 -9
  66. package/dist/assets/ic-spider.99b77bd8.svg +0 -3
  67. package/dist/assets/ic-vector.4530b03c.svg +0 -3
  68. /package/dist/Pages-Devtron-2.0/{InfrastructureManagement → ApplicationManagement}/Shared/ApplicationManagementIcon/ApplicationManagementIcon.d.ts +0 -0
  69. /package/dist/Pages-Devtron-2.0/{InfrastructureManagement → ApplicationManagement}/Shared/ApplicationManagementIcon/index.d.ts +0 -0
  70. /package/dist/Pages-Devtron-2.0/{InfrastructureManagement → ApplicationManagement}/Shared/ApplicationManagementIcon/utils.d.ts +0 -0
@@ -6,12 +6,6 @@ declare class CoreAPI {
6
6
  host: string;
7
7
  timeout: number;
8
8
  constructor({ handleLogout, host, timeout, handleRedirectToLicenseActivation }: CoreAPIConstructorParamsType);
9
- /**
10
- * Constructs the final URL by detecting service paths and applying appropriate routing
11
- * @param url - The endpoint URL
12
- * @returns The final URL with correct base path
13
- */
14
- private constructUrl;
15
9
  private fetchAPI;
16
10
  /**
17
11
  * Merges multiple AbortSignals into a single AbortSignal that aborts
@@ -30,5 +24,6 @@ declare class CoreAPI {
30
24
  patch: <T = any, K = object>(url: string, data: K, options?: APIOptions) => Promise<ResponseType<T>>;
31
25
  get: <T = any>(url: string, options?: APIOptions) => Promise<ResponseType<T>>;
32
26
  trash: <T = any, K = object>(url: string, data?: K, options?: APIOptions) => Promise<ResponseType<T>>;
27
+ setGlobalAPITimeout: (timeout: number) => void;
33
28
  }
34
29
  export default CoreAPI;
@@ -1,4 +1,4 @@
1
- export declare const post: <T = any, K = object>(url: string, data: K, options?: import('..').APIOptions, isMultipartRequest?: boolean) => Promise<import('..').ResponseType<T>>, put: <T = any, K = object>(url: string, data: K, options?: import('..').APIOptions) => Promise<import('..').ResponseType<T>>, patch: <T = any, K = object>(url: string, data: K, options?: import('..').APIOptions) => Promise<import('..').ResponseType<T>>, get: <T = any>(url: string, options?: import('..').APIOptions) => Promise<import('..').ResponseType<T>>, trash: <T = any, K = object>(url: string, data?: K, options?: import('..').APIOptions) => Promise<import('..').ResponseType<T>>;
1
+ export declare const post: <T = any, K = object>(url: string, data: K, options?: import('..').APIOptions, isMultipartRequest?: boolean) => Promise<import('..').ResponseType<T>>, put: <T = any, K = object>(url: string, data: K, options?: import('..').APIOptions) => Promise<import('..').ResponseType<T>>, patch: <T = any, K = object>(url: string, data: K, options?: import('..').APIOptions) => Promise<import('..').ResponseType<T>>, get: <T = any>(url: string, options?: import('..').APIOptions) => Promise<import('..').ResponseType<T>>, trash: <T = any, K = object>(url: string, data?: K, options?: import('..').APIOptions) => Promise<import('..').ResponseType<T>>, setGlobalAPITimeout: (timeout: number) => void;
2
2
  export { default as CoreAPI } from './CoreAPI';
3
3
  export { QueryClientProvider } from './QueryClientProvider';
4
4
  export * from './reactQueryHooks';
@@ -1,6 +1,6 @@
1
1
  import { MutableRefObject } from 'react';
2
2
  import { RuntimeParamsAPIResponseType, RuntimePluginVariables } from '../Shared/types';
3
- import { TeamList, ResponseType, DeploymentNodeType, CDMaterialServiceEnum, CDMaterialServiceQueryParams, CDMaterialResponseType, CDMaterialFilterQuery, EnvironmentListHelmResponse, UserApprovalMetadataType, GlobalVariableOptionType, UserRole, APIOptions, EnvAppsMetaDTO, GetAppsInfoForEnvProps, EnvironmentsGroupedByClustersType, AppsGroupedByProjectsType } from './Types';
3
+ import { TeamList, ResponseType, DeploymentNodeType, CDMaterialServiceEnum, CDMaterialServiceQueryParams, CDMaterialResponseType, CDMaterialFilterQuery, EnvironmentListHelmResponse, UserApprovalMetadataType, GlobalVariableOptionType, UserRole, APIOptions, EnvAppsMetaDTO, GetAppsInfoForEnvProps, EnvironmentsGroupedByClustersType, AppsGroupedByProjectsType, ClusterDetailListType } from './Types';
4
4
  import { ApiResourceType } from '../Pages';
5
5
  export declare const getTeamListMin: () => Promise<TeamList>;
6
6
  export declare const SourceTypeMap: {
@@ -38,3 +38,4 @@ export declare const getGlobalVariables: ({ appId, isCD, abortControllerRef, }:
38
38
  export declare const getAppsInfoForEnv: ({ envId, appIds }: GetAppsInfoForEnvProps) => Promise<EnvAppsMetaDTO>;
39
39
  export declare const getAppOptionsGroupedByProjects: () => Promise<AppsGroupedByProjectsType>;
40
40
  export declare const getEnvironmentOptionsGroupedByClusters: () => Promise<EnvironmentsGroupedByClustersType>;
41
+ export declare const getDetailedClusterList: (clusterIds?: number[], signal?: AbortSignal) => Promise<ClusterDetailListType[]>;
@@ -1,10 +1,6 @@
1
1
  import { SelectPickerOptionType } from '../Shared/Components';
2
2
  export declare const FALLBACK_REQUEST_TIMEOUT = 60000;
3
3
  export declare const Host: string;
4
- export declare const SERVICE_PATHS: {
5
- readonly ATHENA: "athena";
6
- readonly ORCHESTRATOR: "orchestrator";
7
- };
8
4
  export declare const DOCUMENTATION_HOME_PAGE = "https://docs.devtron.ai";
9
5
  export declare const DEVTRON_HOME_PAGE = "https://devtron.ai/";
10
6
  export declare const DOCUMENTATION_VERSION = "/devtron/v1.7";
@@ -66,7 +62,6 @@ export declare const URLS: {
66
62
  readonly APPLICATION_MANAGEMENT_PROJECTS: "/application-management/projects";
67
63
  readonly APPLICATION_MANAGEMENT_CONFIGURATIONS: "/application-management/configurations";
68
64
  readonly APPLICATION_MANAGEMENT_CONFIGURATIONS_DEPLOYMENT_CHARTS: "/application-management/configurations/deployment-charts";
69
- readonly APPLICATION_MANAGEMENT_CONFIGURATIONS_CATALOG_FRAMEWORK: "/application-management/configurations/catalog-framework";
70
65
  readonly APPLICATION_MANAGEMENT_CONFIGURATIONS_SCOPED_VARIABLES: "/application-management/configurations/scoped-variables";
71
66
  readonly APPLICATION_MANAGEMENT_CONFIGURATIONS_BUILD_INFRA: "/application-management/configurations/build-infra";
72
67
  readonly APPLICATION_MANAGEMENT_CONFIGURATIONS_NOTIFICATIONS: "/application-management/configurations/notifications";
@@ -358,6 +353,7 @@ export declare const DATE_TIME_FORMATS: {
358
353
  DD_MMM_YYYY_HH_MM: string;
359
354
  DD_MMM_YYYY: string;
360
355
  'DD/MM/YYYY': string;
356
+ DD_MMM: string;
361
357
  };
362
358
  export declare const SEMANTIC_VERSION_DOCUMENTATION_LINK = "https://semver.org/";
363
359
  export declare const VULNERABILITIES_SORT_PRIORITY: {
@@ -4,7 +4,8 @@ import { UserGroupDTO } from '../Pages/GlobalConfigurations';
4
4
  import { ImageComment, ReleaseTag } from './ImageTags.Types';
5
5
  import { MandatoryPluginBaseStateType, RegistryType, RuntimePluginVariables, Severity, PolicyBlockInfo, TargetPlatformItemDTO, ComponentLayoutType, StatusType, DocLinkProps, DeploymentStrategyType, EnvironmentType } from '../Shared';
6
6
  import { ACTION_STATE, DEPLOYMENT_WINDOW_TYPE, DockerConfigOverrideType, RefVariableType, SortingOrder, TaskErrorObj, VariableTypeFormat } from '.';
7
- import { IllustrationName } from '../Shared/Components';
7
+ import { IllustrationName, SelectPickerOptionType } from '../Shared/Components';
8
+ import { ClusterStatusType } from '../Pages/ResourceBrowser';
8
9
  /**
9
10
  * Generic response type object with support for overriding the result type
10
11
  *
@@ -943,4 +944,28 @@ export type EnvironmentsGroupedByClustersType = {
943
944
  clusterName: EnvironmentType['cluster'];
944
945
  envList: EnvironmentType[];
945
946
  }[];
947
+ export interface ClusterDetailDTO {
948
+ category: ClusterEnvironmentCategoryType;
949
+ cluster_name: string;
950
+ description: string;
951
+ id: number;
952
+ insecureSkipTlsVerify: boolean;
953
+ installationId: number;
954
+ isProd: boolean;
955
+ isVirtualCluster: boolean;
956
+ server_url: string;
957
+ sshTunnelConfig: any;
958
+ prometheus_url: string;
959
+ proxyUrl: string;
960
+ toConnectWithSSHTunnel: boolean;
961
+ clusterStatus: ClusterStatusType;
962
+ }
963
+ export interface ClusterDetailListType extends Omit<ClusterDetailDTO, 'server_url' | 'cluster_name' | 'prometheus_url' | 'id' | 'category' | 'clusterStatus'> {
964
+ serverUrl: ClusterDetailDTO['server_url'];
965
+ clusterName: ClusterDetailDTO['cluster_name'];
966
+ prometheusUrl: ClusterDetailDTO['prometheus_url'];
967
+ clusterId: ClusterDetailDTO['id'];
968
+ category: SelectPickerOptionType;
969
+ status: ClusterStatusType;
970
+ }
946
971
  export {};
@@ -1,4 +1,5 @@
1
- import { ReactNode, RefObject } from 'react';
1
+ import { RefObject } from 'react';
2
+ import { FiltersTypeEnum, TableViewWrapperProps } from '../../Shared/Components';
2
3
  import { Nodes, NodeType } from '../../Shared/types';
3
4
  export interface GVKType {
4
5
  Group: string;
@@ -136,8 +137,7 @@ export interface GVKOptionValueType {
136
137
  kind: string;
137
138
  apiVersion: string;
138
139
  }
139
- export interface ResourceRecommenderActionMenuProps {
140
- children: ReactNode;
140
+ export interface ResourceRecommenderActionMenuProps extends Pick<TableViewWrapperProps<K8sResourceDetailDataType, FiltersTypeEnum.URL>, 'filteredRows'> {
141
141
  lastScannedOn: string;
142
142
  }
143
143
  export {};
@@ -1 +1 @@
1
- export * from './PageHeader';
1
+ export * from './ApplicationManagementIcon';
@@ -1,2 +1 @@
1
- export * from './ApplicationManagementIcon';
2
1
  export * from './InfrastructureManagementIcon';
@@ -64,7 +64,7 @@ export declare const useActionMenu: <T extends string | number>({ id, position,
64
64
  itemRef?: string;
65
65
  results?: number;
66
66
  unselectable?: "on" | "off";
67
- inputMode?: "search" | "text" | "none" | "url" | "tel" | "email" | "numeric" | "decimal";
67
+ inputMode?: "search" | "text" | "none" | "url" | "decimal" | "tel" | "email" | "numeric";
68
68
  "aria-activedescendant"?: string;
69
69
  "aria-atomic"?: boolean | "true" | "false";
70
70
  "aria-autocomplete"?: "none" | "list" | "inline" | "both";
@@ -1,3 +1,4 @@
1
1
  export { default as Chart } from './Chart.component';
2
2
  export { CHART_COLORS } from './constants';
3
3
  export type { ChartColorKey, ChartProps, ChartType, SimpleDataset, SimpleDatasetForPie } from './types';
4
+ export { chartColorGenerator } from './utils';
@@ -1,9 +1,11 @@
1
- import { ChartOptions } from 'chart.js';
1
+ import { ReactNode } from 'react';
2
+ import { ChartOptions, TooltipOptions } from 'chart.js';
3
+ import { TooltipProps } from '../../../Common/Tooltip';
2
4
  import { AppThemeType } from '../../Providers';
3
5
  import { Never } from '../../types';
4
6
  export type ChartType = 'area' | 'pie' | 'stackedBar' | 'stackedBarHorizontal' | 'line';
5
- type ColorTokensType = 'DeepPlum' | 'Magenta' | 'Slate' | 'Lavender' | 'SkyBlue' | 'AquaTeal' | 'LimeGreen' | 'CoralRed' | 'GoldenYellow' | 'CharcoalGray' | 'Gray';
6
- type VariantsType = 50 | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | 950;
7
+ export type ColorTokensType = 'DeepPlum' | 'Magenta' | 'Slate' | 'Lavender' | 'SkyBlue' | 'AquaTeal' | 'LimeGreen' | 'CoralRed' | 'GoldenYellow' | 'CharcoalGray' | 'Gray';
8
+ export type VariantsType = 50 | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | 950;
7
9
  export type ChartColorKey = `${ColorTokensType}${VariantsType}`;
8
10
  export type ChartTypeWithoutPie = Exclude<ChartType, 'pie'>;
9
11
  interface BaseSimpleDataset {
@@ -62,6 +64,13 @@ export type ChartProps = {
62
64
  * Callback function for chart click events
63
65
  */
64
66
  onChartClick?: ChartOptions['onClick'];
67
+ tooltipConfig?: {
68
+ getTooltipContent?: (args: Parameters<TooltipOptions['external']>[0]) => ReactNode;
69
+ /**
70
+ * @default 'top'
71
+ */
72
+ placement?: TooltipProps['placement'];
73
+ };
65
74
  } & TypeAndDatasetsType;
66
75
  export type TransformDatasetProps = {
67
76
  appTheme: AppThemeType;
@@ -81,5 +90,6 @@ export type TransformDataForChartProps = {
81
90
  } & TypeAndDatasetsType;
82
91
  export interface GetDefaultOptionsParams extends Pick<ChartProps, 'hideAxis' | 'onChartClick' | 'type' | 'xAxisMax' | 'yAxisMax'> {
83
92
  appTheme: AppThemeType;
93
+ externalTooltipHandler: TooltipOptions['external'];
84
94
  }
85
95
  export {};
@@ -1,7 +1,8 @@
1
- import { ChartDataset, ChartOptions, ChartType as ChartJSChartType } from 'chart.js';
1
+ import { ReactNode } from 'react';
2
+ import { ChartDataset, ChartOptions, ChartType as ChartJSChartType, TooltipOptions } from 'chart.js';
2
3
  import { ChartType, GetDefaultOptionsParams, TransformDataForChartProps } from './types';
3
4
  export declare const getChartJSType: (type: ChartType) => ChartJSChartType;
4
- export declare const getDefaultOptions: ({ type, appTheme, hideAxis, xAxisMax, yAxisMax, onChartClick, }: GetDefaultOptionsParams) => ChartOptions;
5
+ export declare const getDefaultOptions: ({ type, appTheme, hideAxis, xAxisMax, yAxisMax, onChartClick, externalTooltipHandler, }: GetDefaultOptionsParams) => ChartOptions;
5
6
  export declare const transformDataForChart: (props: TransformDataForChartProps) => (ChartDataset<"line"> | {
6
7
  label: string;
7
8
  data: number[];
@@ -10,3 +11,5 @@ export declare const transformDataForChart: (props: TransformDataForChartProps)
10
11
  pointBackgroundColor: string | import('chart.js/dist/types/utils')._DeepPartialObject<CanvasGradient> | import('chart.js/dist/types/utils')._DeepPartialObject<CanvasPattern> | readonly (string | import('chart.js/dist/types/utils')._DeepPartialObject<CanvasGradient> | import('chart.js/dist/types/utils')._DeepPartialObject<CanvasPattern>)[] | ((ctx: import('chart.js').ScriptableContext<"line">, options: import('chart.js/dist/types/basic').AnyObject) => import('chart.js').Color);
11
12
  pointBorderColor: string | import('chart.js/dist/types/utils')._DeepPartialObject<CanvasGradient> | import('chart.js/dist/types/utils')._DeepPartialObject<CanvasPattern> | readonly (string | import('chart.js/dist/types/utils')._DeepPartialObject<CanvasGradient> | import('chart.js/dist/types/utils')._DeepPartialObject<CanvasPattern>)[] | ((ctx: import('chart.js').ScriptableContext<"line">, options: import('chart.js/dist/types/basic').AnyObject) => import('chart.js').Color);
12
13
  })[];
14
+ export declare function chartColorGenerator(): Generator<"DeepPlum500" | "DeepPlum300" | "DeepPlum100" | "DeepPlum50" | "DeepPlum600" | "DeepPlum400" | "DeepPlum200" | "DeepPlum700" | "DeepPlum800" | "DeepPlum900" | "DeepPlum950" | "Magenta500" | "Magenta300" | "Magenta100" | "Magenta50" | "Magenta600" | "Magenta400" | "Magenta200" | "Magenta700" | "Magenta800" | "Magenta900" | "Magenta950" | "Slate500" | "Slate300" | "Slate100" | "Slate50" | "Slate600" | "Slate400" | "Slate200" | "Slate700" | "Slate800" | "Slate900" | "Slate950" | "Lavender500" | "Lavender300" | "Lavender100" | "Lavender50" | "Lavender600" | "Lavender400" | "Lavender200" | "Lavender700" | "Lavender800" | "Lavender900" | "Lavender950" | "SkyBlue500" | "SkyBlue300" | "SkyBlue100" | "SkyBlue50" | "SkyBlue600" | "SkyBlue400" | "SkyBlue200" | "SkyBlue700" | "SkyBlue800" | "SkyBlue900" | "SkyBlue950" | "AquaTeal500" | "AquaTeal300" | "AquaTeal100" | "AquaTeal50" | "AquaTeal600" | "AquaTeal400" | "AquaTeal200" | "AquaTeal700" | "AquaTeal800" | "AquaTeal900" | "AquaTeal950" | "LimeGreen500" | "LimeGreen300" | "LimeGreen100" | "LimeGreen50" | "LimeGreen600" | "LimeGreen400" | "LimeGreen200" | "LimeGreen700" | "LimeGreen800" | "LimeGreen900" | "LimeGreen950" | "CoralRed500" | "CoralRed300" | "CoralRed100" | "CoralRed50" | "CoralRed600" | "CoralRed400" | "CoralRed200" | "CoralRed700" | "CoralRed800" | "CoralRed900" | "CoralRed950" | "GoldenYellow500" | "GoldenYellow300" | "GoldenYellow100" | "GoldenYellow50" | "GoldenYellow600" | "GoldenYellow400" | "GoldenYellow200" | "GoldenYellow700" | "GoldenYellow800" | "GoldenYellow900" | "GoldenYellow950" | "CharcoalGray500" | "CharcoalGray300" | "CharcoalGray100" | "CharcoalGray50" | "CharcoalGray600" | "CharcoalGray400" | "CharcoalGray200" | "CharcoalGray700" | "CharcoalGray800" | "CharcoalGray900" | "CharcoalGray950" | "Gray500" | "Gray300" | "Gray100" | "Gray50" | "Gray600" | "Gray400" | "Gray200" | "Gray700" | "Gray800" | "Gray900" | "Gray950", void, unknown>;
15
+ export declare const buildChartTooltipFromContext: ({ title, body, labelColors: labelColorsProp, }: Pick<Parameters<TooltipOptions["external"]>[0]["tooltip"], "title" | "body" | "labelColors">) => ReactNode;
@@ -0,0 +1,3 @@
1
+ import { ClusterStatusIconProps } from './types';
2
+ declare const ClusterStatusIcon: ({ clusterStatus, isVirtualCluster }: ClusterStatusIconProps) => JSX.Element;
3
+ export default ClusterStatusIcon;
@@ -0,0 +1 @@
1
+ export { default as ClusterStatusIcon } from './ClusterStatusIcon';
@@ -0,0 +1,5 @@
1
+ import { ClusterStatusType } from '../../../Pages/ResourceBrowser';
2
+ export interface ClusterStatusIconProps {
3
+ clusterStatus: ClusterStatusType;
4
+ isVirtualCluster: boolean;
5
+ }
@@ -0,0 +1,2 @@
1
+ import { ClusterStatusType } from '../../../Pages/ResourceBrowser';
2
+ export declare const getBulletColorAccToStatus: (status: ClusterStatusType) => "bcg-5" | "bcr-5" | "bcy-5";
@@ -1,2 +1,2 @@
1
1
  import { ForceDeleteConfirmationProps } from './types';
2
- export declare const ForceDeleteConfirmationModal: ({ title, subtitle, onDelete, closeConfirmationModal, }: ForceDeleteConfirmationProps) => JSX.Element;
2
+ export declare const ForceDeleteConfirmationModal: ({ title, subtitle, onDelete, closeConfirmationModal, isDeleting, }: ForceDeleteConfirmationProps) => JSX.Element;
@@ -135,7 +135,7 @@ export interface CannotDeleteModalProps extends Partial<Pick<DeleteConfirmationM
135
135
  * This interface extends selected properties from `DeleteConfirmationModalProps`
136
136
  * and `ConfirmationModalProps` to configure the force delete confirmation modal.
137
137
  */
138
- export interface ForceDeleteConfirmationProps extends Partial<Pick<DeleteConfirmationModalProps, 'onDelete' | 'closeConfirmationModal'>>, Partial<Pick<ConfirmationModalProps, 'title' | 'subtitle'>> {
138
+ export interface ForceDeleteConfirmationProps extends Partial<Pick<DeleteConfirmationModalProps, 'onDelete' | 'closeConfirmationModal' | 'isDeleting'>>, Partial<Pick<ConfirmationModalProps, 'title' | 'subtitle'>> {
139
139
  }
140
140
  export interface ConfirmationModalContextType {
141
141
  settersRef: MutableRefObject<{
@@ -86,6 +86,7 @@ export declare const DOCUMENTATION: {
86
86
  readonly GLOBAL_CONFIG_PLUGINS_POLICY: "global-configurations/plugins-policy";
87
87
  readonly GLOBAL_CONFIG_APPROVAL_POLICY: "global-configurations/approval-policy";
88
88
  readonly GLOBAL_CONFIG_SSO_LOGIN_LDAP: "global-configurations/authorization/sso-login/ldap";
89
+ readonly GLOBAL_CONFIG_SSO_LOGIN_OIDC: "global-configurations/authorization/sso-login/oidc";
89
90
  readonly GLOBAL_CONFIG_SSO_LOGIN_MICROSOFT: "global-configurations/authorization/sso-login/microsoft";
90
91
  readonly GLOBAL_CONFIG_PULL_IMAGE_DIGEST: "global-configurations/pull-image-digest";
91
92
  readonly GLOBAL_CONFIG_TAGS: "getting-started/global-configurations/tags-policy";
@@ -0,0 +1,3 @@
1
+ import { ExportToCsvProps } from './types';
2
+ declare const ExportToCsv: <HeaderItemType extends string>({ apiPromise, fileName, triggerElementConfig, disabled, modalConfig, headers, downloadRequestId, }: ExportToCsvProps<HeaderItemType>) => JSX.Element;
3
+ export default ExportToCsv;
@@ -0,0 +1,3 @@
1
+ import { ExportToCsvDialogProps } from './types';
2
+ declare const ExportToCsvDialog: ({ exportDataError, isLoading, initiateDownload, handleCancelRequest, }: ExportToCsvDialogProps) => JSX.Element;
3
+ export default ExportToCsvDialog;
@@ -0,0 +1,2 @@
1
+ export { default as ExportToCsv } from './ExportToCsv';
2
+ export * from './types';
@@ -0,0 +1,64 @@
1
+ import { ServerErrors } from '../../../Common/ServerError';
2
+ import { APIOptions } from '../../../Common/Types';
3
+ import { ButtonProps } from '../Button';
4
+ type TriggerElementConfigType = {
5
+ buttonProps: ButtonProps;
6
+ showOnlyIcon?: boolean;
7
+ customButton?: never;
8
+ isExternalTrigger?: false;
9
+ } | {
10
+ customButton: {
11
+ content: JSX.Element;
12
+ className: string;
13
+ };
14
+ buttonProps?: never;
15
+ showOnlyIcon?: false;
16
+ isExternalTrigger?: false;
17
+ } | {
18
+ isExternalTrigger: true;
19
+ showOnlyIcon?: false;
20
+ buttonProps?: never;
21
+ customButton?: never;
22
+ } | {
23
+ showOnlyIcon: true;
24
+ buttonProps?: never;
25
+ customButton?: never;
26
+ isExternalTrigger?: false;
27
+ };
28
+ export interface ExportToCsvProps<HeaderItemKeyType extends string> {
29
+ headers: {
30
+ label: string;
31
+ key: HeaderItemKeyType;
32
+ }[];
33
+ apiPromise: ({ signal, }: Pick<APIOptions, 'signal'>) => Promise<Record<HeaderItemKeyType, string | number | boolean>[]>;
34
+ fileName: string;
35
+ /**
36
+ * If nothing given will render a Button with "Export CSV" text
37
+ */
38
+ triggerElementConfig?: TriggerElementConfigType;
39
+ /**
40
+ * @default false
41
+ */
42
+ disabled?: boolean;
43
+ /**
44
+ * If not given would show default dialog
45
+ */
46
+ modalConfig?: {
47
+ hideDialog: false;
48
+ renderCustomModal?: (proceedWithDownload: (shouldProceed: boolean) => void) => JSX.Element;
49
+ } | {
50
+ hideDialog: true;
51
+ renderCustomModal?: never;
52
+ };
53
+ /**
54
+ * If given, would trigger export on when this changes and has some value
55
+ */
56
+ downloadRequestId?: string | number;
57
+ }
58
+ export interface ExportToCsvDialogProps {
59
+ isLoading: boolean;
60
+ exportDataError: ServerErrors;
61
+ initiateDownload: () => void;
62
+ handleCancelRequest: () => void;
63
+ }
64
+ export {};
@@ -10,6 +10,7 @@ export declare const iconMap: {
10
10
  'ic-app-template': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
11
11
  'ic-argocd-app': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
12
12
  'ic-arrow-clockwise': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
13
+ 'ic-arrow-line-down': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
13
14
  'ic-arrow-right': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
14
15
  'ic-arrow-square-out': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
15
16
  'ic-arrows-clockwise': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
@@ -27,6 +28,7 @@ export declare const iconMap: {
27
28
  'ic-bg-production-pipelines': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
28
29
  'ic-bg-project': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
29
30
  'ic-bg-scan': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
31
+ 'ic-bg-webhook': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
30
32
  'ic-bharatpe': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
31
33
  'ic-bitbucket': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
32
34
  'ic-book-open': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
@@ -55,7 +57,6 @@ export declare const iconMap: {
55
57
  'ic-clipboard': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
56
58
  'ic-clock-counterclockwise': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
57
59
  'ic-clock': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
58
- 'ic-close': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
59
60
  'ic-close-large': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
60
61
  'ic-close-small': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
61
62
  'ic-cloud-vms': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
@@ -92,6 +93,7 @@ export declare const iconMap: {
92
93
  'ic-dockerhub': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
93
94
  'ic-download': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
94
95
  'ic-ecr': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
96
+ 'ic-edit-lines': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
95
97
  'ic-edit': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
96
98
  'ic-email': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
97
99
  'ic-enterprise-feat': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
@@ -120,6 +122,7 @@ export declare const iconMap: {
120
122
  'ic-folder': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
121
123
  'ic-gavel': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
122
124
  'ic-gear': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
125
+ 'ic-gift-animated': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
123
126
  'ic-gift-gradient': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
124
127
  'ic-gift': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
125
128
  'ic-git-branch': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
@@ -131,7 +134,6 @@ export declare const iconMap: {
131
134
  'ic-google-container-registry': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
132
135
  'ic-google-gke': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
133
136
  'ic-google': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
134
- 'ic-graph-negative': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
135
137
  'ic-grid-view': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
136
138
  'ic-group-filter-applied': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
137
139
  'ic-group-filter': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
@@ -201,8 +203,10 @@ export declare const iconMap: {
201
203
  'ic-pause-circle': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
202
204
  'ic-pencil': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
203
205
  'ic-play-outline': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
206
+ 'ic-priority-medium-fill': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
204
207
  'ic-quay': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
205
208
  'ic-quote': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
209
+ 'ic-ratings': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
206
210
  'ic-resize-handle': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
207
211
  'ic-right-panel-collapse': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
208
212
  'ic-rocket-gear': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
@@ -231,6 +235,7 @@ export declare const iconMap: {
231
235
  'ic-strategy-recreate': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
232
236
  'ic-strategy-rolling-color': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
233
237
  'ic-strategy-rolling': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
238
+ 'ic-success-blue': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
234
239
  'ic-success': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
235
240
  'ic-sun': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
236
241
  'ic-suspended': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
@@ -262,18 +267,6 @@ export declare const iconMap: {
262
267
  'ic-webhook': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
263
268
  'ic-wifi-slash': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
264
269
  'ic-world-globe': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
265
- 'ic-bulb': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
266
- 'ic-red-bulb': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
267
- 'ic-failure-color': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
268
- 'ic-dot-circle': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
269
- 'ic-circle-progress': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
270
- 'ic-piggybank': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
271
- 'ic-priority-high-fill': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
272
- 'ic-priority-low-fill': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
273
- 'ic-priority-medium-fill': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
274
- 'ic-priority-urgent-fill': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
275
- 'ic-spider': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
276
- 'ic-vector': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
277
270
  };
278
271
  export type IconName = keyof typeof iconMap;
279
272
  export interface IconsProps extends Omit<IconBaseProps, 'name' | 'iconMap'> {
@@ -27,7 +27,7 @@ export interface IconBaseProps {
27
27
  *
28
28
  * @example 'B500', 'N200', 'G50', 'R700'
29
29
  */
30
- color?: IconBaseColorType;
30
+ color: IconBaseColorType;
31
31
  /**
32
32
  * A unique identifier for testing purposes, typically used in test automation.
33
33
  */
@@ -2,6 +2,7 @@ import { IllustrationBaseProps } from './types';
2
2
  export declare const illustrationMap: {
3
3
  'img-mechanical-operation': import('react').FunctionComponent<import('react').SVGProps<SVGSVGElement>>;
4
4
  'img-code': string;
5
+ 'img-devtron-freemium': string;
5
6
  'img-man-on-rocket': string;
6
7
  'img-no-result': string;
7
8
  'no-cluster-cost-enabled': string;
@@ -1,7 +1,7 @@
1
1
  import { Dispatch, FunctionComponent, MouseEvent, PropsWithChildren, SetStateAction } from 'react';
2
2
  import { GenericFilterEmptyStateProps } from '../../../Common/EmptyState/types';
3
3
  import { UseStateFiltersProps, UseStateFiltersReturnType, UseUrlFiltersProps, UseUrlFiltersReturnType } from '../../../Common/Hooks';
4
- import { APIOptions, GenericEmptyStateType } from '../../../Common/index';
4
+ import { GenericEmptyStateType } from '../../../Common/index';
5
5
  import { PageSizeOption } from '../../../Common/Pagination/types';
6
6
  import { SortableTableHeaderCellProps, useResizableTableConfig } from '../../../Common/SortableTableHeaderCell';
7
7
  import { useBulkSelection, UseBulkSelectionProps } from '../BulkSelection';
@@ -177,7 +177,7 @@ export type InternalTableProps<RowData extends unknown, FilterVariant extends Fi
177
177
  } | {
178
178
  rows?: never;
179
179
  /** NOTE: Sorting on frontend is only handled if rows is provided instead of getRows */
180
- getRows: (props: GetRowsProps, abortControllerRef: APIOptions['abortControllerRef']) => Promise<{
180
+ getRows: (props: GetRowsProps, signal: AbortSignal) => Promise<{
181
181
  rows: RowsType<RowData>;
182
182
  totalRows: number;
183
183
  }>;
@@ -206,9 +206,11 @@ export interface GetFilteringPromiseProps<RowData extends unknown> {
206
206
  searchSortTimeoutRef: React.MutableRefObject<number>;
207
207
  callback: () => Promise<RowsType<RowData>> | RowsType<RowData>;
208
208
  }
209
- export interface TableContentProps<RowData extends unknown, FilterVariant extends FiltersTypeEnum, AdditionalProps extends Record<string, any>> extends Pick<InternalTableProps<RowData, FilterVariant, AdditionalProps>, 'filterData' | 'rows' | 'resizableConfig' | 'additionalProps' | 'visibleColumns' | 'stylesConfig' | 'loading' | 'bulkSelectionConfig' | 'bulkSelectionReturnValue' | 'handleClearBulkSelection' | 'handleToggleBulkSelectionOnRow' | 'paginationVariant' | 'RowActionsOnHoverComponent' | 'pageSizeOptions' | 'getRows'> {
209
+ export interface RowsResultType<RowData extends unknown> {
210
210
  filteredRows: RowsType<RowData>;
211
- areFilteredRowsLoading: boolean;
212
211
  totalRows: number;
213
212
  }
213
+ export interface TableContentProps<RowData extends unknown, FilterVariant extends FiltersTypeEnum, AdditionalProps extends Record<string, any>> extends Pick<InternalTableProps<RowData, FilterVariant, AdditionalProps>, 'filterData' | 'rows' | 'resizableConfig' | 'additionalProps' | 'visibleColumns' | 'stylesConfig' | 'loading' | 'bulkSelectionConfig' | 'bulkSelectionReturnValue' | 'handleClearBulkSelection' | 'handleToggleBulkSelectionOnRow' | 'paginationVariant' | 'RowActionsOnHoverComponent' | 'pageSizeOptions' | 'getRows'>, RowsResultType<RowData> {
214
+ areFilteredRowsLoading: boolean;
215
+ }
214
216
  export {};
@@ -16,6 +16,7 @@ export * from './ButtonWithSelector';
16
16
  export * from './Charts';
17
17
  export * from './Chip';
18
18
  export * from './CICDHistory';
19
+ export * from './ClusterStatusIcon';
19
20
  export * from './CMCS';
20
21
  export * from './CodeEditor';
21
22
  export * from './Collapse';
@@ -37,6 +38,7 @@ export * from './EditImageFormField';
37
38
  export * from './EnvironmentSelector';
38
39
  export * from './Error';
39
40
  export * from './ExcludedImageNode';
41
+ export * from './ExportToCsv';
40
42
  export * from './FeatureDescription';
41
43
  export * from './FileUpload';
42
44
  export * from './FilterChips';
@@ -104,4 +104,5 @@ export declare const getAppDetailsURL: (appId: number | string, envId?: number |
104
104
  export declare const smoothScrollToTop: (scrollContainer: HTMLElement, targetPosition: number) => import('framer-motion').AnimationPlaybackControls;
105
105
  export declare const getGroupVersionFromApiVersion: (apiVersion: string) => Pick<Node, "group" | "version">;
106
106
  export declare const YAMLtoJSON: (yamlString: string) => string;
107
+ export declare const formatNumberToCurrency: (value: number, currency: string) => string;
107
108
  export {};
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
2
+ <path stroke="#3B444C" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M12 3.25V17.5m0 0-6.75-6.75M12 17.5l6.75-6.75m-15 9.75h16.5"/>
3
+ </svg>
@@ -1,6 +1,6 @@
1
1
  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
2
2
  <g clip-path="url(#a)">
3
- <rect width="24" height="24" fill="#FFE5DE" rx="6"/>
3
+ <rect width="24" height="24" fill="var(--O100)" rx="6"/>
4
4
  <path fill="#8898A6" fill-rule="evenodd" d="M17.396 6.271 15.98 7.67a.452.452 0 0 0 0 .643l1.052 1.04c.18.177.47.177.65 0l1.416-1.4a.18.18 0 0 1 .298.08c.268.98.014 2.07-.764 2.838a2.986 2.986 0 0 1-3.13.672l-6.125 6.62a1.646 1.646 0 0 1-2.362.052 1.603 1.603 0 0 1 .06-2.343l6.713-5.984a2.902 2.902 0 0 1 .656-3.156 2.986 2.986 0 0 1 2.871-.755.175.175 0 0 1 .08.294Zm-9.679 10.79c0 .267.22.484.49.484s.49-.217.49-.485a.487.487 0 0 0-.49-.483c-.27 0-.49.216-.49.483Z" clip-rule="evenodd"/>
5
5
  <path fill="#F4910D" fill-rule="evenodd" d="m8.355 10.166 1.679-1.659 8.104 8.011c.32.316.32.829 0 1.145l-.52.514a.826.826 0 0 1-1.158 0l-8.105-8.011Z" clip-rule="evenodd"/>
6
6
  <path fill="#66757F" fill-rule="evenodd" d="m7.1 11.927.47-.465.044-.31a.485.485 0 0 1 .654-.38l2.098-2.074-.083-.655a1.49 1.49 0 0 1 .432-1.246 1.8 1.8 0 0 1 1.266-.518h.833c-1.312-1.296-2.55-1.368-3.716-.216L6.212 8.916a.826.826 0 0 1-.627.236L5.21 9.13l-.47.464a.803.803 0 0 0 0 1.145l1.201 1.188a.826.826 0 0 0 1.158 0Z" clip-rule="evenodd"/>
@@ -3,7 +3,7 @@
3
3
  <rect width="24" height="24" fill="#E9FBF4" rx="6"/>
4
4
  <path fill="#FF6B6B" d="M7.273 13.64c-1.055.055-2.858.653-2.684 1.903.44 3.172-3.027 4.19 1.588 4.19 2.321 0 3.785-1.018 4.006-3.155l-.627-2.423-2.283-.515Z"/>
5
5
  <path fill="#FFC266" d="M8.103 14.479c-.49.025-1.327.303-1.247.884.205 1.473-1.406 1.946.738 1.946 1.078 0 1.759-.473 1.861-1.466l-.237-1.197-1.115-.168Z"/>
6
- <path fill="#F33E3E" d="M9.162 16.672c-.627 1.14-1.87 1.69-3.576 1.69-.668 0-1.167-.021-1.532-.067-.493 1.05-.733 1.44 2.123 1.44 2.321 0 3.785-1.019 4.006-3.156l-.527-.532-.18-.182a3.652 3.652 0 0 1-.052.182 1.569 1.569 0 0 1-.262.625Z"/>
6
+ <path fill="#C73232" d="M9.162 16.672c-.627 1.14-1.87 1.69-3.576 1.69-.668 0-1.167-.021-1.532-.067-.493 1.05-.733 1.44 2.123 1.44 2.321 0 3.785-1.019 4.006-3.156l-.527-.532-.18-.182a3.64 3.64 0 0 1-.052.182 1.569 1.569 0 0 1-.262.625Z"/>
7
7
  <path fill="#FFB549" d="M8.964 15.349c-.23.712-.859 1.053-1.776 1.053a8.38 8.38 0 0 1-.47-.01c-.27.676-.657.918.876.918.715 0 1.255-.208 1.568-.638.125-.173.214-.38.262-.625a1.87 1.87 0 0 0 .031-.203l-.49-.495Z"/>
8
8
  <path fill="#B6E9D3" d="m8.55 11.901-1.377.808c-.276.162-.23.597-.01.82l.11.11.83.84 1.352 1.364.728.735.38.383c.22.222.651.268.812-.01l.8-1.39-.905-3.519-2.72-.14Zm11.148-8.108c-.662-.122-1.867.006-3.335.508l.66 2.45 2.683.916c.5-1.491.625-2.713.498-3.376-.073-.387-.12-.426-.506-.498Z"/>
9
9
  <path fill="#1DAD70" d="M12.14 6.521c-1.838-.67-3.26-.364-4.703.954-.67.65-1.783 1.504-.863 2.432l1.143 1.154 3.286-1.675L12.14 6.52Zm5.365 5.416-3.09 1.289-1.408 3.175 1.143 1.155c.92.928 1.766-.196 2.41-.871.667-.745 1.855-2.163.945-4.748Z"/>
@@ -11,7 +11,8 @@
11
11
  <path fill="#7ACCAA" d="M19.49 3.765c.065.695-.08 1.815-.528 3.152l.744.75c.5-1.491.624-2.713.498-3.376-.073-.387-.12-.427-.506-.498a2.132 2.132 0 0 0-.208-.028Z"/>
12
12
  <path fill="#D0D4D9" d="M18.7 7.634a16.87 16.87 0 0 1-1.94 3.553 18.227 18.227 0 0 1-1.27 1.59 18.82 18.82 0 0 1-1.566 1.559c-.511.452-1.064.893-1.66 1.315l.516.522.227.229a18.857 18.857 0 0 0 4.497-4.465 16.884 16.884 0 0 0 1.942-3.553c.096-.244.183-.484.26-.717l-.744-.75a13.42 13.42 0 0 1-.261.717Z"/>
13
13
  <path fill="#7ACCAA" d="m11.268 14.646-.799 1.39c-.16.279-.592.233-.813.01l.527.533.38.383c.22.222.651.268.812-.01l.8-1.39-.907-.915Z"/>
14
- <path fill="#168859" d="M17.504 11.937c-.151.213-.31.427-.476.64.215 1.812-.691 2.887-1.243 3.502-.529.554-1.192 1.41-1.922 1.187l.287.29c.92.928 1.766-.196 2.41-.871.667-.745 1.855-2.163.944-4.748ZM10.975 6.22A18.879 18.879 0 0 0 7 10.338l.718.725a18.877 18.877 0 0 1 4.422-4.54 5.755 5.755 0 0 0-1.164-.301Zm.847 6.395-1.282 1.294h-.002l-.176-.177-.177-.179 1.281-1.292a.25.25 0 1 1 .356.354Z"/>
14
+ <path fill="#168859" d="M17.504 11.937c-.151.213-.31.427-.476.64.215 1.812-.691 2.887-1.243 3.502-.529.554-1.192 1.41-1.922 1.187l.287.29c.92.928 1.766-.196 2.41-.871.667-.745 1.855-2.163.944-4.748ZM10.975 6.22A18.879 18.879 0 0 0 7 10.338l.718.725a18.877 18.877 0 0 1 4.422-4.54 5.755 5.755 0 0 0-1.164-.301Z"/>
15
+ <path fill="#95D199" d="m11.822 12.615-1.282 1.294h-.002l-.176-.177-.177-.179 1.281-1.292a.25.25 0 1 1 .356.354Z"/>
15
16
  </g>
16
17
  <defs>
17
18
  <clipPath id="a">
@@ -0,0 +1,13 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
2
+ <g clip-path="url(#a)">
3
+ <rect width="24" height="24" fill="#EDF1F5" rx="6"/>
4
+ <path fill="#3B444C" fill-rule="evenodd" d="M12 6.273a1.636 1.636 0 0 1 1.43 2.433l2.115 3.529.053-.02a4.08 4.08 0 0 1 1.086-.208L16.91 12a4.09 4.09 0 1 1-2.782 7.09.818.818 0 0 1 1.113-1.2 2.454 2.454 0 1 0 .404-3.904.818.818 0 0 1-1.07-.2l-.054-.08-2.494-4.162-.026.001c-.863 0-1.57-.667-1.632-1.514l-.004-.122c0-.904.732-1.637 1.636-1.637Z" clip-rule="evenodd"/>
5
+ <path fill="#EB456D" d="M12 3.818a4.09 4.09 0 0 1 4.09 4.091.818.818 0 0 1-1.63.096l-.005-.096a2.455 2.455 0 1 0-3.584 2.18.818.818 0 0 1 .31 1.17l-2.634 4.085a1.636 1.636 0 1 1-1.376-.887l2.201-3.413-.03-.024A4.087 4.087 0 0 1 7.914 8.1l-.005-.192A4.09 4.09 0 0 1 12 3.82Z"/>
6
+ <path fill="#3B444C" fill-rule="evenodd" d="M6.746 12.734a.818.818 0 0 1-.491 1.048 2.456 2.456 0 1 0 3.286 2.453l.004-.144c0-.42.316-.766.723-.813l.096-.005h5.128a1.636 1.636 0 1 1 0 1.636h-4.394l-.008.048a4.093 4.093 0 0 1-3.822 3.22l-.177.005a4.09 4.09 0 0 1-1.393-7.938.818.818 0 0 1 1.048.49Z" clip-rule="evenodd"/>
7
+ </g>
8
+ <defs>
9
+ <clipPath id="a">
10
+ <path fill="#fff" d="M0 0h24v24H0z"/>
11
+ </clipPath>
12
+ </defs>
13
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
2
+ <path stroke="#3B444C" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M3 15h6m7-1.5 2.834 2.765M3 9h10M3 3h17.5M3 21h3.938m7.161 0h-2.656a.442.442 0 0 1-.443-.443v-2.473a.444.444 0 0 1 .13-.313l6.641-6.641a.443.443 0 0 1 .626 0l2.473 2.473a.443.443 0 0 1 0 .626L14.1 21Z" vector-effect="non-scaling-stroke"/>
3
+ </svg>
@@ -0,0 +1 @@
1
+ <svg width="50" height="50" viewBox="0 0 50 50" fill="none" xmlns="http://www.w3.org/2000/svg"><style>@keyframes top-move{0%,20%,to{transform:translateY(0)}10%{transform:translateY(-5px)}}@keyframes top-shake{0%,25%,5%,to{transform:rotate(0deg)}10%{transform:rotate(-8deg)}15%{transform:rotate(8deg)}}@keyframes bottom-jump{0%{transform:translateY(0)}5%{transform:translateY(-5px)}15%,to{transform:translateX(0)}}</style><g style="animation:bottom-jump 5s infinite ease-out;transform-origin:center;transform-box:fill-box"><path d="M8 27.996h34v19a3 3 0 0 1-3 3H11a3 3 0 0 1-3-3z" fill="#D0DBF7"/><path fill="#376CFB" d="M19 27.996h12v22H19z"/></g><g style="animation:top-move 5s infinite ease-out;transform-origin:center;transform-box:fill-box"><g style="animation:top-shake 5s infinite ease-out;transform-origin:center;transform-box:fill-box"><path d="M12.49 12.819c1.226-2.666 4.074-3.172 6.21-2.619 1.97.512 3.69 1.925 4.93 3.37 1.227 1.428 2.146 3.078 2.354 4.252l.208 1.174H16.036c-1.625 0-2.904-.794-3.56-2.037-.642-1.213-.632-2.734.014-4.14m5.708-.683c-1.58-.41-3.214.048-3.89 1.519-.427.928-.373 1.787-.065 2.37.293.553.87.971 1.793.971h7.526a11.3 11.3 0 0 0-1.449-2.124c-1.106-1.289-2.498-2.369-3.915-2.736" fill="#376CFB"/><path d="M37.51 12.819c-1.226-2.666-4.075-3.172-6.21-2.619-1.97.512-3.69 1.925-4.93 3.37-1.227 1.428-2.146 3.078-2.354 4.252l-.208 1.174h10.156c1.625 0 2.904-.794 3.56-2.037.642-1.213.632-2.734-.014-4.14m-5.708-.683c1.58-.41 3.214.048 3.89 1.519.427.928.373 1.787.065 2.37-.293.553-.87.971-1.793.971h-7.526a11.3 11.3 0 0 1 1.449-2.124c1.106-1.289 2.499-2.369 3.915-2.736" fill="#376CFB"/><path fill="#00173F" opacity=".15" d="M8 27.996h34v3H8z"/><rect x="5" y="16.996" width="40" height="11" rx="3" fill="#E6ECFF"/><path fill="#4294FF" d="M16 16.996h18v11H16z"/></g></g></svg>
@@ -1,4 +1,4 @@
1
1
  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
2
- <path fill="#F33E3E" d="M5.25 12h-1.5a1.5 1.5 0 0 0-1.5 1.5v6a1.5 1.5 0 0 0 1.5 1.5h1.5a1.5 1.5 0 0 0 1.5-1.5v-6a1.5 1.5 0 0 0-1.5-1.5Zm7.5-4.5h-1.5A1.5 1.5 0 0 0 9.75 9v10.5a1.5 1.5 0 0 0 1.5 1.5h1.5a1.5 1.5 0 0 0 1.5-1.5V9a1.5 1.5 0 0 0-1.5-1.5Z"/>
3
- <path fill="#B1B7BC" d="M20.25 3h-1.5a1.5 1.5 0 0 0-1.5 1.5v15a1.5 1.5 0 0 0 1.5 1.5h1.5a1.5 1.5 0 0 0 1.5-1.5v-15a1.5 1.5 0 0 0-1.5-1.5Z" opacity=".4"/>
2
+ <path fill="#3B444C" d="M5.25 12h-1.5a1.5 1.5 0 0 0-1.5 1.5v6a1.5 1.5 0 0 0 1.5 1.5h1.5a1.5 1.5 0 0 0 1.5-1.5v-6a1.5 1.5 0 0 0-1.5-1.5Zm7.5-4.5h-1.5A1.5 1.5 0 0 0 9.75 9v10.5a1.5 1.5 0 0 0 1.5 1.5h1.5a1.5 1.5 0 0 0 1.5-1.5V9a1.5 1.5 0 0 0-1.5-1.5Z"/>
3
+ <path fill="#3B444C" d="M20.25 3h-1.5a1.5 1.5 0 0 0-1.5 1.5v15a1.5 1.5 0 0 0 1.5 1.5h1.5a1.5 1.5 0 0 0 1.5-1.5v-15a1.5 1.5 0 0 0-1.5-1.5Z" opacity=".4"/>
4
4
  </svg>