@windstream/react-shared-components 0.1.11 → 0.1.13

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 (160) hide show
  1. package/README.md +635 -635
  2. package/dist/contentful/index.esm.js +2 -2
  3. package/dist/contentful/index.esm.js.map +1 -1
  4. package/dist/contentful/index.js +2 -2
  5. package/dist/contentful/index.js.map +1 -1
  6. package/dist/core.d.ts +2 -2
  7. package/dist/index.d.ts +1 -1
  8. package/dist/index.esm.js +5 -5
  9. package/dist/index.esm.js.map +1 -1
  10. package/dist/index.js +5 -5
  11. package/dist/index.js.map +1 -1
  12. package/dist/next/index.esm.js +1 -1
  13. package/dist/next/index.esm.js.map +1 -1
  14. package/dist/next/index.js +1 -1
  15. package/dist/next/index.js.map +1 -1
  16. package/dist/styles.css +1 -1
  17. package/package.json +177 -177
  18. package/src/components/accordion/Accordion.stories.tsx +230 -230
  19. package/src/components/accordion/types.ts +11 -11
  20. package/src/components/alert-card/AlertCard.stories.tsx +171 -171
  21. package/src/components/alert-card/index.tsx +41 -41
  22. package/src/components/alert-card/types.ts +13 -13
  23. package/src/components/brand-button/BrandButton.stories.tsx +223 -223
  24. package/src/components/brand-button/helpers.ts +35 -35
  25. package/src/components/brand-button/index.tsx +115 -115
  26. package/src/components/brand-button/types.ts +37 -37
  27. package/src/components/button/Button.stories.tsx +108 -108
  28. package/src/components/button/index.tsx +27 -27
  29. package/src/components/button/types.ts +14 -14
  30. package/src/components/call-button/CallButton.stories.tsx +324 -324
  31. package/src/components/call-button/index.tsx +86 -86
  32. package/src/components/call-button/types.ts +11 -11
  33. package/src/components/checkbox/Checkbox.stories.tsx +247 -247
  34. package/src/components/checkbox/index.tsx +197 -197
  35. package/src/components/checkbox/types.ts +27 -27
  36. package/src/components/checklist/Checklist.stories.tsx +150 -150
  37. package/src/components/checklist/index.tsx +59 -59
  38. package/src/components/checklist/types.ts +16 -16
  39. package/src/components/collapse/Collapse.stories.tsx +255 -255
  40. package/src/components/collapse/index.tsx +46 -46
  41. package/src/components/collapse/types.ts +6 -6
  42. package/src/components/divider/Divider.stories.tsx +205 -205
  43. package/src/components/divider/index.tsx +22 -22
  44. package/src/components/divider/type.ts +3 -3
  45. package/src/components/image/Image.stories.tsx +113 -113
  46. package/src/components/image/index.tsx +25 -25
  47. package/src/components/image/types.ts +40 -40
  48. package/src/components/input/Input.stories.tsx +325 -325
  49. package/src/components/input/index.tsx +177 -177
  50. package/src/components/input/types.ts +37 -37
  51. package/src/components/link/Link.stories.tsx +163 -163
  52. package/src/components/link/types.ts +25 -25
  53. package/src/components/list/List.stories.tsx +272 -272
  54. package/src/components/list/index.tsx +88 -88
  55. package/src/components/list/list-item/index.tsx +38 -38
  56. package/src/components/list/list-item/types.ts +13 -13
  57. package/src/components/list/types.ts +29 -29
  58. package/src/components/material-icon/MaterialIcon.stories.tsx +322 -322
  59. package/src/components/material-icon/constants.ts +98 -98
  60. package/src/components/material-icon/index.tsx +47 -47
  61. package/src/components/material-icon/types.ts +31 -31
  62. package/src/components/modal/Modal.stories.tsx +171 -171
  63. package/src/components/modal/index.tsx +164 -164
  64. package/src/components/modal/types.ts +24 -24
  65. package/src/components/next-image/index.tsx +54 -32
  66. package/src/components/next-image/types.ts +1 -1
  67. package/src/components/pagination/index.tsx +100 -100
  68. package/src/components/pagination/types.ts +6 -6
  69. package/src/components/radio-button/RadioButton.stories.tsx +307 -307
  70. package/src/components/radio-button/index.tsx +75 -75
  71. package/src/components/radio-button/types.ts +21 -21
  72. package/src/components/see-more/SeeMore.stories.tsx +181 -181
  73. package/src/components/see-more/index.tsx +44 -44
  74. package/src/components/see-more/types.ts +4 -4
  75. package/src/components/select/Select.stories.tsx +411 -411
  76. package/src/components/select/index.tsx +155 -155
  77. package/src/components/select/types.ts +36 -36
  78. package/src/components/select-plan-button/SelectPlanButton.stories.tsx +184 -184
  79. package/src/components/select-plan-button/index.tsx +57 -57
  80. package/src/components/select-plan-button/types.ts +14 -14
  81. package/src/components/skeleton/Skeleton.stories.tsx +179 -179
  82. package/src/components/skeleton/index.tsx +61 -61
  83. package/src/components/skeleton/types.ts +4 -4
  84. package/src/components/spinner/Spinner.stories.tsx +335 -335
  85. package/src/components/spinner/index.tsx +44 -44
  86. package/src/components/spinner/types.ts +5 -5
  87. package/src/components/text/Text.stories.tsx +321 -321
  88. package/src/components/text/index.tsx +25 -25
  89. package/src/components/text/types.ts +45 -45
  90. package/src/components/tooltip/Tooltip.stories.tsx +219 -219
  91. package/src/components/tooltip/index.tsx +74 -74
  92. package/src/components/tooltip/types.ts +7 -7
  93. package/src/components/view-cart-button/ViewCartButton.stories.tsx +252 -252
  94. package/src/components/view-cart-button/index.tsx +42 -42
  95. package/src/components/view-cart-button/types.ts +5 -5
  96. package/src/contentful/blocks/address-input-banner/index.tsx +52 -52
  97. package/src/contentful/blocks/address-input-banner/types.ts +14 -14
  98. package/src/contentful/blocks/blogs-grid/index.tsx +129 -129
  99. package/src/contentful/blocks/blogs-grid/types.ts +26 -26
  100. package/src/contentful/blocks/breadcrumbs/index.tsx +55 -55
  101. package/src/contentful/blocks/button/Button.stories.tsx +40 -40
  102. package/src/contentful/blocks/button/index.tsx +108 -108
  103. package/src/contentful/blocks/button/types.ts +34 -34
  104. package/src/contentful/blocks/callout/Callout.stories.tsx +23 -23
  105. package/src/contentful/blocks/callout/index.tsx +66 -66
  106. package/src/contentful/blocks/cards/Cards.stories.tsx +23 -23
  107. package/src/contentful/blocks/cards/blog-card/index.tsx +99 -99
  108. package/src/contentful/blocks/cards/blog-card/types.ts +14 -14
  109. package/src/contentful/blocks/cards/index.tsx +13 -13
  110. package/src/contentful/blocks/cards/product-card/index.tsx +208 -208
  111. package/src/contentful/blocks/cards/product-card/types.ts +28 -28
  112. package/src/contentful/blocks/cards/testimonial-card/index.tsx +88 -88
  113. package/src/contentful/blocks/cards/testimonial-card/types.tsx +12 -12
  114. package/src/contentful/blocks/cards/types.ts +1 -1
  115. package/src/contentful/blocks/carousel/Carousel.stories.tsx +23 -23
  116. package/src/contentful/blocks/carousel/helper.tsx +356 -356
  117. package/src/contentful/blocks/carousel/index.tsx +74 -74
  118. package/src/contentful/blocks/carousel/types.ts +143 -143
  119. package/src/contentful/blocks/cta-callout/CtaCallout.stories.tsx +46 -46
  120. package/src/contentful/blocks/cta-callout/index.tsx +60 -60
  121. package/src/contentful/blocks/cta-callout/types.ts +26 -26
  122. package/src/contentful/blocks/dynamic-tabs/index.tsx +204 -204
  123. package/src/contentful/blocks/dynamic-tabs/types.ts +21 -21
  124. package/src/contentful/blocks/find-kinetic/index.tsx +130 -130
  125. package/src/contentful/blocks/floating-banner/FloatingBanner.stories.tsx +34 -34
  126. package/src/contentful/blocks/floating-banner/types.ts +22 -22
  127. package/src/contentful/blocks/footer/Footer.stories.tsx +30 -30
  128. package/src/contentful/blocks/image-promo-bar/ImagePromoBar.stories.tsx +23 -23
  129. package/src/contentful/blocks/image-promo-bar/helper.tsx +28 -28
  130. package/src/contentful/blocks/image-promo-bar/types.ts +44 -44
  131. package/src/contentful/blocks/image-promo-bar/vimeo-embed.tsx +93 -93
  132. package/src/contentful/blocks/image-promo-bar/youtube-embed.tsx +46 -46
  133. package/src/contentful/blocks/modal/constants.ts +53 -53
  134. package/src/contentful/blocks/modal/index.tsx +91 -91
  135. package/src/contentful/blocks/modal/types.ts +12 -12
  136. package/src/contentful/blocks/navigation/desktop-link-groups.tsx/index.tsx +111 -111
  137. package/src/contentful/blocks/navigation/index.tsx +385 -385
  138. package/src/contentful/blocks/navigation/mobile-link-groups.tsx/index.tsx +80 -80
  139. package/src/contentful/blocks/navigation/types.ts +41 -41
  140. package/src/contentful/blocks/primary-hero/PrimaryHero.stories.tsx +23 -23
  141. package/src/contentful/blocks/primary-hero/index.tsx +234 -229
  142. package/src/contentful/blocks/primary-hero/types.ts +35 -35
  143. package/src/contentful/blocks/search-block/index.tsx +90 -90
  144. package/src/contentful/blocks/shape-background-wrapper/ShapeBackgroundWrapper.stories.tsx +26 -26
  145. package/src/contentful/blocks/shape-background-wrapper/index.tsx +124 -124
  146. package/src/contentful/blocks/shape-background-wrapper/types.ts +36 -36
  147. package/src/contentful/blocks/text/Text.stories.tsx +23 -23
  148. package/src/contentful/blocks/text/index.tsx +12 -12
  149. package/src/contentful/blocks/text/types.ts +1 -1
  150. package/src/contentful/index.ts +75 -75
  151. package/src/hooks/use-body-scroll-lock.ts +34 -34
  152. package/src/hooks/use-outside-click.ts +17 -17
  153. package/src/index.ts +96 -96
  154. package/src/next/index.ts +5 -5
  155. package/src/setupTests.ts +46 -46
  156. package/src/stories/DocsTemplate.tsx +24 -24
  157. package/src/styles/globals.css +343 -343
  158. package/src/types/global.d.ts +9 -9
  159. package/src/types/micro-components.ts +99 -99
  160. package/src/utils/index.ts +49 -49
@@ -1,229 +1,234 @@
1
- import React from "react";
2
- import { PrimaryHeroProps } from "./types";
3
-
4
- import { Checklist } from "@shared/components/checklist";
5
- import { NextImage } from "@shared/components/next-image";
6
- import { Text } from "@shared/components/text";
7
- import { Button } from "@shared/contentful/blocks/button";
8
- import { cx } from "@shared/utils";
9
-
10
- export const PrimaryHero: React.FC<PrimaryHeroProps> = props => {
11
- const {
12
- title,
13
- showAsHeading,
14
- subTitle,
15
- primaryCta1,
16
- carouselImages,
17
- bottomLink,
18
- price,
19
- priceCallout,
20
- priceSuffix,
21
- checklist,
22
- renderCheckPlans,
23
- badgeImage,
24
- pricingDescriptionDisclaimer,
25
- secondaryCta,
26
- secondaryCtaPrefix,
27
- onModalButtonClick,
28
- } = props;
29
-
30
- const bottomLinkLabel = bottomLink?.buttonLabel ?? bottomLink?.label;
31
-
32
- return (
33
- <div className="component-container p-5 lg:h-[724px] lg:p-0">
34
- <div
35
- className={cx(
36
- "primary-hero-container mx-auto flex flex-col sm:items-center sm:text-center lg:h-full lg:max-w-120 lg:flex-row lg:items-center lg:justify-between lg:gap-4 lg:px-4 lg:text-left"
37
- )}
38
- >
39
- {/* Left column: navy background, headline, body, address, button, link */}
40
- <div className={cx("relative flex flex-col text-white sm:w-[485px]")}>
41
- <div className="flex flex-col gap-5 lg:gap-6">
42
- {title && (
43
- <Text
44
- as={showAsHeading ? "h1" : "h2"}
45
- className="heading2 lg:heading1"
46
- >
47
- {title}
48
- </Text>
49
- )}
50
- {subTitle && (
51
- <Text as="p" className="subheading3 lg:subheading1">
52
- {subTitle}
53
- </Text>
54
- )}
55
-
56
- {/* price callout */}
57
- {price ? (
58
- <div className="flex sm:justify-center sm:text-left lg:justify-start">
59
- <div className="mr-2 mt-0.5">
60
- {priceCallout
61
- ? priceCallout.split("|").map((line, index) => (
62
- <Text key={index} as="p" className="body2">
63
- {line}
64
- </Text>
65
- ))
66
- : null}
67
- </div>
68
- <div className="flex">
69
- <Text as="p" className="subheading1 mt-0.5">
70
- $
71
- </Text>
72
- <Text as="p" className="subheading5">
73
- {price}
74
- </Text>
75
- {priceSuffix ? (
76
- <Text as="p" className="subheading1 mt-0.5">
77
- {priceSuffix}
78
- </Text>
79
- ) : null}
80
- </div>
81
- </div>
82
- ) : null}
83
-
84
- {/* checklist */}
85
- {checklist && (
86
- <Checklist
87
- listItemClassName="text-white body2 text-left"
88
- items={checklist.map(item => item.title)}
89
- />
90
- )}
91
-
92
- {/* CTA section */}
93
- <div className="flex flex-col gap-3">
94
- {/* desktop CTA */}
95
- {primaryCta1 && (
96
- <div className={cx("hidden md:flex md:flex-col")}>
97
- <Button
98
- {...primaryCta1}
99
- renderCheckPlans={renderCheckPlans}
100
- onModalButtonClick={onModalButtonClick}
101
- />
102
- </div>
103
- )}
104
-
105
- {secondaryCtaPrefix || secondaryCta ? (
106
- <div className="hidden md:flex">
107
- {secondaryCtaPrefix && (
108
- <Text as="span" className="body2 mr-1">
109
- {secondaryCtaPrefix}
110
- </Text>
111
- )}
112
- {secondaryCta && (
113
- <Button
114
- linkClassName="body2 text-text-inverse"
115
- onModalButtonClick={onModalButtonClick}
116
- {...secondaryCta}
117
- />
118
- )}
119
- </div>
120
- ) : null}
121
-
122
- {/* desktop bottom link */}
123
- {bottomLink && (bottomLinkLabel || bottomLink?.href) && (
124
- <div className="hidden md:block">
125
- <Button
126
- {...bottomLink}
127
- linkClassName="text-footnote text-white"
128
- onModalButtonClick={onModalButtonClick}
129
- />
130
- </div>
131
- )}
132
-
133
- {pricingDescriptionDisclaimer ? (
134
- <Text as="p" className="body3 hidden md:block">
135
- {pricingDescriptionDisclaimer}
136
- </Text>
137
- ) : null}
138
- </div>
139
- </div>
140
- </div>
141
-
142
- {/* mobile hero image and bottom link */}
143
- <div className="lg:hidden">
144
- <div className={"relative my-8"}>
145
- {badgeImage ? (
146
- <NextImage
147
- src={badgeImage}
148
- alt={"Badge"}
149
- className="absolute left-5 top-5 aspect-square w-26 object-cover object-center"
150
- width={100}
151
- height={100}
152
- loading="eager"
153
- />
154
- ) : null}
155
- {carouselImages && carouselImages[0] ? (
156
- <NextImage
157
- src={carouselImages[0]}
158
- alt={"Hero"}
159
- className="aspect-[1.71:1] sm:aspect-[1.41:1] w-full rounded-[40px] object-cover object-center sm:h-[420px]"
160
- width={350}
161
- height={205}
162
- loading="eager"
163
- />
164
- ) : null}
165
- </div>
166
-
167
- {bottomLink && (bottomLinkLabel || bottomLink?.href) && (
168
- <div className="md:hidden">
169
- <Button
170
- {...bottomLink}
171
- onModalButtonClick={onModalButtonClick}
172
- linkClassName="body3 text-white"
173
- />
174
- </div>
175
- )}
176
-
177
- {pricingDescriptionDisclaimer ? (
178
- <Text as="p" className="body3 md:hidden">
179
- {pricingDescriptionDisclaimer}
180
- </Text>
181
- ) : null}
182
-
183
- {secondaryCtaPrefix || secondaryCta ? (
184
- <div className="flex md:hidden">
185
- {secondaryCtaPrefix && (
186
- <Text as="span" className="body2 mr-1">
187
- {secondaryCtaPrefix}
188
- </Text>
189
- )}
190
- {secondaryCta && (
191
- <Button
192
- {...secondaryCta}
193
- onModalButtonClick={onModalButtonClick}
194
- linkClassName="text-white"
195
- />
196
- )}
197
- </div>
198
- ) : null}
199
- </div>
200
-
201
- {/* Right column: bright blue background, diagonal top edge, hero image */}
202
- <div className={cx("relative hidden lg:block")}>
203
- {badgeImage ? (
204
- <NextImage
205
- src={badgeImage}
206
- alt={"Badge"}
207
- className="absolute -left-26 top-18 aspect-square w-52 object-cover object-center"
208
- width={200}
209
- height={200}
210
- loading="eager"
211
- />
212
- ) : null}
213
- {carouselImages && carouselImages[0] ? (
214
- <NextImage
215
- src={carouselImages[0]}
216
- alt={"Hero"}
217
- className="aspect-square rounded-[40px] object-cover object-center"
218
- width={600}
219
- height={600}
220
- loading="eager"
221
- />
222
- ) : null}
223
- </div>
224
- </div>
225
- </div>
226
- );
227
- };
228
-
229
- export default PrimaryHero;
1
+ import React from "react";
2
+ import { PrimaryHeroProps } from "./types";
3
+
4
+ import { Checklist } from "@shared/components/checklist";
5
+ import { NextImage } from "@shared/components/next-image";
6
+ import { Text } from "@shared/components/text";
7
+ import { Button } from "@shared/contentful/blocks/button";
8
+ import { cx } from "@shared/utils";
9
+
10
+ export const PrimaryHero: React.FC<PrimaryHeroProps> = props => {
11
+ const {
12
+ title,
13
+ showAsHeading,
14
+ subTitle,
15
+ primaryCta1,
16
+ carouselImages,
17
+ bottomLink,
18
+ price,
19
+ priceCallout,
20
+ priceSuffix,
21
+ checklist,
22
+ renderCheckPlans,
23
+ badgeImage,
24
+ pricingDescriptionDisclaimer,
25
+ secondaryCta,
26
+ secondaryCtaPrefix,
27
+ onModalButtonClick,
28
+ } = props;
29
+
30
+ const bottomLinkLabel = bottomLink?.buttonLabel ?? bottomLink?.label;
31
+
32
+ return (
33
+ <div className="component-container p-5 lg:h-[724px] lg:p-0">
34
+ <div
35
+ className={cx(
36
+ "primary-hero-container mx-auto flex flex-col sm:items-center sm:text-center lg:h-full lg:max-w-120 lg:flex-row lg:items-center lg:justify-between lg:gap-4 lg:px-4 lg:text-left"
37
+ )}
38
+ >
39
+ {/* Left column: navy background, headline, body, address, button, link */}
40
+ <div className={cx("relative flex flex-col text-white sm:w-[485px]")}>
41
+ <div className="flex flex-col gap-5 lg:gap-6">
42
+ {title && (
43
+ <Text
44
+ as={showAsHeading ? "h1" : "h2"}
45
+ className="heading2 lg:heading1"
46
+ >
47
+ {title}
48
+ </Text>
49
+ )}
50
+ {subTitle && (
51
+ <Text as="p" className="subheading3 lg:subheading1">
52
+ {subTitle}
53
+ </Text>
54
+ )}
55
+
56
+ {/* price callout */}
57
+ {price ? (
58
+ <div className="flex sm:justify-center sm:text-left lg:justify-start">
59
+ <div className="mr-2 mt-0.5">
60
+ {priceCallout
61
+ ? priceCallout.split("|").map((line, index) => (
62
+ <Text key={index} as="p" className="body2">
63
+ {line}
64
+ </Text>
65
+ ))
66
+ : null}
67
+ </div>
68
+ <div className="flex">
69
+ <Text as="p" className="subheading1 mt-0.5">
70
+ $
71
+ </Text>
72
+ <Text as="p" className="subheading5">
73
+ {price}
74
+ </Text>
75
+ {priceSuffix ? (
76
+ <Text as="p" className="subheading1 mt-0.5">
77
+ {priceSuffix}
78
+ </Text>
79
+ ) : null}
80
+ </div>
81
+ </div>
82
+ ) : null}
83
+
84
+ {/* checklist */}
85
+ {checklist && (
86
+ <Checklist
87
+ listItemClassName="text-white body2 text-left"
88
+ items={checklist.map(item => item.title)}
89
+ />
90
+ )}
91
+
92
+ {/* CTA section */}
93
+ <div className="flex flex-col gap-3">
94
+ {/* desktop CTA */}
95
+ {primaryCta1 && (
96
+ <div className={cx("hidden md:flex md:flex-col")}>
97
+ <Button
98
+ {...primaryCta1}
99
+ renderCheckPlans={renderCheckPlans}
100
+ onModalButtonClick={onModalButtonClick}
101
+ />
102
+ </div>
103
+ )}
104
+
105
+ {secondaryCtaPrefix || secondaryCta ? (
106
+ <div className="hidden md:flex">
107
+ {secondaryCtaPrefix && (
108
+ <Text as="span" className="body2 mr-1">
109
+ {secondaryCtaPrefix}
110
+ </Text>
111
+ )}
112
+ {secondaryCta && (
113
+ <Button
114
+ linkClassName="body2 text-text-inverse"
115
+ onModalButtonClick={onModalButtonClick}
116
+ {...secondaryCta}
117
+ />
118
+ )}
119
+ </div>
120
+ ) : null}
121
+
122
+ {/* desktop bottom link */}
123
+ {bottomLink && (bottomLinkLabel || bottomLink?.href) && (
124
+ <div className="hidden md:block">
125
+ <Button
126
+ {...bottomLink}
127
+ linkClassName="text-footnote text-white"
128
+ onModalButtonClick={onModalButtonClick}
129
+ />
130
+ </div>
131
+ )}
132
+
133
+ {pricingDescriptionDisclaimer ? (
134
+ <Text as="p" className="body3 hidden md:block">
135
+ {pricingDescriptionDisclaimer}
136
+ </Text>
137
+ ) : null}
138
+ </div>
139
+ </div>
140
+ </div>
141
+
142
+ {/* mobile hero image and bottom link */}
143
+ <div className="lg:hidden">
144
+ <div className={"relative my-8"}>
145
+ {badgeImage ? (
146
+ <NextImage
147
+ src={badgeImage}
148
+ alt={"Badge"}
149
+ className="absolute left-5 top-5 aspect-square w-26 object-cover object-center"
150
+ width={104}
151
+ height={104}
152
+ quality={90}
153
+ loading="eager"
154
+ />
155
+ ) : null}
156
+ {carouselImages && carouselImages[0] ? (
157
+ <NextImage
158
+ src={carouselImages[0]}
159
+ alt={"Hero"}
160
+ className="aspect-[1.71:1] sm:aspect-[1.41:1] w-full rounded-[40px] object-cover object-center sm:h-[420px]"
161
+ width={1024}
162
+ height={600}
163
+ sizes="100vw"
164
+ quality={90}
165
+ loading="eager"
166
+ />
167
+ ) : null}
168
+ </div>
169
+
170
+ {bottomLink && (bottomLinkLabel || bottomLink?.href) && (
171
+ <div className="md:hidden">
172
+ <Button
173
+ {...bottomLink}
174
+ onModalButtonClick={onModalButtonClick}
175
+ linkClassName="body3 text-white"
176
+ />
177
+ </div>
178
+ )}
179
+
180
+ {pricingDescriptionDisclaimer ? (
181
+ <Text as="p" className="body3 md:hidden">
182
+ {pricingDescriptionDisclaimer}
183
+ </Text>
184
+ ) : null}
185
+
186
+ {secondaryCtaPrefix || secondaryCta ? (
187
+ <div className="flex md:hidden">
188
+ {secondaryCtaPrefix && (
189
+ <Text as="span" className="body2 mr-1">
190
+ {secondaryCtaPrefix}
191
+ </Text>
192
+ )}
193
+ {secondaryCta && (
194
+ <Button
195
+ {...secondaryCta}
196
+ onModalButtonClick={onModalButtonClick}
197
+ linkClassName="text-white"
198
+ />
199
+ )}
200
+ </div>
201
+ ) : null}
202
+ </div>
203
+
204
+ {/* Right column: bright blue background, diagonal top edge, hero image */}
205
+ <div className={cx("relative hidden lg:block")}>
206
+ {badgeImage ? (
207
+ <NextImage
208
+ src={badgeImage}
209
+ alt={"Badge"}
210
+ className="absolute -left-26 top-18 aspect-square w-52 object-cover object-center"
211
+ width={208}
212
+ height={208}
213
+ quality={90}
214
+ loading="eager"
215
+ />
216
+ ) : null}
217
+ {carouselImages && carouselImages[0] ? (
218
+ <NextImage
219
+ src={carouselImages[0]}
220
+ alt={"Hero"}
221
+ className="aspect-square rounded-[40px] object-cover object-center"
222
+ width={600}
223
+ height={600}
224
+ quality={90}
225
+ loading="eager"
226
+ />
227
+ ) : null}
228
+ </div>
229
+ </div>
230
+ </div>
231
+ );
232
+ };
233
+
234
+ export default PrimaryHero;
@@ -1,35 +1,35 @@
1
- import React from "react";
2
-
3
- import { CheckPlansProps } from "@shared/types/micro-components";
4
-
5
- export type PrimaryHeroProps = {
6
- title: string;
7
- showAsHeading?: boolean;
8
- subTitle?: string;
9
- price?: string;
10
- priceSuffix?: string;
11
- priceCallout?: string;
12
- pricingDescription?: string;
13
- pricingDescriptionDisclaimer?: string;
14
- checklist?: {
15
- title: string;
16
- iconUrl?: string;
17
- anchorId?: string;
18
- }[];
19
- logoLockup?: string;
20
- checkAvailabilityEyebrow?: string;
21
- primaryCtaPrefix1?: string;
22
- primaryCtaPrefix2?: string;
23
- primaryCta1?: any;
24
- primaryCta2?: any;
25
- secondaryCtaPrefix?: string;
26
- secondaryCta?: any;
27
- bottomLink?: any;
28
- carouselImages?: string[];
29
- squareImage?: boolean;
30
- badgeImage?: string;
31
- textColor?: string;
32
- maxWidth?: boolean;
33
- renderCheckPlans?: (overrides?: CheckPlansProps) => React.ReactNode;
34
- onModalButtonClick?: (id?: string) => void;
35
- };
1
+ import React from "react";
2
+
3
+ import { CheckPlansProps } from "@shared/types/micro-components";
4
+
5
+ export type PrimaryHeroProps = {
6
+ title: string;
7
+ showAsHeading?: boolean;
8
+ subTitle?: string;
9
+ price?: string;
10
+ priceSuffix?: string;
11
+ priceCallout?: string;
12
+ pricingDescription?: string;
13
+ pricingDescriptionDisclaimer?: string;
14
+ checklist?: {
15
+ title: string;
16
+ iconUrl?: string;
17
+ anchorId?: string;
18
+ }[];
19
+ logoLockup?: string;
20
+ checkAvailabilityEyebrow?: string;
21
+ primaryCtaPrefix1?: string;
22
+ primaryCtaPrefix2?: string;
23
+ primaryCta1?: any;
24
+ primaryCta2?: any;
25
+ secondaryCtaPrefix?: string;
26
+ secondaryCta?: any;
27
+ bottomLink?: any;
28
+ carouselImages?: string[];
29
+ squareImage?: boolean;
30
+ badgeImage?: string;
31
+ textColor?: string;
32
+ maxWidth?: boolean;
33
+ renderCheckPlans?: (overrides?: CheckPlansProps) => React.ReactNode;
34
+ onModalButtonClick?: (id?: string) => void;
35
+ };