1
1
import { Metadata } from "next"
2
- import { HostedByGraphQLFoundation } from "@/icons"
2
+ import { BusIcon , HostedByGraphQLFoundation } from "@/icons"
3
3
import { Sponsors } from "./sponsors"
4
4
import { Rubik } from "next/font/google"
5
5
import GridButton from "../_components/grid-button"
6
6
import { InfoGrid } from "../_components/info-grid"
7
+ import {
8
+ BusFront ,
9
+ TicketsPlane ,
10
+ SquareParking ,
11
+ ExternalLink ,
12
+ } from "lucide-react"
7
13
8
14
const rubik = Rubik ( {
9
15
weight : [ "700" , "600" , "500" , "400" , "300" ] ,
@@ -14,6 +20,104 @@ export const metadata: Metadata = {
14
20
title : "GraphQLConf 2025 — Sept 08-10" ,
15
21
}
16
22
23
+ const HOTELS = [
24
+ {
25
+ name : "Mövenpick Hotel Amsterdam City Centre" ,
26
+ link : "https://movenpick.accor.com/en/europe/netherlands/amsterdam/hotel-amsterdam.html?utm_source=google&utm_medium=local&utm_campaign=hotel-MHR-Amsterdam-city-center&y_source=1_MTUzNjI2OTgtNzE1LWxvY2F0aW9uLndlYnNpdGU%3D" ,
27
+ description :
28
+ "Piet Heinkade 11\n1019 BR Amsterdam, Netherlands\nPhone: +31 20 519 1200" ,
29
+ } ,
30
+ {
31
+ name : "Inntel Hotels Amsterdam Landmark" ,
32
+ link : "https://www.inntelhotelsamsterdamlandmark.nl/" ,
33
+ description :
34
+ "VOC-kade 600\n1018 LG Amsterdam, Netherlands\n Phone: +31 20 227 2550" ,
35
+ } ,
36
+ {
37
+ name : "DoubleTree by Hilton Amsterdam Central Station" ,
38
+ link : "https://www.hilton.com/en/hotels/amscsdi-doubletree-amsterdam-centraal-station/?SEO_id=GMB-EMEA-DI-AMSCSDI" ,
39
+ description :
40
+ "Oosterdoksstraat 4 \n1011 DK Amsterdam, Netherlands\nPhone: +31 20 530 0800" ,
41
+ } ,
42
+ ]
43
+
44
+ const HOW_TO_GET_TO_VENUE = [
45
+ {
46
+ title : "Public Transportation" ,
47
+ description :
48
+ 'Take tram 26 from Amsterdam Central Station to the "Rietlandpark" stop. The venue is a 5-minute walk from there.' ,
49
+ icon : < BusFront size = { 20 } /> ,
50
+ } ,
51
+ {
52
+ title : "Airport Information" ,
53
+ description :
54
+ "Amsterdam Airport Schiphol is about 20 km from the venue. Take a direct train to Amsterdam Central Station, then follow the public transportation instructions." ,
55
+ icon : < TicketsPlane size = { 20 } /> ,
56
+ } ,
57
+ {
58
+ title : "Parking at venue" ,
59
+ description :
60
+ "Limited parking is available at the venue. We recommend using public transportation when possible." ,
61
+ icon : < SquareParking size = { 20 } /> ,
62
+ } ,
63
+ ]
64
+
65
+ function Venue ( ) {
66
+ return (
67
+ < section className = "container pb-24 text-white" >
68
+ < h1 className = "text-5xl font-bold mb-4" > Venue</ h1 >
69
+ < div className = "grid grid-cols-1 md:grid-cols-2 gap-10" >
70
+ < div className = "flex gap-2 flex-col" >
71
+ < h2 className = "text-3xl" > Conference</ h2 >
72
+ < p >
73
+ < strong > Pakhuis De Zwijger</ strong >
74
+ < br /> Piet Heinkade 179, 1019 HC < br />
75
+ Amsterdam, Netherlands
76
+ </ p >
77
+ < div className = "flex flex-col gap-2" >
78
+ < h3 className = "text-xl mt-4 font-semibold" >
79
+ How to get to the venue?
80
+ </ h3 >
81
+ { HOW_TO_GET_TO_VENUE . map ( ( { title, description, icon } ) => (
82
+ < div key = { title } >
83
+ < div className = "flex flex-row items-center gap-4" >
84
+ { icon }
85
+ < h5 className = "text-lg" > { title } </ h5 >
86
+ </ div >
87
+ < p className = "max-w-96 ml-9" > { description } </ p >
88
+ </ div >
89
+ ) ) }
90
+ </ div >
91
+ </ div >
92
+
93
+ < div >
94
+ < h2 className = "text-3xl" > Hotel Information</ h2 >
95
+ < p className = "mt-2" >
96
+ The Linux Foundation has not contracted rooms at these properties
97
+ and cannot guarantee rates or availability.
98
+ </ p >
99
+ < div className = "mt-10 flex flex-col gap-4" >
100
+ { HOTELS . map ( hotel => (
101
+ < div key = { hotel . name } >
102
+ < strong >
103
+ < a
104
+ className = "hover:underline flex items-center gap-1"
105
+ href = { hotel . link }
106
+ >
107
+ { hotel . name }
108
+ < ExternalLink size = { 14 } />
109
+ </ a >
110
+ </ strong >
111
+ < p className = "whitespace-pre-wrap" > { hotel . description } </ p >
112
+ </ div >
113
+ ) ) }
114
+ </ div >
115
+ </ div >
116
+ </ div >
117
+ </ section >
118
+ )
119
+ }
120
+
17
121
export default function Page ( ) {
18
122
return (
19
123
< main
@@ -111,6 +215,8 @@ export default function Page() {
111
215
</ a >
112
216
</ div >
113
217
</ div >
218
+
219
+ < Venue />
114
220
</ main >
115
221
)
116
222
}
0 commit comments