@bosonprotocol/react-kit 0.33.0-alpha.9 → 0.33.1-alpha.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 (196) 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/datepicker/DatePicker.style.d.ts +2 -2
  9. package/dist/cjs/components/error/SimpleError.d.ts +2 -2
  10. package/dist/cjs/components/error/SimpleError.d.ts.map +1 -1
  11. package/dist/cjs/components/error/SimpleError.js.map +1 -1
  12. package/dist/cjs/components/form/BaseCheckbox.d.ts +5 -0
  13. package/dist/cjs/components/form/BaseCheckbox.d.ts.map +1 -0
  14. package/dist/cjs/components/form/BaseCheckbox.js +69 -0
  15. package/dist/cjs/components/form/BaseCheckbox.js.map +1 -0
  16. package/dist/cjs/components/form/Checkbox.d.ts +13 -2
  17. package/dist/cjs/components/form/Checkbox.d.ts.map +1 -1
  18. package/dist/cjs/components/form/Checkbox.js +18 -61
  19. package/dist/cjs/components/form/Checkbox.js.map +1 -1
  20. package/dist/cjs/components/form/CountrySelect.d.ts +26 -11
  21. package/dist/cjs/components/form/CountrySelect.d.ts.map +1 -1
  22. package/dist/cjs/components/form/CountrySelect.js +64 -31
  23. package/dist/cjs/components/form/CountrySelect.js.map +1 -1
  24. package/dist/cjs/components/form/Field.styles.d.ts +36 -2
  25. package/dist/cjs/components/form/Field.styles.d.ts.map +1 -1
  26. package/dist/cjs/components/form/Field.styles.js +83 -24
  27. package/dist/cjs/components/form/Field.styles.js.map +1 -1
  28. package/dist/cjs/components/form/FormField.d.ts +2 -1
  29. package/dist/cjs/components/form/FormField.d.ts.map +1 -1
  30. package/dist/cjs/components/form/FormField.js +14 -2
  31. package/dist/cjs/components/form/FormField.js.map +1 -1
  32. package/dist/cjs/components/form/Select.d.ts +2 -1
  33. package/dist/cjs/components/form/Select.d.ts.map +1 -1
  34. package/dist/cjs/components/form/Select.js +32 -20
  35. package/dist/cjs/components/form/Select.js.map +1 -1
  36. package/dist/cjs/components/form/Upload/BaseUpload.d.ts +71 -0
  37. package/dist/cjs/components/form/Upload/BaseUpload.d.ts.map +1 -0
  38. package/dist/cjs/components/form/Upload/BaseUpload.js +264 -0
  39. package/dist/cjs/components/form/Upload/BaseUpload.js.map +1 -0
  40. package/dist/cjs/components/form/Upload/Upload.d.ts +3 -41
  41. package/dist/cjs/components/form/Upload/Upload.d.ts.map +1 -1
  42. package/dist/cjs/components/form/Upload/Upload.js +7 -258
  43. package/dist/cjs/components/form/Upload/Upload.js.map +1 -1
  44. package/dist/cjs/components/form/Upload/UploadedFile.js +2 -2
  45. package/dist/cjs/components/form/Upload/UploadedFile.js.map +1 -1
  46. package/dist/cjs/components/form/Upload/WithUploadToIpfs.d.ts.map +1 -1
  47. package/dist/cjs/components/form/Upload/WithUploadToIpfs.js +9 -12
  48. package/dist/cjs/components/form/Upload/WithUploadToIpfs.js.map +1 -1
  49. package/dist/cjs/components/form/index.d.ts +6 -4
  50. package/dist/cjs/components/form/index.d.ts.map +1 -1
  51. package/dist/cjs/components/form/index.js +7 -3
  52. package/dist/cjs/components/form/index.js.map +1 -1
  53. package/dist/cjs/components/form/types.d.ts +31 -3
  54. package/dist/cjs/components/form/types.d.ts.map +1 -1
  55. package/dist/cjs/components/ui/IpfsImage.d.ts +4 -3
  56. package/dist/cjs/components/ui/IpfsImage.d.ts.map +1 -1
  57. package/dist/cjs/components/ui/IpfsImage.js +2 -2
  58. package/dist/cjs/components/ui/IpfsImage.js.map +1 -1
  59. package/dist/cjs/components/ui/Video.d.ts +3 -3
  60. package/dist/cjs/components/ui/Video.d.ts.map +1 -1
  61. package/dist/cjs/components/ui/Video.js +7 -3
  62. package/dist/cjs/components/ui/Video.js.map +1 -1
  63. package/dist/cjs/hooks/ipfs/useIpfsStorage.d.ts.map +1 -1
  64. package/dist/cjs/hooks/ipfs/useIpfsStorage.js +2 -1
  65. package/dist/cjs/hooks/ipfs/useIpfsStorage.js.map +1 -1
  66. package/dist/cjs/hooks/transactions/usePendingTransactionsWithContext.d.ts +1 -1
  67. package/dist/cjs/hooks/useIpfsMetadataStorage.d.ts +2 -2
  68. package/dist/cjs/hooks/useIpfsMetadataStorage.d.ts.map +1 -1
  69. package/dist/cjs/hooks/useIpfsMetadataStorage.js +6 -6
  70. package/dist/cjs/hooks/useIpfsMetadataStorage.js.map +1 -1
  71. package/dist/cjs/hooks/useIpfsStorage.d.ts.map +1 -1
  72. package/dist/cjs/hooks/useIpfsStorage.js +2 -1
  73. package/dist/cjs/hooks/useIpfsStorage.js.map +1 -1
  74. package/dist/cjs/index.d.ts +63 -60
  75. package/dist/cjs/index.d.ts.map +1 -1
  76. package/dist/cjs/index.js +70 -66
  77. package/dist/cjs/index.js.map +1 -1
  78. package/dist/cjs/lib/bytes/bytesToSize.d.ts +1 -1
  79. package/dist/cjs/lib/bytes/bytesToSize.d.ts.map +1 -1
  80. package/dist/cjs/lib/bytes/bytesToSize.js +2 -1
  81. package/dist/cjs/lib/bytes/bytesToSize.js.map +1 -1
  82. package/dist/cjs/lib/const/chainInfo.d.ts.map +1 -1
  83. package/dist/cjs/lib/const/chainInfo.js +10 -0
  84. package/dist/cjs/lib/const/chainInfo.js.map +1 -1
  85. package/dist/esm/components/buttons/BaseButton.d.ts +1 -0
  86. package/dist/esm/components/buttons/BaseButton.d.ts.map +1 -1
  87. package/dist/esm/components/buttons/BaseButton.js +1 -0
  88. package/dist/esm/components/buttons/BaseButton.js.map +1 -1
  89. package/dist/esm/components/buttons/CommitButtonView.d.ts.map +1 -1
  90. package/dist/esm/components/buttons/CommitButtonView.js +4 -0
  91. package/dist/esm/components/buttons/CommitButtonView.js.map +1 -1
  92. package/dist/esm/components/datepicker/DatePicker.style.d.ts +2 -2
  93. package/dist/esm/components/error/SimpleError.d.ts +2 -2
  94. package/dist/esm/components/error/SimpleError.d.ts.map +1 -1
  95. package/dist/esm/components/error/SimpleError.js.map +1 -1
  96. package/dist/esm/components/form/BaseCheckbox.d.ts +5 -0
  97. package/dist/esm/components/form/BaseCheckbox.d.ts.map +1 -0
  98. package/dist/esm/components/form/BaseCheckbox.js +27 -0
  99. package/dist/esm/components/form/BaseCheckbox.js.map +1 -0
  100. package/dist/esm/components/form/Checkbox.d.ts +13 -2
  101. package/dist/esm/components/form/Checkbox.d.ts.map +1 -1
  102. package/dist/esm/components/form/Checkbox.js +16 -25
  103. package/dist/esm/components/form/Checkbox.js.map +1 -1
  104. package/dist/esm/components/form/CountrySelect.d.ts +26 -11
  105. package/dist/esm/components/form/CountrySelect.d.ts.map +1 -1
  106. package/dist/esm/components/form/CountrySelect.js +97 -67
  107. package/dist/esm/components/form/CountrySelect.js.map +1 -1
  108. package/dist/esm/components/form/Field.styles.d.ts +36 -2
  109. package/dist/esm/components/form/Field.styles.d.ts.map +1 -1
  110. package/dist/esm/components/form/Field.styles.js +58 -20
  111. package/dist/esm/components/form/Field.styles.js.map +1 -1
  112. package/dist/esm/components/form/FormField.d.ts +2 -1
  113. package/dist/esm/components/form/FormField.d.ts.map +1 -1
  114. package/dist/esm/components/form/FormField.js +2 -2
  115. package/dist/esm/components/form/FormField.js.map +1 -1
  116. package/dist/esm/components/form/Select.d.ts +2 -1
  117. package/dist/esm/components/form/Select.d.ts.map +1 -1
  118. package/dist/esm/components/form/Select.js +52 -30
  119. package/dist/esm/components/form/Select.js.map +1 -1
  120. package/dist/esm/components/form/Upload/BaseUpload.d.ts +71 -0
  121. package/dist/esm/components/form/Upload/BaseUpload.d.ts.map +1 -0
  122. package/dist/esm/components/form/Upload/BaseUpload.js +226 -0
  123. package/dist/esm/components/form/Upload/BaseUpload.js.map +1 -0
  124. package/dist/esm/components/form/Upload/Upload.d.ts +3 -41
  125. package/dist/esm/components/form/Upload/Upload.d.ts.map +1 -1
  126. package/dist/esm/components/form/Upload/Upload.js +5 -225
  127. package/dist/esm/components/form/Upload/Upload.js.map +1 -1
  128. package/dist/esm/components/form/Upload/UploadedFile.js +1 -1
  129. package/dist/esm/components/form/Upload/UploadedFile.js.map +1 -1
  130. package/dist/esm/components/form/Upload/WithUploadToIpfs.d.ts.map +1 -1
  131. package/dist/esm/components/form/Upload/WithUploadToIpfs.js +8 -11
  132. package/dist/esm/components/form/Upload/WithUploadToIpfs.js.map +1 -1
  133. package/dist/esm/components/form/index.d.ts +6 -4
  134. package/dist/esm/components/form/index.d.ts.map +1 -1
  135. package/dist/esm/components/form/index.js +4 -2
  136. package/dist/esm/components/form/index.js.map +1 -1
  137. package/dist/esm/components/form/types.d.ts +31 -3
  138. package/dist/esm/components/form/types.d.ts.map +1 -1
  139. package/dist/esm/components/ui/IpfsImage.d.ts +4 -3
  140. package/dist/esm/components/ui/IpfsImage.d.ts.map +1 -1
  141. package/dist/esm/components/ui/IpfsImage.js +2 -2
  142. package/dist/esm/components/ui/IpfsImage.js.map +1 -1
  143. package/dist/esm/components/ui/Video.d.ts +3 -3
  144. package/dist/esm/components/ui/Video.d.ts.map +1 -1
  145. package/dist/esm/components/ui/Video.js +5 -3
  146. package/dist/esm/components/ui/Video.js.map +1 -1
  147. package/dist/esm/hooks/ipfs/useIpfsStorage.d.ts.map +1 -1
  148. package/dist/esm/hooks/ipfs/useIpfsStorage.js +2 -1
  149. package/dist/esm/hooks/ipfs/useIpfsStorage.js.map +1 -1
  150. package/dist/esm/hooks/transactions/usePendingTransactionsWithContext.d.ts +1 -1
  151. package/dist/esm/hooks/useIpfsMetadataStorage.d.ts +2 -2
  152. package/dist/esm/hooks/useIpfsMetadataStorage.d.ts.map +1 -1
  153. package/dist/esm/hooks/useIpfsMetadataStorage.js +6 -6
  154. package/dist/esm/hooks/useIpfsMetadataStorage.js.map +1 -1
  155. package/dist/esm/hooks/useIpfsStorage.d.ts.map +1 -1
  156. package/dist/esm/hooks/useIpfsStorage.js +2 -1
  157. package/dist/esm/hooks/useIpfsStorage.js.map +1 -1
  158. package/dist/esm/index.d.ts +63 -60
  159. package/dist/esm/index.d.ts.map +1 -1
  160. package/dist/esm/index.js +63 -60
  161. package/dist/esm/index.js.map +1 -1
  162. package/dist/esm/lib/bytes/bytesToSize.d.ts +1 -1
  163. package/dist/esm/lib/bytes/bytesToSize.d.ts.map +1 -1
  164. package/dist/esm/lib/bytes/bytesToSize.js +1 -1
  165. package/dist/esm/lib/bytes/bytesToSize.js.map +1 -1
  166. package/dist/esm/lib/const/chainInfo.d.ts.map +1 -1
  167. package/dist/esm/lib/const/chainInfo.js +10 -0
  168. package/dist/esm/lib/const/chainInfo.js.map +1 -1
  169. package/package.json +5 -5
  170. package/src/components/buttons/BaseButton.tsx +4 -0
  171. package/src/components/buttons/CommitButtonView.tsx +4 -0
  172. package/src/components/error/SimpleError.tsx +2 -2
  173. package/src/components/form/BaseCheckbox.tsx +50 -0
  174. package/src/components/form/Checkbox.tsx +17 -40
  175. package/src/components/form/CountrySelect.tsx +178 -130
  176. package/src/components/form/Field.styles.ts +113 -24
  177. package/src/components/form/FormField.tsx +4 -1
  178. package/src/components/form/Select.tsx +65 -34
  179. package/src/components/form/Upload/BaseUpload.tsx +367 -0
  180. package/src/components/form/Upload/Upload.tsx +8 -360
  181. package/src/components/form/Upload/UploadedFile.tsx +1 -1
  182. package/src/components/form/Upload/WithUploadToIpfs.tsx +8 -11
  183. package/src/components/form/index.ts +6 -4
  184. package/src/components/form/types.ts +31 -3
  185. package/src/components/ui/IpfsImage.tsx +14 -7
  186. package/src/components/ui/Video.tsx +7 -5
  187. package/src/hooks/ipfs/useIpfsStorage.ts +2 -0
  188. package/src/hooks/useIpfsMetadataStorage.tsx +6 -4
  189. package/src/hooks/useIpfsStorage.ts +2 -0
  190. package/src/index.tsx +67 -64
  191. package/src/lib/bytes/bytesToSize.ts +1 -1
  192. package/src/lib/const/chainInfo.ts +10 -1
  193. package/src/stories/buttons/Upload.stories.tsx +8 -0
  194. package/src/stories/form/BaseCheckbox.stories.tsx +113 -0
  195. package/src/stories/selects/CountrySelect.stories.tsx +49 -11
  196. package/src/stories/selects/Select.stories.tsx +117 -0
@@ -115,7 +115,21 @@ export const FieldInput = styled.input<{
115
115
  `};
116
116
  `;
117
117
 
118
- export const FileUploadWrapper = styled.div<{ error: any }>`
118
+ export type FileUploadWrapperTheme = Partial<{
119
+ borderColor: CSSProperties["borderColor"];
120
+ borderRadius: CSSProperties["borderRadius"];
121
+ background: CSSProperties["background"];
122
+ focus: Partial<{
123
+ borderColor: CSSProperties["borderColor"];
124
+ }>;
125
+ error: Partial<{
126
+ borderColor: CSSProperties["borderColor"];
127
+ }>;
128
+ }>;
129
+ export const FileUploadWrapper = styled.div<{
130
+ $error: unknown;
131
+ theme: FileUploadWrapperTheme | undefined;
132
+ }>`
119
133
  position: relative;
120
134
  overflow: hidden;
121
135
  display: flex;
@@ -144,28 +158,33 @@ export const FileUploadWrapper = styled.div<{ error: any }>`
144
158
  }
145
159
  }
146
160
 
147
- background: ${colors.lightGrey};
148
- border-radius: 0;
161
+ background: ${({ theme }) => theme?.background || colors.lightGrey};
162
+ ${({ theme }) =>
163
+ theme.borderRadius !== undefined &&
164
+ css`
165
+ border-radius: ${theme.borderRadius};
166
+ `};
149
167
  outline: none;
150
168
 
151
- ${({ error }) =>
152
- !checkIfValueIsEmpty(error)
169
+ ${({ $error, theme }) =>
170
+ !checkIfValueIsEmpty($error)
153
171
  ? css`
154
- border: 1px solid ${colors.orange};
172
+ border: 1px solid ${theme?.error?.borderColor || colors.orange};
155
173
  `
156
174
  : css`
157
- border: 1px solid ${colors.border};
175
+ border: 1px solid ${theme?.borderColor || colors.border};
158
176
  `}
159
177
 
160
178
  ${transition};
161
179
 
162
180
  &:focus,
163
181
  &:hover {
164
- border: 1px solid var(--secondary);
182
+ border: 1px solid
183
+ ${({ theme }) => theme?.hover?.borderColor || colors.lightGrey};
165
184
  }
166
185
 
167
186
  /* prettier-ignore */
168
- [data-disabled=true] {
187
+ :disabled, [data-disabled=true] {
169
188
  cursor: not-allowed;
170
189
  opacity: 0.5;
171
190
  }
@@ -319,7 +338,31 @@ export const FormFieldWrapper = styled(Grid)`
319
338
  }
320
339
  `;
321
340
 
322
- export const CheckboxWrapper = styled.label<{ error: any }>`
341
+ export type CheckboxTheme = Partial<{
342
+ backgroundColor: CSSProperties["backgroundColor"];
343
+ borderColor: CSSProperties["borderColor"];
344
+ borderRadius: CSSProperties["borderRadius"];
345
+ color: CSSProperties["color"];
346
+ hover: Partial<{
347
+ borderColor: CSSProperties["borderColor"];
348
+ backgroundColor: CSSProperties["backgroundColor"];
349
+ color: CSSProperties["color"];
350
+ }>;
351
+ error: Partial<{
352
+ borderColor: CSSProperties["borderColor"];
353
+ backgroundColor: CSSProperties["backgroundColor"];
354
+ color: CSSProperties["color"];
355
+ }>;
356
+ checked: Partial<{
357
+ borderColor: CSSProperties["borderColor"];
358
+ backgroundColor: CSSProperties["backgroundColor"];
359
+ color: CSSProperties["color"];
360
+ }>;
361
+ }>;
362
+ export const CheckboxWrapper = styled.label<{
363
+ $error: unknown;
364
+ theme: CheckboxTheme;
365
+ }>`
323
366
  display: flex;
324
367
  align-items: center;
325
368
  justify-content: flex-start;
@@ -336,7 +379,18 @@ export const CheckboxWrapper = styled.label<{ error: any }>`
336
379
  + div {
337
380
  cursor: pointer;
338
381
  &:hover {
339
- border: 1px solid ${colors.secondary};
382
+ border: 1px solid
383
+ ${({ theme }) => theme?.hover?.borderColor || colors.border};
384
+ ${({ theme }) =>
385
+ theme?.hover?.backgroundColor &&
386
+ css`
387
+ background-color: ${theme?.hover?.backgroundColor};
388
+ `};
389
+ ${({ theme }) =>
390
+ theme?.hover?.color &&
391
+ css`
392
+ color: ${theme?.hover?.color};
393
+ `};
340
394
  svg {
341
395
  opacity: 0.25;
342
396
  }
@@ -356,8 +410,19 @@ export const CheckboxWrapper = styled.label<{ error: any }>`
356
410
  width: 1.5rem;
357
411
  height: 1.5rem;
358
412
 
359
- background: ${colors.lightGrey};
360
-
413
+ background-color: ${({ theme }) =>
414
+ theme?.backgroundColor || colors.lightGrey};
415
+ border: 1px solid ${({ theme }) => theme?.borderColor};
416
+ ${({ theme }) =>
417
+ theme?.color &&
418
+ css`
419
+ color: ${theme?.color};
420
+ `};
421
+ ${({ theme }) =>
422
+ theme?.borderRadius !== undefined &&
423
+ css`
424
+ border-radius: ${theme?.borderRadius};
425
+ `};
361
426
  margin-right: 0.5rem;
362
427
  }
363
428
 
@@ -366,6 +431,23 @@ export const CheckboxWrapper = styled.label<{ error: any }>`
366
431
  + div svg {
367
432
  opacity: 1;
368
433
  }
434
+ + div {
435
+ ${({ theme }) =>
436
+ theme?.checked?.backgroundColor &&
437
+ css`
438
+ background-color: ${theme?.checked?.backgroundColor};
439
+ `};
440
+ ${({ theme }) =>
441
+ theme?.checked?.borderColor &&
442
+ css`
443
+ border: 1px solid ${theme?.checked?.borderColor};
444
+ `};
445
+ ${({ theme }) =>
446
+ theme?.checked?.color &&
447
+ css`
448
+ color: ${theme?.checked?.color};
449
+ `};
450
+ }
369
451
  }
370
452
  &:not(:checked) {
371
453
  + div svg {
@@ -374,17 +456,24 @@ export const CheckboxWrapper = styled.label<{ error: any }>`
374
456
  }
375
457
  }
376
458
 
377
- ${({ error }) =>
378
- !checkIfValueIsEmpty(error)
379
- ? css`
380
- > div {
381
- border: 1px solid ${colors.orange};
382
- }
383
- `
384
- : css`
385
- > div {
386
- border: 1px solid ${colors.border};
387
- }
459
+ ${({ $error, theme }) =>
460
+ !checkIfValueIsEmpty($error) &&
461
+ css`
462
+ > div {
463
+ border: 1px solid ${theme?.error?.borderColor || colors.orange}};
464
+ ${
465
+ theme?.error?.backgroundColor &&
466
+ css`
467
+ background-color: ${theme?.error?.backgroundColor};
468
+ `
469
+ };
470
+ ${
471
+ theme?.error?.color &&
472
+ css`
473
+ color: ${theme?.error?.color};
474
+ `
475
+ };
476
+ }
388
477
  `}
389
478
  `;
390
479
 
@@ -10,6 +10,7 @@ import { Grid } from "../ui/Grid";
10
10
  import { Typography } from "../ui/Typography";
11
11
  import { CopyButton, FormFieldWrapper } from "./Field.styles";
12
12
  import type { FormFieldProps } from "./types";
13
+ export type { FormFieldProps } from "./types";
13
14
 
14
15
  const colors = theme.colors.light;
15
16
 
@@ -22,7 +23,8 @@ export function FormField({
22
23
  children,
23
24
  style = {},
24
25
  valueToCopy,
25
- copyIconColor = colors.secondary
26
+ copyIconColor = colors.secondary,
27
+ ...rest
26
28
  }: FormFieldProps) {
27
29
  return (
28
30
  <FormFieldWrapper
@@ -31,6 +33,7 @@ export function FormField({
31
33
  alignItems="flex-start"
32
34
  flexGrow="1"
33
35
  style={style}
36
+ {...rest}
34
37
  >
35
38
  <>
36
39
  <Grid justifyContent="flex-start" margin="0 0 0.375rem 0">
@@ -1,25 +1,25 @@
1
1
  /* eslint @typescript-eslint/no-explicit-any: "off" */
2
2
  import React from "react";
3
3
  import { useField } from "formik";
4
- import Select from "react-select";
4
+ import Select, { GroupBase, StylesConfig } from "react-select";
5
5
  import { checkIfValueIsEmpty } from "../../lib/object/checkIfValueIsEmpty";
6
6
  import { theme } from "../../theme";
7
7
  import { zIndex } from "../ui/zIndex";
8
8
 
9
9
  import Error from "./Error";
10
10
  import type { SelectDataProps, SelectProps } from "./types";
11
+ export type { SelectProps } from "./types";
11
12
  const colors = theme.colors.light;
12
13
 
13
- const customStyles = (error: any) => ({
14
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
15
- singleValue: (provided: any, state: any) => {
16
- return {
17
- ...provided,
18
- color: colors.darkGrey,
19
- fontSize: "13.33px"
20
- };
21
- },
22
- control: (provided: any, state: any) => {
14
+ const customStyles = (
15
+ error: unknown,
16
+ customTheme: SelectProps["theme"]
17
+ ): StylesConfig<
18
+ SelectDataProps<string>,
19
+ boolean,
20
+ GroupBase<SelectDataProps<string>>
21
+ > => ({
22
+ control: (provided, state: any) => {
23
23
  const before = state.selectProps.label
24
24
  ? {
25
25
  ":before": {
@@ -34,41 +34,71 @@ const customStyles = (error: any) => ({
34
34
  borderRadius: 0,
35
35
  padding: "0.4rem 0.25rem",
36
36
  boxShadow: "none",
37
- ":hover": {
38
- borderColor: colors.secondary,
39
- borderWidth: "1px"
40
- },
41
37
  background: colors.lightGrey,
38
+ ...customTheme?.control,
42
39
  border: state.isFocused
43
- ? `1px solid ${colors.secondary}`
40
+ ? customTheme?.control?.focus?.border ?? `1px solid ${colors.secondary}`
44
41
  : !checkIfValueIsEmpty(error)
45
- ? `1px solid ${colors.orange}`
46
- : `1px solid ${colors.border}`,
42
+ ? customTheme?.control?.error?.border ?? `1px solid ${colors.orange}`
43
+ : customTheme?.control?.border ?? `1px solid ${colors.border}`,
44
+ ":hover": {
45
+ borderColor: colors.secondary,
46
+ borderWidth: "1px",
47
+ ...customTheme?.control?.hover
48
+ },
47
49
  ...before
48
50
  };
49
51
  },
50
- container: (provided: any, state: any) => ({
52
+ container: (provided, state: any) => ({
51
53
  ...provided,
52
54
  zIndex: state.isFocused ? zIndex.Select + 1 : zIndex.Select,
53
55
  position: "relative",
54
56
  width: "100%"
55
57
  }),
56
- option: (provided: any, state: any) => ({
57
- ...provided,
58
- cursor: state.isDisabled ? "not-allowed" : "pointer",
59
- opacity: state.isDisabled ? "0.5" : "1",
60
- background:
61
- state.isOptionSelected || state.isSelected || state.isFocused
62
- ? colors.lightGrey
63
- : colors.white,
64
- color:
65
- state.isOptionSelected || state.isSelected
66
- ? colors.secondary
67
- : colors.black
68
- }),
58
+ option: (provided, state: any) => {
59
+ return {
60
+ ...provided,
61
+ cursor: state.isDisabled ? "not-allowed" : "pointer",
62
+ opacity: state.isDisabled
63
+ ? customTheme?.option?.disabled?.opacity ?? "0.5"
64
+ : customTheme?.option?.opacity ?? "1",
65
+ background:
66
+ state.isOptionSelected || state.isSelected || state.isFocused
67
+ ? customTheme?.option?.selected?.background ?? colors.lightGrey
68
+ : customTheme?.option?.background ?? colors.white,
69
+ color:
70
+ state.isOptionSelected || state.isSelected
71
+ ? customTheme?.option?.selected?.color ?? colors.secondary
72
+ : customTheme?.option?.color ?? colors.black,
73
+ ...(state.isDisabled && customTheme?.option?.disabled),
74
+ ...((state.isOptionSelected || state.isSelected) &&
75
+ customTheme?.option?.selected),
76
+ ...(state.isFocused && customTheme?.option?.focus),
77
+ ...(!checkIfValueIsEmpty(error) && customTheme?.option?.error)
78
+ };
79
+ },
69
80
  indicatorSeparator: () => ({
70
81
  display: "none"
71
- })
82
+ }),
83
+ placeholder: (provided) => ({
84
+ ...provided,
85
+ ...customTheme?.placeholder,
86
+ ...(!checkIfValueIsEmpty(error) && customTheme?.placeholder?.error)
87
+ }),
88
+ input: (provided) => ({
89
+ ...provided,
90
+ ...customTheme?.input,
91
+ ...(!checkIfValueIsEmpty(error) && customTheme?.input?.error)
92
+ }),
93
+ singleValue: (provided) => {
94
+ return {
95
+ ...provided,
96
+ color: colors.darkGrey,
97
+ fontSize: "13.33px",
98
+ ...customTheme?.singleValue,
99
+ ...(!checkIfValueIsEmpty(error) && customTheme?.singleValue?.error)
100
+ };
101
+ }
72
102
  });
73
103
 
74
104
  export default function SelectComponent({
@@ -80,6 +110,7 @@ export default function SelectComponent({
80
110
  disabled = false,
81
111
  errorMessage,
82
112
  onChange,
113
+ theme,
83
114
  ...props
84
115
  }: SelectProps) {
85
116
  const [field, meta, helpers] = useField(name);
@@ -109,7 +140,7 @@ export default function SelectComponent({
109
140
  return (
110
141
  <>
111
142
  <Select
112
- styles={customStyles(displayErrorMessage)}
143
+ styles={customStyles(displayErrorMessage, theme)}
113
144
  {...field}
114
145
  {...props}
115
146
  placeholder={placeholder}