@windstream/react-shared-components 0.1.6 → 0.1.7

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