File tree Expand file tree Collapse file tree 3 files changed +76
-0
lines changed
components/cta-card-section Expand file tree Collapse file tree 3 files changed +76
-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 [@media(max-width:420px)]:text-center" >
25+ < div className = "flex flex-col gap-6" >
26+ < h2 className = "text-neu-0 typography-d1 dark:text-neu-900" >
27+ { heading }
28+ </ h2 >
29+ < p className = "max-w-[555px] text-pretty text-neu-50 typography-body-lg dark:text-neu-800" >
30+ { description }
31+ </ p >
32+ </ div >
33+
34+ { children }
35+ </ div >
36+
37+ < div
38+ role = "presentation"
39+ // prettier-ignore
40+ className = "
41+ pointer-events-none absolute
42+ sm:bottom-[-277px] inset-0 sm:left-1/3 xl:left-1/2 sm:top-[-107px] xl:right-[-391px]
43+ [--start:hsl(var(--color-sec-base))]
44+ [--end:hsl(var(--color-sec-lighter))]
45+ dark:[--start:hsl(var(--color-sec-dark))]
46+ dark:[--end:hsl(var(--color-sec-base))]
47+
48+ [mask-size:cover]
49+ max-sm:[mask-position:center] max-sm:opacity-50
50+ sm:[mask-size:1117px]
51+ "
52+ style = { {
53+ maskImage : `url(${ logoMask . src } )` ,
54+ maskRepeat : "no-repeat" ,
55+ } }
56+ >
57+ < StripesDecoration
58+ thin
59+ oddClassName = "bg-[linear-gradient(180deg,var(--start)_0%,var(--end)_100%)]"
60+ />
61+ </ div >
62+ </ section >
63+ </ div >
64+ )
65+ }
Original file line number Diff line number Diff line change @@ -12,6 +12,9 @@ import { RegisterSection } from "./components/register-section"
1212import { Sponsors } from "./components/sponsors"
1313import { GraphQLFoundationCard } from "./components/graphql-foundation-card"
1414import { 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
1619export 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 }
You can’t perform that action at this time.
0 commit comments