@groupeactual/ui-kit 1.7.9 → 2.0.0-beta.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.
Files changed (144) hide show
  1. package/dist/cjs/index.js +15097 -66
  2. package/dist/es/{src/DesignSystemProvider.d.ts → DesignSystemProvider.d.ts} +6 -5
  3. package/dist/es/{src/components → components}/Accordion/Accordion.d.ts +1 -1
  4. package/dist/es/{src/components → components}/BannerNotification/BannerNotification.d.ts +1 -1
  5. package/dist/es/{src/components → components}/Breadcrumbs/Breadcrumbs.d.ts +2 -2
  6. package/dist/es/{src/components → components}/Button/Button.d.ts +2 -2
  7. package/dist/es/{src/components → components}/Chip/Chip.d.ts +1 -1
  8. package/dist/es/components/Datatable/Datatable.d.ts +4 -0
  9. package/dist/es/{src/components → components}/EmbbededNotification/EmbeddedNotification.d.ts +1 -1
  10. package/dist/es/{src/components/UploadDocument → components/FileUploader}/FileUploader.d.ts +1 -1
  11. package/dist/es/components/Form/AutoCompleteMulti/AutoCompleteMulti.d.ts +23 -0
  12. package/dist/es/{src/components → components}/Form/AutoCompleteSingle/AutoCompleteSingle.d.ts +8 -5
  13. package/dist/es/components/Form/Checkbox/Checkbox.d.ts +12 -0
  14. package/dist/es/components/Form/CheckboxGroup/CheckboxGroup.d.ts +12 -0
  15. package/dist/es/components/Form/CheckboxGroup/checkboxgroup.interface.d.ts +6 -0
  16. package/dist/es/{src/components → components}/Form/DatePicker/DatePicker.d.ts +6 -4
  17. package/dist/es/{src/components → components}/Form/MultiSelect/MultiSelect.d.ts +3 -3
  18. package/dist/es/components/Form/RadioGroup/RadioGroup.d.ts +16 -0
  19. package/dist/es/{src/components → components}/Form/Select/Select.d.ts +3 -3
  20. package/dist/es/components/Form/Switch/Switch.d.ts +11 -0
  21. package/dist/es/{src/components → components}/Form/TextField/TextField.d.ts +6 -5
  22. package/dist/es/{src/components → components}/Form/TimePicker/TimePicker.d.ts +3 -3
  23. package/dist/es/{src/components → components}/IconButton/IconButton.d.ts +3 -3
  24. package/dist/es/components/IconProvider/IconProvider.d.ts +24 -0
  25. package/dist/es/{src/components → components}/Link/Link.d.ts +1 -2
  26. package/dist/es/components/MenuItem/MenuItem.d.ts +9 -0
  27. package/dist/es/components/Modal/Dialog/Dialog.d.ts +4 -0
  28. package/dist/es/components/Modal/Drawer/Drawer.d.ts +4 -0
  29. package/dist/es/{src/components → components}/Modal/modal.interface.d.ts +4 -1
  30. package/dist/es/{src/components → components}/Navigation/Stepper/Stepper.d.ts +1 -1
  31. package/dist/es/{src/components → components}/Pagination/Pagination.d.ts +2 -1
  32. package/dist/es/{src/components → components}/Snackbar/Snackbar.d.ts +1 -1
  33. package/dist/es/components/TabsPanel/TabsPanel.d.ts +4 -0
  34. package/dist/es/components/TabsPanel/index.d.ts +1 -0
  35. package/dist/es/components/TabsPanel/tab.interface.d.ts +17 -0
  36. package/dist/es/components/Text/Text.d.ts +8 -0
  37. package/dist/es/{src/components → components}/Tooltip/Tooltip.d.ts +1 -1
  38. package/dist/es/{src/components → components}/index.d.ts +3 -2
  39. package/dist/es/index.d.ts +108 -153
  40. package/dist/es/index.js +37 -79
  41. package/package.json +20 -17
  42. package/src/DesignSystemProvider.tsx +21 -36
  43. package/src/components/Accordion/Accordion.tsx +41 -59
  44. package/src/components/BannerNotification/BannerNotification.tsx +19 -20
  45. package/src/components/Breadcrumbs/Breadcrumbs.tsx +32 -28
  46. package/src/components/Button/Button.tsx +70 -17
  47. package/src/components/Chip/Chip.tsx +88 -117
  48. package/src/components/Datatable/Datatable.tsx +49 -37
  49. package/src/components/Datatable/DatatableCellRender.tsx +1 -1
  50. package/src/components/EmbbededNotification/EmbeddedNotification.tsx +78 -69
  51. package/src/components/FileUploader/FileUploader.tsx +767 -0
  52. package/src/components/Form/AutoCompleteMulti/AutoCompleteMulti.tsx +289 -172
  53. package/src/components/Form/AutoCompleteSingle/AutoCompleteSingle.tsx +228 -126
  54. package/src/components/Form/Checkbox/Checkbox.tsx +38 -96
  55. package/src/components/Form/CheckboxGroup/CheckboxGroup.tsx +86 -60
  56. package/src/components/Form/CheckboxGroup/checkboxgroup.interface.ts +0 -15
  57. package/src/components/Form/DatePicker/DatePicker.tsx +88 -40
  58. package/src/components/Form/MultiSelect/MultiSelect.tsx +196 -171
  59. package/src/components/Form/RadioGroup/RadioGroup.tsx +76 -82
  60. package/src/components/Form/Select/Select.tsx +156 -136
  61. package/src/components/Form/Switch/Switch.tsx +87 -47
  62. package/src/components/Form/TextField/TextField.tsx +125 -76
  63. package/src/components/Form/TimePicker/TimePicker.tsx +26 -7
  64. package/src/components/IconButton/IconButton.tsx +64 -39
  65. package/src/components/IconProvider/IconProvider.tsx +90 -69
  66. package/src/components/Link/Link.tsx +6 -10
  67. package/src/components/MenuItem/MenuItem.tsx +35 -23
  68. package/src/components/Modal/Dialog/Dialog.tsx +17 -14
  69. package/src/components/Modal/Drawer/Drawer.tsx +97 -69
  70. package/src/components/Modal/modal.interface.ts +4 -1
  71. package/src/components/Navigation/Stepper/Step.tsx +7 -6
  72. package/src/components/Navigation/Stepper/Stepper.tsx +24 -23
  73. package/src/components/NotistackAdapter/NotistackAdapter.tsx +1 -1
  74. package/src/components/Pagination/Pagination.tsx +131 -118
  75. package/src/components/Snackbar/Snackbar.tsx +29 -29
  76. package/src/components/TabsPanel/TabsPanel.tsx +151 -0
  77. package/src/components/TabsPanel/index.ts +1 -0
  78. package/src/components/TabsPanel/tab.interface.ts +20 -0
  79. package/src/components/Text/Text.tsx +25 -12
  80. package/src/components/Tooltip/Tooltip.tsx +54 -51
  81. package/src/components/index.ts +3 -2
  82. package/src/index.ts +0 -1
  83. package/dist/es/src/components/Datatable/Datatable.d.ts +0 -4
  84. package/dist/es/src/components/Form/AutoCompleteMulti/AutoCompleteMulti.d.ts +0 -19
  85. package/dist/es/src/components/Form/Checkbox/Checkbox.d.ts +0 -14
  86. package/dist/es/src/components/Form/CheckboxGroup/CheckboxGroup.d.ts +0 -12
  87. package/dist/es/src/components/Form/CheckboxGroup/checkboxgroup.interface.d.ts +0 -8
  88. package/dist/es/src/components/Form/RadioGroup/RadioGroup.d.ts +0 -18
  89. package/dist/es/src/components/Form/Switch/Switch.d.ts +0 -10
  90. package/dist/es/src/components/IconProvider/IconProvider.d.ts +0 -19
  91. package/dist/es/src/components/MenuItem/MenuItem.d.ts +0 -10
  92. package/dist/es/src/components/Modal/Dialog/Dialog.d.ts +0 -4
  93. package/dist/es/src/components/Modal/Drawer/Drawer.d.ts +0 -4
  94. package/dist/es/src/components/Text/Text.d.ts +0 -8
  95. package/dist/es/src/index.d.ts +0 -5
  96. package/dist/es/src/interfaces/theme.d.ts +0 -51
  97. package/src/components/UploadDocument/FileUploader.tsx +0 -728
  98. package/src/interfaces/theme.ts +0 -51
  99. /package/dist/es/{src/components → components}/Accordion/index.d.ts +0 -0
  100. /package/dist/es/{src/components → components}/BannerNotification/index.d.ts +0 -0
  101. /package/dist/es/{src/components → components}/Breadcrumbs/index.d.ts +0 -0
  102. /package/dist/es/{src/components → components}/Button/index.d.ts +0 -0
  103. /package/dist/es/{src/components → components}/Chip/index.d.ts +0 -0
  104. /package/dist/es/{src/components → components}/Datatable/DatatableCellRender.d.ts +0 -0
  105. /package/dist/es/{src/components → components}/Datatable/datatable.interface.d.ts +0 -0
  106. /package/dist/es/{src/components → components}/Datatable/index.d.ts +0 -0
  107. /package/dist/es/{src/components → components}/Datatable/use-pagination-props.hook.d.ts +0 -0
  108. /package/dist/es/{src/components → components}/EmbbededNotification/index.d.ts +0 -0
  109. /package/dist/es/{src/components/UploadDocument → components/FileUploader}/fileuploader.interface.d.ts +0 -0
  110. /package/dist/es/{src/components/UploadDocument → components/FileUploader}/index.d.ts +0 -0
  111. /package/dist/es/{src/components → components}/Form/AutoCompleteMulti/index.d.ts +0 -0
  112. /package/dist/es/{src/components → components}/Form/AutoCompleteSingle/index.d.ts +0 -0
  113. /package/dist/es/{src/components → components}/Form/Checkbox/index.d.ts +0 -0
  114. /package/dist/es/{src/components → components}/Form/CheckboxGroup/index.d.ts +0 -0
  115. /package/dist/es/{src/components → components}/Form/DatePicker/index.d.ts +0 -0
  116. /package/dist/es/{src/components → components}/Form/MultiSelect/index.d.ts +0 -0
  117. /package/dist/es/{src/components → components}/Form/RadioGroup/index.d.ts +0 -0
  118. /package/dist/es/{src/components → components}/Form/Select/index.d.ts +0 -0
  119. /package/dist/es/{src/components → components}/Form/Switch/index.d.ts +0 -0
  120. /package/dist/es/{src/components → components}/Form/TextField/index.d.ts +0 -0
  121. /package/dist/es/{src/components → components}/Form/TimePicker/index.d.ts +0 -0
  122. /package/dist/es/{src/components → components}/IconButton/index.d.ts +0 -0
  123. /package/dist/es/{src/components → components}/IconProvider/index.d.ts +0 -0
  124. /package/dist/es/{src/components → components}/Link/index.d.ts +0 -0
  125. /package/dist/es/{src/components → components}/MenuItem/index.d.ts +0 -0
  126. /package/dist/es/{src/components → components}/Modal/Dialog/index.d.ts +0 -0
  127. /package/dist/es/{src/components → components}/Modal/Drawer/index.d.ts +0 -0
  128. /package/dist/es/{src/components → components}/Navigation/Stepper/Step.d.ts +0 -0
  129. /package/dist/es/{src/components → components}/Navigation/Stepper/index.d.ts +0 -0
  130. /package/dist/es/{src/components → components}/Navigation/Stepper/stepper.helper.d.ts +0 -0
  131. /package/dist/es/{src/components → components}/Navigation/Stepper/stepper.interface.d.ts +0 -0
  132. /package/dist/es/{src/components → components}/NotistackAdapter/NotistackAdapter.d.ts +0 -0
  133. /package/dist/es/{src/components → components}/NotistackAdapter/index.d.ts +0 -0
  134. /package/dist/es/{src/components → components}/Pagination/index.d.ts +0 -0
  135. /package/dist/es/{src/components → components}/Pagination/pagination.helper.d.ts +0 -0
  136. /package/dist/es/{src/components → components}/Snackbar/index.d.ts +0 -0
  137. /package/dist/es/{src/components → components}/Text/index.d.ts +0 -0
  138. /package/dist/es/{src/components → components}/Tooltip/index.d.ts +0 -0
  139. /package/dist/es/{src/components → components}/Tooltip/tooltip.interface.d.ts +0 -0
  140. /package/dist/es/{src/helpers → helpers}/GooglePickerWrapper.d.ts +0 -0
  141. /package/dist/es/{src/hooks → hooks}/useGooleDrivePicker.d.ts +0 -0
  142. /package/dist/es/{src/types → types}/googleDrive.d.ts +0 -0
  143. /package/src/components/{UploadDocument → FileUploader}/fileuploader.interface.ts +0 -0
  144. /package/src/components/{UploadDocument → FileUploader}/index.ts +0 -0
@@ -1,18 +1,14 @@
1
- import React, { useMemo } from 'react';
1
+ import React from 'react';
2
2
 
3
- import { LinkStyle } from '@groupeactual/design-tokens';
4
- import { Link as LinkMui, LinkProps, styled, useTheme } from '@mui/material';
3
+ import { Link as LinkMui, LinkProps } from '@mui/material';
5
4
 
6
5
  interface Props extends Omit<LinkProps, 'variant'> {
7
6
  variant?: 'link1' | 'link2';
8
- /* eslint-disable @typescript-eslint/no-explicit-any */
9
- component?: any;
10
7
  }
11
8
 
12
- const Link = (props: Props) => {
13
- const theme = useTheme();
14
- const StyledLink = useMemo(() => styled(LinkMui)(LinkStyle(theme)), [theme]);
15
- return <StyledLink {...(props as LinkProps)} />;
16
- };
9
+ const Link = React.forwardRef<HTMLAnchorElement, Props>(({ ...props }, ref) => {
10
+ return <LinkMui ref={ref} {...(props as LinkProps)} data-testid="ds-link" />;
11
+ });
17
12
 
13
+ Link.displayName = 'Link';
18
14
  export default Link;
@@ -1,36 +1,48 @@
1
- import React, { ReactNode, useMemo } from 'react';
1
+ import React, { ReactNode } from 'react';
2
2
 
3
- import { MenuItemStyle } from '@groupeactual/design-tokens';
4
3
  import {
5
4
  MenuItem as MenuItemMUI,
6
5
  MenuItemProps,
7
- styled,
8
6
  useTheme,
9
7
  } from '@mui/material';
10
8
 
11
9
  interface Props extends Omit<MenuItemProps, 'onClick'> {
12
- onClick: (_event?: React.MouseEvent<HTMLElement>) => void;
10
+ onClick?: (_event?: React.MouseEvent<HTMLLIElement>) => void;
11
+ selected?: boolean;
13
12
  children: NonNullable<ReactNode>;
14
- testId?: string;
15
- disabled?: boolean;
16
13
  }
17
14
 
18
- const MenuItem = ({ onClick, children, testId, disabled, ...props }: Props) => {
19
- const theme = useTheme();
20
- const StyledMenuItem = useMemo(
21
- () => styled(MenuItemMUI)(MenuItemStyle(theme)),
22
- [theme],
23
- );
24
- return (
25
- <StyledMenuItem
26
- {...props}
27
- disabled={disabled}
28
- onClick={(e) => onClick(e)}
29
- data-testid={testId}
30
- >
31
- {children}
32
- </StyledMenuItem>
33
- );
34
- };
15
+ const MenuItem = React.forwardRef<HTMLLIElement, Props>(
16
+ ({ onClick, selected, children, ...props }, ref) => {
17
+ const { palette } = useTheme();
18
+
19
+ return (
20
+ <MenuItemMUI
21
+ {...props}
22
+ sx={
23
+ selected
24
+ ? {
25
+ backgroundColor: palette?.background?.grey + ' !important',
26
+ '.MuiTypography-root': {
27
+ fontWeight: 500,
28
+ },
29
+ '.itemIcon': {
30
+ color: palette?.blueHoverClickable + ' !important',
31
+ },
32
+ }
33
+ : {}
34
+ }
35
+ onClick={onClick}
36
+ ref={ref}
37
+ selected={selected}
38
+ data-testid="ds-menu-item"
39
+ >
40
+ {children}
41
+ </MenuItemMUI>
42
+ );
43
+ },
44
+ );
45
+
46
+ MenuItem.displayName = 'MenuItem';
35
47
 
36
48
  export default MenuItem;
@@ -53,7 +53,7 @@ const BootstrapDialogTitle = <T extends OverridableTypeMap>({
53
53
  justifyContent: 'space-between',
54
54
  alignItems: 'center',
55
55
  }}
56
- variant={'header3' as 'h3'}
56
+ variant="h3"
57
57
  {...props}
58
58
  >
59
59
  <Box
@@ -69,7 +69,7 @@ const BootstrapDialogTitle = <T extends OverridableTypeMap>({
69
69
  aria-label="close"
70
70
  data-testid="close-button"
71
71
  onClick={() => onClose?.()}
72
- variant="table"
72
+ variant="plain"
73
73
  size="medium"
74
74
  icon={faClose}
75
75
  />
@@ -77,27 +77,30 @@ const BootstrapDialogTitle = <T extends OverridableTypeMap>({
77
77
  );
78
78
  };
79
79
 
80
- const Dialog = ({
81
- title,
82
- open,
83
- onClose,
84
- children,
85
- icon,
86
- ...props
87
- }: Omit<ModalProps, 'footer' | 'cardProps' | 'size' | 'component'>) => {
80
+ const Dialog = React.forwardRef<
81
+ HTMLDivElement,
82
+ Omit<ModalProps, 'footer' | 'cardProps' | 'size' | 'component'>
83
+ >(({ title, open, onClose, children, icon, ...props }, ref) => {
88
84
  return (
89
85
  <BootstrapDialog
86
+ ref={ref}
90
87
  onClose={() => onClose?.()}
91
88
  open={open}
92
89
  {...props}
93
- data-testid="dialog"
90
+ data-testid="ds-dialog"
94
91
  >
95
- <BootstrapDialogTitle icon={icon} onClose={() => onClose?.()}>
92
+ <BootstrapDialogTitle
93
+ icon={icon}
94
+ onClose={() => onClose?.()}
95
+ data-testid="ds-dialog-title"
96
+ >
96
97
  {title && <Text variant="h3">{title}</Text>}
97
98
  </BootstrapDialogTitle>
98
- <DialogContent>{children}</DialogContent>
99
+ <DialogContent data-testid="ds-dialog-content">{children}</DialogContent>
99
100
  </BootstrapDialog>
100
101
  );
101
- };
102
+ });
103
+
104
+ Dialog.displayName = 'Dialog';
102
105
 
103
106
  export default Dialog;
@@ -10,78 +10,106 @@ import {
10
10
  } from '@mui/material';
11
11
 
12
12
  import IconButton from '@/components/IconButton';
13
- import { ModalProps } from '@/components/Modal/modal.interface';
13
+ import { DrawerProps } from '@/components/Modal/modal.interface';
14
+ import Text from '@/components/Text';
14
15
 
15
- const Drawer = ({
16
- title,
17
- open,
18
- onClose,
19
- component,
20
- footer,
21
- cardProps,
22
- size = 'small',
23
- ...props
24
- }: Omit<ModalProps, 'withHeaderDivider' | 'icon'>) => {
25
- return (
26
- <DrawerMUI
27
- anchor="right"
28
- open={open}
29
- onClose={() => onClose?.()}
30
- data-testid="drawer"
31
- {...props}
32
- sx={{
33
- '.MuiCardHeader-root': {
34
- padding: '24px 24px 0 24px',
35
- color: 'greyXDark',
36
- '.MuiCardHeader-action': {
37
- margin: '0',
38
- },
39
- },
40
- '.MuiCardContent-root': {
41
- padding: '10px 24px 24px 24px',
42
- color: 'greyXDark',
43
- },
44
- }}
45
- >
46
- <Card
47
- elevation={0}
48
- {...cardProps}
16
+ const Drawer = React.forwardRef<HTMLDivElement, DrawerProps>(
17
+ (
18
+ {
19
+ title,
20
+ open,
21
+ hideCloseButton,
22
+ titleLeftComponent,
23
+ footer,
24
+ cardProps,
25
+ size = 'small',
26
+ children,
27
+ onClose,
28
+ ...props
29
+ },
30
+ ref,
31
+ ) => {
32
+ return (
33
+ <DrawerMUI
34
+ ref={ref}
35
+ anchor="right"
36
+ open={open}
37
+ onClose={() => onClose?.()}
38
+ data-testid="ds-drawer"
39
+ {...props}
49
40
  sx={{
50
- height: '100%',
51
- width: size === 'large' ? 980 : 608,
52
- overflowY: 'scroll',
53
- ...cardProps?.sx,
41
+ '.MuiCardHeader-root': {
42
+ padding: '24px 24px 0 24px',
43
+ color: 'greyXDark',
44
+ '.MuiCardHeader-action': {
45
+ margin: '0',
46
+ },
47
+ },
48
+ '.MuiCardContent-root': {
49
+ padding: '10px 24px 24px 24px',
50
+ color: 'greyXDark',
51
+ },
52
+ '.MuiButton-outlinedPrimary': {
53
+ backgroundColor: 'white',
54
+ },
54
55
  }}
55
56
  >
56
- <CardHeader
57
- action={
58
- <IconButton
59
- aria-label="close"
60
- data-testid="close-button"
61
- onClick={() => onClose?.()}
62
- variant="table"
63
- size="medium"
64
- icon={faClose}
65
- />
66
- }
67
- title={
68
- title ? (
69
- <Box display="flex">
70
- <Box mt="2px">{title}</Box>
71
- </Box>
72
- ) : (
73
- ''
74
- )
75
- }
76
- subheader=""
77
- />
78
- <CardContent>
79
- <Box pb={footer ? '94px !important' : 0}>{component}</Box>
80
- </CardContent>
81
- {footer}
82
- </Card>
83
- </DrawerMUI>
84
- );
85
- };
57
+ <Card
58
+ elevation={0}
59
+ {...cardProps}
60
+ sx={{
61
+ height: '100%',
62
+ width: size === 'large' ? 980 : 608,
63
+ overflowY: 'scroll',
64
+ ...cardProps?.sx,
65
+ }}
66
+ data-testid="ds-drawer-card"
67
+ >
68
+ <CardHeader
69
+ action={
70
+ !hideCloseButton ? (
71
+ <IconButton
72
+ aria-label="close"
73
+ data-testid="ds-close-button"
74
+ onClick={() => onClose?.()}
75
+ variant="plain"
76
+ size="medium"
77
+ icon={faClose}
78
+ />
79
+ ) : null
80
+ }
81
+ title={
82
+ title ? (
83
+ <Box display="flex" data-testid="ds-drawer-title">
84
+ <Box
85
+ mt="2px"
86
+ sx={{
87
+ display: 'flex',
88
+ flexDirection: 'row',
89
+ alignItems: 'center',
90
+ justifyContent: 'center',
91
+ }}
92
+ >
93
+ {titleLeftComponent}
94
+ <Text variant="h3">{title}</Text>
95
+ </Box>
96
+ </Box>
97
+ ) : (
98
+ ''
99
+ )
100
+ }
101
+ subheader=""
102
+ />
103
+ <CardContent data-testid="ds-drawer-content">
104
+ <Box pb={footer ? '94px !important' : 0}>{children}</Box>
105
+ </CardContent>
106
+ {footer}
107
+ </Card>
108
+ </DrawerMUI>
109
+ );
110
+ },
111
+ );
112
+
113
+ Drawer.displayName = 'Drawer';
86
114
 
87
115
  export default Drawer;
@@ -17,13 +17,16 @@ export interface ModalProps
17
17
  open: boolean;
18
18
  title?: string;
19
19
  size?: 'small' | 'large';
20
- component: ReactNode | null;
21
20
  footer?: ReactNode | null;
22
21
  cardProps?: Partial<CardProps>;
23
22
  className?: string;
24
23
  icon?: IconDefinition;
25
24
  onClose?: () => void;
26
25
  }
26
+ export interface DrawerProps extends Omit<ModalProps, 'icon'> {
27
+ titleLeftComponent?: ReactNode;
28
+ hideCloseButton?: boolean;
29
+ }
27
30
 
28
31
  export type DialogTitleProps<T extends OverridableTypeMap> =
29
32
  DefaultComponentProps<T> & {
@@ -21,7 +21,7 @@ export const StepComponent = ({
21
21
  }) => {
22
22
  const percent = stepperItemsToPercent(items);
23
23
  const isFullyValidated = percent === 100;
24
- const { palette, spacing } = useTheme();
24
+ const { palette } = useTheme();
25
25
  const isNavigeable = canNavigate && link && !isActive;
26
26
 
27
27
  return (
@@ -33,9 +33,9 @@ export const StepComponent = ({
33
33
  (isActive && {
34
34
  content: "' '",
35
35
  position: 'absolute',
36
- left: spacing(4.25),
37
- top: spacing(5.5),
38
- bottom: spacing(1.25),
36
+ left: '25px',
37
+ top: '40px',
38
+ bottom: '20px',
39
39
  height: 'auto',
40
40
  width: '1px',
41
41
  background: palette.greyLightDefaultBorder,
@@ -50,6 +50,7 @@ export const StepComponent = ({
50
50
  sx={{
51
51
  px: 2,
52
52
  py: 1,
53
+ mb: 4,
53
54
  cursor: (isNavigeable && 'pointer') || 'inherit',
54
55
  borderRight:
55
56
  (isActive && `4px solid ${palette.blueClickable as string}`) || '',
@@ -82,7 +83,7 @@ export const StepComponent = ({
82
83
  <Stack>
83
84
  {items.map(({ label, isValid }) => {
84
85
  return (
85
- <Stack direction="row" key={label} mb={1}>
86
+ <Stack direction="row" key={label} sx={{ mb: 2, ml: 1 }}>
86
87
  <IconProvider
87
88
  icon={(isValid && faCheckCircle) || faDotCircle}
88
89
  mr={2.25}
@@ -97,7 +98,7 @@ export const StepComponent = ({
97
98
  }}
98
99
  />
99
100
  <Text
100
- variant={(isValid && 'body1Medium') || 'body1Regular'}
101
+ variant={(isValid && 'body1Medium') || 'body1'}
101
102
  color={(isValid && palette.greyXDark) || palette.greyDark}
102
103
  >
103
104
  {label}
@@ -12,29 +12,30 @@ interface Props {
12
12
  onNavigate?: (_url: string) => void;
13
13
  sx?: SxProps<Theme>;
14
14
  }
15
- const Stepper = ({
16
- steps,
17
- canNavigate,
18
- onNavigate = () => null,
19
- sx = {},
20
- }: Props) => {
21
- const isCurrentStepCompleted =
22
- stepperItemsToPercent(
23
- steps.find(({ isActive }) => isActive)?.items ?? [],
24
- ) === 100;
25
15
 
26
- return (
27
- <Box gap={2} sx={sx}>
28
- {steps.map((step) => (
29
- <StepComponent
30
- step={step}
31
- key={step.label}
32
- canNavigate={canNavigate && isCurrentStepCompleted}
33
- onNavigate={onNavigate}
34
- />
35
- ))}
36
- </Box>
37
- );
38
- };
16
+ const Stepper = React.forwardRef<HTMLDivElement, Props>(
17
+ ({ steps, canNavigate, onNavigate = () => null, sx = {} }, ref) => {
18
+ const isCurrentStepCompleted =
19
+ stepperItemsToPercent(
20
+ steps.find(({ isActive }) => isActive)?.items ?? [],
21
+ ) === 100;
22
+
23
+ return (
24
+ <Box gap={2} sx={sx} ref={ref} data-testid="ds-stepper-container">
25
+ {steps.map((step) => (
26
+ <StepComponent
27
+ step={step}
28
+ key={step.label}
29
+ canNavigate={canNavigate && isCurrentStepCompleted}
30
+ onNavigate={onNavigate}
31
+ data-testid={`ds-step-${step.label}`}
32
+ />
33
+ ))}
34
+ </Box>
35
+ );
36
+ },
37
+ );
38
+
39
+ Stepper.displayName = 'Stepper';
39
40
 
40
41
  export default Stepper;
@@ -10,7 +10,7 @@ const NotistackAdapter = forwardRef<HTMLDivElement, CustomContentProps>(
10
10
  return <></>;
11
11
  }
12
12
  return (
13
- <SnackbarContent ref={ref}>
13
+ <SnackbarContent ref={ref} data-testid="ds-notistack-adapter">
14
14
  <Snackbar text={message} severity={variant} />
15
15
  </SnackbarContent>
16
16
  );