@databiosphere/findable-ui 23.0.0 → 24.0.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 (157) hide show
  1. package/.release-please-manifest.json +1 -1
  2. package/.storybook/preview.js +4 -37
  3. package/CHANGELOG.md +25 -0
  4. package/jest.config.js +1 -0
  5. package/lib/components/Export/components/ExportForm/exportForm.styles.d.ts +2 -2
  6. package/lib/components/Filter/components/FilterLabel/filterLabel.styles.d.ts +1 -1
  7. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.styles.d.ts +1 -1
  8. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/Button/button.styles.d.ts +1 -1
  9. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Search/components/Button/button.styles.d.ts +1 -1
  10. package/lib/components/Layout/components/Outline/outline.styles.d.ts +1 -1
  11. package/lib/components/Loading/loading.stories.d.ts +3 -31
  12. package/lib/components/Login/components/Button/button.styles.d.ts +1 -1
  13. package/lib/components/Stepper/components/Step/components/StepContent/stepContent.d.ts +3 -0
  14. package/lib/components/Stepper/components/Step/components/StepContent/stepContent.js +7 -0
  15. package/lib/components/Stepper/components/Step/components/StepContent/stepContent.styles.d.ts +3 -0
  16. package/lib/components/Stepper/components/Step/components/StepContent/stepContent.styles.js +17 -0
  17. package/lib/components/Stepper/components/Step/components/StepIcon/components/CompletedIcon/completedIcon.d.ts +2 -0
  18. package/lib/components/Stepper/components/Step/components/StepIcon/components/CompletedIcon/completedIcon.js +8 -0
  19. package/lib/components/Stepper/components/Step/components/StepIcon/components/CompletedIcon/completedIcon.styles.d.ts +5 -0
  20. package/lib/components/Stepper/components/Step/components/StepIcon/components/CompletedIcon/completedIcon.styles.js +15 -0
  21. package/lib/components/Stepper/components/Step/components/StepIcon/components/CompletedIcon/contants.d.ts +2 -0
  22. package/lib/components/Stepper/components/Step/components/StepIcon/components/CompletedIcon/contants.js +4 -0
  23. package/lib/components/Stepper/components/Step/components/StepIcon/constants.d.ts +1 -0
  24. package/lib/components/Stepper/components/Step/components/StepIcon/constants.js +1 -0
  25. package/lib/components/Stepper/components/Step/components/StepIcon/stepIcon.d.ts +3 -0
  26. package/lib/components/Stepper/components/Step/components/StepIcon/stepIcon.js +6 -0
  27. package/lib/components/Stepper/components/Step/components/StepIcon/stepIcon.styles.d.ts +3 -0
  28. package/lib/components/Stepper/components/Step/components/StepIcon/stepIcon.styles.js +27 -0
  29. package/lib/components/Stepper/components/Step/components/StepIcon/stories/stepIcon.stories.d.ts +9 -0
  30. package/lib/components/Stepper/components/Step/components/StepIcon/stories/stepIcon.stories.js +38 -0
  31. package/lib/components/Stepper/components/Step/components/StepLabel/components/Label/components/Icon/constants.d.ts +3 -0
  32. package/lib/components/Stepper/components/Step/components/StepLabel/components/Label/components/Icon/constants.js +11 -0
  33. package/lib/components/Stepper/components/Step/components/StepLabel/components/Label/components/Icon/icon.d.ts +2 -0
  34. package/lib/components/Stepper/components/Step/components/StepLabel/components/Label/components/Icon/icon.js +9 -0
  35. package/lib/components/Stepper/components/Step/components/StepLabel/components/Label/components/Icon/stories/contants.d.ts +3 -0
  36. package/lib/components/Stepper/components/Step/components/StepLabel/components/Label/components/Icon/stories/contants.js +3 -0
  37. package/lib/components/Stepper/components/Step/components/StepLabel/components/Label/components/Icon/stories/icon.stories.d.ts +6 -0
  38. package/lib/components/Stepper/components/Step/components/StepLabel/components/Label/components/Icon/stories/icon.stories.js +20 -0
  39. package/lib/components/Stepper/components/Step/components/StepLabel/components/Label/components/Icon/types.d.ts +7 -0
  40. package/lib/components/Stepper/components/Step/components/StepLabel/components/Label/components/Icon/types.js +1 -0
  41. package/lib/components/Stepper/components/Step/components/StepLabel/components/Label/constants.d.ts +2 -0
  42. package/lib/components/Stepper/components/Step/components/StepLabel/components/Label/constants.js +6 -0
  43. package/lib/components/Stepper/components/Step/components/StepLabel/components/Label/label.d.ts +2 -0
  44. package/lib/components/Stepper/components/Step/components/StepLabel/components/Label/label.js +6 -0
  45. package/lib/components/Stepper/components/Step/components/StepLabel/components/Label/label.styles.d.ts +5 -0
  46. package/lib/components/Stepper/components/Step/components/StepLabel/components/Label/label.styles.js +7 -0
  47. package/lib/components/Stepper/components/Step/components/StepLabel/components/Label/stories/label.stories.d.ts +7 -0
  48. package/lib/components/Stepper/components/Step/components/StepLabel/components/Label/stories/label.stories.js +21 -0
  49. package/lib/components/Stepper/components/Step/components/StepLabel/components/Optional/constants.d.ts +2 -0
  50. package/lib/components/Stepper/components/Step/components/StepLabel/components/Optional/constants.js +5 -0
  51. package/lib/components/Stepper/components/Step/components/StepLabel/components/Optional/optional.d.ts +2 -0
  52. package/lib/components/Stepper/components/Step/components/StepLabel/components/Optional/optional.js +6 -0
  53. package/lib/components/Stepper/components/Step/components/StepLabel/constants.d.ts +2 -0
  54. package/lib/components/Stepper/components/Step/components/StepLabel/constants.js +8 -0
  55. package/lib/components/Stepper/components/Step/components/StepLabel/stepLabel.d.ts +2 -0
  56. package/lib/components/Stepper/components/Step/components/StepLabel/stepLabel.js +6 -0
  57. package/lib/components/Stepper/components/Step/components/StepLabel/stepLabel.styles.d.ts +3 -0
  58. package/lib/components/Stepper/components/Step/components/StepLabel/stepLabel.styles.js +12 -0
  59. package/lib/components/Stepper/components/Step/components/StepLabel/stories/contants.d.ts +4 -0
  60. package/lib/components/Stepper/components/Step/components/StepLabel/stories/contants.js +15 -0
  61. package/lib/components/Stepper/components/Step/components/StepLabel/stories/stepLabel.stories.d.ts +8 -0
  62. package/lib/components/Stepper/components/Step/components/StepLabel/stories/stepLabel.stories.js +37 -0
  63. package/lib/components/Stepper/components/Step/constants.d.ts +2 -0
  64. package/lib/components/Stepper/components/Step/constants.js +4 -0
  65. package/lib/components/Stepper/components/Step/step.d.ts +3 -0
  66. package/lib/components/Stepper/components/Step/step.js +6 -0
  67. package/lib/components/Stepper/components/Step/step.styles.d.ts +5 -0
  68. package/lib/components/Stepper/components/Step/step.styles.js +31 -0
  69. package/lib/components/Stepper/components/Step/stories/contants.d.ts +4 -0
  70. package/lib/components/Stepper/components/Step/stories/contants.js +14 -0
  71. package/lib/components/Stepper/components/Step/stories/step.stories.d.ts +8 -0
  72. package/lib/components/Stepper/components/Step/stories/step.stories.js +62 -0
  73. package/lib/components/common/Form/components/Input/input.styles.d.ts +1 -1
  74. package/lib/components/common/Form/components/Select/select.js +2 -1
  75. package/lib/components/common/Form/components/Select/select.styles.d.ts +1 -1
  76. package/lib/components/common/Input/input.styles.d.ts +1 -1
  77. package/lib/components/common/KeyValuePairs/components/KeyElType/keyElType.d.ts +2 -5
  78. package/lib/components/common/KeyValuePairs/components/KeyElType/keyElType.js +6 -2
  79. package/lib/components/common/KeyValuePairs/components/ValueElType/valueElType.d.ts +2 -5
  80. package/lib/components/common/KeyValuePairs/components/ValueElType/valueElType.js +6 -2
  81. package/lib/storybook/controls/constants.d.ts +4 -0
  82. package/lib/storybook/controls/constants.js +6 -0
  83. package/lib/storybook/controls/types.d.ts +4 -0
  84. package/lib/storybook/controls/types.js +5 -0
  85. package/lib/storybook/controls/utils.d.ts +9 -0
  86. package/lib/storybook/controls/utils.js +10 -0
  87. package/lib/storybook/decorators.d.ts +2 -0
  88. package/lib/storybook/decorators.js +11 -0
  89. package/lib/storybook/loremIpsum.d.ts +4 -0
  90. package/lib/storybook/loremIpsum.js +4 -0
  91. package/lib/storybook/parameters.d.ts +2 -0
  92. package/lib/storybook/parameters.js +12 -0
  93. package/lib/styles/common/mui/stepper.d.ts +7 -0
  94. package/lib/styles/common/mui/stepper.js +7 -0
  95. package/lib/styles/common/mui/svgIcon.d.ts +9 -0
  96. package/lib/styles/common/mui/svgIcon.js +26 -0
  97. package/lib/styles/common/mui/typography.js +1 -0
  98. package/lib/tests/mui/constants.d.ts +4 -0
  99. package/lib/tests/mui/constants.js +4 -0
  100. package/lib/theme/common/components.js +0 -4
  101. package/lib/theme/common/typography.d.ts +5 -1
  102. package/lib/theme/common/typography.js +10 -1
  103. package/lib/theme/theme.js +1 -0
  104. package/lib/utils/tests.d.ts +12 -0
  105. package/lib/utils/tests.js +20 -0
  106. package/package.json +1 -1
  107. package/src/components/Loading/loading.stories.tsx +2 -2
  108. package/src/components/Stepper/components/Step/components/StepContent/stepContent.styles.ts +18 -0
  109. package/src/components/Stepper/components/Step/components/StepContent/stepContent.tsx +16 -0
  110. package/src/components/Stepper/components/Step/components/StepIcon/components/CompletedIcon/completedIcon.styles.ts +19 -0
  111. package/src/components/Stepper/components/Step/components/StepIcon/components/CompletedIcon/completedIcon.tsx +20 -0
  112. package/src/components/Stepper/components/Step/components/StepIcon/components/CompletedIcon/contants.ts +6 -0
  113. package/src/components/Stepper/components/Step/components/StepIcon/constants.ts +1 -0
  114. package/src/components/Stepper/components/Step/components/StepIcon/stepIcon.styles.ts +32 -0
  115. package/src/components/Stepper/components/Step/components/StepIcon/stepIcon.tsx +21 -0
  116. package/src/components/Stepper/components/Step/components/StepIcon/stories/stepIcon.stories.tsx +52 -0
  117. package/src/components/Stepper/components/Step/components/StepLabel/components/Label/components/Icon/constants.ts +14 -0
  118. package/src/components/Stepper/components/Step/components/StepLabel/components/Label/components/Icon/icon.tsx +13 -0
  119. package/src/components/Stepper/components/Step/components/StepLabel/components/Label/components/Icon/stories/contants.ts +6 -0
  120. package/src/components/Stepper/components/Step/components/StepLabel/components/Label/components/Icon/stories/icon.stories.tsx +30 -0
  121. package/src/components/Stepper/components/Step/components/StepLabel/components/Label/components/Icon/types.ts +8 -0
  122. package/src/components/Stepper/components/Step/components/StepLabel/components/Label/constants.ts +8 -0
  123. package/src/components/Stepper/components/Step/components/StepLabel/components/Label/label.styles.ts +8 -0
  124. package/src/components/Stepper/components/Step/components/StepLabel/components/Label/label.tsx +10 -0
  125. package/src/components/Stepper/components/Step/components/StepLabel/components/Label/stories/label.stories.tsx +31 -0
  126. package/src/components/Stepper/components/Step/components/StepLabel/components/Optional/constants.ts +7 -0
  127. package/src/components/Stepper/components/Step/components/StepLabel/components/Optional/optional.tsx +9 -0
  128. package/src/components/Stepper/components/Step/components/StepLabel/constants.ts +10 -0
  129. package/src/components/Stepper/components/Step/components/StepLabel/stepLabel.styles.ts +13 -0
  130. package/src/components/Stepper/components/Step/components/StepLabel/stepLabel.tsx +10 -0
  131. package/src/components/Stepper/components/Step/components/StepLabel/stories/contants.ts +19 -0
  132. package/src/components/Stepper/components/Step/components/StepLabel/stories/stepLabel.stories.tsx +48 -0
  133. package/src/components/Stepper/components/Step/constants.ts +6 -0
  134. package/src/components/Stepper/components/Step/step.styles.ts +33 -0
  135. package/src/components/Stepper/components/Step/step.tsx +12 -0
  136. package/src/components/Stepper/components/Step/stories/contants.ts +18 -0
  137. package/src/components/Stepper/components/Step/stories/step.stories.tsx +87 -0
  138. package/src/components/common/Form/components/Select/select.tsx +8 -1
  139. package/src/components/common/KeyValuePairs/components/KeyElType/keyElType.tsx +14 -9
  140. package/src/components/common/KeyValuePairs/components/ValueElType/valueElType.tsx +8 -9
  141. package/src/storybook/controls/constants.ts +12 -0
  142. package/src/storybook/controls/types.ts +4 -0
  143. package/src/storybook/controls/utils.ts +18 -0
  144. package/src/storybook/decorators.tsx +17 -0
  145. package/src/storybook/loremIpsum.ts +5 -0
  146. package/src/storybook/parameters.ts +14 -0
  147. package/src/styles/common/mui/stepper.ts +14 -0
  148. package/src/styles/common/mui/svgIcon.ts +35 -0
  149. package/src/styles/common/mui/typography.ts +1 -0
  150. package/src/tests/mui/constants.ts +4 -0
  151. package/src/theme/common/components.ts +0 -4
  152. package/src/theme/common/typography.ts +11 -0
  153. package/src/theme/theme.ts +1 -0
  154. package/src/utils/tests.ts +20 -0
  155. package/tests/setup.ts +6 -0
  156. package/tests/stepIcon.test.tsx +42 -0
  157. package/types/data-explorer-ui.d.ts +3 -0
@@ -10,3 +10,15 @@ export declare function getAnchorEl(id: string): HTMLAnchorElement;
10
10
  * @returns HTML button element.
11
11
  */
12
12
  export declare function getButtonById(id: string): HTMLButtonElement;
13
+ /**
14
+ * Returns class names of the given element.
15
+ * @param element - Element.
16
+ * @returns element class names.
17
+ */
18
+ export declare function getClassNames(element?: Element | null): string | null;
19
+ /**
20
+ * Returns tag name of the given element.
21
+ * @param element - Element.
22
+ * @returns element tag name.
23
+ */
24
+ export declare function getTagName(element?: Element | null): string | null;
@@ -15,3 +15,23 @@ export function getAnchorEl(id) {
15
15
  export function getButtonById(id) {
16
16
  return screen.getByTestId(id);
17
17
  }
18
+ /**
19
+ * Returns class names of the given element.
20
+ * @param element - Element.
21
+ * @returns element class names.
22
+ */
23
+ export function getClassNames(element) {
24
+ if (!element)
25
+ return null;
26
+ return element.getAttribute("class");
27
+ }
28
+ /**
29
+ * Returns tag name of the given element.
30
+ * @param element - Element.
31
+ * @returns element tag name.
32
+ */
33
+ export function getTagName(element) {
34
+ if (!element)
35
+ return null;
36
+ return element.tagName.toLowerCase();
37
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@databiosphere/findable-ui",
3
- "version": "23.0.0",
3
+ "version": "24.0.0",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
@@ -3,7 +3,7 @@ import React from "react";
3
3
  import { PAPER_PANEL_STYLE } from "../common/Paper/paper";
4
4
  import { Loading } from "./loading";
5
5
 
6
- const meta = {
6
+ const meta: Meta<typeof Loading> = {
7
7
  argTypes: {
8
8
  appear: { control: "boolean" },
9
9
  iconSize: { control: "select", options: ["small", "medium", "large"] },
@@ -30,7 +30,7 @@ const meta = {
30
30
  ),
31
31
  ],
32
32
  title: "Components/Communication/Loading",
33
- } satisfies Meta<typeof Loading>;
33
+ };
34
34
 
35
35
  export default meta;
36
36
 
@@ -0,0 +1,18 @@
1
+ import styled from "@emotion/styled";
2
+ import { StepContent } from "@mui/material";
3
+ import { smokeMain } from "../../../../../../styles/common/mixins/colors";
4
+ import { sectionPadding } from "../../../../../common/Section/section.styles";
5
+
6
+ export const StyledStepContent = styled(StepContent)`
7
+ &.MuiStepContent-root {
8
+ .MuiCollapse-wrapperInner.MuiCollapse-vertical {
9
+ > .MuiGrid2-root {
10
+ ${sectionPadding};
11
+ border-top: 1px solid ${smokeMain};
12
+ display: grid;
13
+ gap: 24px;
14
+ justify-items: flex-start;
15
+ }
16
+ }
17
+ }
18
+ `;
@@ -0,0 +1,16 @@
1
+ import { Grid2, StepContentProps } from "@mui/material";
2
+ import React from "react";
3
+ import { BaseComponentProps } from "../../../../../types";
4
+ import { StyledStepContent } from "./stepContent.styles";
5
+
6
+ export const StepContent = ({
7
+ children,
8
+ className,
9
+ ...props /* MuiStepContentProps */
10
+ }: BaseComponentProps & StepContentProps): JSX.Element => {
11
+ return (
12
+ <StyledStepContent className={className} {...props}>
13
+ <Grid2>{children}</Grid2>
14
+ </StyledStepContent>
15
+ );
16
+ };
@@ -0,0 +1,19 @@
1
+ import styled from "@emotion/styled";
2
+ import { SvgIcon } from "@mui/material";
3
+ import {
4
+ inkLight,
5
+ smokeDark,
6
+ } from "../../../../../../../../styles/common/mixins/colors";
7
+
8
+ export const StyledSvgIcon = styled(SvgIcon)`
9
+ &.MuiSvgIcon-root {
10
+ border-radius: 50%;
11
+ box-sizing: content-box;
12
+ padding: 4px;
13
+
14
+ &.Mui-completed {
15
+ border: 2px solid ${smokeDark};
16
+ color: ${inkLight};
17
+ }
18
+ }
19
+ `;
@@ -0,0 +1,20 @@
1
+ import { stepIconClasses } from "@mui/material";
2
+ import React from "react";
3
+ import { TestIdProps } from "../../../../../../../types";
4
+ import { StyledSvgIcon } from "./completedIcon.styles";
5
+ import { SVG_ICON_PROPS } from "./contants";
6
+
7
+ export const CompletedIcon = ({ testId }: TestIdProps): JSX.Element => {
8
+ return (
9
+ <StyledSvgIcon
10
+ {...SVG_ICON_PROPS}
11
+ className={stepIconClasses.completed}
12
+ data-testid={testId}
13
+ >
14
+ <path
15
+ d="M7.18129 13.1814C7.08109 13.1814 6.98419 13.1625 6.89059 13.1247C6.79699 13.0875 6.7064 13.0251 6.61879 12.9375L3.44989 9.7686C3.2999 9.61857 3.22819 9.42813 3.23479 9.1971C3.24079 8.96551 3.3188 8.77471 3.46879 8.6247C3.61879 8.47471 3.80629 8.3997 4.03129 8.3997C4.25629 8.3997 4.4438 8.47471 4.59379 8.6247L7.21909 11.25L13.4255 5.0436C13.5755 4.89361 13.7597 4.8186 13.9781 4.8186C14.1971 4.8186 14.3816 4.89361 14.5316 5.0436C14.6816 5.19361 14.7566 5.37811 14.7566 5.5971C14.7566 5.81551 14.6816 5.99971 14.5316 6.1497L7.74379 12.9375C7.65619 13.0251 7.56559 13.0875 7.47199 13.1247C7.37839 13.1625 7.2815 13.1814 7.18129 13.1814Z"
16
+ fill="currentColor"
17
+ />
18
+ </StyledSvgIcon>
19
+ );
20
+ };
@@ -0,0 +1,6 @@
1
+ import { SvgIconProps } from "@mui/material";
2
+
3
+ export const SVG_ICON_PROPS: SvgIconProps = {
4
+ fontSize: "small",
5
+ viewBox: "0 0 18 18",
6
+ };
@@ -0,0 +1 @@
1
+ export const STEP_ICON_TEST_ID = "step-icon";
@@ -0,0 +1,32 @@
1
+ import styled from "@emotion/styled";
2
+ import { StepIcon } from "@mui/material";
3
+ import {
4
+ inkLight,
5
+ primaryMain,
6
+ smokeDark,
7
+ } from "../../../../../../styles/common/mixins/colors";
8
+
9
+ export const StyledStepIcon = styled(StepIcon)`
10
+ &.MuiSvgIcon-root {
11
+ border: 2px solid ${smokeDark};
12
+ border-radius: 50%;
13
+ color: transparent;
14
+ height: 32px;
15
+ width: 32px;
16
+
17
+ .MuiStepIcon-text {
18
+ fill: ${inkLight};
19
+ font-size: 13px;
20
+ font-weight: 600;
21
+ line-height: 24px;
22
+ }
23
+
24
+ &.Mui-active {
25
+ border-color: ${primaryMain};
26
+
27
+ .MuiStepIcon-text {
28
+ fill: ${primaryMain};
29
+ }
30
+ }
31
+ }
32
+ `;
@@ -0,0 +1,21 @@
1
+ import { StepIconProps } from "@mui/material";
2
+ import React from "react";
3
+ import { TestIdProps } from "../../../../../types";
4
+ import { CompletedIcon } from "./components/CompletedIcon/completedIcon";
5
+ import { StyledStepIcon } from "./stepIcon.styles";
6
+
7
+ export const StepIcon = ({
8
+ completed,
9
+ icon,
10
+ testId,
11
+ ...props
12
+ }: StepIconProps & TestIdProps): JSX.Element => {
13
+ return (
14
+ <StyledStepIcon
15
+ completed={completed}
16
+ data-testid={testId}
17
+ icon={completed ? <CompletedIcon testId={testId} /> : icon}
18
+ {...props}
19
+ />
20
+ );
21
+ };
@@ -0,0 +1,52 @@
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
+ import React, { Fragment } from "react";
3
+ import { StepIcon } from "../stepIcon";
4
+
5
+ const meta: Meta<typeof StepIcon> = {
6
+ component: StepIcon,
7
+ decorators: [
8
+ (Story, context): JSX.Element => (
9
+ <div style={{ display: "grid", gap: 24 }}>
10
+ <Story {...context} />
11
+ </div>
12
+ ),
13
+ ],
14
+ title: "Components/Stepper/StepIcon",
15
+ };
16
+
17
+ export default meta;
18
+ type Story = StoryObj<typeof meta>;
19
+
20
+ export const Active: Story = {
21
+ args: {
22
+ active: true,
23
+ completed: false,
24
+ icon: 1,
25
+ },
26
+ };
27
+
28
+ export const Completed: Story = {
29
+ args: {
30
+ active: false,
31
+ completed: true,
32
+ icon: 1,
33
+ },
34
+ };
35
+
36
+ export const Default: Story = {
37
+ args: {
38
+ active: false,
39
+ completed: false,
40
+ icon: 1,
41
+ },
42
+ };
43
+
44
+ export const AllStates: Story = {
45
+ render: () => (
46
+ <Fragment>
47
+ <StepIcon active={false} completed={false} icon={1} />
48
+ <StepIcon active={true} completed={false} icon={2} />
49
+ <StepIcon active={false} completed={true} icon={3} />
50
+ </Fragment>
51
+ ),
52
+ };
@@ -0,0 +1,14 @@
1
+ import { Info } from "@mui/icons-material";
2
+ import { SvgIconProps, TooltipProps } from "@mui/material";
3
+ import { SVG_ICON_PROPS as MUI_SVG_ICON_PROPS } from "../../../../../../../../../../styles/common/mui/svgIcon";
4
+
5
+ export const SVG_ICON_PROPS: SvgIconProps = {
6
+ color: MUI_SVG_ICON_PROPS.COLOR.INK_LIGHT,
7
+ component: Info,
8
+ fontSize: MUI_SVG_ICON_PROPS.FONT_SIZE.XSMALL,
9
+ };
10
+
11
+ export const TOOLTIP_PROPS: Omit<TooltipProps, "children" | "title"> = {
12
+ disableInteractive: true,
13
+ slotProps: { tooltip: { sx: { maxWidth: 196, textAlign: "center" } } },
14
+ };
@@ -0,0 +1,13 @@
1
+ import { SvgIcon, Tooltip } from "@mui/material";
2
+ import React from "react";
3
+ import { SVG_ICON_PROPS, TOOLTIP_PROPS } from "./constants";
4
+ import { IconProps } from "./types";
5
+
6
+ export const Icon = ({ slotProps }: IconProps): JSX.Element | null => {
7
+ if (!slotProps?.tooltip?.title) return null;
8
+ return (
9
+ <Tooltip {...TOOLTIP_PROPS} {...slotProps?.tooltip}>
10
+ <SvgIcon {...SVG_ICON_PROPS} {...slotProps?.svgIcon} />
11
+ </Tooltip>
12
+ );
13
+ };
@@ -0,0 +1,6 @@
1
+ import { ComponentProps } from "react";
2
+ import { Icon } from "../icon";
3
+
4
+ export const DISABLED_CONTROLS: (keyof ComponentProps<typeof Icon>)[] = [
5
+ "slotProps",
6
+ ];
@@ -0,0 +1,30 @@
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
+ import { ComponentProps } from "react";
3
+ import { CONTROL_TYPE } from "../../../../../../../../../../../storybook/controls/types";
4
+ import { configureControls } from "../../../../../../../../../../../storybook/controls/utils";
5
+ import { LOREM_IPSUM } from "../../../../../../../../../../../storybook/loremIpsum";
6
+ import { Icon } from "../icon";
7
+ import { DISABLED_CONTROLS } from "./contants";
8
+
9
+ const meta: Meta<typeof Icon> = {
10
+ argTypes: configureControls<ComponentProps<typeof Icon>>(
11
+ DISABLED_CONTROLS,
12
+ CONTROL_TYPE.DISABLED
13
+ ),
14
+ component: Icon,
15
+ title: "Components/Stepper/StepLabel/Icon",
16
+ };
17
+
18
+ export default meta;
19
+
20
+ type Story = StoryObj<typeof meta>;
21
+
22
+ export const Default: Story = {
23
+ args: {
24
+ slotProps: {
25
+ tooltip: {
26
+ title: LOREM_IPSUM.SHORT,
27
+ },
28
+ },
29
+ },
30
+ };
@@ -0,0 +1,8 @@
1
+ import { SvgIconProps, TooltipProps } from "@mui/material";
2
+
3
+ export interface IconProps {
4
+ slotProps?: {
5
+ svgIcon?: SvgIconProps;
6
+ tooltip?: Omit<TooltipProps, "children">;
7
+ };
8
+ }
@@ -0,0 +1,8 @@
1
+ import { TypographyProps } from "@mui/material";
2
+ import { TYPOGRAPHY_PROPS as MUI_TYPOGRAPHY_PROPS } from "../../../../../../../../styles/common/mui/typography";
3
+
4
+ export const TYPOGRAPHY_PROPS: TypographyProps = {
5
+ color: MUI_TYPOGRAPHY_PROPS.COLOR.INK_MAIN,
6
+ component: "div",
7
+ variant: MUI_TYPOGRAPHY_PROPS.VARIANT.TEXT_HEADING_XSMALL,
8
+ };
@@ -0,0 +1,8 @@
1
+ import styled from "@emotion/styled";
2
+ import { Typography } from "@mui/material";
3
+
4
+ export const StyledTypography = styled(Typography)`
5
+ align-items: center;
6
+ display: flex;
7
+ gap: 4px;
8
+ `;
@@ -0,0 +1,10 @@
1
+ import { TypographyProps } from "@mui/material";
2
+ import React from "react";
3
+ import { TYPOGRAPHY_PROPS } from "./constants";
4
+ import { StyledTypography } from "./label.styles";
5
+
6
+ export const Label = ({
7
+ ...props /* MuiTypographyProps */
8
+ }: TypographyProps): JSX.Element => {
9
+ return <StyledTypography {...TYPOGRAPHY_PROPS} {...props} />;
10
+ };
@@ -0,0 +1,31 @@
1
+ import { composeStories, type Meta, type StoryObj } from "@storybook/react";
2
+ import React from "react";
3
+ import * as stories from "../components/Icon/stories/icon.stories";
4
+ import { Label } from "../label";
5
+
6
+ const { Default: Icon } = composeStories(stories);
7
+
8
+ const meta: Meta<typeof Label> = {
9
+ component: Label,
10
+ parameters: { controls: { disable: true } },
11
+ title: "Components/Stepper/StepLabel/Label",
12
+ };
13
+
14
+ export default meta;
15
+
16
+ type Story = StoryObj<typeof meta>;
17
+
18
+ export const Default: Story = {
19
+ args: { children: "Annotation Files" },
20
+ };
21
+
22
+ export const WithIcon: Story = {
23
+ args: {
24
+ children: (
25
+ <>
26
+ Annotation Files
27
+ <Icon />
28
+ </>
29
+ ),
30
+ },
31
+ };
@@ -0,0 +1,7 @@
1
+ import { TypographyProps } from "@mui/material";
2
+ import { TYPOGRAPHY_PROPS as MUI_TYPOGRAPHY_PROPS } from "../../../../../../../../styles/common/mui/typography";
3
+
4
+ export const TYPOGRAPHY_PROPS: TypographyProps = {
5
+ color: MUI_TYPOGRAPHY_PROPS.COLOR.INK_LIGHT,
6
+ variant: MUI_TYPOGRAPHY_PROPS.VARIANT.TEXT_BODY_400,
7
+ };
@@ -0,0 +1,9 @@
1
+ import { Typography, TypographyProps } from "@mui/material";
2
+ import React from "react";
3
+ import { TYPOGRAPHY_PROPS } from "./constants";
4
+
5
+ export const Optional = ({
6
+ ...props /* MuiTypographyProps */
7
+ }: TypographyProps): JSX.Element => {
8
+ return <Typography {...TYPOGRAPHY_PROPS} {...props} />;
9
+ };
@@ -0,0 +1,10 @@
1
+ import { StepLabelProps } from "@mui/material";
2
+ import { StepIcon } from "../StepIcon/stepIcon";
3
+ import { Label } from "./components/Label/label";
4
+
5
+ export const STEP_LABEL_PROPS: StepLabelProps = {
6
+ slots: {
7
+ label: Label,
8
+ stepIcon: StepIcon,
9
+ },
10
+ };
@@ -0,0 +1,13 @@
1
+ import styled from "@emotion/styled";
2
+ import { StepLabel } from "@mui/material";
3
+
4
+ export const StyledStepLabel = styled(StepLabel)`
5
+ .MuiStepLabel-iconContainer {
6
+ padding-right: 16px;
7
+ }
8
+
9
+ .MuiStepLabel-labelContainer {
10
+ display: grid;
11
+ gap: 4px;
12
+ }
13
+ `;
@@ -0,0 +1,10 @@
1
+ import { StepLabelProps } from "@mui/material";
2
+ import React from "react";
3
+ import { STEP_LABEL_PROPS } from "./constants";
4
+ import { StyledStepLabel } from "./stepLabel.styles";
5
+
6
+ export const StepLabel = ({
7
+ ...props /* MuiStepLabelProps */
8
+ }: StepLabelProps): JSX.Element => {
9
+ return <StyledStepLabel {...STEP_LABEL_PROPS} {...props} />;
10
+ };
@@ -0,0 +1,19 @@
1
+ import { ComponentProps } from "react";
2
+ import { MUI_CONTROLS } from "../../../../../../../storybook/controls/constants";
3
+ import { StepLabel } from "../stepLabel";
4
+
5
+ export const DISABLED_CONTROLS: (keyof ComponentProps<typeof StepLabel>)[] = [
6
+ ...MUI_CONTROLS,
7
+ "children",
8
+ "error",
9
+ "icon",
10
+ "optional",
11
+ "slotProps",
12
+ "slots",
13
+ ];
14
+
15
+ export const EXCLUDED_CONTROLS: (keyof ComponentProps<typeof StepLabel>)[] = [
16
+ "componentsProps", // deprecated
17
+ "StepIconComponent", // deprecated
18
+ "StepIconProps", // deprecated
19
+ ];
@@ -0,0 +1,48 @@
1
+ import { Meta, StoryObj, composeStories } from "@storybook/react";
2
+ import React, { ComponentProps } from "react";
3
+ import { CONTROL_TYPE } from "../../../../../../../storybook/controls/types";
4
+ import { configureControls } from "../../../../../../../storybook/controls/utils";
5
+ import * as stories from "../components/Label/stories/label.stories";
6
+ import { Optional } from "../components/Optional/optional";
7
+ import { StepLabel } from "../stepLabel";
8
+ import { DISABLED_CONTROLS, EXCLUDED_CONTROLS } from "./contants";
9
+
10
+ const { Default: Label, WithIcon: LabelWithIcon } = composeStories(stories);
11
+
12
+ const meta: Meta<typeof StepLabel> = {
13
+ argTypes: configureControls<ComponentProps<typeof StepLabel>>(
14
+ DISABLED_CONTROLS,
15
+ CONTROL_TYPE.DISABLED
16
+ ),
17
+ component: StepLabel,
18
+ parameters: { controls: { exclude: EXCLUDED_CONTROLS } },
19
+ title: "Components/Stepper/StepLabel",
20
+ };
21
+
22
+ export default meta;
23
+
24
+ type Story = StoryObj<typeof meta>;
25
+
26
+ export const Active: Story = {
27
+ args: {
28
+ children: <LabelWithIcon />,
29
+ icon: 1,
30
+ slotProps: { stepIcon: { active: true } },
31
+ },
32
+ };
33
+
34
+ export const Completed: Story = {
35
+ args: {
36
+ children: <LabelWithIcon />,
37
+ icon: 1,
38
+ optional: <Optional>3 files selected</Optional>,
39
+ slotProps: { stepIcon: { completed: true } },
40
+ },
41
+ };
42
+
43
+ export const Default: Story = {
44
+ args: {
45
+ children: <Label />,
46
+ icon: 1,
47
+ },
48
+ };
@@ -0,0 +1,6 @@
1
+ import { StepProps } from "@mui/material";
2
+ import { FluidPaper } from "../../../common/Paper/paper.styles";
3
+
4
+ export const STEP_PROPS: StepProps = {
5
+ component: FluidPaper,
6
+ };
@@ -0,0 +1,33 @@
1
+ import { css } from "@emotion/react";
2
+ import styled from "@emotion/styled";
3
+ import { Step } from "@mui/material";
4
+ import { smokeLightest, white } from "../../../../styles/common/mixins/colors";
5
+ import { sectionPadding } from "../../../common/Section/section.styles";
6
+
7
+ export const StyledStep = styled(Step)`
8
+ &.MuiStep-root {
9
+ &.MuiStep-vertical {
10
+ background-color: ${smokeLightest};
11
+
12
+ .MuiStepLabel-root {
13
+ ${sectionPadding};
14
+ }
15
+
16
+ .MuiStepContent-root {
17
+ border: none;
18
+ margin: 0;
19
+ padding: 0;
20
+ }
21
+
22
+ &.Mui-completed {
23
+ background-color: ${white};
24
+ }
25
+
26
+ ${(props) =>
27
+ props.active &&
28
+ css`
29
+ background-color: ${white(props)};
30
+ `};
31
+ }
32
+ }
33
+ `;
@@ -0,0 +1,12 @@
1
+ import { StepProps } from "@mui/material";
2
+ import React from "react";
3
+ import { BaseComponentProps } from "../../../types";
4
+ import { STEP_PROPS } from "./constants";
5
+ import { StyledStep } from "./step.styles";
6
+
7
+ export const Step = ({
8
+ className,
9
+ ...props /* MuiStepProps */
10
+ }: BaseComponentProps & StepProps): JSX.Element => {
11
+ return <StyledStep {...STEP_PROPS} className={className} {...props} />;
12
+ };
@@ -0,0 +1,18 @@
1
+ import { ComponentProps } from "react";
2
+ import { MUI_CONTROLS } from "../../../../../storybook/controls/constants";
3
+ import { Step } from "../step";
4
+
5
+ export const BOOLEAN_CONTROLS: (keyof ComponentProps<typeof Step>)[] = [
6
+ "active",
7
+ "completed",
8
+ "disabled",
9
+ "expanded",
10
+ "last",
11
+ ];
12
+
13
+ export const DISABLED_CONTROLS: (keyof ComponentProps<typeof Step>)[] = [
14
+ ...MUI_CONTROLS,
15
+ "children",
16
+ "component",
17
+ "style",
18
+ ];