@@ -3,19 +3,19 @@ import Button from "components/con/common/Button";
3
3
import SpeakerList from "components/con/speakers/SpeakerList" ;
4
4
import SectionTitle from "components/con/common/typography/SectionTitle" ;
5
5
import SectionSubTitle from "components/con/common/typography/SectionSubtitle" ;
6
- import Web from "components /con/common/Web " ;
6
+ import { currentEdition } from "data /con/editions " ;
7
7
import Wave from "components/con/common/Wave" ;
8
8
import Venue from "components/con/home/Venue" ;
9
- import Image from "next/image" ;
10
9
import Partners from "components/con/home/Partners" ;
11
10
import LookingSponsorCard from "components/con/home/LookingSponsorCard" ;
12
11
import { Partner , Speaker } from "types/con" ;
13
12
import { useContext } from "react" ;
14
13
import { LanguageContext } from "contexts/con/LanguageContext" ;
15
14
import Section from "components/con/home/Section" ;
16
- import PictureGallery from "components /con/common/PictureGallery " ;
15
+ import prices from "data /con/2025/prices " ;
17
16
import Logo from "./Logo" ;
18
- import AfterMovie from "app/con/2024/components/AfterMovie" ;
17
+ import PricingCard from "components/con/home/Pricing/PricingCard" ;
18
+ import BuyButton from "components/con/common/BuyButton" ;
19
19
20
20
type HomePageProps = {
21
21
speakers : Speaker [ ] ;
@@ -39,65 +39,29 @@ const HomePage = ({ speakers, partners, images }: HomePageProps) => {
39
39
< p className = "flex-1 text-lg md:text-xl font-extrabold pb-6 lg:text-3xl md:text-left" >
40
40
{ t ( "2025.baseline" ) }
41
41
</ p >
42
- < p className = "flex-1 text-sm md:text-md font-extrabold pb-6 lg:text-lg md:text-left" >
43
- { t ( "2025.subbaseline" ) }
44
- </ p >
45
42
< div className = "flex gap-2" >
46
- < Button className = "pink" to = { `/${ locale } /con/2024/review` } >
47
- { t ( "2025.previous_edition" ) }
43
+ { currentEdition === "2025" && (
44
+ < BuyButton className = "mr-2" id = "cover" >
45
+ { t ( "buy_tickets" ) }
46
+ </ BuyButton >
47
+ ) }
48
+ < Button empty to = { `/${ locale } /con/2025/call-for-papers` } >
49
+ { t ( "2025.cfp.title" ) }
48
50
</ Button >
49
51
</ div >
50
52
</ div >
51
53
</ div >
52
54
< Wave className = "absolute opacity-30 z-0 bottom-0 h-[60vh] right-[7%] top-[63%] -translate-y-1/2" />
53
55
</ Section >
54
- < Section
55
- section = "lastYear"
56
- className = "bg-white z-10 relative pb-10 overflow-y-clip"
57
- >
58
- < div className = "container text-center" >
59
- < SectionTitle >
60
- < Translate translationKey = "last_edition.title" />
61
- </ SectionTitle >
62
- < SectionSubTitle >
63
- < Translate
64
- translationKey = "2025.see_review.subtitle"
65
- translationParams = { {
66
- edition : "2024" ,
67
- link : (
68
- < a href = { `/${ locale } /con/2024/review` } className = "link" >
69
- { t ( "2025.see_review.link" ) }
70
- </ a >
71
- ) ,
72
- } }
73
- />
74
- </ SectionSubTitle >
75
- < PictureGallery
76
- className = "py-4"
77
- link = "https://www.flickr.com/photos/194052559@N02/albums/72177720320499314/"
78
- >
79
- { images . map ( ( image : string ) => (
80
- < Image
81
- className = "object-cover"
82
- key = { image }
83
- fill
84
- src = { image }
85
- alt = ""
86
- sizes = "(max-width: 640px) 200px, (max-width: 768px) 240px, (max-width: 1536px) 300px, 400px"
87
- />
88
- ) ) }
89
- </ PictureGallery >
90
- </ div >
91
- </ Section >
92
56
< Section
93
57
section = "speakers"
94
- className = "z-10 relative py-4 overflow-x-hidden text-white "
58
+ className = "bg-white z-10 relative py-4 overflow-x-hidden"
95
59
>
96
60
< div className = "container text-center" >
97
- < SectionTitle dark h1 >
61
+ < SectionTitle h1 >
98
62
< Translate translationKey = "2025.our_speakers.title" />
99
63
</ SectionTitle >
100
- < SectionSubTitle dark >
64
+ < SectionSubTitle >
101
65
< Translate
102
66
translationKey = "2025.our_speakers.subtitle"
103
67
translationParams = { {
@@ -130,15 +94,86 @@ const HomePage = ({ speakers, partners, images }: HomePageProps) => {
130
94
</ Button >
131
95
</ div >
132
96
</ Section >
97
+ { currentEdition === "2025" && (
98
+ < Section
99
+ className = "relative py-10 before:bg-grey before:h-[calc(100%-500px)] before:absolute before:left-0 before:bottom-0 before:w-full after:bg-wave2 after:w-[1300px] after:h-[800px] after:absolute after:top-24 after:left-1/2 after:bg-top after:bg-contain after:opacity-50 after:bg-no-repeat after:-translate-x-1/2 after:rotate-6"
100
+ section = "pricing"
101
+ >
102
+ < div className = "container relative z-10" >
103
+ < SectionTitle dark >
104
+ < Translate translationKey = "pricing.title" />
105
+ </ SectionTitle >
106
+ < div className = "max-w-4xl mx-auto flex flex-row flex-wrap justify-center" >
107
+ { prices . map ( ( price ) => (
108
+ < PricingCard key = { price . id } price = { price } />
109
+ ) ) }
110
+ < div className = "w-full self-center max-w-md mt-10 | lg:pl-10 lg:mt-0 lg:w-1/3" >
111
+ < div className = "p-5 dotted-corner flex flex-col items-center text-center bg-blue bg-blue-gradient shadow-md border-blue-dark border-4" >
112
+ < span className = "font-bold text-white leading-tight font-title uppercase lined-center lined-white relative" >
113
+ { t ( "pricing.student" ) }
114
+ </ span >
115
+ < div className = "mt-2 text-blue-black/80 font-semibold" >
116
+ < Translate translationKey = "pricing.free_ticket" />
117
+ </ div >
118
+ < Button
119
+ size = "small"
120
+ square
121
+ className = "white mt-2 mb-5"
122
+
123
+ >
124
+ { t ( "contact_us" ) }
125
+ </ Button >
126
+ < small className = "text-xs text-blue-black/50 font-bold" >
127
+ *{ t ( "pricing.certificate_needed" ) }
128
+ </ small >
129
+ </ div >
130
+ </ div >
131
+ </ div >
132
+ </ div >
133
+ </ Section >
134
+ ) }
135
+ < Venue subtitle = { t ( "2025.venue.subtitle" ) } />
136
+ < Section
137
+ section = "lastYear"
138
+ className = " z-10 relative pb-10 overflow-y-clip"
139
+ >
140
+ < div className = "container text-center flex flex-col items-center pt-12" >
141
+ < SectionTitle dark >
142
+ < Translate translationKey = "last_edition.title" />
143
+ </ SectionTitle >
144
+ < SectionSubTitle dark >
145
+ < Translate
146
+ translationKey = "2025.see_review.subtitle"
147
+ translationParams = { {
148
+ edition : "2024" ,
149
+ link : (
150
+ < a href = { `/${ locale } /con/2024/review` } className = "link" >
151
+ { t ( "2025.see_review.link" ) }
152
+ </ a >
153
+ ) ,
154
+ } }
155
+ />
156
+ </ SectionSubTitle >
157
+ < iframe
158
+ className = "aspect-video w-full max-w-2xl border-white border-8 shadow-2xl"
159
+ src = "https://www.youtube.com/embed/XXj8NCvLuis?si=hWGWKS81UriUkJ3R&controls=0"
160
+ title = "YouTube video player"
161
+ frameBorder = "0"
162
+ allow = "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
163
+ referrerPolicy = "strict-origin-when-cross-origin"
164
+ allowFullScreen
165
+ > </ iframe >
166
+ </ div >
167
+ </ Section >
133
168
< Section
134
169
section = "missing"
135
- className = "relative z-10 text-center overflow-y-clip bg-white "
170
+ className = "relative bg-grey z-10 text-center overflow-y-clip"
136
171
>
137
172
< div className = "container text-center" >
138
173
< SectionTitle >
139
174
< Translate
140
175
translationKey = "missing_conferences.title"
141
- translationParams = { { edition : "2024 " } }
176
+ translationParams = { { edition : "2025 " } }
142
177
/>
143
178
</ SectionTitle >
144
179
< SectionSubTitle > { t ( "missing_conferences.subtitle" ) } </ SectionSubTitle >
@@ -151,10 +186,6 @@ const HomePage = ({ speakers, partners, images }: HomePageProps) => {
151
186
</ Button >
152
187
</ div >
153
188
</ Section >
154
- < div className = "pb-12" >
155
- < AfterMovie />
156
- </ div >
157
- < Venue subtitle = { t ( "2025.venue.subtitle" ) } />
158
189
< Section section = "sponsorship" className = "py-8" >
159
190
< div className = "container text-center" >
160
191
< SectionTitle dark >
0 commit comments