Skip to content

Commit ab35c26

Browse files
authored
feat: more conf 2025 resources (#1939)
* feat: more conf 2025 resources * update * add to nav * link * open external links in new tab * faq updates * venue updates * update faq
1 parent 2c8844a commit ab35c26

File tree

8 files changed

+270
-46
lines changed

8 files changed

+270
-46
lines changed

src/app/conf/2025/faq.tsx

+27-9
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ const FAQS = [
1616
{
1717
question: "Are there group discounts for teams?",
1818
answer:
19-
'If you have a group of 5 or more people, you can receive a 10% discount on all passes. All pass types must be the same, and all registrations must be processed under one group registration and must be paid with the same credit card. To create a group, select “Add Another Person” to your registration. When 5 or more people are added the 10% discount will be automatically applied. <a href="mailto:[email protected]">Contact us</a> for any questions.',
19+
'If you have a group of 5 or more people, you can receive a 10% discount on all passes. All pass types must be the same, and all registrations must be processed under one group registration and must be paid with the same credit card. To create a group, select “Add Another Person” to your registration. When 5 or more people are added the 10% discount will be automatically applied. <a href="mailto:[email protected]">[email protected]</a> for any questions.',
2020
},
2121
{
2222
question: "What is the refund and cancellation policy?",
23-
answer: `If you must cancel for any reason, please sign back into your registration, click the “Register/Modify” button and select “Unregister.” If you need further assistance, <a href="mailto:[email protected]">contact us</a>.<br/><br/>Refunds will only be issued for cancellations received two weeks prior to the event start date, including bulk ticket request refunds, and will appear as a credit on the card's statement 7-10 business days after cancellation. Individual refund requests for late cancellations due to sickness or emergency will be considered on a case by case basis - <a href="mailto:[email protected]">contact us</a>.<br/><br/>Refunds can only be issued on the card the original payment was made.`,
23+
answer: `If you must cancel for any reason, please sign back into your registration, click the “Register/Modify” button and select “Unregister.” If you need further assistance, please contact <a href="mailto:[email protected]">[email protected]</a>.<br/><br/>Refunds will only be issued for cancellations received two weeks prior to the event start date, including bulk ticket request refunds, and will appear as a credit on the card's statement 7-10 business days after cancellation. Individual refund requests for late cancellations due to sickness or emergency will be considered on a case by case basis - <a href="mailto:[email protected]">[email protected]</a>.<br/><br/>Refunds can only be issued on the card the original payment was made.`,
2424
},
2525
{
2626
question: "Can I transfer my registration?",
@@ -29,13 +29,30 @@ const FAQS = [
2929
},
3030
{
3131
question: "Can I get certificate of attendance?",
32+
answer: `You can download your Certificate of Attendance directly from your <a target="_blank" href="https://openprofile.dev/myevents">LFX dashboard</a> by navigating to the "Past Events" section in the LF Events column. Please Note: We verify attendance through the registration system, and certificates will only be available for download after the event is completed.`,
33+
},
34+
{
35+
question: "How do I request a visa letter?",
36+
answer: `You must be registered for the event before requesting a visa letter. Please note: it can take up to an hour for our registration system and visa letter system to sync. <a target="_blank" href="https://events.linuxfoundation.org/about/visa-request/">Request a visa letter</a>.`,
37+
},
38+
{
39+
question: "Where can I find health and safety information for the event?",
3240
answer:
33-
'To request a Certificate of Attendance, please submit a request <a target="blank" href="https://docs.google.com/forms/d/1RpI8h6AGK2rCl3aIlyEY0D6fU3tsZ5yr1Ba6c3h6p9Y/viewform?edit_requested=true">here</a>. Please Note: We verify attendance through the registration system, and Certificate of Attendance letters are sent out after the event is completed.',
41+
'Your well-being is our top priority. We continuously update our health and safety guidelines based on local regulations. Information about food allergies, medical resources, emergency contacts, and safety services can be found on <a href="/conf/2025/resources#onsite-resources">this</a> page.',
42+
},
43+
{
44+
question: "What accessibility and onsite resources are available?",
45+
answer:
46+
'We are committed to providing a comfortable and accessible experience for all attendees. Onsite resources include a private nursing room, venue accessibility support, reserved seating, a quiet room, communication and pronoun stickers, all-gender restrooms, first aid assistance, and a process for handling harassment reports. For full details on these resources, please visit <a href="/conf/2025/resources#health--safety">this</a> page.',
47+
},
48+
{
49+
question: "Looking for more?",
50+
answer: "Checkout our <a href='/conf/2025/resources'>Resources</a> page.",
3451
},
3552
{
3653
question: "Cannot find the answer to your question?",
3754
answer:
38-
'You are welcome to email us <a href="mailto:graphqlconf@graphql.org">graphqlconf@graphql.org</a>.',
55+
'You are welcome to email us <a href="mailto:graphql_events@linuxfoundation.org ">graphql_events@linuxfoundation.org</a>.',
3956
},
4057
]
4158

@@ -50,13 +67,14 @@ export function FAQ() {
5067
Asked Questions
5168
</h2>
5269
<p className="select-none text-sm">
53-
PLEASE CONTACT{" "}
70+
You can find much more information on our{" "}
5471
<a
55-
href="mailto:[email protected]"
56-
className="select-text uppercase text-primary hover:underline"
72+
href="/conf/2025/resources"
73+
className="select-text text-primary hover:underline"
5774
>
58-
59-
</a>
75+
Resources
76+
</a>{" "}
77+
page.
6078
</p>
6179
</div>
6280

src/app/conf/2025/layout.tsx

+25-9
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@ import { Header } from "../_components/header"
44
import { Footer } from "../_components/footer"
55
import { GraphQLConf, HostedByGraphQLFoundation } from "@/icons"
66
import NextLink from "next/link"
7+
import { Rubik } from "next/font/google"
8+
9+
const rubik = Rubik({
10+
weight: ["700", "600", "500", "400", "300"],
11+
subsets: ["latin"],
12+
})
713

814
export const metadata = {
915
description:
@@ -41,15 +47,22 @@ export default function Layout({
4147
</NextLink>
4248
}
4349
links={[
44-
{ children: "Sponsor", href: "#sponsors" },
45-
{ children: "Speakers", href: "#speakers" },
46-
{ children: "Register", href: "#register" },
50+
{ children: "Sponsor", href: "/conf/2025/#sponsors" },
51+
{ children: "Speakers", href: "/conf/2025/#speakers" },
52+
{ children: "Register", href: "/conf/2025/#register" },
4753
{ children: "Recap", href: "/conf/2024" },
48-
{ children: "FAQ", href: "#faq" },
54+
{ children: "Resources", href: "/conf/2025/resources" },
55+
{ children: "FAQ", href: "/conf/2025/#faq" },
4956
]}
5057
is2025
5158
/>
52-
{children}
59+
<div
60+
style={{
61+
fontFamily: rubik.style.fontFamily,
62+
}}
63+
>
64+
{children}
65+
</div>
5366
<Footer
5467
logo={
5568
<NextLink href="/conf/2025" className="nextra-logo text-white">
@@ -62,8 +75,8 @@ export default function Layout({
6275
}
6376
links={[
6477
[
65-
{ children: "Sponsor", href: "#sponsors" },
66-
{ children: "Speakers", href: "#speakers" },
78+
{ children: "Sponsor", href: "/conf/2025/#sponsors" },
79+
{ children: "Speakers", href: "/#speakers" },
6780
{ children: "GraphQLConf 2024", href: "/conf/2024" },
6881
],
6982
[
@@ -75,9 +88,12 @@ export default function Layout({
7588
{ children: "GraphQL Foundation", href: "/foundation" },
7689
{
7790
children: "Code of Conduct",
78-
href: "/conf/2025/faq/#codeofconduct",
91+
href: "/conf/2025/resources/#code-of-conduct",
92+
},
93+
{
94+
children: "Diversity & Inclusion",
95+
href: "/conf/2025/resources/#diversity--inclusion",
7996
},
80-
{ children: "Diversity & Inclusion", href: "/conf/2025/faq/#dni" },
8197
],
8298
]}
8399
/>

src/app/conf/2025/page.tsx

+1-12
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,12 @@
11
import { Metadata } from "next"
22
import { HostedByGraphQLFoundation } from "@/icons"
3-
import { Rubik } from "next/font/google"
43
import { GridButton } from "../_components/grid-button"
54
import { Sponsor } from "./sponsorship"
65
import { Venue } from "./venue"
76
import { FAQ } from "./faq"
87
import { Register } from "./register"
98
import { PastSponsors } from "./past-sponsors"
109

11-
const rubik = Rubik({
12-
weight: ["700", "600", "500", "400", "300"],
13-
subsets: ["latin"],
14-
})
15-
1610
export const metadata: Metadata = {
1711
title: "GraphQLConf 2025 — Sept 08-10",
1812
}
@@ -63,12 +57,7 @@ function Intro() {
6357

6458
export default function Page() {
6559
return (
66-
<main
67-
style={{
68-
fontFamily: rubik.style.fontFamily,
69-
}}
70-
className="text-white"
71-
>
60+
<main className="text-white">
7261
<Hero />
7362
<div className="container my-20 flex flex-col gap-20 md:my-32 md:gap-32">
7463
<Intro />

src/app/conf/2025/register.tsx

+31-12
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,8 @@ export function Register() {
66
<InfoGrid
77
id="register"
88
title="Register"
9-
subtitle="Join a diverse community of GraphQL developers, architects, and enthusiasts while experiencing premium content and networking opportunities in a vendor-neutral environment."
9+
subtitle="Join a diverse community of GraphQL developers, architects, and enthusiasts while experiencing premium content and networking opportunities in a vendor-neutral environment. We never sell attendee lists or contact information, nor do we authorize others to do so. If you receive an email claiming to sell an attendee list for a Linux Foundation event, please forward it to [email protected]."
1010
listItems={[
11-
{
12-
title: "Corporate",
13-
description:
14-
"The Corporate Registration type is for registrants whose company is paying for their attendance. This includes for-profit companies. You will help keep the conference affordable for everyone, especially students and those needing financial aid.",
15-
},
16-
{
17-
title: "Individuals",
18-
description:
19-
"The Individual Registration type is for registrants who are currently not working for a company, work for a non-profit or research institution or are attending at their own expense. You will receive confirmation within five business days of registering if your individual registration is approved or needs additional information.",
20-
},
2111
{
2212
title: "Academics",
2313
description: `Academics registrations are for current full-time students and faculty members. Full-time faculty and students will need to upload a valid copy of their Faculty or Student ID when registering. If you have any questions, please email <a href="mailto:[email protected]">[email protected]</a>`,
@@ -28,11 +18,40 @@ export function Register() {
2818
},
2919
{
3020
title: "Sponsors",
31-
description: `A registration link was shared in an email to your company's sponsorship contact. Please reach out to your company’s sponsorship contact if you need to register as a Sponsor. For further questions, please email <a href="mailto:[email protected].">[email protected].</a>`,
21+
description: `A registration link was shared in an email to your company's sponsorship contact. Please reach out to your company’s sponsorship contact if you need to register as a Sponsor. For further questions, please email <a href="mailto:[email protected]">[email protected]</a>.`,
22+
},
23+
{
24+
title: "Media",
25+
description: `If you are a member of the media interested in attending this event and have not received a complimentary access code to attend, contact us at <a href="mailto:[email protected]">[email protected]</a>.`,
3226
},
3327
]}
3428
/>
3529

30+
<div className="mt-10">
31+
<h2 className="mb-4 text-5xl font-bold text-white">Rates</h2>
32+
<p>The registraion deadlines is 23:59 on the respective date.</p>
33+
<div className="mt-8 grid gap-6 md:grid-cols-3 md:gap-2">
34+
{[
35+
{ title: "Early Bird", dates: "Through 13 July", price: "$599" },
36+
{ title: "Standard", dates: "14 July - 31 August", price: "$799" },
37+
{
38+
title: "Late",
39+
dates: "1 September - 10 September",
40+
price: "$899",
41+
},
42+
].map((item, index) => (
43+
<div
44+
key={item.title}
45+
className="w-full flex-shrink-0 snap-start items-center justify-center border border-primary p-6 text-center text-white shadow-lg lg:w-full lg:max-w-sm"
46+
>
47+
<h3 className="mb-2 text-2xl font-bold">{item.title}</h3>
48+
<time>{item.dates}</time>
49+
<p className="mt-2 text-3xl font-bold">{item.price}</p>
50+
</div>
51+
))}
52+
</div>
53+
</div>
54+
3655
<div className="mt-8 flex justify-center">
3756
<a
3857
href="https://cvent.me/PBNYEe?utm_source=graphql_conf_2025&utm_medium=website&utm_campaign=register_section"
+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
"use client"
2+
3+
import Resources from "./resources.mdx"
4+
5+
export default function ResourcesPage() {
6+
return (
7+
<Resources
8+
components={{
9+
// @ts-expect-error - not sure how to type this
10+
a: props => {
11+
const isExternal = props.href.startsWith("http")
12+
if (isExternal) {
13+
return <a {...props} target="_blank" rel="noopener noreferrer" />
14+
}
15+
16+
return <a {...props} />
17+
},
18+
}}
19+
/>
20+
)
21+
}

src/app/conf/2025/resources/page.tsx

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import Resources from "./client-mdx"
2+
3+
import { clsx } from "clsx"
4+
import { Metadata } from "next"
5+
6+
export const metadata: Metadata = {
7+
title: "Resources | 2025",
8+
}
9+
10+
export default function ResourcesPage() {
11+
return (
12+
<main>
13+
<div
14+
className={clsx(
15+
"container my-10 flex flex-col md:my-20",
16+
"prose max-w-screen-xl",
17+
"text-white prose-headings:text-white prose-a:text-white prose-strong:text-white",
18+
"prose-a:w-fit prose-a:transition-colors hover:prose-a:text-primary",
19+
)}
20+
>
21+
<Resources />
22+
</div>
23+
</main>
24+
)
25+
}

0 commit comments

Comments
 (0)