@windstream/react-shared-components 0.0.88 → 0.0.90

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 (148) hide show
  1. package/README.md +635 -635
  2. package/dist/contentful/index.d.ts +12 -5
  3. package/dist/contentful/index.esm.js +1 -1
  4. package/dist/contentful/index.esm.js.map +1 -1
  5. package/dist/contentful/index.js +1 -1
  6. package/dist/contentful/index.js.map +1 -1
  7. package/dist/core.d.ts +2 -2
  8. package/dist/index.d.ts +1 -1
  9. package/dist/index.esm.js +1 -1
  10. package/dist/index.esm.js.map +1 -1
  11. package/dist/index.js +4 -4
  12. package/dist/index.js.map +1 -1
  13. package/dist/styles.css +1 -1
  14. package/package.json +177 -177
  15. package/src/components/accordion/Accordion.stories.tsx +230 -230
  16. package/src/components/accordion/types.ts +10 -10
  17. package/src/components/alert-card/AlertCard.stories.tsx +171 -171
  18. package/src/components/alert-card/index.tsx +32 -32
  19. package/src/components/alert-card/types.ts +9 -9
  20. package/src/components/brand-button/BrandButton.stories.tsx +223 -223
  21. package/src/components/brand-button/helpers.ts +35 -35
  22. package/src/components/brand-button/index.tsx +115 -115
  23. package/src/components/brand-button/types.ts +37 -37
  24. package/src/components/button/Button.stories.tsx +108 -108
  25. package/src/components/button/index.tsx +27 -27
  26. package/src/components/button/types.ts +14 -14
  27. package/src/components/call-button/CallButton.stories.tsx +324 -324
  28. package/src/components/call-button/index.tsx +86 -86
  29. package/src/components/call-button/types.ts +11 -11
  30. package/src/components/checkbox/Checkbox.stories.tsx +247 -247
  31. package/src/components/checkbox/index.tsx +197 -197
  32. package/src/components/checkbox/types.ts +27 -27
  33. package/src/components/checklist/Checklist.stories.tsx +150 -150
  34. package/src/components/checklist/index.tsx +55 -54
  35. package/src/components/checklist/types.ts +14 -9
  36. package/src/components/collapse/Collapse.stories.tsx +255 -255
  37. package/src/components/collapse/index.tsx +46 -46
  38. package/src/components/collapse/types.ts +6 -6
  39. package/src/components/divider/Divider.stories.tsx +205 -205
  40. package/src/components/divider/index.tsx +22 -22
  41. package/src/components/divider/type.ts +3 -3
  42. package/src/components/image/Image.stories.tsx +113 -113
  43. package/src/components/image/index.tsx +25 -25
  44. package/src/components/image/types.ts +40 -40
  45. package/src/components/input/Input.stories.tsx +325 -325
  46. package/src/components/input/index.tsx +177 -177
  47. package/src/components/input/types.ts +37 -37
  48. package/src/components/link/Link.stories.tsx +163 -163
  49. package/src/components/link/types.ts +25 -25
  50. package/src/components/list/List.stories.tsx +272 -272
  51. package/src/components/list/index.tsx +88 -88
  52. package/src/components/list/list-item/index.tsx +38 -38
  53. package/src/components/list/list-item/types.ts +13 -13
  54. package/src/components/list/types.ts +29 -29
  55. package/src/components/material-icon/MaterialIcon.stories.tsx +330 -330
  56. package/src/components/material-icon/constants.ts +98 -97
  57. package/src/components/material-icon/index.tsx +44 -44
  58. package/src/components/material-icon/types.ts +31 -31
  59. package/src/components/modal/Modal.stories.tsx +171 -171
  60. package/src/components/modal/index.tsx +164 -164
  61. package/src/components/modal/types.ts +24 -24
  62. package/src/components/next-image/index.tsx +32 -32
  63. package/src/components/next-image/types.ts +1 -1
  64. package/src/components/radio-button/RadioButton.stories.tsx +307 -307
  65. package/src/components/radio-button/index.tsx +75 -75
  66. package/src/components/radio-button/types.ts +21 -21
  67. package/src/components/see-more/SeeMore.stories.tsx +181 -181
  68. package/src/components/see-more/index.tsx +44 -44
  69. package/src/components/see-more/types.ts +4 -4
  70. package/src/components/select/Select.stories.tsx +411 -411
  71. package/src/components/select/index.tsx +150 -150
  72. package/src/components/select/types.ts +35 -35
  73. package/src/components/select-plan-button/SelectPlanButton.stories.tsx +184 -184
  74. package/src/components/select-plan-button/index.tsx +31 -31
  75. package/src/components/select-plan-button/types.ts +5 -5
  76. package/src/components/skeleton/Skeleton.stories.tsx +179 -179
  77. package/src/components/skeleton/index.tsx +61 -61
  78. package/src/components/skeleton/types.ts +4 -4
  79. package/src/components/spinner/Spinner.stories.tsx +335 -335
  80. package/src/components/spinner/index.tsx +44 -44
  81. package/src/components/spinner/types.ts +5 -5
  82. package/src/components/text/Text.stories.tsx +321 -321
  83. package/src/components/text/index.tsx +25 -25
  84. package/src/components/text/types.ts +45 -45
  85. package/src/components/tooltip/Tooltip.stories.tsx +219 -219
  86. package/src/components/tooltip/index.tsx +74 -74
  87. package/src/components/tooltip/types.ts +7 -7
  88. package/src/components/view-cart-button/ViewCartButton.stories.tsx +252 -252
  89. package/src/components/view-cart-button/index.tsx +42 -44
  90. package/src/components/view-cart-button/types.ts +5 -5
  91. package/src/contentful/blocks/button/Button.stories.tsx +40 -40
  92. package/src/contentful/blocks/button/index.tsx +99 -99
  93. package/src/contentful/blocks/button/types.ts +31 -31
  94. package/src/contentful/blocks/callout/Callout.stories.tsx +23 -23
  95. package/src/contentful/blocks/callout/index.tsx +66 -66
  96. package/src/contentful/blocks/cards/Cards.stories.tsx +23 -23
  97. package/src/contentful/blocks/cards/index.tsx +13 -13
  98. package/src/contentful/blocks/cards/product-card/index.tsx +199 -199
  99. package/src/contentful/blocks/cards/product-card/types.ts +21 -20
  100. package/src/contentful/blocks/cards/simple-card/index.tsx +77 -77
  101. package/src/contentful/blocks/cards/simple-card/types.ts +31 -31
  102. package/src/contentful/blocks/cards/testimonial-card/index.tsx +88 -88
  103. package/src/contentful/blocks/cards/testimonial-card/types.tsx +12 -12
  104. package/src/contentful/blocks/cards/types.ts +1 -1
  105. package/src/contentful/blocks/carousel/Carousel.stories.tsx +23 -23
  106. package/src/contentful/blocks/carousel/helper.tsx +349 -314
  107. package/src/contentful/blocks/carousel/index.tsx +68 -52
  108. package/src/contentful/blocks/carousel/types.ts +140 -126
  109. package/src/contentful/blocks/cta-callout/CtaCallout.stories.tsx +46 -46
  110. package/src/contentful/blocks/cta-callout/index.tsx +54 -54
  111. package/src/contentful/blocks/cta-callout/types.ts +22 -22
  112. package/src/contentful/blocks/find-kinetic/index.tsx +124 -124
  113. package/src/contentful/blocks/floating-banner/FloatingBanner.stories.tsx +34 -34
  114. package/src/contentful/blocks/floating-banner/types.ts +22 -22
  115. package/src/contentful/blocks/footer/Footer.stories.tsx +30 -30
  116. package/src/contentful/blocks/image-promo-bar/ImagePromoBar.stories.tsx +23 -23
  117. package/src/contentful/blocks/image-promo-bar/helper.tsx +28 -0
  118. package/src/contentful/blocks/image-promo-bar/index.tsx +231 -154
  119. package/src/contentful/blocks/image-promo-bar/types.ts +44 -31
  120. package/src/contentful/blocks/image-promo-bar/vimeo-embed.tsx +93 -0
  121. package/src/contentful/blocks/image-promo-bar/youtube-embed.tsx +46 -0
  122. package/src/contentful/blocks/modal/constants.ts +53 -53
  123. package/src/contentful/blocks/modal/index.tsx +91 -91
  124. package/src/contentful/blocks/modal/types.ts +12 -12
  125. package/src/contentful/blocks/navigation/desktop-link-groups.tsx/index.tsx +111 -111
  126. package/src/contentful/blocks/navigation/index.tsx +385 -385
  127. package/src/contentful/blocks/navigation/mobile-link-groups.tsx/index.tsx +80 -80
  128. package/src/contentful/blocks/navigation/types.ts +41 -41
  129. package/src/contentful/blocks/primary-hero/PrimaryHero.stories.tsx +23 -23
  130. package/src/contentful/blocks/primary-hero/index.tsx +228 -228
  131. package/src/contentful/blocks/primary-hero/types.ts +35 -35
  132. package/src/contentful/blocks/shape-background-wrapper/ShapeBackgroundWrapper.stories.tsx +26 -26
  133. package/src/contentful/blocks/shape-background-wrapper/index.tsx +124 -124
  134. package/src/contentful/blocks/shape-background-wrapper/types.ts +36 -36
  135. package/src/contentful/blocks/text/Text.stories.tsx +23 -23
  136. package/src/contentful/blocks/text/index.tsx +12 -12
  137. package/src/contentful/blocks/text/types.ts +1 -1
  138. package/src/contentful/index.ts +57 -57
  139. package/src/hooks/use-body-scroll-lock.ts +34 -34
  140. package/src/hooks/use-outside-click.ts +17 -17
  141. package/src/index.ts +96 -96
  142. package/src/next/index.ts +5 -5
  143. package/src/setupTests.ts +46 -46
  144. package/src/stories/DocsTemplate.tsx +24 -24
  145. package/src/styles/globals.css +307 -307
  146. package/src/types/global.d.ts +9 -9
  147. package/src/types/micro-components.ts +89 -89
  148. package/src/utils/index.ts +49 -49
@@ -1,150 +1,150 @@
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
+ 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,35 +1,35 @@
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
+ 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">;