Skip to content

new conf design — register today #5

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 7 commits into
base: new-conf-design--button
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/app/conf/2025/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ export default function Layout({
]}
is2025
/>
<div>{children}</div>
<div className="bg-neu-0 text-neu-900">{children}</div>
<Footer
logo={
<NextLink href="/conf/2025" className="nextra-logo text-white">
Expand Down
6 changes: 5 additions & 1 deletion src/app/conf/2025/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { FAQ } from "./faq"
import { Register } from "./register"
import { Sponsors } from "./sponsors"
import { Speakers } from "./speakers"
import { RegisterToday } from "./register-today"

export const metadata: Metadata = {
title: "GraphQLConf 2025 — Sept 08-10",
Expand Down Expand Up @@ -58,8 +59,11 @@ function Intro() {

export default function Page() {
return (
<main className="text-white">
<main>
<Hero />
<div className="mx-auto max-w-[90rem]">
<RegisterToday className="my-8 md:mb-16 md:mt-24" />
</div>
<div className="container my-20 flex flex-col gap-20 md:my-32 md:gap-32">
<Intro />
<Sponsors />
Expand Down
52 changes: 52 additions & 0 deletions src/app/conf/2025/register-today/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import { clsx } from "clsx"
import NextImage from "next-image-export-optimizer"

import { Button } from "../../_design-system/button"

import speakerImage from "./speaker.webp"

export interface RegisterTodayProps {
className?: string
}

export function RegisterToday({ className }: RegisterTodayProps) {
return (
<section
className={clsx(
"flex gap-10 px-4 max-lg:flex-col-reverse lg:px-12 xl:gap-x-24 xl:px-24",
className,
)}
>
{/* todo: test if the placeholder works in deploy preview */}
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is something we'll need to test because blur placeholders just don't work for me locally, and yet they seem to work in prod.

<NextImage
src={speakerImage}
alt="GraphQL Conference"
width="450"
height="566"
className="aspect-[312/392] w-full object-cover max-sm:hidden sm:aspect-[2] lg:aspect-[450/566] lg:h-[566px] lg:w-[450px]"
/>
<div className="flex flex-col justify-between">
<div>
<h2 className="typography-h2 text-neu-900">
Let's celebrate 10 years of GraphQL together
</h2>
<p className="typography-h3 text-neu-800 mt-6 md:mt-10">
Join three transformative days of expert insights and innovation to
shape the next decade of APIs!
</p>
</div>
<div className="mt-10 flex gap-x-6 gap-y-4 max-sm:flex-col">
<Button href="https://cvent.me/PBNYEe?utm_source=graphql_conf_2025&utm_medium=website&utm_campaign=register_section">
Register today
</Button>
<Button
variant="secondary"
href="https://sessionize.com/graphqlconf-2025?utm_medium=website&utm_campaign=speaker_section"
>
Become a speaker
</Button>
</div>
</div>
</section>
)
}
Binary file added src/app/conf/2025/register-today/speaker.webp
Binary file not shown.
2 changes: 1 addition & 1 deletion src/app/conf/_design-system/button.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ export type ButtonProps =

export function Button(props: ButtonProps) {
const className = clsx(
"relative flex items-center justify-center gap-2.5 font-normal text-base/none text-neu-0 bg-neu-900 hover:bg-neu-800 active:bg-neu-700 font-sans h-14 px-8 data-[size=md]:h-12 data-[variant=secondary]:bg-neu-100 data-[variant=secondary]:text-neu-900 dark:data-[variant=secondary]:text-neu-0 data-[variant=secondary]:hover:bg-neu-200/75 data-[variant=secondary]:active:bg-neu-200/90",
"relative flex items-center justify-center gap-2.5 font-normal text-base/none text-neu-0 bg-neu-900 hover:bg-neu-800 active:bg-neu-700 font-sans h-14 px-8 data-[size=md]:h-12 data-[variant=secondary]:bg-neu-100 data-[variant=secondary]:text-neu-900 dark:data-[variant=secondary]:text-neu-0 data-[variant=secondary]:hover:bg-neu-200/75 data-[variant=secondary]:active:bg-neu-200/90 gql-focus-visible",
props.className,
)

Expand Down
4 changes: 4 additions & 0 deletions src/globals.css
Original file line number Diff line number Diff line change
Expand Up @@ -503,3 +503,7 @@ div[id^="headlessui-menu-items"] {
@apply text-xl;
@apply dark:border-neutral-700/80;
}

.gql-focus-visible {
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The design is kinda minimalist / brutalist and it doesn't specify the focus style, so I went with the simplest non-default one. Would've kept the default but blue clashes with our colors.

image

@apply focus-visible:outline-neu-900 focus-visible:outline-offset-[5px];
}
Loading