File tree Expand file tree Collapse file tree 3 files changed +74
-0
lines changed
components/cta-card-section Expand file tree Collapse file tree 3 files changed +74
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change @@ -12,6 +12,9 @@ import { RegisterSection } from "./components/register-section"
12
12
import { Sponsors } from "./components/sponsors"
13
13
import { GraphQLFoundationCard } from "./components/graphql-foundation-card"
14
14
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"
15
18
16
19
export const metadata : Metadata = {
17
20
title : "GraphQLConf 2025 — Sept 08-10" ,
@@ -75,6 +78,14 @@ export default function Page() {
75
78
< Venue />
76
79
< GraphQLFoundationCard />
77
80
< 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 >
78
89
< MarqueeRows
79
90
variant = "secondary"
80
91
items = { HERO_MARQUEE_ITEMS }
You can’t perform that action at this time.
0 commit comments