@windstream/react-shared-components 0.1.38 → 0.1.40

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 (195) hide show
  1. package/README.md +635 -635
  2. package/dist/contentful/index.d.ts +78 -51
  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 +2 -2
  8. package/dist/index.esm.js +7 -5
  9. package/dist/index.esm.js.map +1 -1
  10. package/dist/index.js +7 -5
  11. package/dist/index.js.map +1 -1
  12. package/dist/next/index.esm.js +3 -1
  13. package/dist/next/index.esm.js.map +1 -1
  14. package/dist/next/index.js +3 -1
  15. package/dist/next/index.js.map +1 -1
  16. package/dist/styles.css +1 -1
  17. package/dist/utils/index.d.ts +35 -6
  18. package/dist/utils/index.esm.js +1 -1
  19. package/dist/utils/index.esm.js.map +1 -1
  20. package/dist/utils/index.js +1 -1
  21. package/dist/utils/index.js.map +1 -1
  22. package/package.json +185 -182
  23. package/src/components/accordion/Accordion.stories.tsx +230 -230
  24. package/src/components/accordion/index.tsx +70 -70
  25. package/src/components/accordion/types.ts +12 -12
  26. package/src/components/alert-card/AlertCard.stories.tsx +171 -171
  27. package/src/components/alert-card/index.tsx +41 -41
  28. package/src/components/alert-card/types.ts +13 -13
  29. package/src/components/brand-button/BrandButton.stories.tsx +223 -223
  30. package/src/components/brand-button/helpers.ts +35 -35
  31. package/src/components/brand-button/index.tsx +114 -114
  32. package/src/components/brand-button/types.ts +37 -37
  33. package/src/components/button/Button.stories.tsx +108 -108
  34. package/src/components/button/index.tsx +27 -27
  35. package/src/components/button/types.ts +14 -14
  36. package/src/components/call-button/CallButton.stories.tsx +324 -324
  37. package/src/components/call-button/index.tsx +86 -86
  38. package/src/components/call-button/types.ts +11 -11
  39. package/src/components/checkbox/Checkbox.stories.tsx +247 -247
  40. package/src/components/checkbox/index.tsx +197 -197
  41. package/src/components/checkbox/types.ts +27 -27
  42. package/src/components/checklist/Checklist.stories.tsx +150 -150
  43. package/src/components/checklist/index.tsx +61 -61
  44. package/src/components/checklist/types.ts +17 -17
  45. package/src/components/collapse/Collapse.stories.tsx +255 -255
  46. package/src/components/collapse/index.tsx +46 -46
  47. package/src/components/collapse/types.ts +6 -6
  48. package/src/components/divider/Divider.stories.tsx +205 -205
  49. package/src/components/divider/index.tsx +22 -22
  50. package/src/components/divider/type.ts +3 -3
  51. package/src/components/image/Image.stories.tsx +113 -113
  52. package/src/components/image/index.tsx +25 -25
  53. package/src/components/image/types.ts +40 -40
  54. package/src/components/input/Input.stories.tsx +325 -325
  55. package/src/components/input/index.tsx +177 -177
  56. package/src/components/input/types.ts +37 -37
  57. package/src/components/link/Link.stories.tsx +163 -163
  58. package/src/components/link/index.tsx +109 -109
  59. package/src/components/link/types.ts +25 -25
  60. package/src/components/list/List.stories.tsx +272 -272
  61. package/src/components/list/index.tsx +88 -88
  62. package/src/components/list/list-item/index.tsx +38 -38
  63. package/src/components/list/list-item/types.ts +13 -13
  64. package/src/components/list/types.ts +29 -29
  65. package/src/components/material-icon/MaterialIcon.stories.tsx +322 -322
  66. package/src/components/material-icon/constants.ts +98 -98
  67. package/src/components/material-icon/index.tsx +47 -47
  68. package/src/components/material-icon/types.ts +31 -31
  69. package/src/components/modal/Modal.stories.tsx +171 -171
  70. package/src/components/modal/index.tsx +164 -164
  71. package/src/components/modal/types.ts +24 -24
  72. package/src/components/next-image/index.tsx +54 -54
  73. package/src/components/next-image/types.ts +1 -1
  74. package/src/components/pagination/index.tsx +100 -100
  75. package/src/components/pagination/types.ts +6 -6
  76. package/src/components/radio-button/RadioButton.stories.tsx +307 -307
  77. package/src/components/radio-button/index.tsx +75 -75
  78. package/src/components/radio-button/types.ts +21 -21
  79. package/src/components/see-more/SeeMore.stories.tsx +181 -181
  80. package/src/components/see-more/index.tsx +44 -44
  81. package/src/components/see-more/types.ts +4 -4
  82. package/src/components/select/Select.stories.tsx +411 -411
  83. package/src/components/select/index.tsx +155 -155
  84. package/src/components/select/types.ts +36 -36
  85. package/src/components/select-plan-button/SelectPlanButton.stories.tsx +184 -184
  86. package/src/components/select-plan-button/index.tsx +63 -63
  87. package/src/components/select-plan-button/types.ts +17 -17
  88. package/src/components/skeleton/Skeleton.stories.tsx +179 -179
  89. package/src/components/skeleton/index.tsx +61 -61
  90. package/src/components/skeleton/types.ts +4 -4
  91. package/src/components/spinner/Spinner.stories.tsx +335 -335
  92. package/src/components/spinner/index.tsx +44 -44
  93. package/src/components/spinner/types.ts +5 -5
  94. package/src/components/text/Text.stories.tsx +321 -321
  95. package/src/components/text/index.tsx +25 -25
  96. package/src/components/text/types.ts +45 -45
  97. package/src/components/tooltip/Tooltip.stories.tsx +219 -219
  98. package/src/components/tooltip/index.tsx +74 -74
  99. package/src/components/tooltip/types.ts +7 -7
  100. package/src/components/view-cart-button/ViewCartButton.stories.tsx +252 -252
  101. package/src/components/view-cart-button/index.tsx +42 -42
  102. package/src/components/view-cart-button/types.ts +5 -5
  103. package/src/contentful/blocks/accordion/Accordion.stories.tsx +29 -29
  104. package/src/contentful/blocks/accordion/index.tsx +62 -62
  105. package/src/contentful/blocks/accordion/types.ts +17 -17
  106. package/src/contentful/blocks/address-input-banner/index.tsx +52 -52
  107. package/src/contentful/blocks/address-input-banner/types.ts +14 -14
  108. package/src/contentful/blocks/anchored-bottom-banner/index.tsx +70 -70
  109. package/src/contentful/blocks/anchored-bottom-banner/types.ts +10 -10
  110. package/src/contentful/blocks/blogs-grid/index.tsx +134 -134
  111. package/src/contentful/blocks/blogs-grid/types.ts +26 -26
  112. package/src/contentful/blocks/breadcrumbs/index.tsx +51 -51
  113. package/src/contentful/blocks/breadcrumbs/types.ts +5 -5
  114. package/src/contentful/blocks/button/Button.stories.tsx +40 -40
  115. package/src/contentful/blocks/button/index.tsx +129 -129
  116. package/src/contentful/blocks/button/types.ts +39 -39
  117. package/src/contentful/blocks/callout/Callout.stories.tsx +23 -23
  118. package/src/contentful/blocks/callout/index.tsx +88 -88
  119. package/src/contentful/blocks/callout/types.ts +15 -15
  120. package/src/contentful/blocks/cards/Cards.stories.tsx +23 -23
  121. package/src/contentful/blocks/cards/blog-card/index.tsx +110 -110
  122. package/src/contentful/blocks/cards/blog-card/types.ts +18 -18
  123. package/src/contentful/blocks/cards/index.tsx +13 -13
  124. package/src/contentful/blocks/cards/product-card/index.tsx +251 -251
  125. package/src/contentful/blocks/cards/product-card/types.ts +28 -28
  126. package/src/contentful/blocks/cards/simple-card/index.tsx +89 -89
  127. package/src/contentful/blocks/cards/simple-card/types.ts +28 -28
  128. package/src/contentful/blocks/cards/testimonial-card/index.tsx +90 -90
  129. package/src/contentful/blocks/cards/testimonial-card/types.tsx +12 -12
  130. package/src/contentful/blocks/cards/types.ts +1 -1
  131. package/src/contentful/blocks/carousel/Carousel.stories.tsx +23 -23
  132. package/src/contentful/blocks/carousel/helper.tsx +440 -440
  133. package/src/contentful/blocks/carousel/index.tsx +85 -85
  134. package/src/contentful/blocks/carousel/types.ts +144 -144
  135. package/src/contentful/blocks/comparison-table/index.tsx +27 -27
  136. package/src/contentful/blocks/comparison-table/types.ts +6 -6
  137. package/src/contentful/blocks/cookiebanner/index.tsx +146 -146
  138. package/src/contentful/blocks/cookiebanner/type.ts +7 -7
  139. package/src/contentful/blocks/cta-callout/CtaCallout.stories.tsx +46 -46
  140. package/src/contentful/blocks/cta-callout/index.tsx +69 -69
  141. package/src/contentful/blocks/cta-callout/types.ts +26 -26
  142. package/src/contentful/blocks/dynamic-tabs/index.tsx +204 -204
  143. package/src/contentful/blocks/dynamic-tabs/types.ts +21 -21
  144. package/src/contentful/blocks/find-kinetic/FindKinetic.stories.tsx +23 -23
  145. package/src/contentful/blocks/find-kinetic/index.tsx +130 -130
  146. package/src/contentful/blocks/find-kinetic/types.ts +19 -19
  147. package/src/contentful/blocks/floating-banner/FloatingBanner.stories.tsx +34 -34
  148. package/src/contentful/blocks/floating-banner/index.tsx +97 -97
  149. package/src/contentful/blocks/floating-banner/types.ts +22 -22
  150. package/src/contentful/blocks/footer/Footer.stories.tsx +30 -30
  151. package/src/contentful/blocks/footer/index.tsx +90 -90
  152. package/src/contentful/blocks/footer/types.ts +13 -13
  153. package/src/contentful/blocks/image-promo-bar/ImagePromoBar.stories.tsx +23 -23
  154. package/src/contentful/blocks/image-promo-bar/helper.tsx +28 -28
  155. package/src/contentful/blocks/image-promo-bar/index.tsx +246 -240
  156. package/src/contentful/blocks/image-promo-bar/types.ts +44 -44
  157. package/src/contentful/blocks/image-promo-bar/vimeo-embed.tsx +93 -93
  158. package/src/contentful/blocks/image-promo-bar/youtube-embed.tsx +46 -46
  159. package/src/contentful/blocks/modal/constants.ts +53 -53
  160. package/src/contentful/blocks/modal/index.tsx +107 -103
  161. package/src/contentful/blocks/modal/types.ts +12 -12
  162. package/src/contentful/blocks/navigation/desktop-link-groups.tsx/index.tsx +113 -113
  163. package/src/contentful/blocks/navigation/index.tsx +394 -394
  164. package/src/contentful/blocks/navigation/mobile-link-groups.tsx/index.tsx +82 -82
  165. package/src/contentful/blocks/navigation/types.ts +41 -41
  166. package/src/contentful/blocks/primary-hero/PrimaryHero.stories.tsx +23 -23
  167. package/src/contentful/blocks/primary-hero/index.tsx +234 -234
  168. package/src/contentful/blocks/primary-hero/types.ts +35 -35
  169. package/src/contentful/blocks/search-block/index.tsx +90 -90
  170. package/src/contentful/blocks/search-block/types.ts +15 -15
  171. package/src/contentful/blocks/shape-background-wrapper/ShapeBackgroundWrapper.stories.tsx +26 -26
  172. package/src/contentful/blocks/shape-background-wrapper/index.tsx +124 -124
  173. package/src/contentful/blocks/shape-background-wrapper/types.ts +36 -36
  174. package/src/contentful/blocks/text/Text.stories.tsx +23 -23
  175. package/src/contentful/blocks/text/index.tsx +12 -12
  176. package/src/contentful/blocks/text/types.ts +1 -1
  177. package/src/contentful/index.ts +96 -81
  178. package/src/hooks/contentful/use-contentful-rich-text.tsx +310 -0
  179. package/src/hooks/contentful/use-processed-check-list.ts +63 -0
  180. package/src/hooks/use-body-scroll-lock.ts +34 -34
  181. package/src/hooks/use-carousel-swipe.ts +264 -264
  182. package/src/hooks/use-outside-click.ts +17 -17
  183. package/src/index.ts +101 -101
  184. package/src/next/index.ts +5 -5
  185. package/src/setupTests.ts +46 -46
  186. package/src/stories/DocsTemplate.tsx +24 -24
  187. package/src/styles/globals.css +343 -343
  188. package/src/types/global.d.ts +9 -9
  189. package/src/types/micro-components.ts +99 -99
  190. package/src/types/utm.ts +49 -49
  191. package/src/utils/contentful/to-document.ts +24 -0
  192. package/src/utils/cookie.ts +84 -80
  193. package/src/utils/cx.ts +49 -0
  194. package/src/utils/index.ts +38 -65
  195. package/src/utils/utm.ts +221 -221
@@ -1,110 +1,110 @@
1
- import React from "react";
2
- import { BlogCardProps } from "./types";
3
- import Image from "next/image";
4
- import Link from "next/link";
5
-
6
- // import { Button } from "@shared/components/button";
7
- import { MaterialIcon } from "@shared/components/material-icon";
8
- import { Text } from "@shared/components/text";
9
-
10
- export const BlogCard: React.FC<BlogCardProps> = ({
11
- href,
12
- title,
13
- description,
14
- date,
15
- category,
16
- image,
17
- readMoreText = "Read more",
18
- asGrid = true,
19
- lgWidth,
20
- mdWidth,
21
- index,
22
- }: BlogCardProps) => {
23
- const basehwClass = "lg:w-[calc(33.3333%-1rem)] md:w-[calc(50%-1rem)]";
24
- const parentClassName = asGrid
25
- ? "flex h-full flex-col overflow-hidden rounded-card-lg bg-white shadow-drop transition-all duration-200 hover:-translate-y-0.5 hover:shadow-cardDrop"
26
- : `callout-card ${basehwClass} ${lgWidth} ${mdWidth} w-full overflow-hidden rounded-card-lg bg-white shadow-drop transition-all duration-200 hover:-translate-y-0.5 hover:shadow-cardDrop`;
27
-
28
- return (
29
- <article
30
- className={parentClassName}
31
- data-section-type={"blog-card"}
32
- data-section-index={index}
33
- >
34
- {/* Image */}
35
- <Link href={href} tabIndex={-1} aria-hidden="true" className="block">
36
- <div className="h-[232px] w-full flex-shrink-0 overflow-hidden bg-gray-100">
37
- {image ? (
38
- <Image
39
- src={image.src}
40
- alt={image.alt}
41
- width={image.width}
42
- height={image.height}
43
- className="h-full w-full object-cover transition-transform duration-300 hover:scale-[1.03]"
44
- sizes="(max-width: 640px) 100vw, (max-width: 1024px) 50vw, 33vw"
45
- />
46
- ) : (
47
- <div
48
- className="h-full w-full bg-gradient-to-br from-gray-200 to-gray-100"
49
- aria-hidden="true"
50
- />
51
- )}
52
- </div>
53
- </Link>
54
-
55
- {/* Body */}
56
- <div className="flex flex-1 flex-col gap-5 p-6 md:p-8">
57
- {/* Meta: category + date */}
58
- <div className="flex items-center gap-2 text-[13px]">
59
- <span className="body2 text-text-brand">{category}</span>
60
- {date && (
61
- <>
62
- <span className="footnote text-text" aria-hidden="true">
63
-
64
- </span>
65
- <time className="body2 text-text">{date}</time>
66
- </>
67
- )}
68
- </div>
69
-
70
- {/* Title */}
71
- {title && (
72
- <Link
73
- href={href}
74
- className="heading6 m-0 line-clamp-3 font-black transition-colors duration-150 hover:text-text-brand"
75
- >
76
- {title}
77
- </Link>
78
- )}
79
-
80
- {/* Excerpt */}
81
- {description && (
82
- <Text className="body1 m-0 line-clamp-3 flex-1 text-text">
83
- {description}
84
- </Text>
85
- )}
86
-
87
- {/* Read more */}
88
- <Link
89
- href={href}
90
- className="group mt-auto inline-flex items-center justify-start gap-2 pt-3 text-sm text-text-brand no-underline"
91
- aria-label={`${readMoreText} about ${title || "this article"}`}
92
- >
93
- <Text
94
- aria-label={`${readMoreText} about ${title || "this article"}`}
95
- className="label1 text-nowrap"
96
- >
97
- {readMoreText}
98
- </Text>
99
- <MaterialIcon
100
- name="expand_circle_right"
101
- fill={1}
102
- size={24}
103
- weight="200"
104
- />
105
- </Link>
106
- </div>
107
- </article>
108
- );
109
- };
110
- export default BlogCard;
1
+ import React from "react";
2
+ import { BlogCardProps } from "./types";
3
+ import Image from "next/image";
4
+ import Link from "next/link";
5
+
6
+ // import { Button } from "@shared/components/button";
7
+ import { MaterialIcon } from "@shared/components/material-icon";
8
+ import { Text } from "@shared/components/text";
9
+
10
+ export const BlogCard: React.FC<BlogCardProps> = ({
11
+ href,
12
+ title,
13
+ description,
14
+ date,
15
+ category,
16
+ image,
17
+ readMoreText = "Read more",
18
+ asGrid = true,
19
+ lgWidth,
20
+ mdWidth,
21
+ index,
22
+ }: BlogCardProps) => {
23
+ const basehwClass = "lg:w-[calc(33.3333%-1rem)] md:w-[calc(50%-1rem)]";
24
+ const parentClassName = asGrid
25
+ ? "flex h-full flex-col overflow-hidden rounded-card-lg bg-white shadow-drop transition-all duration-200 hover:-translate-y-0.5 hover:shadow-cardDrop"
26
+ : `callout-card ${basehwClass} ${lgWidth} ${mdWidth} w-full overflow-hidden rounded-card-lg bg-white shadow-drop transition-all duration-200 hover:-translate-y-0.5 hover:shadow-cardDrop`;
27
+
28
+ return (
29
+ <article
30
+ className={parentClassName}
31
+ data-section-type={"blog-card"}
32
+ data-section-index={index}
33
+ >
34
+ {/* Image */}
35
+ <Link href={href} tabIndex={-1} aria-hidden="true" className="block">
36
+ <div className="h-[232px] w-full flex-shrink-0 overflow-hidden bg-gray-100">
37
+ {image ? (
38
+ <Image
39
+ src={image.src}
40
+ alt={image.alt}
41
+ width={image.width}
42
+ height={image.height}
43
+ className="h-full w-full object-cover transition-transform duration-300 hover:scale-[1.03]"
44
+ sizes="(max-width: 640px) 100vw, (max-width: 1024px) 50vw, 33vw"
45
+ />
46
+ ) : (
47
+ <div
48
+ className="h-full w-full bg-gradient-to-br from-gray-200 to-gray-100"
49
+ aria-hidden="true"
50
+ />
51
+ )}
52
+ </div>
53
+ </Link>
54
+
55
+ {/* Body */}
56
+ <div className="flex flex-1 flex-col gap-5 p-6 md:p-8">
57
+ {/* Meta: category + date */}
58
+ <div className="flex items-center gap-2 text-[13px]">
59
+ <span className="body2 text-text-brand">{category}</span>
60
+ {date && (
61
+ <>
62
+ <span className="footnote text-text" aria-hidden="true">
63
+
64
+ </span>
65
+ <time className="body2 text-text">{date}</time>
66
+ </>
67
+ )}
68
+ </div>
69
+
70
+ {/* Title */}
71
+ {title && (
72
+ <Link
73
+ href={href}
74
+ className="heading6 m-0 line-clamp-3 font-black transition-colors duration-150 hover:text-text-brand"
75
+ >
76
+ {title}
77
+ </Link>
78
+ )}
79
+
80
+ {/* Excerpt */}
81
+ {description && (
82
+ <Text className="body1 m-0 line-clamp-3 flex-1 text-text">
83
+ {description}
84
+ </Text>
85
+ )}
86
+
87
+ {/* Read more */}
88
+ <Link
89
+ href={href}
90
+ className="group mt-auto inline-flex items-center justify-start gap-2 pt-3 text-sm text-text-brand no-underline"
91
+ aria-label={`${readMoreText} about ${title || "this article"}`}
92
+ >
93
+ <Text
94
+ aria-label={`${readMoreText} about ${title || "this article"}`}
95
+ className="label1 text-nowrap"
96
+ >
97
+ {readMoreText}
98
+ </Text>
99
+ <MaterialIcon
100
+ name="expand_circle_right"
101
+ fill={1}
102
+ size={24}
103
+ weight="200"
104
+ />
105
+ </Link>
106
+ </div>
107
+ </article>
108
+ );
109
+ };
110
+ export default BlogCard;
@@ -1,18 +1,18 @@
1
- export interface BlogCardProps {
2
- href: string;
3
- title?: string;
4
- description?: string;
5
- date?: string;
6
- category?: string;
7
- image?: {
8
- src: string;
9
- alt: string;
10
- width: number;
11
- height: number;
12
- };
13
- readMoreText?: string;
14
- asGrid?: boolean;
15
- lgWidth?: string;
16
- mdWidth?: string;
17
- index?: number;
18
- }
1
+ export interface BlogCardProps {
2
+ href: string;
3
+ title?: string;
4
+ description?: string;
5
+ date?: string;
6
+ category?: string;
7
+ image?: {
8
+ src: string;
9
+ alt: string;
10
+ width: number;
11
+ height: number;
12
+ };
13
+ readMoreText?: string;
14
+ asGrid?: boolean;
15
+ lgWidth?: string;
16
+ mdWidth?: string;
17
+ index?: number;
18
+ }
@@ -1,13 +1,13 @@
1
- import { CardsProps } from "./types";
2
-
3
- import { Text } from "@shared/components/text";
4
-
5
- export const Cards: React.FC<{ fields: CardsProps }> = ({ fields }) => {
6
- return (
7
- <div>
8
- <Text>Cards</Text>
9
- </div>
10
- );
11
- };
12
-
13
- export default Cards;
1
+ import { CardsProps } from "./types";
2
+
3
+ import { Text } from "@shared/components/text";
4
+
5
+ export const Cards: React.FC<{ fields: CardsProps }> = ({ fields }) => {
6
+ return (
7
+ <div>
8
+ <Text>Cards</Text>
9
+ </div>
10
+ );
11
+ };
12
+
13
+ export default Cards;