Skip to content

Commit 7155046

Browse files
committed
add venue section
1 parent 031e11a commit 7155046

File tree

3 files changed

+119
-1
lines changed

3 files changed

+119
-1
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
"hast-util-to-string": "3.0.1",
3535
"iframe-resizer-react": "^1.1.0",
3636
"leaflet": "^1.9.4",
37+
"lucide-react": "^0.468.0",
3738
"markdown-to-jsx": "^7.4.0",
3839
"marked": "5.1.2",
3940
"next": "^14.2.5",

pnpm-lock.yaml

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/app/conf/2025/page.tsx

Lines changed: 107 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
import { Metadata } from "next"
2-
import { HostedByGraphQLFoundation } from "@/icons"
2+
import { BusIcon, HostedByGraphQLFoundation } from "@/icons"
33
import { Sponsors } from "./sponsors"
44
import { Rubik } from "next/font/google"
55
import GridButton from "../_components/grid-button"
66
import { InfoGrid } from "../_components/info-grid"
7+
import {
8+
BusFront,
9+
TicketsPlane,
10+
SquareParking,
11+
ExternalLink,
12+
} from "lucide-react"
713

814
const rubik = Rubik({
915
weight: ["700", "600", "500", "400", "300"],
@@ -14,6 +20,104 @@ export const metadata: Metadata = {
1420
title: "GraphQLConf 2025 — Sept 08-10",
1521
}
1622

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+
17121
export default function Page() {
18122
return (
19123
<main
@@ -111,6 +215,8 @@ export default function Page() {
111215
</a>
112216
</div>
113217
</div>
218+
219+
<Venue />
114220
</main>
115221
)
116222
}

0 commit comments

Comments
 (0)