@bosonprotocol/react-kit 0.33.0-alpha.8 → 0.33.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 (192) hide show
  1. package/dist/cjs/components/buttons/BaseButton.d.ts +1 -0
  2. package/dist/cjs/components/buttons/BaseButton.d.ts.map +1 -1
  3. package/dist/cjs/components/buttons/BaseButton.js +1 -0
  4. package/dist/cjs/components/buttons/BaseButton.js.map +1 -1
  5. package/dist/cjs/components/buttons/CommitButtonView.d.ts.map +1 -1
  6. package/dist/cjs/components/buttons/CommitButtonView.js +4 -0
  7. package/dist/cjs/components/buttons/CommitButtonView.js.map +1 -1
  8. package/dist/cjs/components/error/SimpleError.d.ts +2 -2
  9. package/dist/cjs/components/error/SimpleError.d.ts.map +1 -1
  10. package/dist/cjs/components/error/SimpleError.js.map +1 -1
  11. package/dist/cjs/components/form/BaseCheckbox.d.ts +5 -0
  12. package/dist/cjs/components/form/BaseCheckbox.d.ts.map +1 -0
  13. package/dist/cjs/components/form/BaseCheckbox.js +69 -0
  14. package/dist/cjs/components/form/BaseCheckbox.js.map +1 -0
  15. package/dist/cjs/components/form/Checkbox.d.ts +13 -2
  16. package/dist/cjs/components/form/Checkbox.d.ts.map +1 -1
  17. package/dist/cjs/components/form/Checkbox.js +18 -61
  18. package/dist/cjs/components/form/Checkbox.js.map +1 -1
  19. package/dist/cjs/components/form/CountrySelect.d.ts +26 -11
  20. package/dist/cjs/components/form/CountrySelect.d.ts.map +1 -1
  21. package/dist/cjs/components/form/CountrySelect.js +64 -31
  22. package/dist/cjs/components/form/CountrySelect.js.map +1 -1
  23. package/dist/cjs/components/form/Field.styles.d.ts +36 -2
  24. package/dist/cjs/components/form/Field.styles.d.ts.map +1 -1
  25. package/dist/cjs/components/form/Field.styles.js +83 -24
  26. package/dist/cjs/components/form/Field.styles.js.map +1 -1
  27. package/dist/cjs/components/form/FormField.d.ts +2 -1
  28. package/dist/cjs/components/form/FormField.d.ts.map +1 -1
  29. package/dist/cjs/components/form/FormField.js +14 -2
  30. package/dist/cjs/components/form/FormField.js.map +1 -1
  31. package/dist/cjs/components/form/Select.d.ts +2 -1
  32. package/dist/cjs/components/form/Select.d.ts.map +1 -1
  33. package/dist/cjs/components/form/Select.js +32 -20
  34. package/dist/cjs/components/form/Select.js.map +1 -1
  35. package/dist/cjs/components/form/Upload/BaseUpload.d.ts +71 -0
  36. package/dist/cjs/components/form/Upload/BaseUpload.d.ts.map +1 -0
  37. package/dist/cjs/components/form/Upload/BaseUpload.js +264 -0
  38. package/dist/cjs/components/form/Upload/BaseUpload.js.map +1 -0
  39. package/dist/cjs/components/form/Upload/Upload.d.ts +3 -41
  40. package/dist/cjs/components/form/Upload/Upload.d.ts.map +1 -1
  41. package/dist/cjs/components/form/Upload/Upload.js +7 -258
  42. package/dist/cjs/components/form/Upload/Upload.js.map +1 -1
  43. package/dist/cjs/components/form/Upload/UploadedFile.js +2 -2
  44. package/dist/cjs/components/form/Upload/UploadedFile.js.map +1 -1
  45. package/dist/cjs/components/form/Upload/WithUploadToIpfs.d.ts.map +1 -1
  46. package/dist/cjs/components/form/Upload/WithUploadToIpfs.js +9 -12
  47. package/dist/cjs/components/form/Upload/WithUploadToIpfs.js.map +1 -1
  48. package/dist/cjs/components/form/index.d.ts +6 -4
  49. package/dist/cjs/components/form/index.d.ts.map +1 -1
  50. package/dist/cjs/components/form/index.js +7 -3
  51. package/dist/cjs/components/form/index.js.map +1 -1
  52. package/dist/cjs/components/form/types.d.ts +31 -3
  53. package/dist/cjs/components/form/types.d.ts.map +1 -1
  54. package/dist/cjs/components/ui/IpfsImage.d.ts +4 -3
  55. package/dist/cjs/components/ui/IpfsImage.d.ts.map +1 -1
  56. package/dist/cjs/components/ui/IpfsImage.js +2 -2
  57. package/dist/cjs/components/ui/IpfsImage.js.map +1 -1
  58. package/dist/cjs/components/ui/Video.d.ts +3 -3
  59. package/dist/cjs/components/ui/Video.d.ts.map +1 -1
  60. package/dist/cjs/components/ui/Video.js +8 -9
  61. package/dist/cjs/components/ui/Video.js.map +1 -1
  62. package/dist/cjs/hooks/ipfs/useIpfsStorage.d.ts.map +1 -1
  63. package/dist/cjs/hooks/ipfs/useIpfsStorage.js +2 -1
  64. package/dist/cjs/hooks/ipfs/useIpfsStorage.js.map +1 -1
  65. package/dist/cjs/hooks/useIpfsMetadataStorage.d.ts +2 -2
  66. package/dist/cjs/hooks/useIpfsMetadataStorage.d.ts.map +1 -1
  67. package/dist/cjs/hooks/useIpfsMetadataStorage.js +6 -6
  68. package/dist/cjs/hooks/useIpfsMetadataStorage.js.map +1 -1
  69. package/dist/cjs/hooks/useIpfsStorage.d.ts.map +1 -1
  70. package/dist/cjs/hooks/useIpfsStorage.js +2 -1
  71. package/dist/cjs/hooks/useIpfsStorage.js.map +1 -1
  72. package/dist/cjs/index.d.ts +2 -0
  73. package/dist/cjs/index.d.ts.map +1 -1
  74. package/dist/cjs/index.js +4 -1
  75. package/dist/cjs/index.js.map +1 -1
  76. package/dist/cjs/lib/bytes/bytesToSize.d.ts +1 -1
  77. package/dist/cjs/lib/bytes/bytesToSize.d.ts.map +1 -1
  78. package/dist/cjs/lib/bytes/bytesToSize.js +2 -1
  79. package/dist/cjs/lib/bytes/bytesToSize.js.map +1 -1
  80. package/dist/cjs/lib/const/chainInfo.d.ts.map +1 -1
  81. package/dist/cjs/lib/const/chainInfo.js +10 -0
  82. package/dist/cjs/lib/const/chainInfo.js.map +1 -1
  83. package/dist/esm/components/buttons/BaseButton.d.ts +1 -0
  84. package/dist/esm/components/buttons/BaseButton.d.ts.map +1 -1
  85. package/dist/esm/components/buttons/BaseButton.js +1 -0
  86. package/dist/esm/components/buttons/BaseButton.js.map +1 -1
  87. package/dist/esm/components/buttons/CommitButtonView.d.ts.map +1 -1
  88. package/dist/esm/components/buttons/CommitButtonView.js +4 -0
  89. package/dist/esm/components/buttons/CommitButtonView.js.map +1 -1
  90. package/dist/esm/components/error/SimpleError.d.ts +2 -2
  91. package/dist/esm/components/error/SimpleError.d.ts.map +1 -1
  92. package/dist/esm/components/error/SimpleError.js.map +1 -1
  93. package/dist/esm/components/form/BaseCheckbox.d.ts +5 -0
  94. package/dist/esm/components/form/BaseCheckbox.d.ts.map +1 -0
  95. package/dist/esm/components/form/BaseCheckbox.js +27 -0
  96. package/dist/esm/components/form/BaseCheckbox.js.map +1 -0
  97. package/dist/esm/components/form/Checkbox.d.ts +13 -2
  98. package/dist/esm/components/form/Checkbox.d.ts.map +1 -1
  99. package/dist/esm/components/form/Checkbox.js +16 -25
  100. package/dist/esm/components/form/Checkbox.js.map +1 -1
  101. package/dist/esm/components/form/CountrySelect.d.ts +26 -11
  102. package/dist/esm/components/form/CountrySelect.d.ts.map +1 -1
  103. package/dist/esm/components/form/CountrySelect.js +97 -67
  104. package/dist/esm/components/form/CountrySelect.js.map +1 -1
  105. package/dist/esm/components/form/Field.styles.d.ts +36 -2
  106. package/dist/esm/components/form/Field.styles.d.ts.map +1 -1
  107. package/dist/esm/components/form/Field.styles.js +58 -20
  108. package/dist/esm/components/form/Field.styles.js.map +1 -1
  109. package/dist/esm/components/form/FormField.d.ts +2 -1
  110. package/dist/esm/components/form/FormField.d.ts.map +1 -1
  111. package/dist/esm/components/form/FormField.js +2 -2
  112. package/dist/esm/components/form/FormField.js.map +1 -1
  113. package/dist/esm/components/form/Select.d.ts +2 -1
  114. package/dist/esm/components/form/Select.d.ts.map +1 -1
  115. package/dist/esm/components/form/Select.js +52 -30
  116. package/dist/esm/components/form/Select.js.map +1 -1
  117. package/dist/esm/components/form/Upload/BaseUpload.d.ts +71 -0
  118. package/dist/esm/components/form/Upload/BaseUpload.d.ts.map +1 -0
  119. package/dist/esm/components/form/Upload/BaseUpload.js +226 -0
  120. package/dist/esm/components/form/Upload/BaseUpload.js.map +1 -0
  121. package/dist/esm/components/form/Upload/Upload.d.ts +3 -41
  122. package/dist/esm/components/form/Upload/Upload.d.ts.map +1 -1
  123. package/dist/esm/components/form/Upload/Upload.js +5 -225
  124. package/dist/esm/components/form/Upload/Upload.js.map +1 -1
  125. package/dist/esm/components/form/Upload/UploadedFile.js +1 -1
  126. package/dist/esm/components/form/Upload/UploadedFile.js.map +1 -1
  127. package/dist/esm/components/form/Upload/WithUploadToIpfs.d.ts.map +1 -1
  128. package/dist/esm/components/form/Upload/WithUploadToIpfs.js +8 -11
  129. package/dist/esm/components/form/Upload/WithUploadToIpfs.js.map +1 -1
  130. package/dist/esm/components/form/index.d.ts +6 -4
  131. package/dist/esm/components/form/index.d.ts.map +1 -1
  132. package/dist/esm/components/form/index.js +4 -2
  133. package/dist/esm/components/form/index.js.map +1 -1
  134. package/dist/esm/components/form/types.d.ts +31 -3
  135. package/dist/esm/components/form/types.d.ts.map +1 -1
  136. package/dist/esm/components/ui/IpfsImage.d.ts +4 -3
  137. package/dist/esm/components/ui/IpfsImage.d.ts.map +1 -1
  138. package/dist/esm/components/ui/IpfsImage.js +2 -2
  139. package/dist/esm/components/ui/IpfsImage.js.map +1 -1
  140. package/dist/esm/components/ui/Video.d.ts +3 -3
  141. package/dist/esm/components/ui/Video.d.ts.map +1 -1
  142. package/dist/esm/components/ui/Video.js +6 -9
  143. package/dist/esm/components/ui/Video.js.map +1 -1
  144. package/dist/esm/hooks/ipfs/useIpfsStorage.d.ts.map +1 -1
  145. package/dist/esm/hooks/ipfs/useIpfsStorage.js +2 -1
  146. package/dist/esm/hooks/ipfs/useIpfsStorage.js.map +1 -1
  147. package/dist/esm/hooks/useIpfsMetadataStorage.d.ts +2 -2
  148. package/dist/esm/hooks/useIpfsMetadataStorage.d.ts.map +1 -1
  149. package/dist/esm/hooks/useIpfsMetadataStorage.js +6 -6
  150. package/dist/esm/hooks/useIpfsMetadataStorage.js.map +1 -1
  151. package/dist/esm/hooks/useIpfsStorage.d.ts.map +1 -1
  152. package/dist/esm/hooks/useIpfsStorage.js +2 -1
  153. package/dist/esm/hooks/useIpfsStorage.js.map +1 -1
  154. package/dist/esm/index.d.ts +2 -0
  155. package/dist/esm/index.d.ts.map +1 -1
  156. package/dist/esm/index.js +2 -0
  157. package/dist/esm/index.js.map +1 -1
  158. package/dist/esm/lib/bytes/bytesToSize.d.ts +1 -1
  159. package/dist/esm/lib/bytes/bytesToSize.d.ts.map +1 -1
  160. package/dist/esm/lib/bytes/bytesToSize.js +1 -1
  161. package/dist/esm/lib/bytes/bytesToSize.js.map +1 -1
  162. package/dist/esm/lib/const/chainInfo.d.ts.map +1 -1
  163. package/dist/esm/lib/const/chainInfo.js +10 -0
  164. package/dist/esm/lib/const/chainInfo.js.map +1 -1
  165. package/package.json +5 -5
  166. package/src/components/buttons/BaseButton.tsx +4 -0
  167. package/src/components/buttons/CommitButtonView.tsx +4 -0
  168. package/src/components/error/SimpleError.tsx +2 -2
  169. package/src/components/form/BaseCheckbox.tsx +50 -0
  170. package/src/components/form/Checkbox.tsx +17 -40
  171. package/src/components/form/CountrySelect.tsx +178 -130
  172. package/src/components/form/Field.styles.ts +113 -24
  173. package/src/components/form/FormField.tsx +4 -1
  174. package/src/components/form/Select.tsx +65 -34
  175. package/src/components/form/Upload/BaseUpload.tsx +367 -0
  176. package/src/components/form/Upload/Upload.tsx +8 -360
  177. package/src/components/form/Upload/UploadedFile.tsx +1 -1
  178. package/src/components/form/Upload/WithUploadToIpfs.tsx +8 -11
  179. package/src/components/form/index.ts +6 -4
  180. package/src/components/form/types.ts +31 -3
  181. package/src/components/ui/IpfsImage.tsx +14 -7
  182. package/src/components/ui/Video.tsx +8 -12
  183. package/src/hooks/ipfs/useIpfsStorage.ts +2 -0
  184. package/src/hooks/useIpfsMetadataStorage.tsx +6 -4
  185. package/src/hooks/useIpfsStorage.ts +2 -0
  186. package/src/index.tsx +2 -0
  187. package/src/lib/bytes/bytesToSize.ts +1 -1
  188. package/src/lib/const/chainInfo.ts +10 -1
  189. package/src/stories/buttons/Upload.stories.tsx +8 -0
  190. package/src/stories/form/BaseCheckbox.stories.tsx +113 -0
  191. package/src/stories/selects/CountrySelect.stories.tsx +49 -11
  192. package/src/stories/selects/Select.stories.tsx +117 -0
@@ -1,6 +1,7 @@
1
1
  import { useIpfsMetadataStorage } from "./";
2
2
  import { useEnvContext } from "../components/environment/EnvironmentContext";
3
3
  import { useIpfsContext } from "../components/ipfs/IpfsContext";
4
+ import { validateMetadata } from "@bosonprotocol/core-sdk";
4
5
 
5
6
  export function useIpfsStorage() {
6
7
  const { envName, configId } = useEnvContext();
@@ -9,6 +10,7 @@ export function useIpfsStorage() {
9
10
  const storage = useIpfsMetadataStorage(
10
11
  envName,
11
12
  configId,
13
+ validateMetadata,
12
14
  ipfsMetadataStorageUrl,
13
15
  ipfsMetadataStorageHeaders
14
16
  );
package/src/index.tsx CHANGED
@@ -33,6 +33,7 @@ export * from "./components/currencyDisplay/CurrencyDisplay";
33
33
  export * from "./components/exchangeCard/ExchangeCard";
34
34
  export * from "./components/image/Image";
35
35
  export * from "./components/ui/IpfsImage";
36
+ export { Video, VideoProps } from "./components/ui/Video";
36
37
  export * from "./components/ui/loading/Loading";
37
38
  export * from "./components/productCard/ProductCard";
38
39
  export * from "./components/productCard/const";
@@ -71,6 +72,7 @@ export * from "./components/ui/MuteButton";
71
72
  export * from "./components/ui/CardCTA";
72
73
  export * from "./components/form";
73
74
  export * from "./lib/magicLink/logout";
75
+ export * from "./lib/bytes/bytesToSize";
74
76
  export * from "./lib/magicLink/provider";
75
77
  export * from "./lib/const/networks";
76
78
  export * from "./lib/errors/transactions";
@@ -1,4 +1,4 @@
1
- export default function bytesToSize(bytes: number) {
1
+ export function bytesToSize(bytes: number) {
2
2
  const sizes = ["Bytes", "KB", "MB", "GB", "TB"];
3
3
  const i = Math.floor(Math.log(bytes) / Math.log(1024));
4
4
  return `${Math.round(bytes / Math.pow(1024, i))} ${sizes[i]}`;
@@ -5,7 +5,7 @@ import polygonMaticLogo from "../../assets/svg/polygon-matic-logo.svg";
5
5
  import polygonSquareLogoUrl from "../../assets/svg/polygon_square_logo.svg";
6
6
  import ms from "ms";
7
7
 
8
- import { SupportedL1ChainId, SupportedL2ChainId } from "./chains";
8
+ import { LocalChainId, SupportedL1ChainId, SupportedL2ChainId } from "./chains";
9
9
 
10
10
  export const AVERAGE_L1_BLOCK_TIME = ms(`12s`);
11
11
 
@@ -113,6 +113,15 @@ const CHAIN_INFO: ChainInfoMap = {
113
113
  symbol: "aMATIC",
114
114
  decimals: 18
115
115
  }
116
+ },
117
+ [LocalChainId]: {
118
+ networkType: NetworkType.L1,
119
+ docs: "https://docs.uniswap.org/",
120
+ explorer: "https://etherscan.io/",
121
+ infoLink: "https://info.uniswap.org/#/",
122
+ label: "Local",
123
+ logoUrl: ethereumLogoUrl,
124
+ nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 }
116
125
  }
117
126
  } as const;
118
127
 
@@ -80,3 +80,11 @@ export const Base = {
80
80
  ...BASE_ARGS
81
81
  }
82
82
  };
83
+
84
+ export const VideoOnly = {
85
+ args: {
86
+ ...BASE_ARGS,
87
+ accept: "video/mp4",
88
+ withUpload: true
89
+ }
90
+ };
@@ -0,0 +1,113 @@
1
+ import React from "react";
2
+ import { BaseCheckbox, BaseCheckboxProps } from "../../components/form";
3
+ import { Formik } from "formik";
4
+ import type { Meta } from "@storybook/react";
5
+ import { theme } from "../../theme";
6
+ import { bosonCheckboxTheme } from "../../components/form/Checkbox";
7
+ const colors = theme.colors.light;
8
+
9
+ const inputName = "test";
10
+ // More on default export: https://storybook.js.org/docs/react/writing-stories/introduction#default-export
11
+ export default {
12
+ title: "Visual Components/Inputs/BaseCheckbox",
13
+ component: BaseCheckbox,
14
+ parameters: {
15
+ // Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout
16
+ layout: "centered"
17
+ },
18
+ // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
19
+ tags: ["autodocs"],
20
+ // More on argTypes: https://storybook.js.org/docs/api/argtypes
21
+ argTypes: {
22
+ disabled: { control: "boolean" },
23
+ text: { control: "text" }
24
+ },
25
+ // 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
26
+ // args: { onClick: fn() },
27
+ decorators: [
28
+ (Story, { name }) => {
29
+ return (
30
+ <Formik<{ [inputName]: unknown }>
31
+ onSubmit={() => {
32
+ //
33
+ }}
34
+ initialErrors={
35
+ name.toLowerCase().includes("error")
36
+ ? { [inputName]: "Checkbox error!" }
37
+ : {}
38
+ }
39
+ initialValues={{ [inputName]: "" }}
40
+ initialTouched={{ [inputName]: true }}
41
+ >
42
+ <Story />
43
+ </Formik>
44
+ );
45
+ }
46
+ ] satisfies Meta<typeof BaseCheckbox>["decorators"]
47
+ } satisfies Meta<typeof BaseCheckbox>;
48
+
49
+ const BASE_ARGS = {
50
+ name: inputName,
51
+ text: "text next to checkbox via 'text' prop",
52
+ theme: bosonCheckboxTheme
53
+ };
54
+
55
+ export const Simple = {
56
+ args: {
57
+ ...BASE_ARGS
58
+ }
59
+ };
60
+
61
+ export const CustomTheme = {
62
+ name: "With custom theme",
63
+ args: {
64
+ ...BASE_ARGS,
65
+ theme: {
66
+ backgroundColor: colors.blue,
67
+ borderColor: colors.green,
68
+ color: colors.red,
69
+ borderRadius: "4px",
70
+ hover: {
71
+ borderColor: colors.red,
72
+ backgroundColor: colors.primary,
73
+ color: colors.darkRed
74
+ },
75
+ checked: {
76
+ borderColor: "#ff00d4",
77
+ color: "#ff00d4",
78
+ backgroundColor: "#ff00d444"
79
+ },
80
+ error: {
81
+ color: colors.orange,
82
+ borderColor: colors.bosonSkyBlue,
83
+ backgroundColor: colors.cyan
84
+ }
85
+ } satisfies BaseCheckboxProps["theme"]
86
+ }
87
+ };
88
+ export const InputWithError = {
89
+ name: "With error",
90
+ args: {
91
+ ...BASE_ARGS
92
+ }
93
+ };
94
+
95
+ export const CustomThemeWithError = {
96
+ name: "With custom theme and error",
97
+ args: {
98
+ ...BASE_ARGS,
99
+ theme: {
100
+ backgroundColor: colors.blue,
101
+ borderColor: colors.green,
102
+ hover: {
103
+ borderColor: colors.red,
104
+ backgroundColor: colors.grey
105
+ },
106
+ error: {
107
+ color: colors.orange,
108
+ borderColor: colors.bosonSkyBlue,
109
+ backgroundColor: colors.cyan
110
+ }
111
+ } satisfies BaseCheckboxProps["theme"]
112
+ }
113
+ };
@@ -74,7 +74,14 @@ export default {
74
74
  initialValues={{ [inputName]: "" }}
75
75
  initialTouched={{ [inputName]: true }}
76
76
  >
77
- <Story args={{ ...args, name: inputName }} />
77
+ {({ values }) => {
78
+ return (
79
+ <>
80
+ <Story args={{ ...args, name: inputName }} />
81
+ <div>selected value: {JSON.stringify(values)}</div>
82
+ </>
83
+ );
84
+ }}
78
85
  </Formik>
79
86
  );
80
87
  }
@@ -95,16 +102,47 @@ export const CustomTheme = {
95
102
  args: {
96
103
  ...BASE_ARGS,
97
104
  theme: {
98
- controlHeight: "45px",
99
- borderRadius: "30px",
100
- controlBackground: colors.lightGrey,
101
- controlFocusBorderColor: colors.blue,
102
- controlHoverBorderColor: colors.red,
103
- controlUnfocusedBorderColor: colors.border,
104
- selectedOptionBackground: colors.lightGrey,
105
- selectedOptionColor: colors.orange,
106
- unselectedOptionBackground: colors.white,
107
- unselectedOptionColor: colors.black
105
+ control: {
106
+ color: "yellow",
107
+ height: undefined,
108
+ background: colors.arsenic,
109
+ borderRadius: "16px",
110
+ padding: "3px",
111
+ boxShadow: "1px 2px 3px 4px blue",
112
+ borderWidth: undefined,
113
+ border: "1px solid green",
114
+ focus: {
115
+ border: "1px solid red"
116
+ },
117
+ hover: {
118
+ borderColor: "purple",
119
+ borderWidth: "1px"
120
+ },
121
+ error: {
122
+ border: "1px solid orange"
123
+ }
124
+ },
125
+ option: {
126
+ opacity: "1",
127
+ background: "pink",
128
+ color: "brown",
129
+ selected: {
130
+ background: "yellow",
131
+ color: "cyan"
132
+ },
133
+ disabled: {
134
+ opacity: "0.8"
135
+ }
136
+ },
137
+ placeholder: {
138
+ color: "red"
139
+ },
140
+ input: {
141
+ color: "cyan"
142
+ },
143
+ singleValue: {
144
+ color: "orange"
145
+ }
108
146
  }
109
147
  } satisfies CountrySelectProps
110
148
  };
@@ -0,0 +1,117 @@
1
+ import { fn } from "@storybook/test";
2
+ import { Select, SelectProps, theme } from "../../index";
3
+ import React from "react";
4
+ import { Meta } from "@storybook/react";
5
+ import { Formik } from "formik";
6
+
7
+ const inputWithErrors = "With error";
8
+ const inputName = "test";
9
+
10
+ const colors = theme.colors.light;
11
+ // More on default export: https://storybook.js.org/docs/react/writing-stories/introduction#default-export
12
+ export default {
13
+ title: "Visual Components/Selects/Select",
14
+ component: Select,
15
+ parameters: {
16
+ // Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout
17
+ layout: "centered"
18
+ },
19
+ // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
20
+ tags: ["autodocs"],
21
+ args: { onChange: fn() },
22
+ argTypes: {
23
+ name: {
24
+ table: {
25
+ disable: true // remove name input in controls
26
+ }
27
+ },
28
+ theme: {
29
+ table: {
30
+ disable: true // remove name input in controls
31
+ }
32
+ },
33
+ disabled: { control: "boolean" },
34
+ placeholder: { control: "text" }
35
+ },
36
+ decorators: [
37
+ (Story, { args, name }) => {
38
+ return (
39
+ <Formik<{ [inputName]: unknown }>
40
+ onSubmit={() => {
41
+ //
42
+ }}
43
+ initialErrors={
44
+ name === inputWithErrors
45
+ ? { [inputName]: "There has been an error!" }
46
+ : {}
47
+ }
48
+ initialValues={{ [inputName]: "" }}
49
+ initialTouched={{ [inputName]: true }}
50
+ >
51
+ <Story args={{ ...args, name: inputName }} />
52
+ </Formik>
53
+ );
54
+ }
55
+ ]
56
+ } satisfies Meta<typeof Select>;
57
+
58
+ const BASE_ARGS = {
59
+ name: inputName,
60
+ options: [
61
+ { label: "first option", value: "1" },
62
+ { label: "second option", value: "2" },
63
+ { label: "third option", value: "3" }
64
+ ]
65
+ } as SelectProps;
66
+
67
+ // More on args: https://storybook.js.org/docs/react/writing-stories/args
68
+ export const Base = {
69
+ args: { ...BASE_ARGS } satisfies SelectProps
70
+ };
71
+
72
+ export const CustomTheme = {
73
+ args: {
74
+ ...BASE_ARGS,
75
+ theme: {
76
+ control: {
77
+ background: colors.arsenic,
78
+ borderRadius: "16px",
79
+ padding: "3px",
80
+ boxShadow: "1px 2px 3px 4px blue",
81
+ borderWidth: undefined,
82
+ border: "1px solid green",
83
+ focus: {
84
+ border: "1px solid red"
85
+ },
86
+ hover: {
87
+ borderColor: undefined,
88
+ borderWidth: undefined,
89
+ border: "1px solid purple"
90
+ },
91
+ error: {
92
+ border: "1px solid orange"
93
+ }
94
+ },
95
+ option: {
96
+ opacity: "1",
97
+ background: "pink",
98
+ color: "brown",
99
+ selected: {
100
+ background: "yellow",
101
+ color: "cyan"
102
+ },
103
+ disabled: {
104
+ opacity: "0.8"
105
+ }
106
+ }
107
+ }
108
+ } satisfies SelectProps
109
+ };
110
+
111
+ export const WithError = {
112
+ name: inputWithErrors,
113
+ args: {
114
+ ...BASE_ARGS,
115
+ placeholder: "this is a placeholder"
116
+ } satisfies SelectProps
117
+ };