From c8d3412f31498624e38c00440a300dc0d4f52c3e Mon Sep 17 00:00:00 2001
From: Rohit Jain <60229265+Rohit0301@users.noreply.github.com>
Date: Fri, 17 Oct 2025 10:09:52 +0530
Subject: [PATCH] Fix: Fixed UI errors and warnings (#23837)
* Fix: Fixed UI errors and warnings
* Fix: Removed commented code
* Fix: removed the post interface
* Fix: reverted few changes
* Fix: Addressed PR comments
* Fix: removed unnecessary types
* Fix: removed unnecessary types
* Fix: fixed unit test issue
---
 .../CommentCard.component.tsx                 |  4 +-
 .../DomainDetailPage.component.tsx            |  2 +-
 .../GlossaryStatusBadge.component.tsx         |  5 +-
 .../GlossaryTermTab.component.tsx             |  2 +-
 .../components/LineageTable/LineageTable.tsx  |  4 +-
 .../CustomiseHomeModal.test.tsx               |  2 +-
 .../AppRunsHistory/AppRunsHistory.test.tsx    |  2 +-
 .../IngestionRecentRun.test.tsx               |  7 ++-
 .../MUIAsyncTreeSelect/MUIAsyncTreeSelect.tsx | 31 +++++-----
 .../atoms/TreeContent/TreeContent.tsx         |  4 +-
 .../hooks/useTreeFocusManagement.ts           | 31 +++++-----
 .../hooks/useTreeKeyboardNavigation.ts        |  1 -
 .../MUITagSuggestion/MUITagSuggestion.tsx     | 59 +++++++++----------
 .../MUIUserTeamSelect/MUIUserTeamSelect.tsx   | 15 +++--
 .../common/atoms/TagChip/TagChip.tsx          |  2 +-
 .../common/atoms/asyncTreeSelect/types.ts     |  1 +
 .../asyncTreeSelect/useAsyncTreeSelect.tsx    | 14 -----
 .../ui/src/constants/Customize.constants.ts   |  5 +-
 .../ui/src/constants/LeftSidebar.constants.ts |  9 ++-
 .../pages/DataQuality/DataQualityClassBase.ts |  1 +
 .../BulkEntityImportPage.tsx                  |  2 +-
 .../main/resources/ui/src/rest/glossaryAPI.ts |  2 +-
 .../main/resources/ui/src/rest/lineageAPI.ts  |  2 +-
 .../test/unit/mocks/reactColumnResize.mock.js |  2 +-
 .../ui/src/utils/EntityLineageUtils.tsx       | 12 +++-
 .../ui/src/utils/EntityUtilClassBase.ts       |  1 +
 .../ui/src/utils/EntityUtils.test.tsx         |  6 +-
 .../resources/ui/src/utils/GlossaryUtils.tsx  | 16 ++---
 .../main/resources/ui/src/utils/IconUtils.tsx |  4 +-
 .../ui/src/utils/ServiceUtilClassBase.ts      |  4 +-
 30 files changed, 135 insertions(+), 117 deletions(-)
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedCardNew/CommentCard.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedCardNew/CommentCard.component.tsx
index d3e7651ab8f..f7b0273c2e0 100644
--- a/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedCardNew/CommentCard.component.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedCardNew/CommentCard.component.tsx
@@ -15,7 +15,7 @@ import classNames from 'classnames';
 import { compare } from 'fast-json-patch';
 import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
 import { Link } from 'react-router-dom';
-import { Thread } from '../../../generated/entity/feed/thread';
+import { Post, Thread } from '../../../generated/entity/feed/thread';
 import { useUserProfile } from '../../../hooks/user-profile/useUserProfile';
 import {
   formatDateTime,
@@ -37,7 +37,7 @@ import ActivityFeedActions from '../Shared/ActivityFeedActions';
 
 interface CommentCardInterface {
   feed: Thread;
-  post: any;
+  post: Post;
   isLastReply: boolean;
   closeFeedEditor: () => void;
 }
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Domain/DomainDetailPage/DomainDetailPage.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/Domain/DomainDetailPage/DomainDetailPage.component.tsx
index 9f48e479ae3..56abb38a547 100644
--- a/openmetadata-ui/src/main/resources/ui/src/components/Domain/DomainDetailPage/DomainDetailPage.component.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/components/Domain/DomainDetailPage/DomainDetailPage.component.tsx
@@ -87,7 +87,7 @@ const DomainDetailPage = () => {
     }
   };
 
-  const handleDomainDelete = (id: string) => {
+  const handleDomainDelete = () => {
     // Navigate back to domains listing page after deletion
     navigate(ROUTES.DOMAIN);
   };
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Glossary/GlossaryStatusBadge/GlossaryStatusBadge.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/Glossary/GlossaryStatusBadge/GlossaryStatusBadge.component.tsx
index 07adcadebbb..0d53b853b7c 100644
--- a/openmetadata-ui/src/main/resources/ui/src/components/Glossary/GlossaryStatusBadge/GlossaryStatusBadge.component.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/components/Glossary/GlossaryStatusBadge/GlossaryStatusBadge.component.tsx
@@ -19,7 +19,10 @@ export const GlossaryStatusBadge = ({ status }: { status: EntityStatus }) => {
   return (
     
       
-      
+      
     
   );
 };
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Glossary/GlossaryTermTab/GlossaryTermTab.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/Glossary/GlossaryTermTab/GlossaryTermTab.component.tsx
index 8ce66ca44a6..f9867ab7d2b 100644
--- a/openmetadata-ui/src/main/resources/ui/src/components/Glossary/GlossaryTermTab/GlossaryTermTab.component.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/components/Glossary/GlossaryTermTab/GlossaryTermTab.component.tsx
@@ -774,7 +774,7 @@ const GlossaryTermTab = ({ isGlossary, className }: GlossaryTermTabProps) => {
                 
               
             
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/LineageTable/LineageTable.tsx b/openmetadata-ui/src/main/resources/ui/src/components/LineageTable/LineageTable.tsx
index dd8277a4658..1967c7023df 100644
--- a/openmetadata-ui/src/main/resources/ui/src/components/LineageTable/LineageTable.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/components/LineageTable/LineageTable.tsx
@@ -629,7 +629,7 @@ const LineageTable: FC<{ entity: SourceType }> = ({ entity }) => {
             ? 'fromEntity'
             : 'toEntity',
         sorter: true,
-        render: (record?: SearchSourceAlias) => (
+        render: (record?: SearchSourceAlias & { type: EntityType }) => (
            = ({ entity }) => {
             ? 'fromEntity'
             : 'toEntity',
         sorter: true,
-        render: (record?: SearchSourceAlias) => (
+        render: (record?: SearchSourceAlias & { type?: EntityType }) => (
            {
 
   return {
     ...antd,
-    Modal: ({ children, open, onCancel, ...props }: any) =>
+    Modal: ({ children, open, ...props }: any) =>
       open ? (
         
           {children}
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Settings/Applications/AppRunsHistory/AppRunsHistory.test.tsx b/openmetadata-ui/src/main/resources/ui/src/components/Settings/Applications/AppRunsHistory/AppRunsHistory.test.tsx
index 97628f98317..3cac78541aa 100644
--- a/openmetadata-ui/src/main/resources/ui/src/components/Settings/Applications/AppRunsHistory/AppRunsHistory.test.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/components/Settings/Applications/AppRunsHistory/AppRunsHistory.test.tsx
@@ -114,7 +114,7 @@ jest.mock('../../../../utils/date-time/DateTimeUtils', () => ({
   getEpochMillisForPastDays: jest.fn().mockReturnValue('startDay'),
   getIntervalInMilliseconds: jest.fn().mockReturnValue('interval'),
   formatDuration: jest.fn().mockReturnValue('formatDuration'),
-  formatDurationToHHMMSS: jest.fn().mockImplementation((_ms) => {
+  formatDurationToHHMMSS: jest.fn().mockImplementation(() => {
     // Return a consistent formatted duration for all cases
     return '02:30:15';
   }),
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Settings/Services/Ingestion/IngestionRecentRun/IngestionRecentRun.test.tsx b/openmetadata-ui/src/main/resources/ui/src/components/Settings/Services/Ingestion/IngestionRecentRun/IngestionRecentRun.test.tsx
index 58b059dc522..966b75464b8 100644
--- a/openmetadata-ui/src/main/resources/ui/src/components/Settings/Services/Ingestion/IngestionRecentRun/IngestionRecentRun.test.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/components/Settings/Services/Ingestion/IngestionRecentRun/IngestionRecentRun.test.tsx
@@ -18,6 +18,7 @@ import {
   render,
   screen,
 } from '@testing-library/react';
+import { Status } from '../../../../../generated/entity/applications/appRunRecord';
 import { IngestionPipeline } from '../../../../../generated/entity/services/ingestionPipelines/ingestionPipeline';
 import { EXECUTION_RUNS, FAILURE } from '../../../../../mocks/Ingestion.mock';
 import { mockDataInsightApplicationRun } from '../../../../../mocks/LogsViewerPage.mock';
@@ -438,7 +439,7 @@ describe('Test IngestionRecentRun component', () => {
       const unorderedAppRuns = [
         {
           runId: 'app-run-2',
-          status: 'Success',
+          status: Status.Success,
           startTime: 1667307000,
           timestamp: 1667307000,
           endTime: 1667307003,
@@ -446,7 +447,7 @@ describe('Test IngestionRecentRun component', () => {
         },
         {
           runId: 'app-run-1',
-          status: 'Failed',
+          status: Status.Failed,
           startTime: 1667301000,
           timestamp: 1667301000,
           endTime: 1667301003,
@@ -454,7 +455,7 @@ describe('Test IngestionRecentRun component', () => {
         },
         {
           runId: 'app-run-3',
-          status: 'Running',
+          status: Status.Running,
           startTime: 1667309000,
           timestamp: 1667309000,
           endTime: 1667309003,
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/MUIAsyncTreeSelect/MUIAsyncTreeSelect.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/MUIAsyncTreeSelect/MUIAsyncTreeSelect.tsx
index 907ea582e63..74c8deb3c69 100644
--- a/openmetadata-ui/src/main/resources/ui/src/components/common/MUIAsyncTreeSelect/MUIAsyncTreeSelect.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/components/common/MUIAsyncTreeSelect/MUIAsyncTreeSelect.tsx
@@ -499,22 +499,25 @@ const MUIAsyncTreeSelect: FC
 = ({
   );
 
   // Handle input blur to restore selected value if no new selection
-  const handleInputBlur = useCallback(
-    (e: React.FocusEvent) => {
-      // Restore selected value in single-select if no new selection
-      if (!multiple && selectedOptions.length > 0) {
-        const selectedLabel = selectedOptions[0].label;
-        if (inputValue !== selectedLabel) {
-          setInputValue(selectedLabel);
-          debouncedSetSearchTerm(''); // Clear search to show all options
-        }
+  const handleInputBlur = useCallback(() => {
+    // Restore selected value in single-select if no new selection
+    if (!multiple && selectedOptions.length > 0) {
+      const selectedLabel = selectedOptions[0].label;
+      if (inputValue !== selectedLabel) {
+        setInputValue(selectedLabel);
+        debouncedSetSearchTerm(''); // Clear search to show all options
       }
+    }
 
-      // Call existing blur handler for dropdown management
-      handleBlur(e);
-    },
-    [multiple, selectedOptions, inputValue, handleBlur, debouncedSetSearchTerm]
-  );
+    // Call existing blur handler for dropdown management
+    handleBlur();
+  }, [
+    multiple,
+    selectedOptions,
+    inputValue,
+    handleBlur,
+    debouncedSetSearchTerm,
+  ]);
 
   // Calculate if has clearable value
   const hasClearableValue = multiple
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/MUIAsyncTreeSelect/atoms/TreeContent/TreeContent.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/MUIAsyncTreeSelect/atoms/TreeContent/TreeContent.tsx
index b3c10bb666f..30cbd922c65 100644
--- a/openmetadata-ui/src/main/resources/ui/src/components/common/MUIAsyncTreeSelect/atoms/TreeContent/TreeContent.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/components/common/MUIAsyncTreeSelect/atoms/TreeContent/TreeContent.tsx
@@ -23,13 +23,13 @@ export interface TreeContentProps {
   error: string | null;
   hasData: boolean;
   children: ReactNode;
-  selectedItems?: string[] | null;
+  selectedItems?: string | null;
   expandedItems?: string[];
   focusedItem?: string;
   apiRef?: MutableRefObject;
   loadingMessage?: string;
   noDataMessage?: string;
-  onNodeToggle?: SimpleTreeViewProps['onExpandedItemsChange'];
+  onNodeToggle?: SimpleTreeViewProps['onExpandedItemsChange'];
   onFocusedItemChange?: (event: React.SyntheticEvent, itemId: string) => void;
   onItemClick?: (event: React.MouseEvent, itemId: string) => void;
 }
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/MUIAsyncTreeSelect/hooks/useTreeFocusManagement.ts b/openmetadata-ui/src/main/resources/ui/src/components/common/MUIAsyncTreeSelect/hooks/useTreeFocusManagement.ts
index 8c5e1404d12..fa4b4c305ba 100644
--- a/openmetadata-ui/src/main/resources/ui/src/components/common/MUIAsyncTreeSelect/hooks/useTreeFocusManagement.ts
+++ b/openmetadata-ui/src/main/resources/ui/src/components/common/MUIAsyncTreeSelect/hooks/useTreeFocusManagement.ts
@@ -35,24 +35,21 @@ export const useTreeFocusManagement = ({
     }
   }, [inputRef, disabled]);
 
-  const handleBlur = useCallback(
-    (e: React.FocusEvent) => {
-      // Use setTimeout to check if the new focus is still within our component
-      setTimeout(() => {
-        const currentActiveElement = document.activeElement;
+  const handleBlur = useCallback(() => {
+    // Use setTimeout to check if the new focus is still within our component
+    setTimeout(() => {
+      const currentActiveElement = document.activeElement;
 
-        // Close if focus moved outside our component
-        if (
-          anchorRef.current &&
-          !anchorRef.current.contains(currentActiveElement) &&
-          !(currentActiveElement as HTMLElement)?.closest('.MuiPopper-root')
-        ) {
-          onCloseDropdown?.();
-        }
-      }, 100);
-    },
-    [onCloseDropdown, anchorRef]
-  );
+      // Close if focus moved outside our component
+      if (
+        anchorRef.current &&
+        !anchorRef.current.contains(currentActiveElement) &&
+        !(currentActiveElement as HTMLElement)?.closest('.MuiPopper-root')
+      ) {
+        onCloseDropdown?.();
+      }
+    }, 100);
+  }, [onCloseDropdown, anchorRef]);
 
   const handleMouseDown = useCallback((e: React.MouseEvent) => {
     e.preventDefault();
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/MUIAsyncTreeSelect/hooks/useTreeKeyboardNavigation.ts b/openmetadata-ui/src/main/resources/ui/src/components/common/MUIAsyncTreeSelect/hooks/useTreeKeyboardNavigation.ts
index cad3e108650..670d61ac7a0 100644
--- a/openmetadata-ui/src/main/resources/ui/src/components/common/MUIAsyncTreeSelect/hooks/useTreeKeyboardNavigation.ts
+++ b/openmetadata-ui/src/main/resources/ui/src/components/common/MUIAsyncTreeSelect/hooks/useTreeKeyboardNavigation.ts
@@ -35,7 +35,6 @@ export const useTreeKeyboardNavigation = ({
   getVisibleNodes,
   expandedNodes,
   toggleNodeExpansion,
-  treeData,
   inputRef,
   handleNodeClick,
   onOpenDropdown,
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/MUITagSuggestion/MUITagSuggestion.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/MUITagSuggestion/MUITagSuggestion.tsx
index 7c433bb5a69..c60e2bafcde 100644
--- a/openmetadata-ui/src/main/resources/ui/src/components/common/MUITagSuggestion/MUITagSuggestion.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/components/common/MUITagSuggestion/MUITagSuggestion.tsx
@@ -16,6 +16,7 @@ import { debounce, isArray, isEmpty } from 'lodash';
 import { EntityTags } from 'Models';
 import {
   FC,
+  HtmlHTMLAttributes,
   ReactNode,
   useCallback,
   useEffect,
@@ -62,6 +63,26 @@ const MUITagSuggestion: FC = ({
   const [open, setOpen] = useState(false);
   const { t } = useTranslation();
 
+  const fetchOptions = async (searchText: string) => {
+    setLoading(true);
+    try {
+      const response = await tagClassBase.getTags(searchText, 1, true);
+      const fetchedOptions = response?.data || [];
+      const mappedOptions: TagOption[] = fetchedOptions.map(
+        (opt: SelectOption) => ({
+          label: opt.label,
+          value: opt.value,
+          data: opt.data as TagLabel,
+        })
+      );
+      setOptions(mappedOptions);
+    } catch {
+      setOptions([]);
+    } finally {
+      setLoading(false);
+    }
+  };
+
   const searchDebounced = useRef(
     debounce(async (searchValue: string) => {
       await fetchOptions(searchValue);
@@ -94,26 +115,6 @@ const MUITagSuggestion: FC = ({
     }
   }, [open]);
 
-  const fetchOptions = async (searchText: string) => {
-    setLoading(true);
-    try {
-      const response = await tagClassBase.getTags(searchText, 1, 20);
-      const fetchedOptions = response?.data || [];
-      const mappedOptions: TagOption[] = fetchedOptions.map(
-        (opt: SelectOption) => ({
-          label: opt.label,
-          value: opt.value,
-          data: opt.data as TagLabel,
-        })
-      );
-      setOptions(mappedOptions);
-    } catch (error) {
-      setOptions([]);
-    } finally {
-      setLoading(false);
-    }
-  };
-
   const handleInputChange = useCallback(
     (_event: React.SyntheticEvent, newInputValue: string) => {
       setInputValue(newInputValue);
@@ -122,11 +123,7 @@ const MUITagSuggestion: FC = ({
   );
 
   const handleChange = useCallback(
-    (
-      event: React.SyntheticEvent,
-      newValue: (TagOption | string)[],
-      reason: string
-    ) => {
+    (_event: React.SyntheticEvent, newValue: (TagOption | string)[]) => {
       if (isArray(newValue)) {
         // Filter out string values from freeSolo
         const optionValues = newValue.filter(
@@ -176,10 +173,10 @@ const MUITagSuggestion: FC = ({
       ListboxProps={
         {
           key: `listbox-${memoizedOptions.length}`,
-        } as any
+        } as HtmlHTMLAttributes
       }
       autoFocus={autoFocus}
-      getOptionLabel={(option: TagOption | string) =>
+      getOptionLabel={(option) =>
         typeof option === 'string' ? option : option.label
       }
       inputValue={inputValue}
@@ -213,7 +210,9 @@ const MUITagSuggestion: FC = ({
           
             
+              sx={{
+                color: option.data?.style?.color || undefined,
+              }}>
               {option.label}
             
             {(option.data?.displayName || option.data?.name) && (
@@ -224,8 +223,8 @@ const MUITagSuggestion: FC = ({
           
         
       )}
-      renderTags={(value: TagOption[], getTagProps) =>
-        value.map((option: TagOption, index: number) => {
+      renderTags={(value, getTagProps) =>
+        value.map((option, index: number) => {
           const chipProps = getTagProps({ index });
 
           return (
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/MUIUserTeamSelect/MUIUserTeamSelect.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/MUIUserTeamSelect/MUIUserTeamSelect.tsx
index e907427739a..4867a795c22 100644
--- a/openmetadata-ui/src/main/resources/ui/src/components/common/MUIUserTeamSelect/MUIUserTeamSelect.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/components/common/MUIUserTeamSelect/MUIUserTeamSelect.tsx
@@ -14,7 +14,14 @@
 import { Autocomplete, Box, Chip, TextField, useTheme } from '@mui/material';
 import { XClose } from '@untitledui/icons';
 import { debounce } from 'lodash';
-import { FC, useCallback, useEffect, useMemo, useState } from 'react';
+import {
+  FC,
+  SyntheticEvent,
+  useCallback,
+  useEffect,
+  useMemo,
+  useState,
+} from 'react';
 import { useTranslation } from 'react-i18next';
 import { ReactComponent as IconTeams } from '../../../assets/svg/teams-grey.svg';
 import { PAGE_SIZE_MEDIUM } from '../../../constants/constants';
@@ -112,7 +119,7 @@ const MUIUserTeamSelect: FC = ({
       users.map((user) => ({
         label: getEntityName(user),
         value: user.id,
-        entity: user,
+        entity: user as unknown as EntityReference,
         isTeam: false,
       }))
     );
@@ -144,7 +151,7 @@ const MUIUserTeamSelect: FC = ({
       teams.map((team) => ({
         label: getEntityName(team),
         value: team.id,
-        entity: team,
+        entity: team as unknown as EntityReference,
         isTeam: true,
       }))
     );
@@ -190,7 +197,7 @@ const MUIUserTeamSelect: FC = ({
   }, [open]);
 
   const handleChange = (
-    _event: any,
+    _event: SyntheticEvent,
     newValue: string | OptionType | (string | OptionType)[] | null
   ) => {
     if (!onChange) {
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/atoms/TagChip/TagChip.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/atoms/TagChip/TagChip.tsx
index 8d4b3abbea7..e165c020bfe 100644
--- a/openmetadata-ui/src/main/resources/ui/src/components/common/atoms/TagChip/TagChip.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/components/common/atoms/TagChip/TagChip.tsx
@@ -18,7 +18,7 @@ import { FC, ReactElement } from 'react';
 export interface TagChipProps extends Omit {
   label: string;
   icon?: ReactElement;
-  onDelete?: () => void;
+  onDelete?: (e: Event) => void;
   size?: 'small' | 'medium' | 'large';
   variant?: 'filled' | 'outlined' | 'blueGray';
   tagColor?: string; // For the colored bar indicator
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/atoms/asyncTreeSelect/types.ts b/openmetadata-ui/src/main/resources/ui/src/components/common/atoms/asyncTreeSelect/types.ts
index 3eb71ffbb97..6268eb0eaf7 100644
--- a/openmetadata-ui/src/main/resources/ui/src/components/common/atoms/asyncTreeSelect/types.ts
+++ b/openmetadata-ui/src/main/resources/ui/src/components/common/atoms/asyncTreeSelect/types.ts
@@ -25,6 +25,7 @@ export interface TreeNode {
   parent?: string;
   allowSelection?: boolean;
   lazyLoad?: boolean;
+  hasChildren?: boolean;
 }
 
 export interface TreeDataFetcherParams {
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/atoms/asyncTreeSelect/useAsyncTreeSelect.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/atoms/asyncTreeSelect/useAsyncTreeSelect.tsx
index cb583441063..4e65e9138e3 100644
--- a/openmetadata-ui/src/main/resources/ui/src/components/common/atoms/asyncTreeSelect/useAsyncTreeSelect.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/components/common/atoms/asyncTreeSelect/useAsyncTreeSelect.tsx
@@ -163,20 +163,6 @@ export const useAsyncTreeSelect = (
     []
   );
 
-  // Utility function to determine if a node should lazy load
-  const shouldNodeLazyLoad = useCallback(
-    (node: TreeNode | null, componentLazyLoad: boolean): boolean => {
-      if (!node) {
-        return componentLazyLoad;
-      }
-
-      return (
-        node.lazyLoad !== false && (node.lazyLoad === true || componentLazyLoad)
-      );
-    },
-    []
-  );
-
   // Handle node expansion
   const handleNodeExpansion = useCallback(
     (nodeId: string) => {
diff --git a/openmetadata-ui/src/main/resources/ui/src/constants/Customize.constants.ts b/openmetadata-ui/src/main/resources/ui/src/constants/Customize.constants.ts
index ea2bb90c98e..22e8f4c1052 100644
--- a/openmetadata-ui/src/main/resources/ui/src/constants/Customize.constants.ts
+++ b/openmetadata-ui/src/main/resources/ui/src/constants/Customize.constants.ts
@@ -10,10 +10,11 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
+import { TFunctionKeys } from 'i18next';
 import { EntityTabs, EntityType } from '../enums/entity.enum';
 import { PageType } from '../generated/system/ui/page';
 
-export const TAB_LABEL_MAP: Record = {
+export const TAB_LABEL_MAP = {
   [EntityTabs.OVERVIEW]: 'label.overview',
   [EntityTabs.GLOSSARY_TERMS]: 'label.glossary-term-plural',
   [EntityTabs.ASSETS]: 'label.asset-plural',
@@ -60,7 +61,7 @@ export const TAB_LABEL_MAP: Record = {
   [EntityTabs.CONTRACT]: 'label.contract',
   [EntityTabs.DIRECTORIES]: 'label.directory-plural',
   [EntityTabs.WORKSHEETS]: 'label.worksheet-plural',
-} as const;
+} as Record;
 
 export type CustomizeEntityType =
   | EntityType.TABLE
diff --git a/openmetadata-ui/src/main/resources/ui/src/constants/LeftSidebar.constants.ts b/openmetadata-ui/src/main/resources/ui/src/constants/LeftSidebar.constants.ts
index 8452461d05a..365aeb84b89 100644
--- a/openmetadata-ui/src/main/resources/ui/src/constants/LeftSidebar.constants.ts
+++ b/openmetadata-ui/src/main/resources/ui/src/constants/LeftSidebar.constants.ts
@@ -33,7 +33,14 @@ import { DataInsightTabs } from '../interface/data-insight.interface';
 import { createIconWithStroke } from '../utils/IconUtils';
 import { PLACEHOLDER_ROUTE_TAB, ROUTES } from './constants';
 
-const DataProductIcon = createIconWithStroke(Cube01, 1.2);
+const DataProductIcon = createIconWithStroke(
+  Cube01 as React.ComponentType<{
+    size?: number;
+    strokeWidth?: number;
+    style?: React.CSSProperties;
+  }>,
+  1.2
+);
 
 export const SIDEBAR_NESTED_KEYS = {
   [ROUTES.OBSERVABILITY_ALERTS]: ROUTES.OBSERVABILITY_ALERTS,
diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/DataQuality/DataQualityClassBase.ts b/openmetadata-ui/src/main/resources/ui/src/pages/DataQuality/DataQualityClassBase.ts
index 852cfefd591..ba6b2868983 100644
--- a/openmetadata-ui/src/main/resources/ui/src/pages/DataQuality/DataQualityClassBase.ts
+++ b/openmetadata-ui/src/main/resources/ui/src/pages/DataQuality/DataQualityClassBase.ts
@@ -80,6 +80,7 @@ class DataQualityClassBase {
   }
 
   public getExportDataQualityDashboardButton(
+    // eslint-disable-next-line @typescript-eslint/no-unused-vars
     _activeTab: DataQualityPageTabs
   ): React.ReactNode {
     return null;
diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/EntityImport/BulkEntityImportPage/BulkEntityImportPage.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/EntityImport/BulkEntityImportPage/BulkEntityImportPage.tsx
index 8b2e9af9986..b23170ba332 100644
--- a/openmetadata-ui/src/main/resources/ui/src/pages/EntityImport/BulkEntityImportPage/BulkEntityImportPage.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/pages/EntityImport/BulkEntityImportPage/BulkEntityImportPage.tsx
@@ -130,7 +130,7 @@ const BulkEntityImportPage = () => {
         entityType,
         fqn
       );
-      setEntity(response);
+      setEntity(response as DataAssetsHeaderProps['dataAsset']);
     } catch {
       // not show error here
     }
diff --git a/openmetadata-ui/src/main/resources/ui/src/rest/glossaryAPI.ts b/openmetadata-ui/src/main/resources/ui/src/rest/glossaryAPI.ts
index b8cf1587068..42c776f5311 100644
--- a/openmetadata-ui/src/main/resources/ui/src/rest/glossaryAPI.ts
+++ b/openmetadata-ui/src/main/resources/ui/src/rest/glossaryAPI.ts
@@ -318,7 +318,7 @@ export const searchGlossaryTermsPaginated = async (
   offset = 0,
   fields?: string
 ) => {
-  const params: Record = {
+  const params: Record = {
     limit,
     offset,
   };
diff --git a/openmetadata-ui/src/main/resources/ui/src/rest/lineageAPI.ts b/openmetadata-ui/src/main/resources/ui/src/rest/lineageAPI.ts
index 3bebd782c1c..6daa6776d22 100644
--- a/openmetadata-ui/src/main/resources/ui/src/rest/lineageAPI.ts
+++ b/openmetadata-ui/src/main/resources/ui/src/rest/lineageAPI.ts
@@ -36,7 +36,7 @@ export const updateLineageEdge = async (edge: AddLineage) => {
 
 export const exportLineageAsync = async (
   fqn: string,
-  entityType: string,
+  entityType?: string,
   config?: LineageConfig,
   queryFilter?: string
 ) => {
diff --git a/openmetadata-ui/src/main/resources/ui/src/test/unit/mocks/reactColumnResize.mock.js b/openmetadata-ui/src/main/resources/ui/src/test/unit/mocks/reactColumnResize.mock.js
index 81d8282d54c..9d8fbab9fee 100644
--- a/openmetadata-ui/src/main/resources/ui/src/test/unit/mocks/reactColumnResize.mock.js
+++ b/openmetadata-ui/src/main/resources/ui/src/test/unit/mocks/reactColumnResize.mock.js
@@ -10,9 +10,9 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-import React from 'react';
 
 /* eslint-disable */
+const React = require('react');
 module.exports = {
   useAntdColumnResize: jest.fn().mockImplementation((hookDataFunction) => {
     return {
diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/EntityLineageUtils.tsx b/openmetadata-ui/src/main/resources/ui/src/utils/EntityLineageUtils.tsx
index fdd83d99880..510721f9f60 100644
--- a/openmetadata-ui/src/main/resources/ui/src/utils/EntityLineageUtils.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/utils/EntityLineageUtils.tsx
@@ -107,6 +107,16 @@ import { t } from './i18next/LocalUtil';
 import { jsonToCSV } from './StringsUtils';
 import { showErrorToast } from './ToastUtils';
 
+interface LayoutedElements {
+  node: Array<
+    Node & {
+      nodeHeight: number;
+      childrenHeight: number;
+    }
+  >;
+  edge: Edge[];
+}
+
 export const MAX_LINEAGE_LENGTH = 20;
 
 export const encodeLineageHandles = (handle: string) => {
@@ -176,7 +186,7 @@ export const getLayoutedElements = (
   isExpanded = true,
   expandAllColumns = false,
   columnsHavingLineage: string[] = []
-) => {
+): LayoutedElements => {
   const Graph = graphlib.Graph;
   const dagreGraph = new Graph();
   dagreGraph.setDefaultEdgeLabel(() => ({}));
diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/EntityUtilClassBase.ts b/openmetadata-ui/src/main/resources/ui/src/utils/EntityUtilClassBase.ts
index a90c2213559..bb79d78f9f2 100644
--- a/openmetadata-ui/src/main/resources/ui/src/utils/EntityUtilClassBase.ts
+++ b/openmetadata-ui/src/main/resources/ui/src/utils/EntityUtilClassBase.ts
@@ -490,6 +490,7 @@ class EntityUtilClassBase {
     }
   }
 
+  // eslint-disable-next-line @typescript-eslint/no-unused-vars
   public getEntityFloatingButton(_: EntityType): FC | null {
     return null;
   }
diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/EntityUtils.test.tsx b/openmetadata-ui/src/main/resources/ui/src/utils/EntityUtils.test.tsx
index 3c7c7353deb..c1b189a212a 100644
--- a/openmetadata-ui/src/main/resources/ui/src/utils/EntityUtils.test.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/utils/EntityUtils.test.tsx
@@ -325,15 +325,15 @@ describe('EntityUtils unit tests', () => {
       { text: null, searchText: 'test', expected: '' },
       { text: 'mockText', searchText: null, expected: 'mockText' },
       { text: null, searchText: null, expected: '' },
-      { text: 0 as any, searchText: '', expected: 0 },
-      { text: false as any, searchText: '', expected: false },
+      { text: 0, searchText: '', expected: 0 },
+      { text: false, searchText: '', expected: false },
     ];
 
     it.each(falsyTestCases)(
       'should return expected when text or searchText is null or falsy',
       ({ text, searchText, expected }) => {
         const result = highlightSearchText(
-          text ?? undefined,
+          (text as string) ?? undefined,
           searchText ?? undefined
         );
 
diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/GlossaryUtils.tsx b/openmetadata-ui/src/main/resources/ui/src/utils/GlossaryUtils.tsx
index 3e62d3218be..85df2c4878f 100644
--- a/openmetadata-ui/src/main/resources/ui/src/utils/GlossaryUtils.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/utils/GlossaryUtils.tsx
@@ -498,14 +498,6 @@ export const getGlossaryWidgetFromKey = (widget: WidgetConfig) => {
   );
 };
 
-export const getAllExpandableKeys = (terms: ModifiedGlossary[]): string[] => {
-  const keys: string[] = [];
-
-  processTerms(terms, keys);
-
-  return keys;
-};
-
 const processTerms = (termList: ModifiedGlossary[], keys: string[]) => {
   termList.forEach((term) => {
     if (
@@ -520,3 +512,11 @@ const processTerms = (termList: ModifiedGlossary[], keys: string[]) => {
     }
   });
 };
+
+export const getAllExpandableKeys = (terms: ModifiedGlossary[]): string[] => {
+  const keys: string[] = [];
+
+  processTerms(terms, keys);
+
+  return keys;
+};
diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/IconUtils.tsx b/openmetadata-ui/src/main/resources/ui/src/utils/IconUtils.tsx
index 40c09f1f4c3..de218e18c56 100644
--- a/openmetadata-ui/src/main/resources/ui/src/utils/IconUtils.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/utils/IconUtils.tsx
@@ -54,7 +54,7 @@ import {
   Users01,
   XClose,
 } from '@untitledui/icons';
-import { ComponentType } from 'react';
+import { ComponentType, FC } from 'react';
 
 // Map of icon names to their components
 export const ICON_MAP: Record<
@@ -179,7 +179,7 @@ export const renderIcon = (
  * @param entityType - The type of entity
  * @returns The icon component
  */
-export const getDefaultIconForEntityType = (entityType?: string) => {
+export const getDefaultIconForEntityType = (entityType?: string): FC => {
   if (entityType === 'dataProduct') {
     return Cube01;
   }
diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/ServiceUtilClassBase.ts b/openmetadata-ui/src/main/resources/ui/src/utils/ServiceUtilClassBase.ts
index 892873046fb..0e61e2e197f 100644
--- a/openmetadata-ui/src/main/resources/ui/src/utils/ServiceUtilClassBase.ts
+++ b/openmetadata-ui/src/main/resources/ui/src/utils/ServiceUtilClassBase.ts
@@ -284,7 +284,8 @@ class ServiceUtilClassBase {
     };
   }
 
-  public getServiceExtraInfo(_data?: ServicesType): any {
+  // eslint-disable-next-line @typescript-eslint/no-unused-vars
+  public getServiceExtraInfo(_data?: ServicesType) {
     return null;
   }
 
@@ -826,6 +827,7 @@ class ServiceUtilClassBase {
     return getDriveConfig(type);
   }
 
+  // eslint-disable-next-line @typescript-eslint/no-unused-vars
   public getInsightsTabWidgets(_: ServiceTypes) {
     const widgets: Record> = {
       AgentsStatusWidget,