-
Notifications
You must be signed in to change notification settings - Fork 2
/
SectionComponent.tsx
74 lines (70 loc) · 1.79 KB
/
SectionComponent.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import { HTMLAttributes, FC, PropsWithChildren } from "react";
import {
SectionContextDefault,
SectionContext,
} from "@kickstartds/base/lib/section";
import { SectionProps } from "./SectionProps";
import { Button } from "../button/ButtonComponent";
export const Section: FC<
SectionProps & HTMLAttributes<HTMLElement>
> = ({
headline,
width = "default",
gutter = "default",
mode = "default",
style = "default",
spaceBefore = "default",
spaceAfter = "default",
inverted = false,
ctas = [],
...props
}) => {
return (
<>
<SectionContextDefault
{...props}
background={style}
headline={{
text: headline,
content: !!headline,
}}
width={width}
gutter={gutter}
mode={mode}
spaceBefore={spaceBefore}
spaceAfter={ctas && ctas.length > 0 ? 'none' : spaceAfter}
inverted={inverted}
/>
{ctas && ctas.length > 0 && (
<SectionContextDefault
background={style}
width="default"
gutter={gutter}
mode="default"
spaceBefore="small"
spaceAfter={spaceAfter}
inverted={inverted}
>
{ctas.filter((cta) => cta.label && cta.target).map((cta, index) => (
<Button
key={index}
label={cta.label}
target={cta.target}
variant={
index === 0
? "primary"
: index === 1
? "secondary"
: "tertiary"
}
size="small"
/>
))}
</SectionContextDefault>
)}
</>
);
};
export const SectionProvider: FC<PropsWithChildren<any>> = (props) => (
<SectionContext.Provider {...props} value={Section} />
);