@orchestrator-ui/orchestrator-ui-components 3.1.0 → 3.2.0

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orchestrator-ui/orchestrator-ui-components",
3
- "version": "3.1.0",
3
+ "version": "3.2.0",
4
4
  "license": "Apache-2.0",
5
5
  "description": "Library of UI Components used to display the workflow orchestrator frontend",
6
6
  "author": {
@@ -0,0 +1,28 @@
1
+ import React, { FC, ReactNode, createContext } from 'react';
2
+
3
+ import { getPageTemplateStyles } from '@/components/WfoPageTemplate/WfoPageTemplate/styles';
4
+ import { useWithOrchestratorTheme } from '@/hooks';
5
+
6
+ export type ContentType = {
7
+ contentRef: React.RefObject<HTMLDivElement>;
8
+ };
9
+ export const ContentContext = createContext<ContentType | undefined>(undefined);
10
+ export type ContentContextProviderProps = ContentType & {
11
+ navigationHeight: number;
12
+ children: ReactNode;
13
+ };
14
+ export const ContentContextProvider: FC<ContentContextProviderProps> = ({
15
+ contentRef,
16
+ navigationHeight,
17
+ children,
18
+ }) => {
19
+ const { getContentStyle } = useWithOrchestratorTheme(getPageTemplateStyles);
20
+
21
+ return (
22
+ <div ref={contentRef} css={getContentStyle(navigationHeight)}>
23
+ <ContentContext.Provider value={{ contentRef }}>
24
+ {children}
25
+ </ContentContext.Provider>
26
+ </div>
27
+ );
28
+ };
@@ -1,11 +1,13 @@
1
- import React, { FC, ReactElement, ReactNode, useState } from 'react';
1
+ import React, { FC, ReactElement, ReactNode, useRef, useState } from 'react';
2
2
 
3
3
  import type { EuiThemeColorMode } from '@elastic/eui';
4
- import { EuiPageTemplate } from '@elastic/eui';
5
- import { EuiSideNavItemType } from '@elastic/eui/src/components/side_nav/side_nav_types';
4
+ import { EuiPageTemplate, EuiSideNavItemType } from '@elastic/eui';
6
5
 
7
6
  import { WfoBreadcrumbs, WfoPageHeader, WfoSidebar } from '@/components';
8
- import { useOrchestratorTheme } from '@/hooks';
7
+ import { useWithOrchestratorTheme } from '@/hooks';
8
+
9
+ import { ContentContextProvider } from './ContentContext';
10
+ import { getPageTemplateStyles } from './styles';
9
11
 
10
12
  export interface WfoPageTemplateProps {
11
13
  getAppLogo: (navigationHeight: number) => ReactElement;
@@ -22,15 +24,19 @@ export const WfoPageTemplate: FC<WfoPageTemplateProps> = ({
22
24
  overrideMenuItems,
23
25
  onThemeSwitch,
24
26
  }) => {
25
- const { theme, multiplyByBaseUnit } = useOrchestratorTheme();
27
+ const { getSidebarStyle, NAVIGATION_HEIGHT } = useWithOrchestratorTheme(
28
+ getPageTemplateStyles,
29
+ );
30
+
26
31
  const [isSideMenuVisible, setIsSideMenuVisible] = useState(true);
27
- const navigationHeight = multiplyByBaseUnit(3);
32
+
33
+ const headerRowRef = useRef<HTMLDivElement>(null);
28
34
 
29
35
  return (
30
36
  <>
31
37
  <WfoPageHeader
32
38
  getAppLogo={getAppLogo}
33
- navigationHeight={navigationHeight}
39
+ navigationHeight={NAVIGATION_HEIGHT}
34
40
  onThemeSwitch={onThemeSwitch}
35
41
  />
36
42
  {/* Sidebar and content area */}
@@ -38,34 +44,30 @@ export const WfoPageTemplate: FC<WfoPageTemplateProps> = ({
38
44
  panelled={false}
39
45
  grow={false}
40
46
  contentBorder={false}
41
- minHeight={`calc(100vh - ${navigationHeight}px)`}
47
+ minHeight={`calc(100vh - ${NAVIGATION_HEIGHT}px)`}
42
48
  restrictWidth={false}
43
49
  >
44
50
  {isSideMenuVisible && (
45
51
  <EuiPageTemplate.Sidebar
46
- css={{
47
- backgroundColor: theme.colors.body,
48
- overflowY: 'auto',
49
- maxHeight: `calc(100vh - ${navigationHeight}px)`,
50
- }}
52
+ css={getSidebarStyle(NAVIGATION_HEIGHT)}
51
53
  >
52
54
  <WfoSidebar overrideMenuItems={overrideMenuItems} />
53
55
  </EuiPageTemplate.Sidebar>
54
56
  )}
55
- <EuiPageTemplate.Section
56
- css={{
57
- backgroundColor: theme.colors.emptyShade,
58
- overflowY: 'auto',
59
- maxHeight: `calc(100vh - ${navigationHeight}px)`,
60
- }}
57
+
58
+ <ContentContextProvider
59
+ contentRef={headerRowRef}
60
+ navigationHeight={NAVIGATION_HEIGHT}
61
61
  >
62
- <WfoBreadcrumbs
63
- handleSideMenuClick={() =>
64
- setIsSideMenuVisible((prevState) => !prevState)
65
- }
66
- />
67
- {children}
68
- </EuiPageTemplate.Section>
62
+ <EuiPageTemplate.Section>
63
+ <WfoBreadcrumbs
64
+ handleSideMenuClick={() =>
65
+ setIsSideMenuVisible((prevState) => !prevState)
66
+ }
67
+ />
68
+ {children}
69
+ </EuiPageTemplate.Section>
70
+ </ContentContextProvider>
69
71
  </EuiPageTemplate>
70
72
  </>
71
73
  );
@@ -1 +1,2 @@
1
+ export * from './ContentContext';
1
2
  export * from './WfoPageTemplate';
@@ -0,0 +1,30 @@
1
+ import { css } from '@emotion/react';
2
+
3
+ import { WfoTheme } from '@/hooks';
4
+
5
+ export const getPageTemplateStyles = ({
6
+ theme,
7
+ multiplyByBaseUnit,
8
+ }: WfoTheme) => {
9
+ const NAVIGATION_HEIGHT = multiplyByBaseUnit(3);
10
+
11
+ const getSidebarStyle = (navigationHeight: number) =>
12
+ css({
13
+ backgroundColor: theme.colors.body,
14
+ overflowY: 'auto',
15
+ maxHeight: `calc(100vh - ${navigationHeight}px)`,
16
+ });
17
+
18
+ const getContentStyle = (navigationHeight: number) =>
19
+ css({
20
+ backgroundColor: theme.colors.emptyShade,
21
+ overflowY: 'auto',
22
+ maxHeight: `calc(100vh - ${navigationHeight}px)`,
23
+ });
24
+
25
+ return {
26
+ NAVIGATION_HEIGHT,
27
+ getSidebarStyle,
28
+ getContentStyle,
29
+ };
30
+ };
@@ -3,7 +3,7 @@ import React, { FC, useState } from 'react';
3
3
  import { useTranslations } from 'next-intl';
4
4
  import { useRouter } from 'next/router';
5
5
 
6
- import { EuiSideNav, EuiSpacer } from '@elastic/eui';
6
+ import { EuiHorizontalRule, EuiSideNav, EuiSpacer } from '@elastic/eui';
7
7
  import { EuiSideNavItemType } from '@elastic/eui/src/components/side_nav/side_nav_types';
8
8
 
9
9
  import { WfoIsAllowedToRender, menuItemIsAllowed } from '@/components';
@@ -36,6 +36,12 @@ export const urlPolicyMap = new Map<string, PolicyResource>([
36
36
  [PATH_SETTINGS, PolicyResource.NAVIGATION_SETTINGS],
37
37
  ]);
38
38
 
39
+ export const sideNavMenuDivider: EuiSideNavItemType<object> = {
40
+ name: '',
41
+ id: 'menuDivider',
42
+ renderItem: () => <EuiHorizontalRule margin="xs" />,
43
+ };
44
+
39
45
  export type WfoSidebarProps = {
40
46
  overrideMenuItems?: (
41
47
  defaultMenuItems: EuiSideNavItemType<object>[],
@@ -60,7 +66,7 @@ export const WfoSidebar: FC<WfoSidebarProps> = ({ overrideMenuItems }) => {
60
66
  const defaultMenuItems: EuiSideNavItemType<object>[] = [
61
67
  {
62
68
  name: t('start'),
63
- id: '2',
69
+ id: 'start',
64
70
  isSelected: router.pathname === PATH_START,
65
71
  href: PATH_START,
66
72
  renderItem: () => (
@@ -73,7 +79,7 @@ export const WfoSidebar: FC<WfoSidebarProps> = ({ overrideMenuItems }) => {
73
79
  },
74
80
  {
75
81
  name: t('subscriptions'),
76
- id: '3',
82
+ id: 'subscriptions',
77
83
  isSelected: router.pathname.startsWith(PATH_SUBSCRIPTIONS),
78
84
  href: PATH_SUBSCRIPTIONS,
79
85
  renderItem: () => (
@@ -86,7 +92,7 @@ export const WfoSidebar: FC<WfoSidebarProps> = ({ overrideMenuItems }) => {
86
92
  },
87
93
  {
88
94
  name: t('workflows'),
89
- id: '4',
95
+ id: 'workflows',
90
96
  isSelected: router.pathname.startsWith(PATH_WORKFLOWS),
91
97
  href: PATH_WORKFLOWS,
92
98
  renderItem: () => (
@@ -100,7 +106,7 @@ export const WfoSidebar: FC<WfoSidebarProps> = ({ overrideMenuItems }) => {
100
106
  {
101
107
  name: t('tasks'),
102
108
  isSelected: router.pathname.startsWith(PATH_TASKS),
103
- id: '5',
109
+ id: 'tasks',
104
110
  href: PATH_TASKS,
105
111
  renderItem: () => (
106
112
  <WfoMenuItemLink
@@ -112,7 +118,7 @@ export const WfoSidebar: FC<WfoSidebarProps> = ({ overrideMenuItems }) => {
112
118
  },
113
119
  {
114
120
  name: t('metadata'),
115
- id: '6',
121
+ id: 'metadata',
116
122
  href: PATH_METADATA,
117
123
  isSelected:
118
124
  router.pathname.substring(0, PATH_METADATA.length) ===
@@ -121,17 +127,13 @@ export const WfoSidebar: FC<WfoSidebarProps> = ({ overrideMenuItems }) => {
121
127
  <WfoMenuItemLink
122
128
  path={PATH_METADATA_PRODUCTS}
123
129
  translationString="metadata"
124
- isSelected={
125
- router.pathname.substring(0, PATH_METADATA.length) ===
126
- PATH_METADATA
127
- }
128
130
  hasSubItems={true}
129
131
  />
130
132
  ),
131
133
  items: [
132
134
  {
133
135
  name: t('metadataProducts'),
134
- id: '6.1',
136
+ id: 'metadata-products',
135
137
  href: PATH_METADATA_PRODUCTS,
136
138
  renderItem: () => (
137
139
  <WfoMenuItemLink
@@ -146,7 +148,7 @@ export const WfoSidebar: FC<WfoSidebarProps> = ({ overrideMenuItems }) => {
146
148
  },
147
149
  {
148
150
  name: t('metadataProductblocks'),
149
- id: '6.2',
151
+ id: 'metadata-productblocks',
150
152
  isSelected:
151
153
  router.pathname === PATH_METADATA_PRODUCT_BLOCKS,
152
154
  href: PATH_METADATA_PRODUCT_BLOCKS,
@@ -163,7 +165,7 @@ export const WfoSidebar: FC<WfoSidebarProps> = ({ overrideMenuItems }) => {
163
165
  },
164
166
  {
165
167
  name: t('metadataResourceTypes'),
166
- id: '6.3',
168
+ id: 'metadata-resourceTypes',
167
169
  href: PATH_METADATA_RESOURCE_TYPES,
168
170
  isSelected:
169
171
  router.pathname === PATH_METADATA_RESOURCE_TYPES,
@@ -180,7 +182,7 @@ export const WfoSidebar: FC<WfoSidebarProps> = ({ overrideMenuItems }) => {
180
182
  },
181
183
  {
182
184
  name: t('metadataWorkflows'),
183
- id: '6.4',
185
+ id: 'metadata-workflows',
184
186
  isSelected: router.pathname === PATH_METADATA_WORKFLOWS,
185
187
  href: PATH_METADATA_WORKFLOWS,
186
188
  renderItem: () => (
@@ -196,7 +198,7 @@ export const WfoSidebar: FC<WfoSidebarProps> = ({ overrideMenuItems }) => {
196
198
  },
197
199
  {
198
200
  name: t('metadataTasks'),
199
- id: '6.5',
201
+ id: 'metadata-tasks',
200
202
  isSelected: router.pathname === PATH_METADATA_TASKS,
201
203
  href: PATH_METADATA_TASKS,
202
204
  renderItem: () => (
@@ -212,8 +214,8 @@ export const WfoSidebar: FC<WfoSidebarProps> = ({ overrideMenuItems }) => {
212
214
  },
213
215
  {
214
216
  name: t('settings'),
217
+ id: 'settings',
215
218
  isSelected: router.pathname === PATH_SETTINGS,
216
- id: '7',
217
219
  href: PATH_SETTINGS,
218
220
  renderItem: () => (
219
221
  <WfoMenuItemLink
@@ -45,7 +45,7 @@ export const getMenuItemStyles = ({ theme, isDarkThemeActive }: WfoTheme) => {
45
45
  ':hover': {
46
46
  textDecoration: 'underline',
47
47
  },
48
- color: theme.colors.text,
48
+ color: theme.colors.subduedText,
49
49
  padding: `${theme.base * 0.5}px ${theme.base * 0.75}px`,
50
50
  };
51
51
 
@@ -69,7 +69,6 @@ export const getMenuItemStyles = ({ theme, isDarkThemeActive }: WfoTheme) => {
69
69
 
70
70
  const menuItemStyle = css({
71
71
  ...baseStyles,
72
- color: theme.colors.subduedText,
73
72
  });
74
73
 
75
74
  const selectedMenuItemBaseStyle = {
@@ -7,7 +7,7 @@ import { useWithOrchestratorTheme } from '@/hooks';
7
7
  import { StepStatus } from '@/types';
8
8
 
9
9
  import { WfoTimelineStep } from './WfoTimelineStep';
10
- import { getStyles } from './styles';
10
+ import { getTimelineStyles } from './styles';
11
11
  import { getTimelinePosition } from './timelineUtils';
12
12
 
13
13
  export enum TimelinePosition {
@@ -34,7 +34,7 @@ export const WfoTimeline: FC<WfoTimelineProps> = ({
34
34
  indexOfCurrentStep = 0,
35
35
  onStepClick,
36
36
  }) => {
37
- const { timelinePanelStyle } = useWithOrchestratorTheme(getStyles);
37
+ const { timelinePanelStyle } = useWithOrchestratorTheme(getTimelineStyles);
38
38
 
39
39
  const mapTimelineItemToStep = (
40
40
  timelineItem: TimelineItem,
@@ -6,7 +6,7 @@ import { useWithOrchestratorTheme } from '@/hooks';
6
6
  import { StepStatus } from '@/types';
7
7
 
8
8
  import { TimelinePosition } from './WfoTimeline';
9
- import { getStyles } from './styles';
9
+ import { getTimelineStyles } from './styles';
10
10
 
11
11
  export type WfoTimelineStepProps = {
12
12
  stepStatus: StepStatus;
@@ -34,7 +34,7 @@ export const WfoTimelineStep = ({
34
34
  getStepLineStyle,
35
35
  getStepOuterCircleStyle,
36
36
  getStepInnerCircleStyle,
37
- } = useWithOrchestratorTheme(getStyles);
37
+ } = useWithOrchestratorTheme(getTimelineStyles);
38
38
 
39
39
  return (
40
40
  <button
@@ -5,7 +5,12 @@ import { StepStatus } from '@/types';
5
5
 
6
6
  import { TimelinePosition } from './WfoTimeline';
7
7
 
8
- export const getStyles = ({ theme }: WfoTheme) => {
8
+ export const getTimelineStyles = ({ theme }: WfoTheme) => {
9
+ const TIMELINE_HEIGHT = theme.base * 2.5;
10
+ const TIMELINE_OUTLINE_WIDTH = theme.base * 0.75;
11
+
12
+ const timelineHeightPx = `${TIMELINE_HEIGHT}px`;
13
+ const timelineOutlineWidthPx = `${TIMELINE_OUTLINE_WIDTH}px`;
9
14
  const emptyStepOuterDiameter = theme.base;
10
15
  const emptyStepInnerDiameter = theme.base / 2;
11
16
  const stepWithValueOuterDiameter = theme.base * 1.5;
@@ -41,12 +46,19 @@ export const getStyles = ({ theme }: WfoTheme) => {
41
46
  const timelinePanelStyle = css({
42
47
  backgroundColor: theme.colors.body,
43
48
  borderRadius: theme.border.radius.medium,
49
+ outline: `${timelineOutlineWidthPx} solid ${theme.colors.emptyShade}`,
50
+ height: timelineHeightPx,
51
+ marginTop: timelineOutlineWidthPx,
52
+ marginBottom: timelineOutlineWidthPx,
44
53
  overflow: 'auto',
45
54
  scrollbarWidth: 'auto',
46
55
  paddingTop: theme.font.baseline * 2,
47
56
  paddingBottom: theme.font.baseline * 2,
48
57
  paddingLeft: theme.font.baseline * 4,
49
58
  paddingRight: theme.font.baseline * 4,
59
+ position: 'sticky',
60
+ top: timelineOutlineWidthPx,
61
+ zIndex: 2, // Some EUI components have a zIndex
50
62
  display: 'flex',
51
63
 
52
64
  '& > button': {
@@ -161,6 +173,8 @@ export const getStyles = ({ theme }: WfoTheme) => {
161
173
  });
162
174
 
163
175
  return {
176
+ TIMELINE_HEIGHT,
177
+ TIMELINE_OUTLINE_WIDTH,
164
178
  timelinePanelStyle,
165
179
  stepStyle,
166
180
  clickableStyle,
@@ -20,7 +20,7 @@ import { calculateTimeDifference, formatDate } from '@/utils';
20
20
  import { WfoStepStatusIcon } from '../WfoStepStatusIcon';
21
21
  import type { StepListItem } from '../WfoWorkflowStepList';
22
22
  import { getStepContent } from '../stepListUtils';
23
- import { getStyles } from '../styles';
23
+ import { getWorkflowStepsStyles } from '../styles';
24
24
  import { WfoStepForm } from './WfoStepForm';
25
25
 
26
26
  export interface WfoStepProps {
@@ -58,7 +58,7 @@ export const WfoStep = React.forwardRef(
58
58
  stepDurationStyle,
59
59
  stepRowStyle,
60
60
  getStepToggleExpandStyle,
61
- } = useWithOrchestratorTheme(getStyles);
61
+ } = useWithOrchestratorTheme(getWorkflowStepsStyles);
62
62
  const t = useTranslations('processes.steps');
63
63
  const hasHtmlMail =
64
64
  step.stateDelta?.hasOwnProperty('confirmation_mail');
@@ -1,9 +1,11 @@
1
1
  import React, { Ref, useImperativeHandle, useRef } from 'react';
2
2
 
3
- import { useWithOrchestratorTheme } from '@/hooks';
3
+ import { getPageTemplateStyles } from '@/components/WfoPageTemplate/WfoPageTemplate/styles';
4
+ import { getTimelineStyles } from '@/components/WfoTimeline/styles';
5
+ import { useContentRef, useWithOrchestratorTheme } from '@/hooks';
4
6
 
5
7
  import { WfoStep } from '../WfoStep';
6
- import { getStyles } from '../styles';
8
+ import { getWorkflowStepsStyles } from '../styles';
7
9
  import { StepListItem } from './../WfoWorkflowStepList';
8
10
 
9
11
  export type WfoStepListRef = {
@@ -33,10 +35,23 @@ export const WfoStepList = React.forwardRef(
33
35
  }: WfoStepListProps,
34
36
  reference: Ref<WfoStepListRef>,
35
37
  ) => {
36
- const { stepSpacerStyle } = useWithOrchestratorTheme(getStyles);
38
+ const { NAVIGATION_HEIGHT } = useWithOrchestratorTheme(
39
+ getPageTemplateStyles,
40
+ );
41
+ const { TIMELINE_HEIGHT, TIMELINE_OUTLINE_WIDTH } =
42
+ useWithOrchestratorTheme(getTimelineStyles);
43
+ const { SPACE_BETWEEN_STEPS, stepSpacerStyle } =
44
+ useWithOrchestratorTheme(getWorkflowStepsStyles);
45
+ const scrollOffset =
46
+ NAVIGATION_HEIGHT +
47
+ TIMELINE_HEIGHT +
48
+ TIMELINE_OUTLINE_WIDTH +
49
+ SPACE_BETWEEN_STEPS;
37
50
 
38
51
  const stepReferences = useRef(new Map<string, HTMLDivElement>());
39
52
 
53
+ const { contentRef } = useContentRef();
54
+
40
55
  let stepStartTime = startedAt;
41
56
 
42
57
  useImperativeHandle(reference, () => ({
@@ -56,9 +71,18 @@ export const WfoStepList = React.forwardRef(
56
71
  onTriggerExpandStepListItem(foundStepListItem),
57
72
  );
58
73
  });
59
- stepReferences.current.get(stepId)?.scrollIntoView({
60
- behavior: 'smooth',
61
- });
74
+
75
+ const targetRect = stepReferences.current
76
+ .get(stepId)
77
+ ?.getBoundingClientRect();
78
+
79
+ if (targetRect) {
80
+ const { top } = targetRect;
81
+ contentRef?.current?.scrollBy({
82
+ top: top - scrollOffset,
83
+ behavior: 'smooth',
84
+ });
85
+ }
62
86
  } catch {
63
87
  console.error(
64
88
  'Error scrolling to step with stepId ',
@@ -13,7 +13,7 @@ import {
13
13
  } from '@/icons';
14
14
  import { StepStatus } from '@/types';
15
15
 
16
- import { getStyles } from '../styles';
16
+ import { getWorkflowStepsStyles } from '../styles';
17
17
 
18
18
  export interface WfoStepStatusIconProps {
19
19
  stepStatus: StepStatus;
@@ -61,7 +61,7 @@ export const WfoStepStatusIcon = ({
61
61
  stepStateSuspendIconStyle,
62
62
  stepStatePendingIconStyle,
63
63
  stepStateFailedIconStyle,
64
- } = useWithOrchestratorTheme(getStyles);
64
+ } = useWithOrchestratorTheme(getWorkflowStepsStyles);
65
65
 
66
66
  const [
67
67
  stepStateStyle,
@@ -16,7 +16,7 @@ import { WfoTextAnchor } from '@/components/WfoTextAnchor/WfoTextAnchor';
16
16
  import { useOrchestratorTheme, useWithOrchestratorTheme } from '@/hooks';
17
17
  import { WfoCode, WfoEyeFill } from '@/icons';
18
18
 
19
- import { getStyles } from '../styles';
19
+ import { getWorkflowStepsStyles } from '../styles';
20
20
 
21
21
  export type WfoStepListHeaderProps = {
22
22
  allDetailToggleText: string;
@@ -56,7 +56,7 @@ export const WfoStepListHeader: FC<WfoStepListHeaderProps> = ({
56
56
  stepListContentStyle,
57
57
  stepListContentBoldTextStyle,
58
58
  stepListOptionsContainerStyle,
59
- } = useWithOrchestratorTheme(getStyles);
59
+ } = useWithOrchestratorTheme(getWorkflowStepsStyles);
60
60
 
61
61
  const [isViewOptionOpen, setIsViewOptionOpen] = useState(false);
62
62
 
@@ -2,10 +2,15 @@ import { css } from '@emotion/react';
2
2
 
3
3
  import { WfoTheme } from '@/hooks';
4
4
 
5
- export const getStyles = ({ theme, toSecondaryColor }: WfoTheme) => {
5
+ export const getWorkflowStepsStyles = ({
6
+ theme,
7
+ toSecondaryColor,
8
+ }: WfoTheme) => {
9
+ const SPACE_BETWEEN_STEPS = theme.base * 1.5;
10
+
6
11
  const stepSpacerStyle = css({
7
12
  borderLeft: `1px solid ${theme.colors.darkShade}`,
8
- height: '24px',
13
+ height: `${SPACE_BETWEEN_STEPS}px`,
9
14
  marginLeft: '36px',
10
15
  });
11
16
 
@@ -102,6 +107,7 @@ export const getStyles = ({ theme, toSecondaryColor }: WfoTheme) => {
102
107
  });
103
108
 
104
109
  return {
110
+ SPACE_BETWEEN_STEPS,
105
111
  stepDurationStyle,
106
112
  stepEmailContainerStyle,
107
113
  stepHeaderRightStyle,
@@ -1 +1 @@
1
- export const ORCHESTRATOR_UI_LIBRARY_VERSION = '3.1.0';
1
+ export const ORCHESTRATOR_UI_LIBRARY_VERSION = '3.2.0';
@@ -1,4 +1,5 @@
1
1
  export * from './useCheckEngineStatus';
2
+ export * from './useContentRef';
2
3
  export * from './useOrchestratorConfig';
3
4
  export * from './useOrchestratorTheme';
4
5
  export * from './usePolicy';
@@ -0,0 +1,7 @@
1
+ import { useContext } from 'react';
2
+
3
+ import { ContentContext } from '../components/WfoPageTemplate';
4
+
5
+ export const useContentRef = () => ({
6
+ contentRef: useContext(ContentContext)?.contentRef,
7
+ });
@@ -15,7 +15,7 @@ import {
15
15
  import { PATH_TASKS, PATH_WORKFLOWS, WfoError, WfoLoading } from '@/components';
16
16
  import { UserInputFormWizard } from '@/components/WfoForms/UserInputFormWizard';
17
17
  import { WfoStepStatusIcon } from '@/components/WfoWorkflowSteps';
18
- import { getStyles } from '@/components/WfoWorkflowSteps/styles';
18
+ import { getWorkflowStepsStyles } from '@/components/WfoWorkflowSteps/styles';
19
19
  import { useOrchestratorTheme, useWithOrchestratorTheme } from '@/hooks';
20
20
  import {
21
21
  HttpStatus,
@@ -124,7 +124,7 @@ export const WfoStartProcessPage = ({
124
124
  const { stepUserInput, hasNext } = form;
125
125
 
126
126
  const { getStepHeaderStyle, stepListContentBoldTextStyle } =
127
- useWithOrchestratorTheme(getStyles);
127
+ useWithOrchestratorTheme(getWorkflowStepsStyles);
128
128
 
129
129
  const {
130
130
  data: timeLineItems = [],