Skip to content

Commit 7a5baa1

Browse files
committed
Add CtaCardSection
1 parent c471798 commit 7a5baa1

File tree

3 files changed

+74
-0
lines changed

3 files changed

+74
-0
lines changed
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
import { StripesDecoration } from "@/app/conf/_design-system/stripes-decoration"
2+
3+
import logoMask from "./logo-mask.webp"
4+
5+
export interface CtaCardSectionProps extends React.HTMLAttributes<HTMLElement> {
6+
title: string
7+
description: string
8+
children: React.ReactNode
9+
}
10+
11+
export function CtaCardSection({
12+
className,
13+
title: heading,
14+
description,
15+
children,
16+
...rest
17+
}: CtaCardSectionProps) {
18+
return (
19+
<div className="gql-conf-section">
20+
<section
21+
className="relative overflow-hidden bg-gradient-to-r from-pri-dark to-pri-base p-6 dark:from-pri-darker dark:to-pri-dark sm:p-16"
22+
{...rest}
23+
>
24+
<div className="relative z-10 flex flex-col gap-10 sm:items-start">
25+
<div className="flex flex-col gap-6">
26+
<h2 className="text-neu-0 typography-d1">{heading}</h2>
27+
<p className="max-w-[555px] text-pretty text-neu-50 typography-body-lg">
28+
{description}
29+
</p>
30+
</div>
31+
32+
{children}
33+
</div>
34+
35+
<div
36+
role="presentation"
37+
// prettier-ignore
38+
className="
39+
pointer-events-none absolute
40+
sm:bottom-[-277px] inset-0 sm:left-1/3 xl:left-1/2 sm:top-[-107px] xl:right-[-391px]
41+
[--start:hsl(var(--color-sec-base))]
42+
[--end:hsl(var(--color-sec-lighter))]
43+
dark:[--start:hsl(var(--color-sec-dark))]
44+
dark:[--end:hsl(var(--color-sec-base))]
45+
46+
[mask-size:cover]
47+
max-sm:[mask-position:center] max-sm:opacity-70
48+
sm:[mask-size:1117px]
49+
"
50+
style={{
51+
maskImage: `url(${logoMask.src})`,
52+
maskRepeat: "no-repeat",
53+
}}
54+
>
55+
<StripesDecoration
56+
thin
57+
oddClassName="bg-[linear-gradient(180deg,var(--start)_0%,var(--end)_100%)]"
58+
/>
59+
</div>
60+
</section>
61+
</div>
62+
)
63+
}
Binary file not shown.

src/app/conf/2025/page.tsx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ import { RegisterSection } from "./components/register-section"
1212
import { Sponsors } from "./components/sponsors"
1313
import { GraphQLFoundationCard } from "./components/graphql-foundation-card"
1414
import { MarqueeRows } from "./components/marquee-rows"
15+
import { CtaCardSection } from "./components/cta-card-section"
16+
import { Button } from "../_design-system/button"
17+
import { GET_TICKETS_LINK } from "./links"
1518

1619
export const metadata: Metadata = {
1720
title: "GraphQLConf 2025 — Sept 08-10",
@@ -75,6 +78,14 @@ export default function Page() {
7578
<Venue />
7679
<GraphQLFoundationCard />
7780
<FAQ />
81+
<CtaCardSection
82+
title="Get your ticket"
83+
description="Join three transformative days of expert insights and innovation to shape the next decade of APIs!"
84+
>
85+
<Button variant="primary" href={GET_TICKETS_LINK}>
86+
Get tickets
87+
</Button>
88+
</CtaCardSection>
7889
<MarqueeRows
7990
variant="secondary"
8091
items={HERO_MARQUEE_ITEMS}

0 commit comments

Comments
 (0)