diff --git a/openmetadata-ui/src/main/resources/ui/src/components/WorkflowDefinitions/WorkflowBuilder/WorkflowHeader.test.tsx b/openmetadata-ui/src/main/resources/ui/src/components/WorkflowDefinitions/WorkflowBuilder/WorkflowHeader.test.tsx
index 6686a2326ad1..7064fe8a1272 100644
--- a/openmetadata-ui/src/main/resources/ui/src/components/WorkflowDefinitions/WorkflowBuilder/WorkflowHeader.test.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/components/WorkflowDefinitions/WorkflowBuilder/WorkflowHeader.test.tsx
@@ -87,6 +87,36 @@ jest.mock('@openmetadata/ui-core-components', () => ({
}) => {children},
}));
+jest.mock('../../common/HeaderShell/HeaderShell.component', () => ({
+ __esModule: true,
+ default: ({
+ breadcrumb,
+ leading,
+ title,
+ subtitle,
+ badge,
+ actions,
+ 'data-testid': dataTestId,
+ }: {
+ breadcrumb?: React.ReactNode;
+ leading?: React.ReactNode;
+ title?: React.ReactNode;
+ subtitle?: React.ReactNode;
+ badge?: React.ReactNode;
+ actions?: React.ReactNode;
+ 'data-testid'?: string;
+ }) => (
+
+ {breadcrumb}
+ {leading}
+ {title}
+ {badge}
+ {subtitle}
+ {actions}
+
+ ),
+}));
+
jest.mock('../../../assets/svg/edit-new.svg', () => ({
ReactComponent: () => null,
}));
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/WorkflowDefinitions/WorkflowBuilder/WorkflowHeader.tsx b/openmetadata-ui/src/main/resources/ui/src/components/WorkflowDefinitions/WorkflowBuilder/WorkflowHeader.tsx
index ecbf0bb8db66..271990970d5e 100644
--- a/openmetadata-ui/src/main/resources/ui/src/components/WorkflowDefinitions/WorkflowBuilder/WorkflowHeader.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/components/WorkflowDefinitions/WorkflowBuilder/WorkflowHeader.tsx
@@ -14,7 +14,6 @@
import {
Badge,
Button,
- Card,
Dialog,
Input,
Modal,
@@ -31,9 +30,11 @@ import { ReactComponent as WorkflowIcon } from '../../../assets/svg/workflow.svg
import { useWorkflowModeContext } from '../../../contexts/WorkflowModeContext';
import { WorkflowHeaderProps } from '../../../interface/workflow-builder-components.interface';
import { showErrorToast } from '../../../utils/ToastUtils';
+import HeaderShell from '../../common/HeaderShell/HeaderShell.component';
import { WorkflowControls } from './WorkflowControls';
export const WorkflowHeader: React.FC = ({
+ breadcrumb,
title,
workflowName,
handleTestWorkflow,
@@ -89,89 +90,96 @@ export const WorkflowHeader: React.FC = ({
};
return (
-
-
-
+ <>
+
+
+ {showEditButton && (
+
+ )}
+ >
+ }
+ badge={
+ <>
+ {isNoOp && (
+
+
+
+ {t('label.system')}
+
+
+
+ )}
+ {!isViewMode && !isNoOp && (
+
+ )}
+ >
+ }
+ breadcrumb={breadcrumb}
+ data-testid="workflow-header"
+ leading={
-
-
-
-
- {title}
-
- {isNoOp && (
-
-
-
- {t('label.system')}
-
-
-
- )}
- {!isViewMode && !isNoOp && (
-
- )}
-
- {workflowName && (
-
- {workflowName}
-
- )}
-
-
-
-
-
- {showEditButton && (
-
- )}
-
-
+ }
+ subtitle={
+ workflowName ? (
+
+ {workflowName}
+
+ ) : undefined
+ }
+ title={
+
+ {title}
+
+ }
+ variant="gradient"
+ />
@@ -209,6 +217,6 @@ export const WorkflowHeader: React.FC = ({
-
+ >
);
};
diff --git a/openmetadata-ui/src/main/resources/ui/src/interface/workflow-builder-components.interface.ts b/openmetadata-ui/src/main/resources/ui/src/interface/workflow-builder-components.interface.ts
index 7d06e644b1fe..98979afbff0e 100644
--- a/openmetadata-ui/src/main/resources/ui/src/interface/workflow-builder-components.interface.ts
+++ b/openmetadata-ui/src/main/resources/ui/src/interface/workflow-builder-components.interface.ts
@@ -289,6 +289,7 @@ export interface WorkflowControlsProps {
}
export interface WorkflowHeaderProps {
+ breadcrumb?: React.ReactNode;
title: string;
workflowName?: string;
children?: React.ReactNode;
diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/WorkflowDefinitions/WorkflowBuilder/WorkflowBuilder.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/WorkflowDefinitions/WorkflowBuilder/WorkflowBuilder.tsx
index 52cd8c9d8558..5c95b9d847a3 100644
--- a/openmetadata-ui/src/main/resources/ui/src/pages/WorkflowDefinitions/WorkflowBuilder/WorkflowBuilder.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/pages/WorkflowDefinitions/WorkflowBuilder/WorkflowBuilder.tsx
@@ -26,8 +26,9 @@ import { useTranslation } from 'react-i18next';
import { Navigate } from 'react-router-dom';
import { Edge, Node, ReactFlowProvider } from 'reactflow';
import DeleteModal from '../../../components/common/DeleteModal/DeleteModal';
+import HeaderBreadcrumb from '../../../components/common/HeaderBreadcrumb/HeaderBreadcrumb.component';
+import { getGlossaryHomeCrumb } from '../../../components/common/HeaderBreadcrumb/HeaderBreadcrumb.utils';
import Loader from '../../../components/common/Loader/Loader';
-import TitleBreadcrumb from '../../../components/common/TitleBreadcrumb/TitleBreadcrumb.component';
import { UnsavedChangesModal } from '../../../components/Modals/UnsavedChangesModal/UnsavedChangesModal.component';
import PageLayoutV1 from '../../../components/PageLayoutV1/PageLayoutV1';
import {
@@ -48,6 +49,7 @@ import {
WorkflowModeProvider,
} from '../../../contexts/WorkflowModeContext';
import { NodeType } from '../../../generated/governance/workflows/elements/nodeType';
+import { useIsAiMode } from '../../../hooks/useAppMode';
import { useFqn } from '../../../hooks/useFqn';
import { useWorkflowActions } from '../../../hooks/useWorkflowActions';
import { useWorkflowHistory } from '../../../hooks/useWorkflowHistory';
@@ -73,6 +75,7 @@ const WorkflowBuilderInternal: React.FC = ({
workflowLogic,
}) => {
const { t } = useTranslation();
+ const isAiMode = useIsAiMode();
const {
canAccessSidebar,
canDragNodes,
@@ -408,15 +411,23 @@ const WorkflowBuilderInternal: React.FC = ({
workflowMetadata?.displayName || 'Workflow Builder';
const workflowName = workflowMetadata?.name;
- const breadcrumbs = useMemo(() => {
- return [
- {
- activeTitle: false,
- name: t('label.workflow-plural'),
- url: getWorkflowDefinitionsListPath(),
- },
- ];
- }, [workflowDisplayName, t]);
+ const breadcrumb = useMemo(
+ () => (
+
+ ),
+ [workflowDisplayName, t]
+ );
if (loading) {
return ;
@@ -440,18 +451,20 @@ const WorkflowBuilderInternal: React.FC = ({
height: 'calc(100vh - var(--ant-navbar-height))',
overflow: 'hidden',
}}
- pageTitle={t('label.workflow-plural')}>
+ pageTitle={t('label.workflow-plural')}
+ variant={isAiMode ? 'compact' : 'default'}>
{isConnectionModalOpen && (
)}
-