@windstream/react-shared-components 0.1.20 → 0.1.22

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 (161) hide show
  1. package/README.md +635 -635
  2. package/dist/contentful/index.d.ts +1 -0
  3. package/dist/contentful/index.esm.js +3 -3
  4. package/dist/contentful/index.esm.js.map +1 -1
  5. package/dist/contentful/index.js +2 -2
  6. package/dist/contentful/index.js.map +1 -1
  7. package/dist/core.d.ts +5 -2
  8. package/dist/index.d.ts +5 -2
  9. package/dist/index.esm.js +6 -6
  10. package/dist/index.esm.js.map +1 -1
  11. package/dist/index.js +6 -6
  12. package/dist/index.js.map +1 -1
  13. package/package.json +182 -182
  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 -41
  18. package/src/components/alert-card/types.ts +13 -13
  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/index.tsx +14 -2
  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 +322 -322
  56. package/src/components/material-icon/constants.ts +98 -98
  57. package/src/components/material-icon/index.tsx +47 -47
  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 +38 -31
  61. package/src/components/modal/types.ts +24 -24
  62. package/src/components/next-image/index.tsx +54 -54
  63. package/src/components/next-image/types.ts +1 -1
  64. package/src/components/pagination/index.tsx +100 -100
  65. package/src/components/pagination/types.ts +6 -6
  66. package/src/components/radio-button/RadioButton.stories.tsx +307 -307
  67. package/src/components/radio-button/index.tsx +75 -75
  68. package/src/components/radio-button/types.ts +21 -21
  69. package/src/components/see-more/SeeMore.stories.tsx +181 -181
  70. package/src/components/see-more/index.tsx +44 -44
  71. package/src/components/see-more/types.ts +4 -4
  72. package/src/components/select/Select.stories.tsx +411 -411
  73. package/src/components/select/index.tsx +155 -155
  74. package/src/components/select/types.ts +36 -36
  75. package/src/components/select-plan-button/SelectPlanButton.stories.tsx +184 -184
  76. package/src/components/select-plan-button/index.tsx +57 -57
  77. package/src/components/select-plan-button/types.ts +14 -14
  78. package/src/components/skeleton/Skeleton.stories.tsx +179 -179
  79. package/src/components/skeleton/index.tsx +61 -61
  80. package/src/components/skeleton/types.ts +4 -4
  81. package/src/components/spinner/Spinner.stories.tsx +335 -335
  82. package/src/components/spinner/index.tsx +44 -44
  83. package/src/components/spinner/types.ts +5 -5
  84. package/src/components/text/Text.stories.tsx +321 -321
  85. package/src/components/text/index.tsx +25 -25
  86. package/src/components/text/types.ts +45 -45
  87. package/src/components/tooltip/Tooltip.stories.tsx +219 -219
  88. package/src/components/tooltip/index.tsx +74 -74
  89. package/src/components/tooltip/types.ts +7 -7
  90. package/src/components/view-cart-button/ViewCartButton.stories.tsx +252 -252
  91. package/src/components/view-cart-button/index.tsx +42 -42
  92. package/src/components/view-cart-button/types.ts +5 -5
  93. package/src/contentful/blocks/address-input-banner/index.tsx +52 -52
  94. package/src/contentful/blocks/address-input-banner/types.ts +14 -14
  95. package/src/contentful/blocks/blogs-grid/index.tsx +134 -129
  96. package/src/contentful/blocks/blogs-grid/types.ts +26 -26
  97. package/src/contentful/blocks/button/Button.stories.tsx +40 -40
  98. package/src/contentful/blocks/button/index.tsx +121 -121
  99. package/src/contentful/blocks/button/types.ts +36 -36
  100. package/src/contentful/blocks/callout/Callout.stories.tsx +23 -23
  101. package/src/contentful/blocks/callout/index.tsx +86 -86
  102. package/src/contentful/blocks/callout/types.ts +15 -15
  103. package/src/contentful/blocks/cards/Cards.stories.tsx +23 -23
  104. package/src/contentful/blocks/cards/blog-card/index.tsx +109 -104
  105. package/src/contentful/blocks/cards/blog-card/types.ts +16 -15
  106. package/src/contentful/blocks/cards/index.tsx +13 -13
  107. package/src/contentful/blocks/cards/product-card/index.tsx +208 -208
  108. package/src/contentful/blocks/cards/product-card/types.ts +28 -28
  109. package/src/contentful/blocks/cards/testimonial-card/index.tsx +88 -88
  110. package/src/contentful/blocks/cards/testimonial-card/types.tsx +12 -12
  111. package/src/contentful/blocks/cards/types.ts +1 -1
  112. package/src/contentful/blocks/carousel/Carousel.stories.tsx +23 -23
  113. package/src/contentful/blocks/carousel/helper.tsx +356 -356
  114. package/src/contentful/blocks/carousel/index.tsx +73 -73
  115. package/src/contentful/blocks/carousel/types.ts +143 -143
  116. package/src/contentful/blocks/cta-callout/CtaCallout.stories.tsx +46 -46
  117. package/src/contentful/blocks/cta-callout/index.tsx +60 -60
  118. package/src/contentful/blocks/cta-callout/types.ts +26 -26
  119. package/src/contentful/blocks/dynamic-tabs/index.tsx +204 -204
  120. package/src/contentful/blocks/dynamic-tabs/types.ts +21 -21
  121. package/src/contentful/blocks/find-kinetic/index.tsx +130 -130
  122. package/src/contentful/blocks/floating-banner/FloatingBanner.stories.tsx +34 -34
  123. package/src/contentful/blocks/floating-banner/index.tsx +97 -97
  124. package/src/contentful/blocks/floating-banner/types.ts +22 -22
  125. package/src/contentful/blocks/footer/Footer.stories.tsx +30 -30
  126. package/src/contentful/blocks/image-promo-bar/ImagePromoBar.stories.tsx +23 -23
  127. package/src/contentful/blocks/image-promo-bar/helper.tsx +28 -28
  128. package/src/contentful/blocks/image-promo-bar/types.ts +44 -44
  129. package/src/contentful/blocks/image-promo-bar/vimeo-embed.tsx +93 -93
  130. package/src/contentful/blocks/image-promo-bar/youtube-embed.tsx +46 -46
  131. package/src/contentful/blocks/modal/constants.ts +53 -53
  132. package/src/contentful/blocks/modal/index.tsx +91 -91
  133. package/src/contentful/blocks/modal/types.ts +12 -12
  134. package/src/contentful/blocks/navigation/desktop-link-groups.tsx/index.tsx +113 -113
  135. package/src/contentful/blocks/navigation/index.tsx +394 -394
  136. package/src/contentful/blocks/navigation/mobile-link-groups.tsx/index.tsx +82 -82
  137. package/src/contentful/blocks/navigation/types.ts +41 -41
  138. package/src/contentful/blocks/primary-hero/PrimaryHero.stories.tsx +23 -23
  139. package/src/contentful/blocks/primary-hero/index.tsx +234 -234
  140. package/src/contentful/blocks/primary-hero/types.ts +35 -35
  141. package/src/contentful/blocks/search-block/index.tsx +90 -90
  142. package/src/contentful/blocks/shape-background-wrapper/ShapeBackgroundWrapper.stories.tsx +26 -26
  143. package/src/contentful/blocks/shape-background-wrapper/index.tsx +124 -124
  144. package/src/contentful/blocks/shape-background-wrapper/types.ts +36 -36
  145. package/src/contentful/blocks/text/Text.stories.tsx +23 -23
  146. package/src/contentful/blocks/text/index.tsx +12 -12
  147. package/src/contentful/blocks/text/types.ts +1 -1
  148. package/src/contentful/index.ts +75 -75
  149. package/src/hooks/use-body-scroll-lock.ts +34 -34
  150. package/src/hooks/use-outside-click.ts +17 -17
  151. package/src/index.ts +96 -96
  152. package/src/next/index.ts +5 -5
  153. package/src/setupTests.ts +46 -46
  154. package/src/stories/DocsTemplate.tsx +24 -24
  155. package/src/styles/globals.css +343 -343
  156. package/src/types/global.d.ts +9 -9
  157. package/src/types/micro-components.ts +99 -99
  158. package/src/types/utm.ts +49 -49
  159. package/src/utils/cookie.ts +58 -58
  160. package/src/utils/index.ts +65 -65
  161. package/src/utils/utm.ts +221 -221
@@ -1,234 +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={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
+ 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
+ };