@bosonprotocol/react-kit 0.32.0-alpha.8 → 0.32.0-alpha.9

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 (118) hide show
  1. package/dist/cjs/components/contractualAgreement/ContractualAgreement.js +2 -2
  2. package/dist/cjs/components/contractualAgreement/ContractualAgreement.js.map +1 -1
  3. package/dist/cjs/components/error/SimpleError.d.ts +1 -1
  4. package/dist/cjs/components/error/SimpleError.d.ts.map +1 -1
  5. package/dist/cjs/components/error/SimpleError.js +2 -1
  6. package/dist/cjs/components/error/SimpleError.js.map +1 -1
  7. package/dist/cjs/components/form/BaseTextArea.d.ts +5 -0
  8. package/dist/cjs/components/form/BaseTextArea.d.ts.map +1 -0
  9. package/dist/cjs/components/form/{Textarea.js → BaseTextArea.js} +6 -5
  10. package/dist/cjs/components/form/BaseTextArea.js.map +1 -0
  11. package/dist/cjs/components/form/Field.styles.d.ts +25 -1
  12. package/dist/cjs/components/form/Field.styles.d.ts.map +1 -1
  13. package/dist/cjs/components/form/Field.styles.js +35 -60
  14. package/dist/cjs/components/form/Field.styles.js.map +1 -1
  15. package/dist/cjs/components/form/index.d.ts +1 -1
  16. package/dist/cjs/components/form/index.d.ts.map +1 -1
  17. package/dist/cjs/components/form/index.js +2 -3
  18. package/dist/cjs/components/form/index.js.map +1 -1
  19. package/dist/cjs/components/form/types.d.ts +4 -1
  20. package/dist/cjs/components/form/types.d.ts.map +1 -1
  21. package/dist/cjs/components/license/License.js +2 -2
  22. package/dist/cjs/components/license/License.js.map +1 -1
  23. package/dist/cjs/components/modal/components/Redeem/Confirmation/Confirmation.js +3 -3
  24. package/dist/cjs/components/modal/components/Redeem/Confirmation/Confirmation.js.map +1 -1
  25. package/dist/cjs/components/modal/components/Redeem/ExchangeView/cancellation/CancelExchange.js +2 -2
  26. package/dist/cjs/components/modal/components/Redeem/ExchangeView/cancellation/CancelExchange.js.map +1 -1
  27. package/dist/cjs/components/modal/components/Redeem/ExchangeView/expireVoucher/ExpireVoucher.js +2 -2
  28. package/dist/cjs/components/modal/components/Redeem/ExchangeView/expireVoucher/ExpireVoucher.js.map +1 -1
  29. package/dist/cjs/components/modal/components/common/VariationSelects.js +2 -2
  30. package/dist/cjs/components/modal/components/common/VariationSelects.js.map +1 -1
  31. package/dist/cjs/components/step/MultiSteps.d.ts +23 -0
  32. package/dist/cjs/components/step/MultiSteps.d.ts.map +1 -0
  33. package/dist/cjs/components/step/MultiSteps.js +121 -0
  34. package/dist/cjs/components/step/MultiSteps.js.map +1 -0
  35. package/dist/cjs/components/step/Step.d.ts +28 -0
  36. package/dist/cjs/components/step/Step.d.ts.map +1 -0
  37. package/dist/cjs/components/step/Step.js +32 -0
  38. package/dist/cjs/components/step/Step.js.map +1 -0
  39. package/dist/cjs/components/step/Step.styles.d.ts +29 -0
  40. package/dist/cjs/components/step/Step.styles.d.ts.map +1 -0
  41. package/dist/cjs/components/step/Step.styles.js +196 -0
  42. package/dist/cjs/components/step/Step.styles.js.map +1 -0
  43. package/dist/cjs/index.d.ts +3 -0
  44. package/dist/cjs/index.d.ts.map +1 -1
  45. package/dist/cjs/index.js +3 -0
  46. package/dist/cjs/index.js.map +1 -1
  47. package/dist/esm/components/contractualAgreement/ContractualAgreement.js +1 -1
  48. package/dist/esm/components/contractualAgreement/ContractualAgreement.js.map +1 -1
  49. package/dist/esm/components/error/SimpleError.d.ts +1 -1
  50. package/dist/esm/components/error/SimpleError.d.ts.map +1 -1
  51. package/dist/esm/components/error/SimpleError.js +1 -1
  52. package/dist/esm/components/error/SimpleError.js.map +1 -1
  53. package/dist/esm/components/form/BaseTextArea.d.ts +5 -0
  54. package/dist/esm/components/form/BaseTextArea.d.ts.map +1 -0
  55. package/dist/esm/components/form/{Textarea.js → BaseTextArea.js} +3 -3
  56. package/dist/esm/components/form/BaseTextArea.js.map +1 -0
  57. package/dist/esm/components/form/Field.styles.d.ts +25 -1
  58. package/dist/esm/components/form/Field.styles.d.ts.map +1 -1
  59. package/dist/esm/components/form/Field.styles.js +35 -60
  60. package/dist/esm/components/form/Field.styles.js.map +1 -1
  61. package/dist/esm/components/form/index.d.ts +1 -1
  62. package/dist/esm/components/form/index.d.ts.map +1 -1
  63. package/dist/esm/components/form/index.js +1 -1
  64. package/dist/esm/components/form/index.js.map +1 -1
  65. package/dist/esm/components/form/types.d.ts +4 -1
  66. package/dist/esm/components/form/types.d.ts.map +1 -1
  67. package/dist/esm/components/license/License.js +1 -1
  68. package/dist/esm/components/license/License.js.map +1 -1
  69. package/dist/esm/components/modal/components/Redeem/Confirmation/Confirmation.js +1 -1
  70. package/dist/esm/components/modal/components/Redeem/Confirmation/Confirmation.js.map +1 -1
  71. package/dist/esm/components/modal/components/Redeem/ExchangeView/cancellation/CancelExchange.js +1 -1
  72. package/dist/esm/components/modal/components/Redeem/ExchangeView/cancellation/CancelExchange.js.map +1 -1
  73. package/dist/esm/components/modal/components/Redeem/ExchangeView/expireVoucher/ExpireVoucher.js +1 -1
  74. package/dist/esm/components/modal/components/Redeem/ExchangeView/expireVoucher/ExpireVoucher.js.map +1 -1
  75. package/dist/esm/components/modal/components/common/VariationSelects.js +1 -1
  76. package/dist/esm/components/modal/components/common/VariationSelects.js.map +1 -1
  77. package/dist/esm/components/step/MultiSteps.d.ts +23 -0
  78. package/dist/esm/components/step/MultiSteps.d.ts.map +1 -0
  79. package/dist/esm/components/step/MultiSteps.js +82 -0
  80. package/dist/esm/components/step/MultiSteps.js.map +1 -0
  81. package/dist/esm/components/step/Step.d.ts +28 -0
  82. package/dist/esm/components/step/Step.d.ts.map +1 -0
  83. package/dist/esm/components/step/Step.js +13 -0
  84. package/dist/esm/components/step/Step.js.map +1 -0
  85. package/dist/esm/components/step/Step.styles.d.ts +29 -0
  86. package/dist/esm/components/step/Step.styles.d.ts.map +1 -0
  87. package/dist/esm/components/step/Step.styles.js +170 -0
  88. package/dist/esm/components/step/Step.styles.js.map +1 -0
  89. package/dist/esm/index.d.ts +3 -0
  90. package/dist/esm/index.d.ts.map +1 -1
  91. package/dist/esm/index.js +3 -0
  92. package/dist/esm/index.js.map +1 -1
  93. package/package.json +4 -4
  94. package/src/components/contractualAgreement/ContractualAgreement.tsx +1 -1
  95. package/src/components/error/SimpleError.tsx +1 -5
  96. package/src/components/form/{Textarea.tsx → BaseTextArea.tsx} +8 -3
  97. package/src/components/form/Field.styles.ts +67 -63
  98. package/src/components/form/index.ts +1 -1
  99. package/src/components/form/types.ts +2 -1
  100. package/src/components/license/License.tsx +1 -1
  101. package/src/components/modal/components/Redeem/Confirmation/Confirmation.tsx +1 -1
  102. package/src/components/modal/components/Redeem/ExchangeView/cancellation/CancelExchange.tsx +1 -1
  103. package/src/components/modal/components/Redeem/ExchangeView/expireVoucher/ExpireVoucher.tsx +1 -1
  104. package/src/components/modal/components/common/VariationSelects.tsx +1 -1
  105. package/src/components/step/MultiSteps.tsx +187 -0
  106. package/src/components/step/Step.styles.ts +209 -0
  107. package/src/components/step/Step.tsx +67 -0
  108. package/src/index.tsx +3 -0
  109. package/src/stories/form/{Input.stories.tsx → BaseInput.stories.tsx} +1 -1
  110. package/src/stories/form/BaseTextArea.stories.tsx +59 -0
  111. package/src/stories/multisteps/MultiSteps.stories.tsx +86 -0
  112. package/dist/cjs/components/form/Textarea.d.ts +0 -4
  113. package/dist/cjs/components/form/Textarea.d.ts.map +0 -1
  114. package/dist/cjs/components/form/Textarea.js.map +0 -1
  115. package/dist/esm/components/form/Textarea.d.ts +0 -4
  116. package/dist/esm/components/form/Textarea.d.ts.map +0 -1
  117. package/dist/esm/components/form/Textarea.js.map +0 -1
  118. /package/src/stories/buttons/{button.stories.tsx → Button.stories.tsx} +0 -0
@@ -7,5 +7,5 @@ export { default as Input, InputProps } from "./Input";
7
7
  export { default as Phone } from "./Phone";
8
8
  export { default as Select } from "./Select";
9
9
  export * from "./BaseTagsInput";
10
- export { default as Textarea } from "./Textarea";
10
+ export * from "./BaseTextArea";
11
11
  export { default as Upload } from "./Upload/Upload";
@@ -1,4 +1,5 @@
1
1
  import { SingleValue } from "react-select";
2
+ import type { TextAreaTheme } from "./Field.styles";
2
3
 
3
4
  export interface BaseProps {
4
5
  name: string;
@@ -19,7 +20,7 @@ export interface CheckboxProps extends BaseProps {
19
20
  }
20
21
 
21
22
  export type TextareaProps = BaseProps &
22
- React.TextareaHTMLAttributes<HTMLTextAreaElement>;
23
+ React.TextareaHTMLAttributes<HTMLTextAreaElement> & { theme?: TextAreaTheme };
23
24
 
24
25
  export interface ErrorProps {
25
26
  display?: boolean;
@@ -7,7 +7,7 @@ import remarkGfm from "remark-gfm";
7
7
  import { useRenderTemplate } from "../../hooks/useRenderTemplate";
8
8
  import { ProgressStatus } from "../../lib/progress/progressStatus";
9
9
  import { useBosonContext } from "../boson/BosonProvider";
10
- import SimpleError from "../error/SimpleError";
10
+ import { SimpleError } from "../error/SimpleError";
11
11
  import Loading from "../ui/loading/LoadingWrapper";
12
12
 
13
13
  interface Props {
@@ -24,7 +24,7 @@ import {
24
24
  IRedeemButton
25
25
  } from "../../../../cta/exchange/RedeemButton";
26
26
  import { useEnvContext } from "../../../../environment/EnvironmentContext";
27
- import SimpleError from "../../../../error/SimpleError";
27
+ import { SimpleError } from "../../../../error/SimpleError";
28
28
  import SuccessTransactionToast from "../../../../toasts/SuccessTransactionToast";
29
29
  import { Grid } from "../../../../ui/Grid";
30
30
  import { Spinner } from "../../../../ui/loading/Spinner";
@@ -18,7 +18,7 @@ import {
18
18
  ICancelButton
19
19
  } from "../../../../../cta/exchange/CancelButton";
20
20
  import { useEnvContext } from "../../../../../environment/EnvironmentContext";
21
- import SimpleError from "../../../../../error/SimpleError";
21
+ import { SimpleError } from "../../../../../error/SimpleError";
22
22
  import SuccessTransactionToast from "../../../../../toasts/SuccessTransactionToast";
23
23
  import { Grid } from "../../../../../ui/Grid";
24
24
  import ThemedButton from "../../../../../ui/ThemedButton";
@@ -16,7 +16,7 @@ import {
16
16
  IExpireButton
17
17
  } from "../../../../../cta/exchange/ExpireButton";
18
18
  import { useEnvContext } from "../../../../../environment/EnvironmentContext";
19
- import SimpleError from "../../../../../error/SimpleError";
19
+ import { SimpleError } from "../../../../../error/SimpleError";
20
20
  import { Grid } from "../../../../../ui/Grid";
21
21
  import ThemedButton from "../../../../../ui/ThemedButton";
22
22
  import { Typography } from "../../../../../ui/Typography";
@@ -12,7 +12,7 @@ import { isNumeric } from "../../../../lib/numbers/numbers";
12
12
  import { theme } from "../../../../theme";
13
13
  import { isTruthy } from "../../../../types/helpers";
14
14
  import { VariantV1, Variation } from "../../../../types/variants";
15
- import SimpleError from "../../../error/SimpleError";
15
+ import { SimpleError } from "../../../error/SimpleError";
16
16
  import { Select } from "../../../form";
17
17
  import { SelectDataProps } from "../../../form/types";
18
18
  import { Grid } from "../../../ui/Grid";
@@ -0,0 +1,187 @@
1
+ import { ArrowLeft, ArrowRight } from "phosphor-react";
2
+ import React, { useEffect, useRef, useState } from "react";
3
+
4
+ import { Grid } from "../ui/Grid";
5
+ import { Step, StepColorProps, StepState } from "./Step";
6
+ import { MultiStepStyle, MultiStepWrapper, StepWrapper } from "./Step.styles";
7
+ import { useBreakpoints } from "../../hooks/useBreakpoints";
8
+ import { CSSProperties } from "styled-components";
9
+ import { theme } from "../../theme";
10
+ const colors = theme.colors.light;
11
+ type StepData = {
12
+ name?: string;
13
+ steps: number;
14
+ };
15
+
16
+ export type MultiStepsProps = {
17
+ disableInactiveSteps?: boolean;
18
+ active?: number;
19
+ data: Array<StepData> | Readonly<Array<StepData>>;
20
+ callback?: (cur: number) => void;
21
+ isRightArrowEnabled?: boolean;
22
+ enabledArrowColor?: CSSProperties["color"];
23
+ disabledArrowColor?: CSSProperties["color"];
24
+ hideArrows?: boolean;
25
+ } & StepColorProps;
26
+ const dataStepsWrapper = "data-steps-wrapper";
27
+ export function MultiSteps({
28
+ data,
29
+ active,
30
+ callback,
31
+ disableInactiveSteps = false,
32
+ isRightArrowEnabled = false,
33
+ hideArrows = false,
34
+ enabledArrowColor = colors.darkGrey,
35
+ disabledArrowColor = colors.lightArrowColor,
36
+ stepInactiveDotColor = "#d3d5db",
37
+ stepInactiveBackgroundColor = colors.white,
38
+ stepInactiveHoverDotColor = colors.darkGrey,
39
+ stepInactiveHoverBackgroundColor = colors.lightGrey,
40
+ stepActiveBackgroundColor = colors.black,
41
+ stepActiveDotsColor = colors.green, // TODO: var(--primary) in boson Dapp
42
+ stepDoneBackgroundColor = colors.green, // TODO: var(--primary) in boson Dapp
43
+ stepDoneCheckColor = colors.black,
44
+ stepDoneHoverBackgroundColor = colors.black,
45
+ stepDoneHoverCheckColor = colors.green, // TODO: var(--primary) in boson Dapp
46
+ ...props
47
+ }: MultiStepsProps) {
48
+ const [current, setCurrent] = useState<number>(active || 0);
49
+ const { isLteS } = useBreakpoints();
50
+
51
+ useEffect(() => {
52
+ setCurrent(active || 0);
53
+ }, [active]);
54
+ const stepWidthRef = useRef<number>(50);
55
+ return (
56
+ <Grid
57
+ justifyContent="space-evenly"
58
+ ref={(element) => {
59
+ const children = element?.querySelectorAll(`[${dataStepsWrapper}] > *`);
60
+ children?.forEach((child) => {
61
+ const isVisible = child.checkVisibility({ checkVisibilityCSS: true });
62
+ if (isVisible) {
63
+ if (
64
+ child.clientWidth &&
65
+ stepWidthRef.current !== child.clientWidth
66
+ ) {
67
+ stepWidthRef.current = child.clientWidth;
68
+ }
69
+ }
70
+ });
71
+ }}
72
+ >
73
+ {isLteS && !hideArrows && (
74
+ <Grid alignItems="center" width="auto">
75
+ <ArrowLeft
76
+ size={32}
77
+ style={{ cursor: active && callback ? "pointer" : "not-allowed" }}
78
+ color={active === 0 ? disabledArrowColor : enabledArrowColor}
79
+ onClick={() => {
80
+ if (active && callback) {
81
+ callback(active - 1);
82
+ }
83
+ }}
84
+ />
85
+ </Grid>
86
+ )}
87
+ <div
88
+ style={{
89
+ width: `${stepWidthRef.current}px`
90
+ }}
91
+ />
92
+ <MultiStepStyle
93
+ {...props}
94
+ {...{ [dataStepsWrapper]: true }}
95
+ $isLteS={isLteS}
96
+ >
97
+ {data.map((el, i) => {
98
+ const steps = Array.from(Array(el.steps).keys());
99
+ const newData = data.slice(0, i);
100
+ const previousLength = newData.reduce(
101
+ (acc, cur) => (acc += cur.steps),
102
+ 0
103
+ );
104
+ if (
105
+ (isLteS &&
106
+ current >= previousLength &&
107
+ current <= previousLength + steps.length) ||
108
+ !isLteS
109
+ ) {
110
+ return (
111
+ <MultiStepWrapper $isLteS={isLteS} key={`multi_${i}`}>
112
+ <StepWrapper>
113
+ {steps.map((_: number, key: number) => {
114
+ const currentKey = previousLength + key;
115
+ const state =
116
+ currentKey === current
117
+ ? StepState.Active
118
+ : currentKey < current
119
+ ? StepState.Done
120
+ : StepState.Inactive;
121
+
122
+ const isStepDisabled =
123
+ !callback ||
124
+ (disableInactiveSteps && StepState.Inactive === state);
125
+
126
+ if ((isLteS && active === currentKey) || !isLteS) {
127
+ return (
128
+ <Step
129
+ disabled={isStepDisabled}
130
+ state={state}
131
+ onClick={() => {
132
+ if (!isStepDisabled) {
133
+ setCurrent(currentKey);
134
+ callback(currentKey);
135
+ }
136
+ }}
137
+ key={`multi-step_${currentKey}`}
138
+ stepInactiveDotColor={stepInactiveDotColor}
139
+ stepInactiveBackgroundColor={
140
+ stepInactiveBackgroundColor
141
+ }
142
+ stepInactiveHoverDotColor={stepInactiveHoverDotColor}
143
+ stepInactiveHoverBackgroundColor={
144
+ stepInactiveHoverBackgroundColor
145
+ }
146
+ stepActiveBackgroundColor={stepActiveBackgroundColor}
147
+ stepActiveDotsColor={stepActiveDotsColor}
148
+ stepDoneBackgroundColor={stepDoneBackgroundColor}
149
+ stepDoneCheckColor={stepDoneCheckColor}
150
+ stepDoneHoverBackgroundColor={
151
+ stepDoneHoverBackgroundColor
152
+ }
153
+ stepDoneHoverCheckColor={stepDoneHoverCheckColor}
154
+ />
155
+ );
156
+ }
157
+ return null;
158
+ })}
159
+ </StepWrapper>
160
+ <p>{el.name}</p>
161
+ </MultiStepWrapper>
162
+ );
163
+ }
164
+ return null;
165
+ })}
166
+ </MultiStepStyle>
167
+ {isLteS && !hideArrows && (
168
+ <Grid alignItems="flex-end" width="auto">
169
+ <ArrowRight
170
+ size={32}
171
+ color={isRightArrowEnabled ? enabledArrowColor : disabledArrowColor}
172
+ style={{ cursor: isRightArrowEnabled ? "pointer" : "not-allowed" }}
173
+ onClick={() => {
174
+ if (
175
+ isRightArrowEnabled &&
176
+ typeof active === "number" &&
177
+ callback
178
+ ) {
179
+ callback(active + 1);
180
+ }
181
+ }}
182
+ />
183
+ </Grid>
184
+ )}
185
+ </Grid>
186
+ );
187
+ }
@@ -0,0 +1,209 @@
1
+ import styled, { CSSProperties, css } from "styled-components";
2
+
3
+ import { transition } from "../../components/ui/styles";
4
+ import { StepState } from "./Step";
5
+ import { theme } from "../../theme";
6
+ const colors = theme.colors.light;
7
+ type StepColorProps = {
8
+ $stepInactiveDotColor?: CSSProperties["color"];
9
+ $stepInactiveBackgroundColor?: CSSProperties["color"];
10
+ $stepInactiveHoverDotColor?: CSSProperties["color"];
11
+ $stepInactiveHoverBackgroundColor?: CSSProperties["color"];
12
+ $stepActiveBackgroundColor?: CSSProperties["color"];
13
+ $stepActiveDotsColor?: CSSProperties["color"];
14
+ $stepDoneBackgroundColor?: CSSProperties["color"];
15
+ $stepDoneCheckColor?: CSSProperties["color"];
16
+ $stepDoneHoverBackgroundColor?: CSSProperties["color"];
17
+ $stepDoneHoverCheckColor?: CSSProperties["color"];
18
+ };
19
+ export const StepStyle = styled.div<
20
+ {
21
+ $state: StepState;
22
+ disabled: boolean;
23
+ $isLteS?: boolean;
24
+ } & StepColorProps
25
+ >`
26
+ position: relative;
27
+ display: flex;
28
+ flex-direction: row;
29
+ justify-content: center;
30
+ align-items: center;
31
+ flex-grow: 1;
32
+
33
+ min-width: 6rem;
34
+ height: 1.25rem;
35
+ ${({ $state, disabled }) =>
36
+ $state !== StepState.Active &&
37
+ !disabled &&
38
+ css`
39
+ &:hover {
40
+ cursor: pointer;
41
+ }
42
+ `}
43
+
44
+ ${({
45
+ $state,
46
+ disabled,
47
+ $stepInactiveBackgroundColor,
48
+ $stepInactiveDotColor,
49
+ $stepInactiveHoverBackgroundColor,
50
+ $stepInactiveHoverDotColor
51
+ }) =>
52
+ $state === StepState.Inactive &&
53
+ css`
54
+ background: ${$stepInactiveBackgroundColor};
55
+ ${transition}
56
+
57
+ &:before {
58
+ content: "";
59
+ position: absolute;
60
+ top: 50%;
61
+ left: 50%;
62
+ transform: translate(-50%, -50%);
63
+ border-radius: 50%;
64
+ background: ${$stepInactiveDotColor};
65
+
66
+ ${transition}
67
+
68
+ width: 0.25rem;
69
+ height: 0.25rem;
70
+ }
71
+ ${!disabled &&
72
+ css`
73
+ &:hover {
74
+ background: ${$stepInactiveHoverBackgroundColor};
75
+ &:before {
76
+ background: ${$stepInactiveHoverDotColor};
77
+ width: 0.5rem;
78
+ height: 0.5rem;
79
+ }
80
+ }
81
+ `}
82
+
83
+ > div {
84
+ display: none;
85
+ }
86
+ `}
87
+
88
+ ${({ $state, $stepActiveBackgroundColor, $stepActiveDotsColor }) =>
89
+ $state === StepState.Active &&
90
+ css`
91
+ background: ${$stepActiveBackgroundColor};
92
+
93
+ &:before {
94
+ margin-left: -0.75rem;
95
+ }
96
+ &:after {
97
+ margin-left: 0.75rem;
98
+ }
99
+ > div,
100
+ &:before,
101
+ &:after {
102
+ content: "";
103
+ position: absolute;
104
+ top: 50%;
105
+ left: 50%;
106
+ transform: translate(-50%, -50%);
107
+ ${transition}
108
+ width: 0.25rem;
109
+ height: 0.25rem;
110
+ border-radius: 50%;
111
+ background: ${$stepActiveDotsColor};
112
+ }
113
+ `}
114
+
115
+ ${({
116
+ $state,
117
+ disabled,
118
+ $stepDoneBackgroundColor,
119
+ $stepDoneCheckColor,
120
+ $stepDoneHoverBackgroundColor,
121
+ $stepDoneHoverCheckColor
122
+ }) =>
123
+ $state === StepState.Done &&
124
+ css`
125
+ background: ${$stepDoneBackgroundColor};
126
+
127
+ &:before,
128
+ &:after {
129
+ content: "";
130
+ position: absolute;
131
+ top: 50%;
132
+ left: 50%;
133
+ ${transition}
134
+ background: ${$stepDoneCheckColor};
135
+ }
136
+ &:before {
137
+ width: 0.35rem;
138
+ height: 0.125rem;
139
+ transform: translate(calc(-50% - 0.35rem), calc(-50% + 0.15rem))
140
+ rotate(-135deg);
141
+ }
142
+ &:after {
143
+ width: 0.75rem;
144
+ height: 0.125rem;
145
+ transform: translate(-50%, -50%) rotate(-45deg);
146
+ }
147
+
148
+ > div {
149
+ display: none;
150
+ }
151
+ ${!disabled &&
152
+ css`
153
+ &:hover {
154
+ background: ${$stepDoneHoverBackgroundColor};
155
+ &:before,
156
+ &:after {
157
+ background: ${$stepDoneHoverCheckColor};
158
+ }
159
+ }
160
+ `}
161
+ `}
162
+ `;
163
+
164
+ export const MultiStepStyle = styled.div<{ $isLteS: boolean }>`
165
+ display: flex;
166
+ gap: 1rem;
167
+ flex-direction: row;
168
+ flex-wrap: nowrap;
169
+ justify-content: flex-start;
170
+ width: 100%;
171
+ align-items: center;
172
+ div div {
173
+ display: ${({ $isLteS }) => $isLteS && "none"};
174
+ }
175
+
176
+ p {
177
+ text-align: center;
178
+ margin: 0;
179
+ font-weight: 600;
180
+ font-size: 0.75rem;
181
+ line-height: 1.5;
182
+ color: ${colors.darkGrey};
183
+ }
184
+ `;
185
+
186
+ export const MultiStepWrapper = styled.div<{ $isLteS: boolean }>`
187
+ display: flex;
188
+ flex-grow: 1;
189
+ flex-direction: column;
190
+ position: ${({ $isLteS }) => $isLteS && "absolute"};
191
+ left: ${({ $isLteS }) => $isLteS && "50%"};
192
+ transform: ${({ $isLteS }) => $isLteS && "translate(-50%, 0)"};
193
+ `;
194
+
195
+ export const StepWrapper = styled.div`
196
+ display: flex;
197
+ gap: 0;
198
+ flex-grow: 1;
199
+
200
+ flex-direction: row;
201
+ flex-wrap: nowrap;
202
+ border: 1px solid ${colors.border};
203
+ &:empty + p {
204
+ display: none;
205
+ }
206
+ &:empty {
207
+ display: none;
208
+ }
209
+ `;
@@ -0,0 +1,67 @@
1
+ import { CSSProperties } from "styled-components";
2
+ import { StepStyle } from "./Step.styles";
3
+ import React from "react";
4
+
5
+ export enum StepState {
6
+ Inactive = "inactive",
7
+ Active = "active",
8
+ Done = "done"
9
+ }
10
+
11
+ export type StepColorProps = {
12
+ stepInactiveDotColor?: CSSProperties["color"];
13
+ stepInactiveBackgroundColor?: CSSProperties["color"];
14
+ stepInactiveHoverDotColor?: CSSProperties["color"];
15
+ stepInactiveHoverBackgroundColor?: CSSProperties["color"];
16
+ stepActiveBackgroundColor?: CSSProperties["color"];
17
+ stepActiveDotsColor?: CSSProperties["color"];
18
+ stepDoneBackgroundColor?: CSSProperties["color"];
19
+ stepDoneCheckColor?: CSSProperties["color"];
20
+ stepDoneHoverBackgroundColor?: CSSProperties["color"];
21
+ stepDoneHoverCheckColor?: CSSProperties["color"];
22
+ };
23
+
24
+ type StepProps = StepColorProps & {
25
+ className?: string;
26
+ onClick?: () => void;
27
+ state?: StepState;
28
+ disabled?: boolean;
29
+ };
30
+
31
+ export function Step({
32
+ state = StepState.Inactive,
33
+ className,
34
+ disabled,
35
+ onClick,
36
+ stepInactiveDotColor,
37
+ stepInactiveBackgroundColor,
38
+ stepInactiveHoverDotColor,
39
+ stepInactiveHoverBackgroundColor,
40
+ stepActiveBackgroundColor,
41
+ stepActiveDotsColor,
42
+ stepDoneBackgroundColor,
43
+ stepDoneCheckColor,
44
+ stepDoneHoverBackgroundColor,
45
+ stepDoneHoverCheckColor,
46
+ ...props
47
+ }: StepProps) {
48
+ return (
49
+ <StepStyle
50
+ $state={state}
51
+ {...props}
52
+ $stepInactiveDotColor={stepInactiveDotColor}
53
+ $stepInactiveBackgroundColor={stepInactiveBackgroundColor}
54
+ $stepInactiveHoverDotColor={stepInactiveHoverDotColor}
55
+ $stepInactiveHoverBackgroundColor={stepInactiveHoverBackgroundColor}
56
+ $stepActiveBackgroundColor={stepActiveBackgroundColor}
57
+ $stepActiveDotsColor={stepActiveDotsColor}
58
+ $stepDoneBackgroundColor={stepDoneBackgroundColor}
59
+ $stepDoneCheckColor={stepDoneCheckColor}
60
+ $stepDoneHoverBackgroundColor={stepDoneHoverBackgroundColor}
61
+ $stepDoneHoverCheckColor={stepDoneHoverCheckColor}
62
+ disabled={!!disabled}
63
+ >
64
+ <div />
65
+ </StepStyle>
66
+ );
67
+ }
package/src/index.tsx CHANGED
@@ -82,3 +82,6 @@ export * from "./components/wallet2/web3Provider/index";
82
82
  export * from "./components/wallet2/accountDrawer/index";
83
83
  export * from "./components/portal/Portal";
84
84
  export * from "./components/error/ErrorMessage";
85
+ export * from "./components/error/SimpleError";
86
+ export * from "./components/step/MultiSteps";
87
+ export * from "./components/ipfs/IpfsProvider";
@@ -8,7 +8,7 @@ const defaultHeightSize = "regular";
8
8
  const inputName = "test";
9
9
  // More on default export: https://storybook.js.org/docs/react/writing-stories/introduction#default-export
10
10
  export default {
11
- title: "Visual Components/Inputs/Input",
11
+ title: "Visual Components/Inputs/BaseInput",
12
12
  component: Input,
13
13
  parameters: {
14
14
  // Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout
@@ -0,0 +1,59 @@
1
+ import React from "react";
2
+ import { BaseTextArea } from "../../components/form";
3
+ import { Formik } from "formik";
4
+ import type { Meta } from "@storybook/react";
5
+ import { fn } from "@storybook/test";
6
+ const inputWithErrors = "With error";
7
+ const inputName = "test";
8
+ // More on default export: https://storybook.js.org/docs/react/writing-stories/introduction#default-export
9
+ export default {
10
+ title: "Visual Components/Inputs/BaseTextArea",
11
+ component: BaseTextArea,
12
+ parameters: {
13
+ // Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout
14
+ layout: "centered"
15
+ },
16
+ // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
17
+ tags: ["autodocs"],
18
+ // More on argTypes: https://storybook.js.org/docs/api/argtypes
19
+ argTypes: {
20
+ disabled: { control: "boolean" }
21
+ },
22
+ // Use `fn` to spy on the onClick arg, which will appear in the actions panel once invoked: https://storybook.js.org/docs/essentials/actions#action-args
23
+ args: { onClick: fn() },
24
+ decorators: [
25
+ (Story, { name }) => {
26
+ return (
27
+ <Formik<{ [inputName]: unknown }>
28
+ onSubmit={() => {
29
+ //
30
+ }}
31
+ initialErrors={
32
+ name === inputWithErrors
33
+ ? { [inputName]: "Input error before typing!" }
34
+ : {}
35
+ }
36
+ initialValues={{ [inputName]: "" }}
37
+ initialTouched={{ [inputName]: true }}
38
+ >
39
+ <Story />
40
+ </Formik>
41
+ );
42
+ }
43
+ ] satisfies Meta<typeof BaseTextArea>["decorators"]
44
+ } satisfies Meta<typeof BaseTextArea>;
45
+
46
+ export const Simple = {
47
+ args: {
48
+ name: inputName,
49
+ placeholder: "this is a placeholder"
50
+ }
51
+ };
52
+
53
+ export const TextAreaWithError = {
54
+ name: "With error",
55
+ args: {
56
+ name: inputName,
57
+ placeholder: "this is a placeholder"
58
+ }
59
+ };