1
1
import { clsx } from "clsx"
2
+
3
+ import { ImageLoaded } from "../image-loaded"
4
+ import { RepeatingStripes } from "../repeating-stripes"
5
+
2
6
import { TicketPeriods } from "./ticket-periods"
3
7
8
+ import blurBean from "./blur-bean.webp"
9
+
4
10
export function GetYourTicket ( { className } : { className ?: string } ) {
5
11
return (
6
12
< section
@@ -9,7 +15,8 @@ export function GetYourTicket({ className }: { className?: string }) {
9
15
className ,
10
16
) }
11
17
>
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" >
13
20
< header className = "flex flex-wrap justify-between gap-6 md:items-end" >
14
21
< h2 className = "whitespace-pre text-white typography-h2" >
15
22
Get your ticket
@@ -27,3 +34,43 @@ export function GetYourTicket({ className }: { className?: string }) {
27
34
</ section >
28
35
)
29
36
}
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