@windstream/react-shared-components 0.0.47 → 0.0.49

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 (133) hide show
  1. package/README.md +629 -629
  2. package/dist/contentful/index.d.ts +8 -3
  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 +5 -5
  8. package/dist/index.d.ts +2 -2
  9. package/dist/index.js.map +1 -1
  10. package/dist/styles.css +1 -1
  11. package/package.json +175 -175
  12. package/src/components/accordion/Accordion.stories.tsx +230 -230
  13. package/src/components/accordion/index.tsx +49 -49
  14. package/src/components/accordion/types.ts +9 -9
  15. package/src/components/alert-card/AlertCard.stories.tsx +171 -171
  16. package/src/components/alert-card/index.tsx +32 -32
  17. package/src/components/alert-card/types.ts +9 -9
  18. package/src/components/brand-button/BrandButton.stories.tsx +219 -219
  19. package/src/components/brand-button/helpers.ts +35 -35
  20. package/src/components/brand-button/index.tsx +93 -93
  21. package/src/components/brand-button/types.ts +25 -25
  22. package/src/components/button/Button.stories.tsx +108 -108
  23. package/src/components/button/index.tsx +27 -27
  24. package/src/components/button/types.ts +14 -14
  25. package/src/components/call-button/CallButton.stories.tsx +324 -324
  26. package/src/components/call-button/index.tsx +79 -79
  27. package/src/components/call-button/types.ts +10 -10
  28. package/src/components/checkbox/Checkbox.stories.tsx +247 -247
  29. package/src/components/checkbox/index.tsx +197 -197
  30. package/src/components/checkbox/types.ts +27 -27
  31. package/src/components/checklist/Checklist.stories.tsx +150 -150
  32. package/src/components/checklist/index.tsx +39 -39
  33. package/src/components/checklist/types.ts +6 -6
  34. package/src/components/collapse/Collapse.stories.tsx +255 -255
  35. package/src/components/collapse/index.tsx +46 -46
  36. package/src/components/collapse/types.ts +6 -6
  37. package/src/components/divider/Divider.stories.tsx +205 -205
  38. package/src/components/divider/index.tsx +22 -22
  39. package/src/components/divider/type.ts +3 -3
  40. package/src/components/image/Image.stories.tsx +113 -113
  41. package/src/components/image/index.tsx +25 -25
  42. package/src/components/image/types.ts +40 -40
  43. package/src/components/input/Input.stories.tsx +325 -325
  44. package/src/components/input/index.tsx +177 -177
  45. package/src/components/input/types.ts +37 -37
  46. package/src/components/link/Link.stories.tsx +163 -163
  47. package/src/components/link/index.tsx +97 -97
  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 +330 -330
  55. package/src/components/material-icon/constants.ts +96 -96
  56. package/src/components/material-icon/index.tsx +44 -44
  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 +18 -18
  62. package/src/components/next-image/types.ts +1 -1
  63. package/src/components/radio-button/RadioButton.stories.tsx +307 -307
  64. package/src/components/radio-button/index.tsx +75 -75
  65. package/src/components/radio-button/types.ts +21 -21
  66. package/src/components/see-more/SeeMore.stories.tsx +181 -181
  67. package/src/components/see-more/index.tsx +44 -44
  68. package/src/components/see-more/types.ts +4 -4
  69. package/src/components/select/Select.stories.tsx +411 -411
  70. package/src/components/select/index.tsx +150 -150
  71. package/src/components/select/types.ts +35 -35
  72. package/src/components/select-plan-button/SelectPlanButton.stories.tsx +168 -168
  73. package/src/components/select-plan-button/index.tsx +29 -29
  74. package/src/components/select-plan-button/types.ts +4 -4
  75. package/src/components/skeleton/Skeleton.stories.tsx +179 -179
  76. package/src/components/skeleton/index.tsx +61 -61
  77. package/src/components/skeleton/types.ts +4 -4
  78. package/src/components/spinner/Spinner.stories.tsx +335 -335
  79. package/src/components/spinner/index.tsx +44 -44
  80. package/src/components/spinner/types.ts +5 -5
  81. package/src/components/text/Text.stories.tsx +321 -321
  82. package/src/components/text/index.tsx +25 -25
  83. package/src/components/text/types.ts +45 -45
  84. package/src/components/tooltip/Tooltip.stories.tsx +219 -219
  85. package/src/components/tooltip/index.tsx +74 -74
  86. package/src/components/tooltip/types.ts +7 -7
  87. package/src/components/view-cart-button/ViewCartButton.stories.tsx +252 -252
  88. package/src/components/view-cart-button/index.tsx +44 -44
  89. package/src/components/view-cart-button/types.ts +5 -5
  90. package/src/contentful/blocks/button/Button.stories.tsx +40 -40
  91. package/src/contentful/blocks/button/index.tsx +64 -64
  92. package/src/contentful/blocks/button/types.ts +24 -24
  93. package/src/contentful/blocks/callout/Callout.stories.tsx +23 -23
  94. package/src/contentful/blocks/cards/Cards.stories.tsx +23 -23
  95. package/src/contentful/blocks/cards/index.tsx +13 -13
  96. package/src/contentful/blocks/cards/types.ts +1 -1
  97. package/src/contentful/blocks/carousel/Carousel.stories.tsx +23 -23
  98. package/src/contentful/blocks/carousel/index.tsx +13 -13
  99. package/src/contentful/blocks/carousel/types.ts +1 -1
  100. package/src/contentful/blocks/comparison-table/index.tsx +23 -2
  101. package/src/contentful/blocks/comparison-table/types.ts +6 -1
  102. package/src/contentful/blocks/cta-callout/CtaCallout.stories.tsx +46 -46
  103. package/src/contentful/blocks/cta-callout/index.tsx +54 -54
  104. package/src/contentful/blocks/cta-callout/types.ts +22 -22
  105. package/src/contentful/blocks/floating-banner/FloatingBanner.stories.tsx +34 -34
  106. package/src/contentful/blocks/floating-banner/index.tsx +1 -10
  107. package/src/contentful/blocks/floating-banner/types.ts +22 -22
  108. package/src/contentful/blocks/footer/Footer.stories.tsx +30 -30
  109. package/src/contentful/blocks/image-promo-bar/ImagePromoBar.stories.tsx +23 -23
  110. package/src/contentful/blocks/image-promo-bar/types.ts +27 -27
  111. package/src/contentful/blocks/modal/Modal.stories.tsx +23 -23
  112. package/src/contentful/blocks/modal/index.tsx +12 -12
  113. package/src/contentful/blocks/modal/types.ts +1 -1
  114. package/src/contentful/blocks/navigation/Navigation.stories.tsx +23 -23
  115. package/src/contentful/blocks/navigation/index.tsx +56 -56
  116. package/src/contentful/blocks/navigation/types.ts +21 -21
  117. package/src/contentful/blocks/primary-hero/PrimaryHero.stories.tsx +23 -23
  118. package/src/contentful/blocks/primary-hero/index.tsx +160 -160
  119. package/src/contentful/blocks/primary-hero/types.ts +30 -30
  120. package/src/contentful/blocks/shape-background-wrapper/ShapeBackgroundWrapper.stories.tsx +26 -26
  121. package/src/contentful/blocks/shape-background-wrapper/index.tsx +124 -124
  122. package/src/contentful/blocks/shape-background-wrapper/types.ts +36 -36
  123. package/src/contentful/blocks/text/Text.stories.tsx +23 -23
  124. package/src/contentful/blocks/text/index.tsx +12 -12
  125. package/src/contentful/blocks/text/types.ts +1 -1
  126. package/src/hooks/use-body-scroll-lock.ts +34 -34
  127. package/src/index.ts +96 -96
  128. package/src/next/index.ts +5 -5
  129. package/src/setupTests.ts +46 -46
  130. package/src/stories/DocsTemplate.tsx +24 -24
  131. package/src/styles/globals.css +307 -307
  132. package/src/types/global.d.ts +9 -9
  133. 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">;