11import { clsx } from "clsx"
2+
3+ import { ImageLoaded } from "../image-loaded"
4+ import { RepeatingStripes } from "../repeating-stripes"
5+
26import { TicketPeriods } from "./ticket-periods"
37
8+ import blurBean from "./blur-bean.webp"
9+
410export function GetYourTicket ( { className } : { className ?: string } ) {
511 return (
612 < section
@@ -9,7 +15,8 @@ export function GetYourTicket({ className }: { className?: string }) {
915 className ,
1016 ) }
1117 >
12- < div className = "gql-conf-container lg:px-12 xl:gap-x-24 xl:px-24" >
18+ < Stripes />
19+ < div className = "gql-conf-container relative lg:px-12 xl:gap-x-24 xl:px-24" >
1320 < header className = "flex flex-wrap justify-between gap-6 md:items-end" >
1421 < h2 className = "whitespace-pre text-white typography-h2" >
1522 Get your ticket
@@ -27,3 +34,43 @@ export function GetYourTicket({ className }: { className?: string }) {
2734 </ section >
2835 )
2936}
37+
38+ const maskEven =
39+ "repeating-linear-gradient(to right, transparent, transparent 12px, black 12px, black 24px)"
40+ const maskOdd =
41+ "repeating-linear-gradient(to right, black, black 12px, transparent 12px, transparent 24px)"
42+
43+ function Stripes ( ) {
44+ return (
45+ < ImageLoaded
46+ role = "presentation"
47+ image = { blurBean }
48+ className = "pointer-events-none absolute inset-x-0 bottom-[-385px] top-[-203px] translate-y-12 opacity-0 transition duration-[400ms] ease-linear [mask-position:70%_60%] *:opacity-60 data-[loaded=true]:translate-y-0 data-[loaded=true]:opacity-100 max-3xl:[mask-size:220%] 3xl:[mask-position:70%_39%]"
49+ style = { {
50+ maskImage : `url(${ blurBean . src } )` ,
51+ WebkitMaskImage : `url(${ blurBean . src } )` ,
52+ maskRepeat : "no-repeat" ,
53+ WebkitMaskRepeat : "no-repeat" ,
54+ } }
55+ >
56+ < div
57+ className = "absolute inset-0"
58+ style = { {
59+ backgroundImage :
60+ "linear-gradient(180deg, hsl(var(--color-pri-light)) 0%, hsl(var(--color-pri-lighter)) 100%)" ,
61+ maskImage : maskEven ,
62+ WebkitMaskImage : maskEven ,
63+ } }
64+ />
65+ < div
66+ className = "absolute inset-0"
67+ style = { {
68+ backgroundImage :
69+ "linear-gradient(180deg,hsl(319deg 100% 90% / 0.2) 0%, hsl(var(--color-pri-base)) 100%)" ,
70+ maskImage : maskOdd ,
71+ WebkitMaskImage : maskOdd ,
72+ } }
73+ />
74+ </ ImageLoaded >
75+ )
76+ }
0 commit comments