@windstream/react-shared-components 0.1.71 → 0.1.72

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 (208) hide show
  1. package/README.md +635 -635
  2. package/dist/contentful/index.d.ts +106 -30
  3. package/dist/contentful/index.esm.js +4 -2
  4. package/dist/contentful/index.esm.js.map +1 -1
  5. package/dist/contentful/index.js +4 -2
  6. package/dist/contentful/index.js.map +1 -1
  7. package/dist/core.d.ts +5 -5
  8. package/dist/index.d.ts +4 -4
  9. package/dist/index.esm.js +7 -5
  10. package/dist/index.esm.js.map +1 -1
  11. package/dist/index.js +7 -5
  12. package/dist/index.js.map +1 -1
  13. package/dist/next/index.esm.js +3 -1
  14. package/dist/next/index.esm.js.map +1 -1
  15. package/dist/next/index.js +3 -1
  16. package/dist/next/index.js.map +1 -1
  17. package/dist/styles.css +1 -1
  18. package/dist/utils/index.d.ts +15 -3
  19. package/dist/utils/index.esm.js +1 -1
  20. package/dist/utils/index.esm.js.map +1 -1
  21. package/dist/utils/index.js +1 -1
  22. package/dist/utils/index.js.map +1 -1
  23. package/package.json +185 -185
  24. package/src/components/accordion/Accordion.stories.tsx +230 -230
  25. package/src/components/accordion/index.tsx +70 -70
  26. package/src/components/accordion/types.ts +12 -12
  27. package/src/components/alert-card/AlertCard.stories.tsx +171 -171
  28. package/src/components/alert-card/index.tsx +41 -41
  29. package/src/components/alert-card/types.ts +13 -13
  30. package/src/components/brand-button/BrandButton.stories.tsx +223 -223
  31. package/src/components/brand-button/helpers.ts +35 -35
  32. package/src/components/brand-button/index.tsx +120 -120
  33. package/src/components/brand-button/types.ts +38 -38
  34. package/src/components/button/Button.stories.tsx +108 -108
  35. package/src/components/button/index.tsx +27 -27
  36. package/src/components/button/types.ts +14 -14
  37. package/src/components/call-button/CallButton.stories.tsx +324 -324
  38. package/src/components/call-button/index.tsx +106 -106
  39. package/src/components/call-button/types.ts +16 -16
  40. package/src/components/checkbox/Checkbox.stories.tsx +247 -247
  41. package/src/components/checkbox/index.tsx +197 -197
  42. package/src/components/checkbox/types.ts +27 -27
  43. package/src/components/checklist/Checklist.stories.tsx +150 -150
  44. package/src/components/checklist/index.tsx +61 -61
  45. package/src/components/checklist/types.ts +17 -17
  46. package/src/components/collapse/Collapse.stories.tsx +255 -255
  47. package/src/components/collapse/index.tsx +46 -46
  48. package/src/components/collapse/types.ts +6 -6
  49. package/src/components/divider/Divider.stories.tsx +205 -205
  50. package/src/components/divider/index.tsx +22 -22
  51. package/src/components/divider/type.ts +3 -3
  52. package/src/components/image/Image.stories.tsx +113 -113
  53. package/src/components/image/index.tsx +25 -25
  54. package/src/components/image/types.ts +40 -40
  55. package/src/components/input/Input.stories.tsx +325 -325
  56. package/src/components/input/index.tsx +177 -177
  57. package/src/components/input/types.ts +37 -37
  58. package/src/components/link/Link.stories.tsx +163 -163
  59. package/src/components/link/index.tsx +116 -116
  60. package/src/components/link/types.ts +25 -25
  61. package/src/components/list/List.stories.tsx +272 -272
  62. package/src/components/list/index.tsx +88 -88
  63. package/src/components/list/list-item/index.tsx +38 -38
  64. package/src/components/list/list-item/types.ts +13 -13
  65. package/src/components/list/types.ts +29 -29
  66. package/src/components/material-icon/MaterialIcon.stories.tsx +322 -322
  67. package/src/components/material-icon/constants.ts +99 -99
  68. package/src/components/material-icon/index.tsx +47 -47
  69. package/src/components/material-icon/types.ts +31 -31
  70. package/src/components/modal/Modal.stories.tsx +171 -171
  71. package/src/components/modal/index.tsx +164 -164
  72. package/src/components/modal/types.ts +24 -24
  73. package/src/components/next-image/index.tsx +74 -72
  74. package/src/components/next-image/types.ts +1 -1
  75. package/src/components/pagination/index.tsx +91 -91
  76. package/src/components/pagination/types.ts +6 -6
  77. package/src/components/radio-button/RadioButton.stories.tsx +307 -307
  78. package/src/components/radio-button/index.tsx +75 -75
  79. package/src/components/radio-button/types.ts +21 -21
  80. package/src/components/see-more/SeeMore.stories.tsx +181 -181
  81. package/src/components/see-more/index.tsx +44 -44
  82. package/src/components/see-more/types.ts +4 -4
  83. package/src/components/select/Select.stories.tsx +411 -411
  84. package/src/components/select/index.tsx +155 -155
  85. package/src/components/select/types.ts +36 -36
  86. package/src/components/select-plan-button/SelectPlanButton.stories.tsx +184 -184
  87. package/src/components/select-plan-button/index.tsx +63 -63
  88. package/src/components/select-plan-button/types.ts +17 -17
  89. package/src/components/skeleton/Skeleton.stories.tsx +179 -179
  90. package/src/components/skeleton/index.tsx +61 -61
  91. package/src/components/skeleton/types.ts +4 -4
  92. package/src/components/spinner/Spinner.stories.tsx +335 -335
  93. package/src/components/spinner/index.tsx +44 -44
  94. package/src/components/spinner/types.ts +5 -5
  95. package/src/components/text/Text.stories.tsx +321 -321
  96. package/src/components/text/index.tsx +25 -25
  97. package/src/components/text/types.ts +45 -45
  98. package/src/components/tooltip/Tooltip.stories.tsx +219 -219
  99. package/src/components/tooltip/index.tsx +74 -74
  100. package/src/components/tooltip/types.ts +7 -7
  101. package/src/components/view-cart-button/ViewCartButton.stories.tsx +252 -252
  102. package/src/components/view-cart-button/index.tsx +42 -42
  103. package/src/components/view-cart-button/types.ts +5 -5
  104. package/src/contentful/blocks/accordion/Accordion.stories.mocks.tsx +128 -128
  105. package/src/contentful/blocks/accordion/Accordion.stories.tsx +98 -106
  106. package/src/contentful/blocks/accordion/index.tsx +112 -112
  107. package/src/contentful/blocks/accordion/types.ts +34 -34
  108. package/src/contentful/blocks/address-input-banner/index.tsx +52 -52
  109. package/src/contentful/blocks/address-input-banner/types.ts +14 -14
  110. package/src/contentful/blocks/anchored-bottom-banner/index.tsx +181 -70
  111. package/src/contentful/blocks/anchored-bottom-banner/types.ts +13 -10
  112. package/src/contentful/blocks/blogs-grid/index.tsx +134 -134
  113. package/src/contentful/blocks/blogs-grid/types.ts +26 -26
  114. package/src/contentful/blocks/blogs-grid-base/index.tsx +119 -119
  115. package/src/contentful/blocks/blogs-grid-base/types.ts +36 -36
  116. package/src/contentful/blocks/breadcrumbs/index.tsx +81 -81
  117. package/src/contentful/blocks/breadcrumbs/types.ts +6 -6
  118. package/src/contentful/blocks/button/Button.stories.tsx +40 -40
  119. package/src/contentful/blocks/button/index.tsx +131 -131
  120. package/src/contentful/blocks/button/types.ts +39 -39
  121. package/src/contentful/blocks/callout/Callout.stories.tsx +23 -23
  122. package/src/contentful/blocks/callout/index.tsx +252 -88
  123. package/src/contentful/blocks/callout/types.ts +68 -15
  124. package/src/contentful/blocks/cards/Cards.stories.tsx +23 -23
  125. package/src/contentful/blocks/cards/blog-card/index.tsx +129 -129
  126. package/src/contentful/blocks/cards/blog-card/types.ts +34 -34
  127. package/src/contentful/blocks/cards/floating-image-card/index.tsx +119 -0
  128. package/src/contentful/blocks/cards/floating-image-card/types.ts +30 -0
  129. package/src/contentful/blocks/cards/full-image-card/index.tsx +130 -0
  130. package/src/contentful/blocks/cards/full-image-card/types.ts +29 -0
  131. package/src/contentful/blocks/cards/index.tsx +13 -13
  132. package/src/contentful/blocks/cards/product-card/index.tsx +251 -251
  133. package/src/contentful/blocks/cards/product-card/types.ts +28 -28
  134. package/src/contentful/blocks/cards/simple-card/index.tsx +325 -89
  135. package/src/contentful/blocks/cards/simple-card/types.ts +71 -28
  136. package/src/contentful/blocks/cards/testimonial-card/index.tsx +90 -90
  137. package/src/contentful/blocks/cards/testimonial-card/types.tsx +12 -12
  138. package/src/contentful/blocks/cards/types.ts +1 -1
  139. package/src/contentful/blocks/carousel/Carousel.stories.tsx +23 -23
  140. package/src/contentful/blocks/carousel/helper.tsx +440 -440
  141. package/src/contentful/blocks/carousel/index.tsx +85 -85
  142. package/src/contentful/blocks/carousel/types.ts +144 -144
  143. package/src/contentful/blocks/cart-retention-banner/index.tsx +105 -105
  144. package/src/contentful/blocks/cart-retention-banner/types.ts +11 -11
  145. package/src/contentful/blocks/comparison-table/index.tsx +29 -27
  146. package/src/contentful/blocks/comparison-table/types.ts +6 -6
  147. package/src/contentful/blocks/cookiebanner/index.tsx +146 -146
  148. package/src/contentful/blocks/cookiebanner/type.ts +7 -7
  149. package/src/contentful/blocks/cta-callout/CtaCallout.stories.tsx +46 -46
  150. package/src/contentful/blocks/cta-callout/index.tsx +71 -71
  151. package/src/contentful/blocks/cta-callout/types.ts +26 -26
  152. package/src/contentful/blocks/dynamic-tabs/index.tsx +204 -204
  153. package/src/contentful/blocks/dynamic-tabs/types.ts +21 -21
  154. package/src/contentful/blocks/email-input-block/index.tsx +116 -116
  155. package/src/contentful/blocks/email-input-block/types.ts +16 -16
  156. package/src/contentful/blocks/find-kinetic/FindKinetic.stories.tsx +23 -23
  157. package/src/contentful/blocks/find-kinetic/index.tsx +130 -130
  158. package/src/contentful/blocks/find-kinetic/types.ts +19 -19
  159. package/src/contentful/blocks/floating-banner/FloatingBanner.stories.tsx +34 -34
  160. package/src/contentful/blocks/floating-banner/index.tsx +97 -97
  161. package/src/contentful/blocks/floating-banner/types.ts +22 -22
  162. package/src/contentful/blocks/footer/Footer.stories.tsx +317 -204
  163. package/src/contentful/blocks/footer/index.tsx +91 -91
  164. package/src/contentful/blocks/footer/types.ts +13 -13
  165. package/src/contentful/blocks/image-promo-bar/ImagePromoBar.stories.tsx +23 -23
  166. package/src/contentful/blocks/image-promo-bar/helper.tsx +28 -28
  167. package/src/contentful/blocks/image-promo-bar/index.tsx +246 -246
  168. package/src/contentful/blocks/image-promo-bar/types.ts +44 -44
  169. package/src/contentful/blocks/image-promo-bar/vimeo-embed.tsx +93 -93
  170. package/src/contentful/blocks/image-promo-bar/youtube-embed.tsx +46 -46
  171. package/src/contentful/blocks/modal/constants.ts +53 -53
  172. package/src/contentful/blocks/modal/index.tsx +107 -107
  173. package/src/contentful/blocks/modal/types.ts +12 -12
  174. package/src/contentful/blocks/navigation/desktop-link-groups.tsx/index.tsx +124 -124
  175. package/src/contentful/blocks/navigation/index.tsx +462 -462
  176. package/src/contentful/blocks/navigation/mobile-link-groups.tsx/index.tsx +82 -82
  177. package/src/contentful/blocks/navigation/types.ts +64 -64
  178. package/src/contentful/blocks/primary-hero/PrimaryHero.stories.tsx +23 -23
  179. package/src/contentful/blocks/primary-hero/index.tsx +236 -236
  180. package/src/contentful/blocks/primary-hero/types.ts +37 -37
  181. package/src/contentful/blocks/search-block/index.tsx +90 -90
  182. package/src/contentful/blocks/search-block/types.ts +15 -15
  183. package/src/contentful/blocks/shape-background-wrapper/ShapeBackgroundWrapper.stories.tsx +26 -26
  184. package/src/contentful/blocks/shape-background-wrapper/index.tsx +124 -124
  185. package/src/contentful/blocks/shape-background-wrapper/types.ts +36 -36
  186. package/src/contentful/blocks/text/Text.stories.tsx +23 -23
  187. package/src/contentful/blocks/text/index.tsx +12 -12
  188. package/src/contentful/blocks/text/types.ts +1 -1
  189. package/src/contentful/index.ts +105 -105
  190. package/src/hooks/contentful/use-contentful-rich-text.tsx +309 -307
  191. package/src/hooks/contentful/use-processed-check-list.ts +63 -63
  192. package/src/hooks/use-body-scroll-lock.ts +34 -34
  193. package/src/hooks/use-carousel-swipe.ts +264 -264
  194. package/src/hooks/use-outside-click.ts +17 -17
  195. package/src/index.ts +101 -101
  196. package/src/next/index.ts +5 -5
  197. package/src/setupTests.ts +46 -46
  198. package/src/stories/DocsTemplate.tsx +24 -24
  199. package/src/styles/globals.css +343 -343
  200. package/src/types/global.d.ts +9 -9
  201. package/src/types/micro-components.ts +99 -99
  202. package/src/types/utm.ts +49 -49
  203. package/src/utils/contentful/to-document.ts +24 -24
  204. package/src/utils/cookie.ts +84 -84
  205. package/src/utils/cx.ts +49 -49
  206. package/src/utils/index.ts +41 -38
  207. package/src/utils/speed-card-bg.ts +24 -0
  208. package/src/utils/utm.ts +221 -221
@@ -1,155 +1,155 @@
1
- "use client";
2
-
3
- import React, { useMemo } from "react";
4
- import { cx } from "../../utils";
5
- import { Text } from "../text";
6
- import { FilterOptions, SelectOption, SelectProps } from "./types";
7
- import ReactSelect, { createFilter } from "react-select";
8
-
9
- export const Select: React.FC<SelectProps> = React.memo(
10
- ({
11
- options,
12
- className,
13
- controlClassName,
14
- value,
15
- isCustomStyle = false,
16
- placeholder,
17
- required,
18
- onChange,
19
- filterOptions,
20
- hasError,
21
- error,
22
- menuClassName,
23
- helperText,
24
- label,
25
- labelClassName,
26
- size = "md",
27
- variant = "default",
28
- "data-cy": dataCy,
29
- "data-testid": dataTestId,
30
- ...rest
31
- }) => {
32
- const memoizedFilterOption = useMemo(
33
- () => createFilter(filterOptions),
34
- [filterOptions]
35
- );
36
-
37
- const getSizeClasses = () => {
38
- switch (size) {
39
- case "sm":
40
- return "h-[48px] px-3 rounded-lg";
41
- case "md":
42
- default:
43
- return "h-[56px] px-3 rounded-xl";
44
- }
45
- };
46
-
47
- const memoizedClassNames = useMemo(
48
- () => ({
49
- control: ({ isFocused }: any) =>
50
- cx(
51
- getSizeClasses(),
52
- "border border-input-border bg-white hover:not-focus:border-input-border-hover",
53
- {
54
- "border-input-border-selected outline outline-2 outline-input-border-selected":
55
- isFocused && !hasError,
56
- "border-input-border-critical shadow-none": hasError,
57
- },
58
- controlClassName
59
- ),
60
- indicatorSeparator: () => "hidden",
61
- dropdownIndicator: ({ selectProps }: any) =>
62
- isCustomStyle
63
- ? selectProps.value
64
- ? "hidden"
65
- : "block"
66
- : `block text-icon-default ${hasError ? "text-icon-critical" : ""}`,
67
- singleValue: () =>
68
- cx(
69
- isCustomStyle
70
- ? "text-text text-body1 whitespace-normal"
71
- : "text-text-secondary"
72
- ),
73
- menu: () =>
74
- cx(
75
- "z-20 mt-2 rounded-input-poppers bg-surface shadow-dark-drop",
76
- menuClassName
77
- ),
78
- option: ({ isFocused, isSelected, label }: any) =>
79
- cx(
80
- "min-h-[40px] px-4 py-2 cursor-pointer",
81
- isSelected
82
- ? "bg-gray-200 text-text font-semibold"
83
- : "bg-white text-text-secondary",
84
- !isSelected && "hover:bg-bg-surface-hover",
85
- !isSelected && isFocused && "bg-bg-surface-hover",
86
- isCustomStyle ? "text-body1 text-text" : "",
87
- !isCustomStyle || options[options.length - 1]?.label === label
88
- ? ""
89
- : "border-b border-border-brand"
90
- ),
91
- placeholder: () => "text-input-text-placeholder",
92
- input: () => "text-text",
93
- valueContainer: () => "px-0",
94
- }),
95
- [isCustomStyle, controlClassName, menuClassName, options, hasError, size]
96
- );
97
-
98
- if (variant === "unstyled") {
99
- return (
100
- <ReactSelect
101
- options={options}
102
- value={value}
103
- placeholder={required ? `${placeholder}*` : placeholder}
104
- onChange={onChange}
105
- filterOption={memoizedFilterOption}
106
- className={cx("rounded-xl", className)}
107
- classNames={memoizedClassNames}
108
- data-cy={dataCy}
109
- data-testid={dataTestId}
110
- {...rest}
111
- />
112
- );
113
- }
114
-
115
- return (
116
- <div className="w-full">
117
- {label && (
118
- <label
119
- className={cx(
120
- "mb-1 block text-sm font-medium text-text-secondary",
121
- labelClassName
122
- )}
123
- >
124
- {label}
125
- </label>
126
- )}
127
-
128
- <ReactSelect
129
- options={options}
130
- value={value}
131
- placeholder={required ? `${placeholder}*` : placeholder}
132
- onChange={onChange}
133
- filterOption={memoizedFilterOption}
134
- className={cx("rounded-xl", className)}
135
- classNames={memoizedClassNames}
136
- data-cy={dataCy}
137
- data-testid={dataTestId}
138
- {...rest}
139
- />
140
-
141
- {error && (
142
- <Text className="footnote mt-1 text-text-critical">{error}</Text>
143
- )}
144
-
145
- {!error && helperText && (
146
- <Text className="footnote mt-1 text-text-info">{helperText}</Text>
147
- )}
148
- </div>
149
- );
150
- }
151
- );
152
-
153
- Select.displayName = "Select";
154
-
155
- export type { SelectOption, SelectProps, FilterOptions };
1
+ "use client";
2
+
3
+ import React, { useMemo } from "react";
4
+ import { cx } from "../../utils";
5
+ import { Text } from "../text";
6
+ import { FilterOptions, SelectOption, SelectProps } from "./types";
7
+ import ReactSelect, { createFilter } from "react-select";
8
+
9
+ export const Select: React.FC<SelectProps> = React.memo(
10
+ ({
11
+ options,
12
+ className,
13
+ controlClassName,
14
+ value,
15
+ isCustomStyle = false,
16
+ placeholder,
17
+ required,
18
+ onChange,
19
+ filterOptions,
20
+ hasError,
21
+ error,
22
+ menuClassName,
23
+ helperText,
24
+ label,
25
+ labelClassName,
26
+ size = "md",
27
+ variant = "default",
28
+ "data-cy": dataCy,
29
+ "data-testid": dataTestId,
30
+ ...rest
31
+ }) => {
32
+ const memoizedFilterOption = useMemo(
33
+ () => createFilter(filterOptions),
34
+ [filterOptions]
35
+ );
36
+
37
+ const getSizeClasses = () => {
38
+ switch (size) {
39
+ case "sm":
40
+ return "h-[48px] px-3 rounded-lg";
41
+ case "md":
42
+ default:
43
+ return "h-[56px] px-3 rounded-xl";
44
+ }
45
+ };
46
+
47
+ const memoizedClassNames = useMemo(
48
+ () => ({
49
+ control: ({ isFocused }: any) =>
50
+ cx(
51
+ getSizeClasses(),
52
+ "border border-input-border bg-white hover:not-focus:border-input-border-hover",
53
+ {
54
+ "border-input-border-selected outline outline-2 outline-input-border-selected":
55
+ isFocused && !hasError,
56
+ "border-input-border-critical shadow-none": hasError,
57
+ },
58
+ controlClassName
59
+ ),
60
+ indicatorSeparator: () => "hidden",
61
+ dropdownIndicator: ({ selectProps }: any) =>
62
+ isCustomStyle
63
+ ? selectProps.value
64
+ ? "hidden"
65
+ : "block"
66
+ : `block text-icon-default ${hasError ? "text-icon-critical" : ""}`,
67
+ singleValue: () =>
68
+ cx(
69
+ isCustomStyle
70
+ ? "text-text text-body1 whitespace-normal"
71
+ : "text-text-secondary"
72
+ ),
73
+ menu: () =>
74
+ cx(
75
+ "z-20 mt-2 rounded-input-poppers bg-surface shadow-dark-drop",
76
+ menuClassName
77
+ ),
78
+ option: ({ isFocused, isSelected, label }: any) =>
79
+ cx(
80
+ "min-h-[40px] px-4 py-2 cursor-pointer",
81
+ isSelected
82
+ ? "bg-gray-200 text-text font-semibold"
83
+ : "bg-white text-text-secondary",
84
+ !isSelected && "hover:bg-bg-surface-hover",
85
+ !isSelected && isFocused && "bg-bg-surface-hover",
86
+ isCustomStyle ? "text-body1 text-text" : "",
87
+ !isCustomStyle || options[options.length - 1]?.label === label
88
+ ? ""
89
+ : "border-b border-border-brand"
90
+ ),
91
+ placeholder: () => "text-input-text-placeholder",
92
+ input: () => "text-text",
93
+ valueContainer: () => "px-0",
94
+ }),
95
+ [isCustomStyle, controlClassName, menuClassName, options, hasError, size]
96
+ );
97
+
98
+ if (variant === "unstyled") {
99
+ return (
100
+ <ReactSelect
101
+ options={options}
102
+ value={value}
103
+ placeholder={required ? `${placeholder}*` : placeholder}
104
+ onChange={onChange}
105
+ filterOption={memoizedFilterOption}
106
+ className={cx("rounded-xl", className)}
107
+ classNames={memoizedClassNames}
108
+ data-cy={dataCy}
109
+ data-testid={dataTestId}
110
+ {...rest}
111
+ />
112
+ );
113
+ }
114
+
115
+ return (
116
+ <div className="w-full">
117
+ {label && (
118
+ <label
119
+ className={cx(
120
+ "mb-1 block text-sm font-medium text-text-secondary",
121
+ labelClassName
122
+ )}
123
+ >
124
+ {label}
125
+ </label>
126
+ )}
127
+
128
+ <ReactSelect
129
+ options={options}
130
+ value={value}
131
+ placeholder={required ? `${placeholder}*` : placeholder}
132
+ onChange={onChange}
133
+ filterOption={memoizedFilterOption}
134
+ className={cx("rounded-xl", className)}
135
+ classNames={memoizedClassNames}
136
+ data-cy={dataCy}
137
+ data-testid={dataTestId}
138
+ {...rest}
139
+ />
140
+
141
+ {error && (
142
+ <Text className="footnote mt-1 text-text-critical">{error}</Text>
143
+ )}
144
+
145
+ {!error && helperText && (
146
+ <Text className="footnote mt-1 text-text-info">{helperText}</Text>
147
+ )}
148
+ </div>
149
+ );
150
+ }
151
+ );
152
+
153
+ Select.displayName = "Select";
154
+
155
+ export type { SelectOption, SelectProps, FilterOptions };
@@ -1,36 +1,36 @@
1
- import { Props as ReactSelectProps } from "react-select";
2
-
3
- export interface SelectOption<T = any> {
4
- label: string;
5
- value: string;
6
- data?: T;
7
- }
8
-
9
- export type FilterOptions = {
10
- ignoreCase?: boolean;
11
- ignoreAccents?: boolean;
12
- trim?: boolean;
13
- matchFrom?: "start" | "any";
14
- };
15
-
16
- export type OwnProps = {
17
- options: SelectOption[];
18
- value?: SelectOption;
19
- className?: string;
20
- isCustomStyle?: boolean;
21
- controlClassName?: string;
22
- menuClassName?: string;
23
- filterOptions?: FilterOptions;
24
- hasError?: boolean;
25
- error?: string;
26
- helperText?: string;
27
- label?: string;
28
- labelClassName?: string;
29
- size?: "sm" | "md";
30
- variant?: "default" | "unstyled";
31
- "data-cy"?: string;
32
- "data-testid"?: string;
33
- };
34
-
35
- export type SelectProps = OwnProps &
36
- Omit<ReactSelectProps<SelectOption>, "options" | "value" | "className">;
1
+ import { Props as ReactSelectProps } from "react-select";
2
+
3
+ export interface SelectOption<T = any> {
4
+ label: string;
5
+ value: string;
6
+ data?: T;
7
+ }
8
+
9
+ export type FilterOptions = {
10
+ ignoreCase?: boolean;
11
+ ignoreAccents?: boolean;
12
+ trim?: boolean;
13
+ matchFrom?: "start" | "any";
14
+ };
15
+
16
+ export type OwnProps = {
17
+ options: SelectOption[];
18
+ value?: SelectOption;
19
+ className?: string;
20
+ isCustomStyle?: boolean;
21
+ controlClassName?: string;
22
+ menuClassName?: string;
23
+ filterOptions?: FilterOptions;
24
+ hasError?: boolean;
25
+ error?: string;
26
+ helperText?: string;
27
+ label?: string;
28
+ labelClassName?: string;
29
+ size?: "sm" | "md";
30
+ variant?: "default" | "unstyled";
31
+ "data-cy"?: string;
32
+ "data-testid"?: string;
33
+ };
34
+
35
+ export type SelectProps = OwnProps &
36
+ Omit<ReactSelectProps<SelectOption>, "options" | "value" | "className">;