@windstream/react-shared-components 0.1.6 → 0.1.7

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 (152) hide show
  1. package/README.md +635 -635
  2. package/dist/contentful/index.esm.js +1 -1
  3. package/dist/contentful/index.esm.js.map +1 -1
  4. package/dist/contentful/index.js +1 -1
  5. package/dist/contentful/index.js.map +1 -1
  6. package/dist/core.d.ts +7 -5
  7. package/dist/index.d.ts +2 -0
  8. package/dist/index.esm.js +1 -1
  9. package/dist/index.esm.js.map +1 -1
  10. package/dist/index.js +1 -1
  11. package/dist/index.js.map +1 -1
  12. package/dist/styles.css +1 -1
  13. package/package.json +177 -177
  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 -40
  18. package/src/components/alert-card/types.ts +13 -12
  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/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 +322 -322
  55. package/src/components/material-icon/constants.ts +98 -98
  56. package/src/components/material-icon/index.tsx +47 -47
  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 +32 -32
  62. package/src/components/next-image/types.ts +1 -1
  63. package/src/components/pagination/index.tsx +100 -100
  64. package/src/components/pagination/types.ts +6 -6
  65. package/src/components/radio-button/RadioButton.stories.tsx +307 -307
  66. package/src/components/radio-button/index.tsx +75 -75
  67. package/src/components/radio-button/types.ts +21 -21
  68. package/src/components/see-more/SeeMore.stories.tsx +181 -181
  69. package/src/components/see-more/index.tsx +44 -44
  70. package/src/components/see-more/types.ts +4 -4
  71. package/src/components/select/Select.stories.tsx +411 -411
  72. package/src/components/select/index.tsx +155 -150
  73. package/src/components/select/types.ts +36 -35
  74. package/src/components/select-plan-button/SelectPlanButton.stories.tsx +184 -184
  75. package/src/components/select-plan-button/index.tsx +57 -57
  76. package/src/components/select-plan-button/types.ts +14 -14
  77. package/src/components/skeleton/Skeleton.stories.tsx +179 -179
  78. package/src/components/skeleton/index.tsx +61 -61
  79. package/src/components/skeleton/types.ts +4 -4
  80. package/src/components/spinner/Spinner.stories.tsx +335 -335
  81. package/src/components/spinner/index.tsx +44 -44
  82. package/src/components/spinner/types.ts +5 -5
  83. package/src/components/text/Text.stories.tsx +321 -321
  84. package/src/components/text/index.tsx +25 -25
  85. package/src/components/text/types.ts +45 -45
  86. package/src/components/tooltip/Tooltip.stories.tsx +219 -219
  87. package/src/components/tooltip/index.tsx +74 -74
  88. package/src/components/tooltip/types.ts +7 -7
  89. package/src/components/view-cart-button/ViewCartButton.stories.tsx +252 -252
  90. package/src/components/view-cart-button/index.tsx +42 -42
  91. package/src/components/view-cart-button/types.ts +5 -5
  92. package/src/contentful/blocks/blogs-grid/index.tsx +129 -129
  93. package/src/contentful/blocks/blogs-grid/types.ts +26 -26
  94. package/src/contentful/blocks/breadcrumbs/index.tsx +55 -55
  95. package/src/contentful/blocks/button/Button.stories.tsx +40 -40
  96. package/src/contentful/blocks/button/index.tsx +108 -108
  97. package/src/contentful/blocks/button/types.ts +34 -34
  98. package/src/contentful/blocks/callout/Callout.stories.tsx +23 -23
  99. package/src/contentful/blocks/callout/index.tsx +66 -66
  100. package/src/contentful/blocks/cards/Cards.stories.tsx +23 -23
  101. package/src/contentful/blocks/cards/blog-card/index.tsx +99 -99
  102. package/src/contentful/blocks/cards/blog-card/types.ts +14 -14
  103. package/src/contentful/blocks/cards/index.tsx +13 -13
  104. package/src/contentful/blocks/cards/product-card/index.tsx +208 -208
  105. package/src/contentful/blocks/cards/product-card/types.ts +28 -28
  106. package/src/contentful/blocks/cards/testimonial-card/index.tsx +88 -88
  107. package/src/contentful/blocks/cards/testimonial-card/types.tsx +12 -12
  108. package/src/contentful/blocks/cards/types.ts +1 -1
  109. package/src/contentful/blocks/carousel/Carousel.stories.tsx +23 -23
  110. package/src/contentful/blocks/carousel/helper.tsx +356 -356
  111. package/src/contentful/blocks/carousel/index.tsx +74 -74
  112. package/src/contentful/blocks/carousel/types.ts +143 -143
  113. package/src/contentful/blocks/cta-callout/CtaCallout.stories.tsx +46 -46
  114. package/src/contentful/blocks/cta-callout/index.tsx +60 -60
  115. package/src/contentful/blocks/cta-callout/types.ts +26 -26
  116. package/src/contentful/blocks/find-kinetic/index.tsx +130 -130
  117. package/src/contentful/blocks/floating-banner/FloatingBanner.stories.tsx +34 -34
  118. package/src/contentful/blocks/floating-banner/types.ts +22 -22
  119. package/src/contentful/blocks/footer/Footer.stories.tsx +30 -30
  120. package/src/contentful/blocks/image-promo-bar/ImagePromoBar.stories.tsx +23 -23
  121. package/src/contentful/blocks/image-promo-bar/helper.tsx +28 -28
  122. package/src/contentful/blocks/image-promo-bar/types.ts +44 -44
  123. package/src/contentful/blocks/image-promo-bar/vimeo-embed.tsx +93 -93
  124. package/src/contentful/blocks/image-promo-bar/youtube-embed.tsx +46 -46
  125. package/src/contentful/blocks/modal/constants.ts +53 -53
  126. package/src/contentful/blocks/modal/index.tsx +91 -91
  127. package/src/contentful/blocks/modal/types.ts +12 -12
  128. package/src/contentful/blocks/navigation/desktop-link-groups.tsx/index.tsx +111 -111
  129. package/src/contentful/blocks/navigation/index.tsx +385 -385
  130. package/src/contentful/blocks/navigation/mobile-link-groups.tsx/index.tsx +80 -80
  131. package/src/contentful/blocks/navigation/types.ts +41 -41
  132. package/src/contentful/blocks/primary-hero/PrimaryHero.stories.tsx +23 -23
  133. package/src/contentful/blocks/primary-hero/index.tsx +229 -229
  134. package/src/contentful/blocks/primary-hero/types.ts +35 -35
  135. package/src/contentful/blocks/search-block/index.tsx +90 -90
  136. package/src/contentful/blocks/shape-background-wrapper/ShapeBackgroundWrapper.stories.tsx +26 -26
  137. package/src/contentful/blocks/shape-background-wrapper/index.tsx +124 -124
  138. package/src/contentful/blocks/shape-background-wrapper/types.ts +36 -36
  139. package/src/contentful/blocks/text/Text.stories.tsx +23 -23
  140. package/src/contentful/blocks/text/index.tsx +12 -12
  141. package/src/contentful/blocks/text/types.ts +1 -1
  142. package/src/contentful/index.ts +69 -69
  143. package/src/hooks/use-body-scroll-lock.ts +34 -34
  144. package/src/hooks/use-outside-click.ts +17 -17
  145. package/src/index.ts +96 -96
  146. package/src/next/index.ts +5 -5
  147. package/src/setupTests.ts +46 -46
  148. package/src/stories/DocsTemplate.tsx +24 -24
  149. package/src/styles/globals.css +343 -343
  150. package/src/types/global.d.ts +9 -9
  151. package/src/types/micro-components.ts +99 -99
  152. package/src/utils/index.ts +49 -49
@@ -1,108 +1,108 @@
1
- import React from "react";
2
- import { ButtonProps } from "./types";
3
-
4
- import { BrandButton } from "@shared/components/brand-button";
5
- import { Button as CoreButton } from "@shared/components/button";
6
- import { Link } from "@shared/components/link";
7
- import { MaterialIcon } from "@shared/components/material-icon";
8
-
9
- export const Button: React.FC<ButtonProps> = props => {
10
- const {
11
- showButtonAs = "solid",
12
- buttonVariant = "primary_brand",
13
- buttonLabel,
14
- buttonPrefix,
15
- href,
16
- target = "_blank",
17
- anchorId,
18
- linkClassName,
19
- linkVariant,
20
- fullWidth,
21
- preDefinedFunctionExecution,
22
- renderCheckPlans,
23
- buttonClassName,
24
- clickToOpen,
25
- tabmodalNameToOpen,
26
- onModalButtonClick,
27
- onClick,
28
- iconName,
29
- ...rest
30
- } = props;
31
-
32
- if (preDefinedFunctionExecution === "check availability") {
33
- const checkPlansNode = renderCheckPlans?.({
34
- ctaText: buttonLabel,
35
- buttonVariant: buttonVariant,
36
- showButtonAs: showButtonAs,
37
- cta: { ...props },
38
- });
39
- return checkPlansNode;
40
- }
41
-
42
- function handleModalClick() {
43
- if (clickToOpen === "modal") {
44
- onModalButtonClick?.(tabmodalNameToOpen);
45
- }
46
- }
47
-
48
- function linkClick(event: React.MouseEvent<HTMLAnchorElement>) {
49
- handleModalClick();
50
- onClick?.(event);
51
- }
52
-
53
- function buttonClick(event: React.MouseEvent<HTMLButtonElement>) {
54
- handleModalClick();
55
- onClick?.(event);
56
- }
57
-
58
- let CTA = (
59
- <CoreButton onClick={buttonClick} className={buttonClassName} {...rest} />
60
- );
61
-
62
- switch (showButtonAs) {
63
- case "solid":
64
- CTA = href ? (
65
- <BrandButton
66
- as="a"
67
- href={href}
68
- id={anchorId}
69
- variant={buttonVariant}
70
- text={buttonLabel}
71
- label={buttonPrefix}
72
- fullWidth={fullWidth}
73
- onClick={linkClick}
74
- />
75
- ) : (
76
- <BrandButton
77
- id={anchorId}
78
- variant={buttonVariant}
79
- text={buttonLabel}
80
- label={buttonPrefix}
81
- fullWidth={fullWidth}
82
- onClick={buttonClick}
83
- />
84
- );
85
- break;
86
- case "text":
87
- CTA = (
88
- <Link
89
- href={href}
90
- target={target}
91
- variant={linkVariant || "default"}
92
- className={`text-text-brand ${linkClassName || ""}`}
93
- onClick={linkClick}
94
- >
95
- {buttonLabel}{" "}
96
- {iconName && <MaterialIcon name={iconName as any} size={24} />}
97
- </Link>
98
- );
99
- break;
100
- case "unstyled": // For unstyled, we can use the CoreButton without any additional styling
101
- break;
102
- default: // For default, we can use the CoreButton without any additional styling
103
- break;
104
- }
105
-
106
- return CTA;
107
- };
108
- export default Button;
1
+ import React from "react";
2
+ import { ButtonProps } from "./types";
3
+
4
+ import { BrandButton } from "@shared/components/brand-button";
5
+ import { Button as CoreButton } from "@shared/components/button";
6
+ import { Link } from "@shared/components/link";
7
+ import { MaterialIcon } from "@shared/components/material-icon";
8
+
9
+ export const Button: React.FC<ButtonProps> = props => {
10
+ const {
11
+ showButtonAs = "solid",
12
+ buttonVariant = "primary_brand",
13
+ buttonLabel,
14
+ buttonPrefix,
15
+ href,
16
+ target = "_blank",
17
+ anchorId,
18
+ linkClassName,
19
+ linkVariant,
20
+ fullWidth,
21
+ preDefinedFunctionExecution,
22
+ renderCheckPlans,
23
+ buttonClassName,
24
+ clickToOpen,
25
+ tabmodalNameToOpen,
26
+ onModalButtonClick,
27
+ onClick,
28
+ iconName,
29
+ ...rest
30
+ } = props;
31
+
32
+ if (preDefinedFunctionExecution === "check availability") {
33
+ const checkPlansNode = renderCheckPlans?.({
34
+ ctaText: buttonLabel,
35
+ buttonVariant: buttonVariant,
36
+ showButtonAs: showButtonAs,
37
+ cta: { ...props },
38
+ });
39
+ return checkPlansNode;
40
+ }
41
+
42
+ function handleModalClick() {
43
+ if (clickToOpen === "modal") {
44
+ onModalButtonClick?.(tabmodalNameToOpen);
45
+ }
46
+ }
47
+
48
+ function linkClick(event: React.MouseEvent<HTMLAnchorElement>) {
49
+ handleModalClick();
50
+ onClick?.(event);
51
+ }
52
+
53
+ function buttonClick(event: React.MouseEvent<HTMLButtonElement>) {
54
+ handleModalClick();
55
+ onClick?.(event);
56
+ }
57
+
58
+ let CTA = (
59
+ <CoreButton onClick={buttonClick} className={buttonClassName} {...rest} />
60
+ );
61
+
62
+ switch (showButtonAs) {
63
+ case "solid":
64
+ CTA = href ? (
65
+ <BrandButton
66
+ as="a"
67
+ href={href}
68
+ id={anchorId}
69
+ variant={buttonVariant}
70
+ text={buttonLabel}
71
+ label={buttonPrefix}
72
+ fullWidth={fullWidth}
73
+ onClick={linkClick}
74
+ />
75
+ ) : (
76
+ <BrandButton
77
+ id={anchorId}
78
+ variant={buttonVariant}
79
+ text={buttonLabel}
80
+ label={buttonPrefix}
81
+ fullWidth={fullWidth}
82
+ onClick={buttonClick}
83
+ />
84
+ );
85
+ break;
86
+ case "text":
87
+ CTA = (
88
+ <Link
89
+ href={href}
90
+ target={target}
91
+ variant={linkVariant || "default"}
92
+ className={`text-text-brand ${linkClassName || ""}`}
93
+ onClick={linkClick}
94
+ >
95
+ {buttonLabel}{" "}
96
+ {iconName && <MaterialIcon name={iconName as any} size={24} />}
97
+ </Link>
98
+ );
99
+ break;
100
+ case "unstyled": // For unstyled, we can use the CoreButton without any additional styling
101
+ break;
102
+ default: // For default, we can use the CoreButton without any additional styling
103
+ break;
104
+ }
105
+
106
+ return CTA;
107
+ };
108
+ export default Button;
@@ -1,34 +1,34 @@
1
- import React from "react";
2
-
3
- import { CheckPlansProps } from "@shared/types/micro-components";
4
-
5
- export type ButtonProps = {
6
- showButtonAs?: "solid" | "text" | "unstyled";
7
- buttonVariant?: "primary_brand" | "secondary" | "primary_inverse";
8
- buttonLabel?: string;
9
- buttonPrefix?: string;
10
- badge?: string;
11
- badgeIcon?: string;
12
- buttonIcon?: string;
13
- buttonIconPosition?: "left" | "right";
14
- href?: string;
15
- target?: "_self" | "_blank";
16
- anchorId?: string;
17
- preserveQueryParameters?: boolean;
18
- clickToOpen?: string;
19
- tabmodalNameToOpen?: string;
20
- preDefinedFunctionExecution?: string;
21
- renderCheckPlans?: (overrides?: CheckPlansProps) => React.ReactNode;
22
- linkClassName?: string;
23
- buttonClassName?: string;
24
- linkVariant?: "unstyled" | "default";
25
- fullWidth?: boolean;
26
- onClick?: (
27
- event: React.MouseEvent<HTMLAnchorElement | HTMLButtonElement>
28
- ) => void;
29
- children?: React.ReactNode;
30
- modalTitle?: string;
31
- modalSubtitle?: string;
32
- onModalButtonClick?: (id?: string) => void;
33
- iconName?: string;
34
- };
1
+ import React from "react";
2
+
3
+ import { CheckPlansProps } from "@shared/types/micro-components";
4
+
5
+ export type ButtonProps = {
6
+ showButtonAs?: "solid" | "text" | "unstyled";
7
+ buttonVariant?: "primary_brand" | "secondary" | "primary_inverse";
8
+ buttonLabel?: string;
9
+ buttonPrefix?: string;
10
+ badge?: string;
11
+ badgeIcon?: string;
12
+ buttonIcon?: string;
13
+ buttonIconPosition?: "left" | "right";
14
+ href?: string;
15
+ target?: "_self" | "_blank";
16
+ anchorId?: string;
17
+ preserveQueryParameters?: boolean;
18
+ clickToOpen?: string;
19
+ tabmodalNameToOpen?: string;
20
+ preDefinedFunctionExecution?: string;
21
+ renderCheckPlans?: (overrides?: CheckPlansProps) => React.ReactNode;
22
+ linkClassName?: string;
23
+ buttonClassName?: string;
24
+ linkVariant?: "unstyled" | "default";
25
+ fullWidth?: boolean;
26
+ onClick?: (
27
+ event: React.MouseEvent<HTMLAnchorElement | HTMLButtonElement>
28
+ ) => void;
29
+ children?: React.ReactNode;
30
+ modalTitle?: string;
31
+ modalSubtitle?: string;
32
+ onModalButtonClick?: (id?: string) => void;
33
+ iconName?: string;
34
+ };
@@ -1,23 +1,23 @@
1
- import { Callout } from "./index";
2
-
3
- import { DocsPage } from "@shared/stories/DocsTemplate";
4
- import type { Meta, StoryObj } from "@storybook/react";
5
-
6
- const meta: Meta<typeof Callout> = {
7
- title: "Contentful Blocks/Callout",
8
- component: Callout,
9
- tags: ["autodocs"],
10
- parameters: {
11
- layout: "centered",
12
- docs: {
13
- page: DocsPage,
14
- description: {
15
- component: "Contentful callout block.",
16
- },
17
- },
18
- },
19
- args: {},
20
- };
21
- export default meta;
22
- type Story = StoryObj<typeof meta>;
23
- export const Default: Story = {};
1
+ import { Callout } from "./index";
2
+
3
+ import { DocsPage } from "@shared/stories/DocsTemplate";
4
+ import type { Meta, StoryObj } from "@storybook/react";
5
+
6
+ const meta: Meta<typeof Callout> = {
7
+ title: "Contentful Blocks/Callout",
8
+ component: Callout,
9
+ tags: ["autodocs"],
10
+ parameters: {
11
+ layout: "centered",
12
+ docs: {
13
+ page: DocsPage,
14
+ description: {
15
+ component: "Contentful callout block.",
16
+ },
17
+ },
18
+ },
19
+ args: {},
20
+ };
21
+ export default meta;
22
+ type Story = StoryObj<typeof meta>;
23
+ export const Default: Story = {};
@@ -1,66 +1,66 @@
1
- import React from "react";
2
- import SimpleCard from "../cards/simple-card";
3
- import { CalloutProps } from "./types";
4
-
5
- import { Text } from "@shared/components/text";
6
-
7
- export const Callout: React.FC<CalloutProps> = ({
8
- title,
9
- items,
10
- enableHeading = false,
11
- subtitle,
12
- color = "dark",
13
- maxWidth = true,
14
- maxCardsPerRow,
15
- }) => {
16
- const lgWidth =
17
- {
18
- 1: " lg:w-full",
19
- 2: " lg:w-[calc(50%-0.75rem)]",
20
- 3: " lg:w-[calc(33.3333%-1rem)]",
21
- 4: " lg:w-[calc(25%-1.125rem)]",
22
- }[maxCardsPerRow || 4] || " lg:w-[calc(25%-1.125rem)]";
23
-
24
- const mdWidth = items.length === 1 ? " md:w-full" : " md:w-[calc(50%-1rem)]";
25
-
26
- return (
27
- <div className="component-container">
28
- <div
29
- className={`mx-5 mb-5 mt-12 ${maxWidth ? "max-w-120 xl:mx-auto" : ""} ${color == "dark" ? "text-text" : "text-white"}`}
30
- >
31
- <div className="callout-container flex flex-col gap-8">
32
- <div className="title-holder">
33
- {title && (
34
- <Text
35
- as={enableHeading ? "h1" : "h2"}
36
- className="heading2 md:heading1 md:text-center"
37
- >
38
- {title}
39
- </Text>
40
- )}
41
- {subtitle && (
42
- <Text
43
- as={enableHeading ? "h2" : "h3"}
44
- className="subheading3 mt-3 md:subheading1 md:text-center"
45
- >
46
- {subtitle}
47
- </Text>
48
- )}
49
- </div>
50
- <div className="card-holder flex flex-wrap items-stretch justify-center gap-8 self-stretch lg:gap-6">
51
- {items.map((item, index: number) => (
52
- <SimpleCard
53
- key={index}
54
- card={item}
55
- lgWidth={lgWidth}
56
- mdWidth={mdWidth}
57
- />
58
- ))}
59
- </div>
60
- </div>
61
- </div>
62
- </div>
63
- );
64
- };
65
-
66
- export default Callout;
1
+ import React from "react";
2
+ import SimpleCard from "../cards/simple-card";
3
+ import { CalloutProps } from "./types";
4
+
5
+ import { Text } from "@shared/components/text";
6
+
7
+ export const Callout: React.FC<CalloutProps> = ({
8
+ title,
9
+ items,
10
+ enableHeading = false,
11
+ subtitle,
12
+ color = "dark",
13
+ maxWidth = true,
14
+ maxCardsPerRow,
15
+ }) => {
16
+ const lgWidth =
17
+ {
18
+ 1: " lg:w-full",
19
+ 2: " lg:w-[calc(50%-0.75rem)]",
20
+ 3: " lg:w-[calc(33.3333%-1rem)]",
21
+ 4: " lg:w-[calc(25%-1.125rem)]",
22
+ }[maxCardsPerRow || 4] || " lg:w-[calc(25%-1.125rem)]";
23
+
24
+ const mdWidth = items.length === 1 ? " md:w-full" : " md:w-[calc(50%-1rem)]";
25
+
26
+ return (
27
+ <div className="component-container">
28
+ <div
29
+ className={`mx-5 mb-5 mt-12 ${maxWidth ? "max-w-120 xl:mx-auto" : ""} ${color == "dark" ? "text-text" : "text-white"}`}
30
+ >
31
+ <div className="callout-container flex flex-col gap-8">
32
+ <div className="title-holder">
33
+ {title && (
34
+ <Text
35
+ as={enableHeading ? "h1" : "h2"}
36
+ className="heading2 md:heading1 md:text-center"
37
+ >
38
+ {title}
39
+ </Text>
40
+ )}
41
+ {subtitle && (
42
+ <Text
43
+ as={enableHeading ? "h2" : "h3"}
44
+ className="subheading3 mt-3 md:subheading1 md:text-center"
45
+ >
46
+ {subtitle}
47
+ </Text>
48
+ )}
49
+ </div>
50
+ <div className="card-holder flex flex-wrap items-stretch justify-center gap-8 self-stretch lg:gap-6">
51
+ {items.map((item, index: number) => (
52
+ <SimpleCard
53
+ key={index}
54
+ card={item}
55
+ lgWidth={lgWidth}
56
+ mdWidth={mdWidth}
57
+ />
58
+ ))}
59
+ </div>
60
+ </div>
61
+ </div>
62
+ </div>
63
+ );
64
+ };
65
+
66
+ export default Callout;
@@ -1,23 +1,23 @@
1
- import { Cards } from "./index";
2
-
3
- import { DocsPage } from "@shared/stories/DocsTemplate";
4
- import type { Meta, StoryObj } from "@storybook/react";
5
-
6
- const meta: Meta<typeof Cards> = {
7
- title: "Contentful Blocks/Cards",
8
- component: Cards,
9
- tags: ["autodocs"],
10
- parameters: {
11
- layout: "centered",
12
- docs: {
13
- page: DocsPage,
14
- description: {
15
- component: "Contentful cards block.",
16
- },
17
- },
18
- },
19
- args: { fields: {} },
20
- };
21
- export default meta;
22
- type Story = StoryObj<typeof meta>;
23
- export const Default: Story = {};
1
+ import { Cards } from "./index";
2
+
3
+ import { DocsPage } from "@shared/stories/DocsTemplate";
4
+ import type { Meta, StoryObj } from "@storybook/react";
5
+
6
+ const meta: Meta<typeof Cards> = {
7
+ title: "Contentful Blocks/Cards",
8
+ component: Cards,
9
+ tags: ["autodocs"],
10
+ parameters: {
11
+ layout: "centered",
12
+ docs: {
13
+ page: DocsPage,
14
+ description: {
15
+ component: "Contentful cards block.",
16
+ },
17
+ },
18
+ },
19
+ args: { fields: {} },
20
+ };
21
+ export default meta;
22
+ type Story = StoryObj<typeof meta>;
23
+ export const Default: Story = {};