@windstream/react-shared-components 0.1.97 → 0.1.99
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.
- package/dist/contentful/index.d.ts +5 -0
- package/dist/contentful/index.esm.js +3 -3
- package/dist/contentful/index.esm.js.map +1 -1
- package/dist/contentful/index.js +3 -3
- package/dist/contentful/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.esm.js +13 -5
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +13 -5
- package/dist/index.js.map +1 -1
- package/dist/next/index.esm.js +2 -2
- package/dist/next/index.esm.js.map +1 -1
- package/dist/next/index.js +2 -2
- package/dist/next/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/utils/index.esm.js +1 -1
- package/dist/utils/index.esm.js.map +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/brand-button/index.tsx +1 -1
- package/src/contentful/blocks/breadcrumbs/index.tsx +2 -2
- package/src/contentful/blocks/button/index.tsx +24 -3
- package/src/contentful/blocks/button/types.ts +1 -0
- package/src/contentful/blocks/email-input-block/index.tsx +16 -7
- package/src/contentful/blocks/find-kinetic/index.tsx +61 -35
- package/src/contentful/blocks/find-kinetic/types.ts +1 -0
- package/src/contentful/blocks/image-promo-bar/helper.tsx +1 -1
- package/src/contentful/blocks/image-promo-bar/index.tsx +38 -10
- package/src/contentful/blocks/image-promo-bar/types.ts +3 -0
- package/src/contentful/blocks/image-promo-bar/youtube-embed.tsx +1 -1
- package/src/contentful/blocks/navigation/desktop-link-groups.tsx/index.tsx +139 -141
- package/src/contentful/blocks/navigation/index.tsx +571 -569
- package/src/contentful/blocks/navigation/mobile-link-groups.tsx/index.tsx +82 -82
- package/src/contentful/blocks/shape-background-wrapper/index.tsx +5 -2
- package/src/hooks/contentful/use-contentful-rich-text.tsx +6 -2
|
@@ -26,6 +26,7 @@ export const Button: React.FC<ButtonProps> = props => {
|
|
|
26
26
|
buttonClassName,
|
|
27
27
|
clickToOpen,
|
|
28
28
|
tabmodalNameToOpen,
|
|
29
|
+
idNameToOpen,
|
|
29
30
|
onModalButtonClick,
|
|
30
31
|
onClick,
|
|
31
32
|
iconName,
|
|
@@ -36,7 +37,10 @@ export const Button: React.FC<ButtonProps> = props => {
|
|
|
36
37
|
...rest
|
|
37
38
|
} = props;
|
|
38
39
|
|
|
39
|
-
if (
|
|
40
|
+
if (
|
|
41
|
+
preDefinedFunctionExecution === "check availability" &&
|
|
42
|
+
renderCheckPlans
|
|
43
|
+
) {
|
|
40
44
|
const checkPlansNode = renderCheckPlans?.({
|
|
41
45
|
ctaText: buttonLabel,
|
|
42
46
|
buttonVariant: buttonVariant,
|
|
@@ -46,10 +50,26 @@ export const Button: React.FC<ButtonProps> = props => {
|
|
|
46
50
|
return checkPlansNode;
|
|
47
51
|
}
|
|
48
52
|
|
|
53
|
+
function handleClickId() {
|
|
54
|
+
if (clickToOpen === "clickId" && idNameToOpen) {
|
|
55
|
+
const element = document.getElementById(idNameToOpen);
|
|
56
|
+
if (element) {
|
|
57
|
+
element.scrollIntoView({
|
|
58
|
+
behavior: "smooth",
|
|
59
|
+
block: "start",
|
|
60
|
+
});
|
|
61
|
+
element.click?.();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
49
66
|
function handleModalClick() {
|
|
50
67
|
if (clickToOpen === "modal") {
|
|
51
68
|
onModalButtonClick?.(tabmodalNameToOpen);
|
|
52
69
|
}
|
|
70
|
+
if (clickToOpen === "clickId") {
|
|
71
|
+
handleClickId();
|
|
72
|
+
}
|
|
53
73
|
}
|
|
54
74
|
|
|
55
75
|
function linkClick(event: React.MouseEvent<HTMLAnchorElement>) {
|
|
@@ -65,8 +85,9 @@ export const Button: React.FC<ButtonProps> = props => {
|
|
|
65
85
|
// Resolve the final href — merge non-UTM query params when preserveQueryParameters is true
|
|
66
86
|
const currentSearch =
|
|
67
87
|
typeof window !== "undefined" ? window.location.search : "";
|
|
68
|
-
const resolvedHref =
|
|
69
|
-
|
|
88
|
+
const resolvedHref = preDefinedFunctionExecution
|
|
89
|
+
? undefined
|
|
90
|
+
: href && preserveQueryParameters && currentSearch
|
|
70
91
|
? buildPreservedQueryHref(href, currentSearch)
|
|
71
92
|
: href;
|
|
72
93
|
|
|
@@ -24,6 +24,7 @@ export type ButtonProps = {
|
|
|
24
24
|
preserveQueryParameters?: boolean;
|
|
25
25
|
clickToOpen?: string;
|
|
26
26
|
tabmodalNameToOpen?: string;
|
|
27
|
+
idNameToOpen?: string;
|
|
27
28
|
preDefinedFunctionExecution?: string;
|
|
28
29
|
renderCheckPlans?: (overrides?: CheckPlansProps) => React.ReactNode;
|
|
29
30
|
linkClassName?: string;
|
|
@@ -39,18 +39,20 @@ export const EmailInputBlock: React.FC<EmailInputBlockProps> = props => {
|
|
|
39
39
|
const [emailError, setEmailError] = useState("");
|
|
40
40
|
|
|
41
41
|
const validateEmail = (email: string) => {
|
|
42
|
-
const emailRegex = /^[
|
|
42
|
+
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
|
|
43
43
|
return emailRegex.test(email);
|
|
44
44
|
};
|
|
45
45
|
|
|
46
46
|
const handleOnSubmit = () => {
|
|
47
|
-
if (
|
|
47
|
+
if (!email.trim()) {
|
|
48
|
+
setEmailError("Email is required");
|
|
49
|
+
} else if (!validateEmail(email)) {
|
|
50
|
+
setEmailError("Invalid email address");
|
|
51
|
+
} else {
|
|
48
52
|
onSubmit({ email });
|
|
49
53
|
setEmail("");
|
|
50
54
|
setFormSubmitted(true);
|
|
51
55
|
setEmailError("");
|
|
52
|
-
} else {
|
|
53
|
-
setEmailError("Please enter a valid email address.");
|
|
54
56
|
}
|
|
55
57
|
};
|
|
56
58
|
|
|
@@ -84,9 +86,16 @@ export const EmailInputBlock: React.FC<EmailInputBlockProps> = props => {
|
|
|
84
86
|
placeholder={inputPlaceholder}
|
|
85
87
|
value={email}
|
|
86
88
|
onChange={e => {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
+
const value = e.target.value;
|
|
90
|
+
setEmail(value);
|
|
89
91
|
if (formSubmitted) setFormSubmitted(false);
|
|
92
|
+
if (!value.trim()) {
|
|
93
|
+
setEmailError("Email is required");
|
|
94
|
+
} else if (!validateEmail(value)) {
|
|
95
|
+
setEmailError("Invalid email address");
|
|
96
|
+
} else {
|
|
97
|
+
setEmailError("");
|
|
98
|
+
}
|
|
90
99
|
}}
|
|
91
100
|
className="w-full flex-grow bg-transparent !pl-4 pr-6 py-3 text-[1rem] leading-none md:text-base font-normal text-text outline-none placeholder:input-text-placeholder md:py-4"
|
|
92
101
|
/>
|
|
@@ -99,7 +108,7 @@ export const EmailInputBlock: React.FC<EmailInputBlockProps> = props => {
|
|
|
99
108
|
/>
|
|
100
109
|
</div>
|
|
101
110
|
{emailError && (
|
|
102
|
-
<p className="mt-2 text-label4 font-semibold text-text-
|
|
111
|
+
<p className="mt-2 text-label4 font-semibold text-text-inverse">
|
|
103
112
|
{emailError}
|
|
104
113
|
</p>
|
|
105
114
|
)}
|
|
@@ -16,6 +16,7 @@ export const FindKinetic: React.FC<FindKineticProps> = ({
|
|
|
16
16
|
title,
|
|
17
17
|
color = "dark",
|
|
18
18
|
maxWidth = true,
|
|
19
|
+
columns = 3,
|
|
19
20
|
}) => {
|
|
20
21
|
const bgColorClasses: Record<ThemeKey, string> = {
|
|
21
22
|
blue: "bg-[#07B2E2]",
|
|
@@ -42,7 +43,7 @@ export const FindKinetic: React.FC<FindKineticProps> = ({
|
|
|
42
43
|
{title && (
|
|
43
44
|
<Text
|
|
44
45
|
as={enableHeading ? "h1" : "h2"}
|
|
45
|
-
className="heading2 md:heading1
|
|
46
|
+
className="heading2 md:heading1 text-center"
|
|
46
47
|
>
|
|
47
48
|
{title}
|
|
48
49
|
</Text>
|
|
@@ -50,16 +51,16 @@ export const FindKinetic: React.FC<FindKineticProps> = ({
|
|
|
50
51
|
{subTitle && (
|
|
51
52
|
<Text
|
|
52
53
|
as={enableHeading ? "h2" : "h3"}
|
|
53
|
-
className="
|
|
54
|
+
className="subheading1 mt-4 text-center"
|
|
54
55
|
>
|
|
55
56
|
{subTitle}
|
|
56
57
|
</Text>
|
|
57
58
|
)}
|
|
58
59
|
|
|
59
|
-
<div className="mt-
|
|
60
|
-
<div className="flex flex-col items-start gap-10 self-stretch xl:flex-[1_0_0]">
|
|
60
|
+
<div className="mt-2 flex flex-col items-center xl:mt-8 xl:flex-row xl:gap-10">
|
|
61
|
+
<div className="flex w-full flex-col items-start gap-10 self-stretch xl:flex-[1_0_0]">
|
|
61
62
|
{description && (
|
|
62
|
-
<Text as="p" className=
|
|
63
|
+
<Text as="p" className={`body1 w-full ${!image ? "text-center" : ""}`}>
|
|
63
64
|
{description}
|
|
64
65
|
</Text>
|
|
65
66
|
)}
|
|
@@ -72,60 +73,85 @@ export const FindKinetic: React.FC<FindKineticProps> = ({
|
|
|
72
73
|
);
|
|
73
74
|
const numColumns = 2;
|
|
74
75
|
const numRows = Math.ceil(sortedList.length / numColumns);
|
|
75
|
-
const rearranged = [];
|
|
76
|
+
const rearranged: (typeof sortedList[0] | null)[] = [];
|
|
76
77
|
for (let row = 0; row < numRows; row++) {
|
|
77
78
|
for (let col = 0; col < numColumns; col++) {
|
|
78
79
|
const index = col * numRows + row;
|
|
79
|
-
|
|
80
|
-
rearranged.push(sortedList[index]);
|
|
81
|
-
}
|
|
80
|
+
rearranged.push(index < sortedList.length ? sortedList[index] : null);
|
|
82
81
|
}
|
|
83
82
|
}
|
|
84
|
-
return rearranged.map((item, index: number) =>
|
|
85
|
-
|
|
86
|
-
<
|
|
87
|
-
href={getLocationHref(item.code)}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
83
|
+
return rearranged.map((item, index: number) =>
|
|
84
|
+
item ? (
|
|
85
|
+
<li key={`item-list-2-${index}`}>
|
|
86
|
+
<Link href={getLocationHref(item.code)} className="label1">
|
|
87
|
+
{item.name}
|
|
88
|
+
</Link>
|
|
89
|
+
</li>
|
|
90
|
+
) : (
|
|
91
|
+
<li key={`item-list-2-${index}`} aria-hidden="true" />
|
|
92
|
+
)
|
|
93
|
+
);
|
|
94
94
|
})()}
|
|
95
95
|
</ul>
|
|
96
|
-
<ul className="hidden gap-x-6 gap-y-5 md:grid md:grid-cols-3">
|
|
96
|
+
<ul className="hidden w-full gap-x-6 gap-y-5 md:grid md:grid-cols-3 xl:hidden">
|
|
97
97
|
{(() => {
|
|
98
98
|
const sortedList = [...list].sort((a, b) =>
|
|
99
99
|
a.name.localeCompare(b.name)
|
|
100
100
|
);
|
|
101
101
|
const numColumns = 3;
|
|
102
102
|
const numRows = Math.ceil(sortedList.length / numColumns);
|
|
103
|
-
const rearranged = [];
|
|
103
|
+
const rearranged: (typeof sortedList[0] | null)[] = [];
|
|
104
104
|
for (let row = 0; row < numRows; row++) {
|
|
105
105
|
for (let col = 0; col < numColumns; col++) {
|
|
106
106
|
const index = col * numRows + row;
|
|
107
|
-
|
|
108
|
-
rearranged.push(sortedList[index]);
|
|
109
|
-
}
|
|
107
|
+
rearranged.push(index < sortedList.length ? sortedList[index] : null);
|
|
110
108
|
}
|
|
111
109
|
}
|
|
112
|
-
return rearranged.map((item, index: number) =>
|
|
113
|
-
|
|
114
|
-
<
|
|
115
|
-
href={getLocationHref(item.code)}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
110
|
+
return rearranged.map((item, index: number) =>
|
|
111
|
+
item ? (
|
|
112
|
+
<li key={`item-list-md-${index}`}>
|
|
113
|
+
<Link href={getLocationHref(item.code)} className="label1">
|
|
114
|
+
{item.name}
|
|
115
|
+
</Link>
|
|
116
|
+
</li>
|
|
117
|
+
) : (
|
|
118
|
+
<li key={`item-list-md-${index}`} aria-hidden="true" />
|
|
119
|
+
)
|
|
120
|
+
);
|
|
121
|
+
})()}
|
|
122
|
+
</ul>
|
|
123
|
+
<ul className={`hidden w-full gap-x-6 gap-y-5 xl:grid xl:grid-cols-${columns}`}>
|
|
124
|
+
{(() => {
|
|
125
|
+
const sortedList = [...list].sort((a, b) =>
|
|
126
|
+
a.name.localeCompare(b.name)
|
|
127
|
+
);
|
|
128
|
+
const numColumns = columns;
|
|
129
|
+
const numRows = Math.ceil(sortedList.length / numColumns);
|
|
130
|
+
const rearranged: (typeof sortedList[0] | null)[] = [];
|
|
131
|
+
for (let row = 0; row < numRows; row++) {
|
|
132
|
+
for (let col = 0; col < numColumns; col++) {
|
|
133
|
+
const index = col * numRows + row;
|
|
134
|
+
rearranged.push(index < sortedList.length ? sortedList[index] : null);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return rearranged.map((item, index: number) =>
|
|
138
|
+
item ? (
|
|
139
|
+
<li key={`item-list-xl-${index}`}>
|
|
140
|
+
<Link href={getLocationHref(item.code)} className="label1">
|
|
141
|
+
{item.name}
|
|
142
|
+
</Link>
|
|
143
|
+
</li>
|
|
144
|
+
) : (
|
|
145
|
+
<li key={`item-list-xl-${index}`} aria-hidden="true" />
|
|
146
|
+
)
|
|
147
|
+
);
|
|
122
148
|
})()}
|
|
123
149
|
</ul>
|
|
124
150
|
</>
|
|
125
151
|
)}
|
|
126
152
|
</div>
|
|
127
153
|
{image && (
|
|
128
|
-
<aside className="hidden xl:
|
|
154
|
+
<aside className="hidden md:block xl:flex-shrink-0">
|
|
129
155
|
<NextImage width={472} height={100} src={image} alt="image" />
|
|
130
156
|
</aside>
|
|
131
157
|
)}
|
|
@@ -17,7 +17,7 @@ export const PlayButton: React.FC<PlayButtonProps> = ({
|
|
|
17
17
|
name="play_arrow"
|
|
18
18
|
size={72 as any}
|
|
19
19
|
fill={1}
|
|
20
|
-
className={`transition-colors duration-300 ${
|
|
20
|
+
className={`max-w-[72px] transition-colors duration-300 ${
|
|
21
21
|
isOuterHovered
|
|
22
22
|
? "text-text-brand"
|
|
23
23
|
: "text-slate-500 group-hover:text-text-brand"
|
|
@@ -31,7 +31,10 @@ export const ImagePromoBar: React.FC<ImagePromoBarProps> = ({
|
|
|
31
31
|
color = "light",
|
|
32
32
|
imageWidth = 660,
|
|
33
33
|
imageHeight = 660,
|
|
34
|
+
useOriginalImageAspectRatio = false,
|
|
35
|
+
isAboveTheFold = false,
|
|
34
36
|
onModalButtonClick,
|
|
37
|
+
onClick,
|
|
35
38
|
renderCheckPlans,
|
|
36
39
|
}) => {
|
|
37
40
|
const [activeVideo, setActiveVideo] = useState("");
|
|
@@ -61,9 +64,9 @@ export const ImagePromoBar: React.FC<ImagePromoBarProps> = ({
|
|
|
61
64
|
const contentVideo = videoLink && videoImage ? embedSelector() : null;
|
|
62
65
|
|
|
63
66
|
return (
|
|
64
|
-
<div className="component-container shared-component-ipb">
|
|
67
|
+
<div className="component-container shared-component-ipb pb-16 pt-16">
|
|
65
68
|
<div
|
|
66
|
-
className={`image-promo-bar-content ${maxWidth ? "max-w-120 xl:mx-auto" : ""}
|
|
69
|
+
className={`image-promo-bar-content ${maxWidth ? "max-w-120 xl:mx-auto" : ""} px-5 pb-8 pt-8 md:px-10`}
|
|
67
70
|
>
|
|
68
71
|
<div
|
|
69
72
|
className={`flex shrink-0 flex-col items-center gap-8 xl:items-stretch xl:gap-10 xl:gap-[126px] ${mediaPosition ? "xl:flex-row-reverse" : "xl:flex-row"}`}
|
|
@@ -113,6 +116,7 @@ export const ImagePromoBar: React.FC<ImagePromoBarProps> = ({
|
|
|
113
116
|
listContainerClassName="mt-0 space-y-0 flex flex-col gap-3"
|
|
114
117
|
/>
|
|
115
118
|
)}
|
|
119
|
+
{ctaDisclaimer && <div>{ctaDisclaimer}</div>}
|
|
116
120
|
{imageLinks.length > 0 && (
|
|
117
121
|
<div className="flex gap-4">
|
|
118
122
|
{/* Image Links Collection */}
|
|
@@ -143,6 +147,7 @@ export const ImagePromoBar: React.FC<ImagePromoBarProps> = ({
|
|
|
143
147
|
size={{ base: "large" }}
|
|
144
148
|
renderCheckPlans={renderCheckPlans}
|
|
145
149
|
onModalButtonClick={onModalButtonClick}
|
|
150
|
+
onClick={(e: React.MouseEvent) => onClick?.(e, "primary")}
|
|
146
151
|
/>
|
|
147
152
|
</div>
|
|
148
153
|
)}
|
|
@@ -154,23 +159,42 @@ export const ImagePromoBar: React.FC<ImagePromoBarProps> = ({
|
|
|
154
159
|
size={{ base: "large" }}
|
|
155
160
|
renderCheckPlans={renderCheckPlans}
|
|
156
161
|
onModalButtonClick={onModalButtonClick}
|
|
162
|
+
onClick={(e: React.MouseEvent) =>
|
|
163
|
+
onClick?.(e, "secondary")
|
|
164
|
+
}
|
|
157
165
|
/>
|
|
158
166
|
</div>
|
|
159
167
|
)}
|
|
160
168
|
</div>
|
|
161
169
|
)}
|
|
162
|
-
{ctaDisclaimer && <div>{ctaDisclaimer}</div>}
|
|
163
170
|
</div>
|
|
164
|
-
<aside className="flex w-full shrink-0 items-center justify-center lg:w-auto">
|
|
171
|
+
<aside className="flex w-full flex-1 shrink-0 items-center justify-center lg:w-auto">
|
|
165
172
|
{/* Media Section */}
|
|
166
173
|
{image && (
|
|
167
|
-
<div
|
|
174
|
+
<div
|
|
175
|
+
className={cx(
|
|
176
|
+
!useOriginalImageAspectRatio
|
|
177
|
+
? "relative aspect-[16/9] w-full overflow-hidden rounded-image lg:h-[486px] xl:aspect-square xl:max-h-[486px] xl:w-[486px]"
|
|
178
|
+
: "overflow-hidden rounded-image"
|
|
179
|
+
)}
|
|
180
|
+
>
|
|
168
181
|
<NextImage
|
|
169
182
|
src={image}
|
|
170
183
|
alt="section-image"
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
184
|
+
priority={isAboveTheFold}
|
|
185
|
+
fill={!useOriginalImageAspectRatio}
|
|
186
|
+
width={
|
|
187
|
+
!useOriginalImageAspectRatio ? undefined : imageWidth || 660
|
|
188
|
+
}
|
|
189
|
+
height={
|
|
190
|
+
!useOriginalImageAspectRatio
|
|
191
|
+
? undefined
|
|
192
|
+
: imageHeight || 660
|
|
193
|
+
}
|
|
194
|
+
sizes="(max-width: 430px) 100vw, (max-width: 834px) 100vw, 50vw"
|
|
195
|
+
className={cx(
|
|
196
|
+
!useOriginalImageAspectRatio ? "object-cover" : "w-full"
|
|
197
|
+
)}
|
|
174
198
|
/>
|
|
175
199
|
</div>
|
|
176
200
|
)}
|
|
@@ -212,7 +236,9 @@ export const ImagePromoBar: React.FC<ImagePromoBarProps> = ({
|
|
|
212
236
|
<div
|
|
213
237
|
className={cx(
|
|
214
238
|
"aspect-[16/9] w-full overflow-hidden rounded-image transition-opacity duration-300",
|
|
215
|
-
isPlaying ? "opacity-100" : "opacity-0"
|
|
239
|
+
isPlaying ? "opacity-100" : "opacity-0",
|
|
240
|
+
!useOriginalImageAspectRatio &&
|
|
241
|
+
"xl:aspect-square xl:max-h-[486px] xl:w-[486px]"
|
|
216
242
|
)}
|
|
217
243
|
>
|
|
218
244
|
{contentVideo}
|
|
@@ -239,7 +265,9 @@ export const ImagePromoBar: React.FC<ImagePromoBarProps> = ({
|
|
|
239
265
|
</div>
|
|
240
266
|
)}
|
|
241
267
|
{disclaimer && (
|
|
242
|
-
<div className="mt-10 flex justify-center xl:mt-18">
|
|
268
|
+
<div className="mt-10 flex justify-center xl:mt-18">
|
|
269
|
+
<div>{disclaimer}</div>
|
|
270
|
+
</div>
|
|
243
271
|
)}
|
|
244
272
|
</div>
|
|
245
273
|
);
|
|
@@ -22,6 +22,8 @@ export type ImagePromoBarProps = {
|
|
|
22
22
|
image: string;
|
|
23
23
|
imageWidth: number;
|
|
24
24
|
imageHeight: number;
|
|
25
|
+
useOriginalImageAspectRatio?: boolean;
|
|
26
|
+
isAboveTheFold?: boolean;
|
|
25
27
|
mediaPosition: boolean;
|
|
26
28
|
description: React.ReactNode;
|
|
27
29
|
openDescriptionLinksOnANewTab: boolean;
|
|
@@ -35,6 +37,7 @@ export type ImagePromoBarProps = {
|
|
|
35
37
|
maxWidth?: boolean;
|
|
36
38
|
color: "light" | "dark";
|
|
37
39
|
onModalButtonClick?: (id?: string) => void;
|
|
40
|
+
onClick?: (event: React.MouseEvent, source: "primary" | "secondary") => void;
|
|
38
41
|
renderCheckPlans?: (overrides?: CheckPlansProps) => React.ReactNode;
|
|
39
42
|
};
|
|
40
43
|
|