From 1f4a3f3ba426bc71be3748bbba76a63da4bb88ff Mon Sep 17 00:00:00 2001 From: Piotr Monwid-Olechnowicz Date: Mon, 21 Apr 2025 18:35:00 +0200 Subject: [PATCH 001/134] Add Hans Grotesk as --font-sans --- src/app/conf/2025/layout.tsx | 24 ++++++++---------- ...HostGrotesk-Italic-VariableFont_wght.woff2 | Bin 0 -> 33724 bytes .../fonts/HostGrotesk-VariableFont_wght.woff2 | Bin 0 -> 31160 bytes src/app/layout.tsx | 3 ++- 4 files changed, 13 insertions(+), 14 deletions(-) create mode 100644 src/app/fonts/HostGrotesk-Italic-VariableFont_wght.woff2 create mode 100644 src/app/fonts/HostGrotesk-VariableFont_wght.woff2 diff --git a/src/app/conf/2025/layout.tsx b/src/app/conf/2025/layout.tsx index b60c004237..f374cd4368 100644 --- a/src/app/conf/2025/layout.tsx +++ b/src/app/conf/2025/layout.tsx @@ -4,12 +4,7 @@ import { Header } from "../_components/header" import { Footer } from "../_components/footer" import { GraphQLConf, HostedByGraphQLFoundation } from "@/icons" import NextLink from "next/link" -import { Rubik } from "next/font/google" - -const rubik = Rubik({ - weight: ["700", "600", "500", "400", "300"], - subsets: ["latin"], -}) +import { hostGrotesk } from "../../fonts" export const metadata = { description: @@ -36,6 +31,15 @@ export default function Layout({ }): ReactElement { return ( <> + From 762f0ed903bbc541986100dd9fbfaf4298b91a50 Mon Sep 17 00:00:00 2001 From: Piotr Monwid-Olechnowicz Date: Mon, 21 Apr 2025 18:54:17 +0200 Subject: [PATCH 002/134] Clean up the font setup to make sure .font-sans works consistently --- src/app/conf/2023/layout.tsx | 2 ++ src/app/conf/2024/layout.tsx | 2 ++ src/app/conf/2025/layout.tsx | 12 ++---------- src/app/fonts/index.tsx | 18 ++++++++++++++++++ src/app/fonts/old-fonts.tsx | 14 ++++++++++++++ src/app/layout.tsx | 8 +------- tailwind.config.ts | 7 +++++++ 7 files changed, 46 insertions(+), 17 deletions(-) create mode 100644 src/app/fonts/index.tsx create mode 100644 src/app/fonts/old-fonts.tsx diff --git a/src/app/conf/2023/layout.tsx b/src/app/conf/2023/layout.tsx index 4669949d2c..6b3f04a9db 100644 --- a/src/app/conf/2023/layout.tsx +++ b/src/app/conf/2023/layout.tsx @@ -4,6 +4,7 @@ import { Header } from "../_components/header" import { Footer } from "../_components/footer" import { GraphQLConf, HostedByGraphQLFoundation } from "@/icons" import NextLink from "next/link" +import { OldFontsStyleTag } from "../../fonts/old-fonts" export const metadata = { description: @@ -33,6 +34,7 @@ export default function ConfLayout({ const hover = "#c026d3" return ( <> + diff --git a/tailwind.config.ts b/tailwind.config.ts index 6a71eba9d0..f0444b4f9f 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -1,5 +1,6 @@ import type { Config } from "tailwindcss" import typography from "@tailwindcss/typography" +import { fontFamily } from "tailwindcss/defaultTheme" const config: Config = { content: ["./src/**/*.{js,ts,jsx,tsx,mdx}", "./theme.config.tsx"], @@ -9,6 +10,12 @@ const config: Config = { padding: "1rem", }, extend: { + fontFamily: { + sans: [ + `var(--font-sans, ${fontFamily.sans.slice(0, 3).join(", ")})`, + ...fontFamily.sans, + ], + }, colors: { primary: "#e10098", "conf-black": "#0e031c", From 4b08c52bdf490251f9bbb4924bf1241f342502ca Mon Sep 17 00:00:00 2001 From: Piotr Monwid-Olechnowicz Date: Mon, 21 Apr 2025 19:02:38 +0200 Subject: [PATCH 003/134] Add Commit Mono as --font-mono --- src/app/fonts/CommitMono-VariableFont.woff2 | Bin 0 -> 86768 bytes src/app/fonts/index.tsx | 12 ++++++++++++ tailwind.config.ts | 4 ++++ 3 files changed, 16 insertions(+) create mode 100644 src/app/fonts/CommitMono-VariableFont.woff2 diff --git a/src/app/fonts/CommitMono-VariableFont.woff2 b/src/app/fonts/CommitMono-VariableFont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..f9ac1ee498c33ac55b804c3dbd6c8035b6828042 GIT binary patch literal 86768 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 { diff --git a/tailwind.config.ts b/tailwind.config.ts index f0444b4f9f..9db1732ed5 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -15,6 +15,10 @@ const config: Config = { `var(--font-sans, ${fontFamily.sans.slice(0, 3).join(", ")})`, ...fontFamily.sans, ], + mono: [ + `var(--font-mono, ${fontFamily.mono.slice(0, 3).join(", ")})`, + ...fontFamily.mono, + ], }, colors: { primary: "#e10098", From 4d50d705bf901c5c20b3d424f0fb790cd41c0875 Mon Sep 17 00:00:00 2001 From: Piotr Monwid-Olechnowicz Date: Mon, 21 Apr 2025 19:20:26 +0200 Subject: [PATCH 004/134] Add new colors --- src/app/colors.css | 41 ++++++++++++++++++++++++++++++++++++ src/app/conf/2025/layout.tsx | 1 + tailwind.config.ts | 28 ++++++++++++++++++++++++ 3 files changed, 70 insertions(+) create mode 100644 src/app/colors.css diff --git a/src/app/colors.css b/src/app/colors.css new file mode 100644 index 0000000000..f2d8f461d7 --- /dev/null +++ b/src/app/colors.css @@ -0,0 +1,41 @@ +:root { + --color-pri-lighter: #ffccef; + --color-pri-light: #ffccef; + --color-pri-base: #e10098; + --color-pri-dark: #990069; + --color-pri-darker: #660046; + + --color-sec-lighter: #edfad1; + --color-sec-light: #dbf6a2; + --color-sec-base: #c3f654; + --color-sec-dark: #83bd02; + --color-sec-darker: #507501; + + --color-neu-0: #ffffff; + --color-neu-50: #fafcf4; + --color-neu-100: #f3f4f0; + --color-neu-200: #e7e9e2; + --color-neu-300: #dbded3; + --color-neu-400: #cfd3c5; + --color-neu-500: #b8bda8; + --color-neu-600: #a0a88a; + --color-neu-700: #6d7557; + --color-neu-800: #363a2c; + --color-neu-900: #0e0f0b; +} + +@media (prefers-color-scheme: dark) { + :root { + --color-neu-900: #ffffff; + --color-neu-800: #fafcf4; + --color-neu-700: #f3f4f0; + --color-neu-600: #e7e9e2; + --color-neu-500: #dbded3; + --color-neu-400: #cfd3c5; + --color-neu-300: #b8bda8; + --color-neu-200: #a0a88a; + --color-neu-100: #6d7557; + --color-neu-50: #363a2c; + --color-neu-0: #0e0f0b; + } +} diff --git a/src/app/conf/2025/layout.tsx b/src/app/conf/2025/layout.tsx index 280141b2d3..57d1d206e6 100644 --- a/src/app/conf/2025/layout.tsx +++ b/src/app/conf/2025/layout.tsx @@ -5,6 +5,7 @@ import { Footer } from "../_components/footer" import { GraphQLConf, HostedByGraphQLFoundation } from "@/icons" import NextLink from "next/link" import { NewFontsStyleTag } from "../../fonts" +import "../../colors.css" export const metadata = { description: diff --git a/tailwind.config.ts b/tailwind.config.ts index 9db1732ed5..b174f080aa 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -24,6 +24,34 @@ const config: Config = { primary: "#e10098", "conf-black": "#0e031c", black: "#1b1b1b", + + // #region new design system colors + "pri-lighter": "var(--color-pri-lighter)", + "pri-light": "var(--color-pri-light)", + "pri-base": "var(--color-pri-base)", + "pri-dark": "var(--color-pri-dark)", + "pri-darker": "var(--color-pri-darker)", + + "sec-lighter": "var(--color-sec-lighter)", + "sec-light": "var(--color-sec-light)", + "sec-base": "var(--color-sec-base)", + "sec-dark": "var(--color-sec-dark)", + "sec-darker": "var(--color-sec-darker)", + + // We're using 3-letter color names to avoid conflicting + // with the old `neutral` color. + "neu-0": "var(--color-neu-0)", + "neu-50": "var(--color-neu-50)", + "neu-100": "var(--color-neu-100)", + "neu-200": "var(--color-neu-200)", + "neu-300": "var(--color-neu-300)", + "neu-400": "var(--color-neu-400)", + "neu-500": "var(--color-neu-500)", + "neu-600": "var(--color-neu-600)", + "neu-700": "var(--color-neu-700)", + "neu-800": "var(--color-neu-800)", + "neu-900": "var(--color-neu-900)", + // #endregion new design system colors }, backgroundImage: { "gradient-radial": "radial-gradient(var(--tw-gradient-stops))", From 53c2514ead3cf538630c85a188f664f95d7b31e4 Mon Sep 17 00:00:00 2001 From: Piotr Monwid-Olechnowicz Date: Tue, 22 Apr 2025 01:04:17 +0200 Subject: [PATCH 005/134] Use relative rgb colors to support alpha --- tailwind.config.ts | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/tailwind.config.ts b/tailwind.config.ts index b174f080aa..5f8fa25c77 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -1,6 +1,6 @@ +import { fontFamily } from "tailwindcss/defaultTheme" import type { Config } from "tailwindcss" import typography from "@tailwindcss/typography" -import { fontFamily } from "tailwindcss/defaultTheme" const config: Config = { content: ["./src/**/*.{js,ts,jsx,tsx,mdx}", "./theme.config.tsx"], @@ -40,17 +40,17 @@ const config: Config = { // We're using 3-letter color names to avoid conflicting // with the old `neutral` color. - "neu-0": "var(--color-neu-0)", - "neu-50": "var(--color-neu-50)", - "neu-100": "var(--color-neu-100)", - "neu-200": "var(--color-neu-200)", - "neu-300": "var(--color-neu-300)", - "neu-400": "var(--color-neu-400)", - "neu-500": "var(--color-neu-500)", - "neu-600": "var(--color-neu-600)", - "neu-700": "var(--color-neu-700)", - "neu-800": "var(--color-neu-800)", - "neu-900": "var(--color-neu-900)", + "neu-0": "rgb(from var(--color-neu-0) r g b / )", + "neu-50": "rgb(from var(--color-neu-50) r g b / )", + "neu-100": "rgb(from var(--color-neu-100) r g b / )", + "neu-200": "rgb(from var(--color-neu-200) r g b / )", + "neu-300": "rgb(from var(--color-neu-300) r g b / )", + "neu-400": "rgb(from var(--color-neu-400) r g b / )", + "neu-500": "rgb(from var(--color-neu-500) r g b / )", + "neu-600": "rgb(from var(--color-neu-600) r g b / )", + "neu-700": "rgb(from var(--color-neu-700) r g b / )", + "neu-800": "rgb(from var(--color-neu-800) r g b / )", + "neu-900": "rgb(from var(--color-neu-900) r g b / )", // #endregion new design system colors }, backgroundImage: { From a263043b2d9e5e72fbace54018e2f762c73aec3d Mon Sep 17 00:00:00 2001 From: Piotr Monwid-Olechnowicz Date: Tue, 22 Apr 2025 01:09:18 +0200 Subject: [PATCH 006/134] Use unwraped custom properties for colors to support older browsers --- src/app/colors.css | 64 +++++++++++++++++++++++----------------------- tailwind.config.ts | 42 +++++++++++++++--------------- 2 files changed, 53 insertions(+), 53 deletions(-) diff --git a/src/app/colors.css b/src/app/colors.css index f2d8f461d7..591e86651c 100644 --- a/src/app/colors.css +++ b/src/app/colors.css @@ -1,41 +1,41 @@ :root { - --color-pri-lighter: #ffccef; - --color-pri-light: #ffccef; - --color-pri-base: #e10098; - --color-pri-dark: #990069; - --color-pri-darker: #660046; + --color-pri-lighter: 319 100% 90%; + --color-pri-light: 319 100% 90%; + --color-pri-base: 319 100% 44%; + --color-pri-dark: 319 100% 30%; + --color-pri-darker: 319 100% 20%; - --color-sec-lighter: #edfad1; - --color-sec-light: #dbf6a2; - --color-sec-base: #c3f654; - --color-sec-dark: #83bd02; - --color-sec-darker: #507501; + --color-sec-lighter: 79 80% 90%; + --color-sec-light: 79 82% 80%; + --color-sec-base: 79 90% 65%; + --color-sec-dark: 79 98% 37%; + --color-sec-darker: 79 98% 23%; - --color-neu-0: #ffffff; - --color-neu-50: #fafcf4; - --color-neu-100: #f3f4f0; - --color-neu-200: #e7e9e2; - --color-neu-300: #dbded3; - --color-neu-400: #cfd3c5; - --color-neu-500: #b8bda8; - --color-neu-600: #a0a88a; - --color-neu-700: #6d7557; - --color-neu-800: #363a2c; - --color-neu-900: #0e0f0b; + --color-neu-0: 0 0% 100%; + --color-neu-50: 75 57% 97%; + --color-neu-100: 75 15% 95%; + --color-neu-200: 77 14% 90%; + --color-neu-300: 76 14% 85%; + --color-neu-400: 77 14% 80%; + --color-neu-500: 74 14% 70%; + --color-neu-600: 76 15% 60%; + --color-neu-700: 76 15% 40%; + --color-neu-800: 77 14% 20%; + --color-neu-900: 75 15% 5%; } @media (prefers-color-scheme: dark) { :root { - --color-neu-900: #ffffff; - --color-neu-800: #fafcf4; - --color-neu-700: #f3f4f0; - --color-neu-600: #e7e9e2; - --color-neu-500: #dbded3; - --color-neu-400: #cfd3c5; - --color-neu-300: #b8bda8; - --color-neu-200: #a0a88a; - --color-neu-100: #6d7557; - --color-neu-50: #363a2c; - --color-neu-0: #0e0f0b; + --color-neu-900: 0 0% 100%; + --color-neu-800: 75 57% 97%; + --color-neu-700: 75 15% 95%; + --color-neu-600: 77 14% 90%; + --color-neu-500: 76 14% 85%; + --color-neu-400: 77 14% 80%; + --color-neu-300: 74 14% 70%; + --color-neu-200: 76 15% 60%; + --color-neu-100: 76 15% 40%; + --color-neu-50: 77 14% 20%; + --color-neu-0: 75 15% 5%; } } diff --git a/tailwind.config.ts b/tailwind.config.ts index 5f8fa25c77..2dd7acd077 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -26,31 +26,31 @@ const config: Config = { black: "#1b1b1b", // #region new design system colors - "pri-lighter": "var(--color-pri-lighter)", - "pri-light": "var(--color-pri-light)", - "pri-base": "var(--color-pri-base)", - "pri-dark": "var(--color-pri-dark)", - "pri-darker": "var(--color-pri-darker)", + "pri-lighter": "hsl(var(--color-pri-lighter) / )", + "pri-light": "hsl(var(--color-pri-light) / )", + "pri-base": "hsl(var(--color-pri-base) / )", + "pri-dark": "hsl(var(--color-pri-dark) / )", + "pri-darker": "hsl(var(--color-pri-darker) / )", - "sec-lighter": "var(--color-sec-lighter)", - "sec-light": "var(--color-sec-light)", - "sec-base": "var(--color-sec-base)", - "sec-dark": "var(--color-sec-dark)", - "sec-darker": "var(--color-sec-darker)", + "sec-lighter": "hsl(var(--color-sec-lighter) / )", + "sec-light": "hsl(var(--color-sec-light) / )", + "sec-base": "hsl(var(--color-sec-base) / )", + "sec-dark": "hsl(var(--color-sec-dark) / )", + "sec-darker": "hsl(var(--color-sec-darker) / )", // We're using 3-letter color names to avoid conflicting // with the old `neutral` color. - "neu-0": "rgb(from var(--color-neu-0) r g b / )", - "neu-50": "rgb(from var(--color-neu-50) r g b / )", - "neu-100": "rgb(from var(--color-neu-100) r g b / )", - "neu-200": "rgb(from var(--color-neu-200) r g b / )", - "neu-300": "rgb(from var(--color-neu-300) r g b / )", - "neu-400": "rgb(from var(--color-neu-400) r g b / )", - "neu-500": "rgb(from var(--color-neu-500) r g b / )", - "neu-600": "rgb(from var(--color-neu-600) r g b / )", - "neu-700": "rgb(from var(--color-neu-700) r g b / )", - "neu-800": "rgb(from var(--color-neu-800) r g b / )", - "neu-900": "rgb(from var(--color-neu-900) r g b / )", + "neu-0": "hsl(var(--color-neu-0) / )", + "neu-50": "hsl(var(--color-neu-50) / )", + "neu-100": "hsl(var(--color-neu-100) / )", + "neu-200": "hsl(var(--color-neu-200) / )", + "neu-300": "hsl(var(--color-neu-300) / )", + "neu-400": "hsl(var(--color-neu-400) / )", + "neu-500": "hsl(var(--color-neu-500) / )", + "neu-600": "hsl(var(--color-neu-600) / )", + "neu-700": "hsl(var(--color-neu-700) / )", + "neu-800": "hsl(var(--color-neu-800) / )", + "neu-900": "hsl(var(--color-neu-900) / )", // #endregion new design system colors }, backgroundImage: { From bc33589a0755539bfb76b19c51fe5b9f2170d188 Mon Sep 17 00:00:00 2001 From: Piotr Monwid-Olechnowicz Date: Mon, 21 Apr 2025 22:30:45 +0200 Subject: [PATCH 007/134] Add typography styles --- src/app/conf/2025/layout.tsx | 1 + src/app/typography.css | 102 +++++++++++++++++++++++++++++++++++ 2 files changed, 103 insertions(+) create mode 100644 src/app/typography.css diff --git a/src/app/conf/2025/layout.tsx b/src/app/conf/2025/layout.tsx index 57d1d206e6..e4d8750355 100644 --- a/src/app/conf/2025/layout.tsx +++ b/src/app/conf/2025/layout.tsx @@ -6,6 +6,7 @@ import { GraphQLConf, HostedByGraphQLFoundation } from "@/icons" import NextLink from "next/link" import { NewFontsStyleTag } from "../../fonts" import "../../colors.css" +import "../../typography.css" export const metadata = { description: diff --git a/src/app/typography.css b/src/app/typography.css new file mode 100644 index 0000000000..1f255f092b --- /dev/null +++ b/src/app/typography.css @@ -0,0 +1,102 @@ +.typography-d1, +.typography-h1, +.typography-h2, +.typography-h3 { + line-height: 1.2; +} + +.typography-body-lg, +.typography-body-md, +.typography-body-sm, +.typography-body-xs { + line-height: 1.5; +} + +.typography-d1 { + font-size: 96px; +} +@media (min-width: 768px) { + .typography-d1 { + font-size: 48px; + } +} + +.typography-h1 { + font-size: 40px; +} +@media (min-width: 768px) { + .typography-h1 { + font-size: 72px; + } +} + +.typography-h2 { + font-size: 32px; +} +@media (min-width: 768px) { + .typography-h2 { + font-size: 48px; + } +} + +.typography-h3 { + font-size: 24px; +} +@media (min-width: 768px) { + .typography-h3 { + font-size: 32px; + } +} + +.typography-body-lg { + font-size: 16px; +} +@media (min-width: 768px) { + .typography-body-lg { + font-size: 20px; + } +} + +.typography-body-md { + font-size: 14px; +} +@media (min-width: 768px) { + .typography-body-md { + font-size: 16px; + } +} + +.typography-body-sm { + font-size: 12px; +} +@media (min-width: 768px) { + .typography-body-sm { + font-size: 14px; + } +} + +.typography-body-xs { + font-size: 10px; +} +@media (min-width: 768px) { + .typography-body-xs { + font-size: 12px; + } +} + +.typography-button, +.typography-tagline { + font-size: 16px; + line-height: 1; +} + +.typography-tagline { + text-transform: uppercase; +} + +.typography-menu { + font-family: var(--font-mono); + font-size: 14px; + line-height: 1; + text-transform: uppercase; +} From 3634196a3e93548ae2208f497d8102c31d161c5b Mon Sep 17 00:00:00 2001 From: Piotr Monwid-Olechnowicz Date: Tue, 22 Apr 2025 01:38:14 +0200 Subject: [PATCH 008/134] Make the texts switch to different size starting from `lg` --- src/app/typography.css | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/app/typography.css b/src/app/typography.css index 1f255f092b..fb2debf1fe 100644 --- a/src/app/typography.css +++ b/src/app/typography.css @@ -15,7 +15,7 @@ .typography-d1 { font-size: 96px; } -@media (min-width: 768px) { +@media (min-width: 1024px) { .typography-d1 { font-size: 48px; } @@ -24,7 +24,7 @@ .typography-h1 { font-size: 40px; } -@media (min-width: 768px) { +@media (min-width: 1024px) { .typography-h1 { font-size: 72px; } @@ -33,7 +33,7 @@ .typography-h2 { font-size: 32px; } -@media (min-width: 768px) { +@media (min-width: 1024px) { .typography-h2 { font-size: 48px; } @@ -42,7 +42,7 @@ .typography-h3 { font-size: 24px; } -@media (min-width: 768px) { +@media (min-width: 1024px) { .typography-h3 { font-size: 32px; } @@ -51,7 +51,7 @@ .typography-body-lg { font-size: 16px; } -@media (min-width: 768px) { +@media (min-width: 1024px) { .typography-body-lg { font-size: 20px; } @@ -60,7 +60,7 @@ .typography-body-md { font-size: 14px; } -@media (min-width: 768px) { +@media (min-width: 1024px) { .typography-body-md { font-size: 16px; } @@ -69,7 +69,7 @@ .typography-body-sm { font-size: 12px; } -@media (min-width: 768px) { +@media (min-width: 1024px) { .typography-body-sm { font-size: 14px; } @@ -78,7 +78,7 @@ .typography-body-xs { font-size: 10px; } -@media (min-width: 768px) { +@media (min-width: 1024px) { .typography-body-xs { font-size: 12px; } From 9890b0989bac8c3ae0cc1e9cd26a2cb2c85e1af2 Mon Sep 17 00:00:00 2001 From: Piotr Monwid-Olechnowicz Date: Tue, 22 Apr 2025 01:43:25 +0200 Subject: [PATCH 009/134] Go back to switching on 768px --- src/app/typography.css | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/app/typography.css b/src/app/typography.css index fb2debf1fe..ebefc65ced 100644 --- a/src/app/typography.css +++ b/src/app/typography.css @@ -33,7 +33,7 @@ .typography-h2 { font-size: 32px; } -@media (min-width: 1024px) { +@media (min-width: 768px) { .typography-h2 { font-size: 48px; } @@ -42,7 +42,7 @@ .typography-h3 { font-size: 24px; } -@media (min-width: 1024px) { +@media (min-width: 768px) { .typography-h3 { font-size: 32px; } @@ -51,7 +51,7 @@ .typography-body-lg { font-size: 16px; } -@media (min-width: 1024px) { +@media (min-width: 768px) { .typography-body-lg { font-size: 20px; } @@ -60,7 +60,7 @@ .typography-body-md { font-size: 14px; } -@media (min-width: 1024px) { +@media (min-width: 768px) { .typography-body-md { font-size: 16px; } @@ -69,7 +69,7 @@ .typography-body-sm { font-size: 12px; } -@media (min-width: 1024px) { +@media (min-width: 768px) { .typography-body-sm { font-size: 14px; } @@ -78,7 +78,7 @@ .typography-body-xs { font-size: 10px; } -@media (min-width: 1024px) { +@media (min-width: 768px) { .typography-body-xs { font-size: 12px; } From 5f164f365733d9ab4e443de6eb44d48eb75b805e Mon Sep 17 00:00:00 2001 From: Piotr Monwid-Olechnowicz Date: Mon, 21 Apr 2025 19:59:42 +0200 Subject: [PATCH 010/134] Add README.md to explain the new directory --- src/app/conf/_design-system/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/app/conf/_design-system/README.md diff --git a/src/app/conf/_design-system/README.md b/src/app/conf/_design-system/README.md new file mode 100644 index 0000000000..5e2a979477 --- /dev/null +++ b/src/app/conf/_design-system/README.md @@ -0,0 +1 @@ +UI from 2025's designs From e2b9d673c84e1a7a9d1066846f1ee4b97f92c0f3 Mon Sep 17 00:00:00 2001 From: Piotr Monwid-Olechnowicz Date: Mon, 21 Apr 2025 20:01:33 +0200 Subject: [PATCH 011/134] Add Anchor component for internal and external links --- src/app/conf/_design-system/anchor.tsx | 42 ++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/app/conf/_design-system/anchor.tsx diff --git a/src/app/conf/_design-system/anchor.tsx b/src/app/conf/_design-system/anchor.tsx new file mode 100644 index 0000000000..72c5635b83 --- /dev/null +++ b/src/app/conf/_design-system/anchor.tsx @@ -0,0 +1,42 @@ +import { ForwardedRef, forwardRef, ReactElement } from "react" +import NextLink from "next/link" +import type { LinkProps as NextLinkProps } from "next/link" + +// eslint-disable-next-line @typescript-eslint/no-namespace +export declare namespace AnchorProps { + interface IntrinsicAnchorProps + extends React.DetailedHTMLProps< + React.AnchorHTMLAttributes, + HTMLAnchorElement + > { + href: `#${string}` | `http${string}` + } + + interface InternalAnchorProps extends NextLinkProps {} +} + +export type AnchorProps = + | AnchorProps.IntrinsicAnchorProps + | AnchorProps.InternalAnchorProps + +export const Anchor = forwardRef(function Anchor( + props: AnchorProps, + ref: ForwardedRef, +) { + return isInternal(props) ? ( + + ) : ( + + ) +}) as (props: AnchorProps) => ReactElement + +function isInternal( + props: AnchorProps, +): props is AnchorProps.InternalAnchorProps { + return ( + typeof props.href === "object" || + (typeof props.href === "string" && + !props.href.startsWith("http") && + !props.href.startsWith("#")) + ) +} From 7bf5c623914ea6c64af9480bf2a5b9ac0ab8c0be Mon Sep 17 00:00:00 2001 From: Piotr Monwid-Olechnowicz Date: Mon, 21 Apr 2025 20:34:25 +0200 Subject: [PATCH 012/134] Add clsx to classFunctions in Tailwind VSCode settings --- .vscode/settings.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index cb56bf9fab..02d49400e5 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -8,5 +8,6 @@ "typescript.tsdk": "node_modules/typescript/lib", "[typescript]": { "editor.defaultFormatter": "esbenp.prettier-vscode" - } + }, + "tailwindCSS.classFunctions": ["clsx"] } From 7b0ee331241c08a18a9cafa7a893c2156c8146a3 Mon Sep 17 00:00:00 2001 From: Piotr Monwid-Olechnowicz Date: Mon, 21 Apr 2025 20:34:40 +0200 Subject: [PATCH 013/134] Add Button component --- src/app/conf/_design-system/button.tsx | 90 ++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 src/app/conf/_design-system/button.tsx diff --git a/src/app/conf/_design-system/button.tsx b/src/app/conf/_design-system/button.tsx new file mode 100644 index 0000000000..6605a21752 --- /dev/null +++ b/src/app/conf/_design-system/button.tsx @@ -0,0 +1,90 @@ +import { clsx } from "clsx" +import { Anchor } from "./anchor" + +type Size = "md" | "lg" + +// eslint-disable-next-line @typescript-eslint/no-namespace +export declare namespace ButtonProps { + export interface BaseProps { + size?: Size + } + + export interface AnchorProps + extends BaseProps, + React.DetailedHTMLProps< + React.AnchorHTMLAttributes, + HTMLAnchorElement + > { + href: string + as?: never + className?: string + } + + export interface ButtonProps + extends BaseProps, + React.DetailedHTMLProps< + React.ButtonHTMLAttributes, + HTMLButtonElement + > { + href?: never + as?: never + className?: string + disabled?: boolean + type?: "button" | "submit" | "reset" + onClick?: React.MouseEventHandler + } + + /** + * Use inside `` or as visual part of bigger interactive element. + * Prefer `a` and `button` Buttons otherwise. + */ + export interface NonInteractiveProps + extends BaseProps, + React.DetailedHTMLProps, HTMLElement> { + href?: never + as: "span" | "div" + className?: string + } +} + +export type ButtonProps = + | ButtonProps.AnchorProps + | ButtonProps.ButtonProps + | ButtonProps.NonInteractiveProps + +export function Button(props: ButtonProps) { + const className = clsx( + "relative flex items-center justify-center gap-2.5 rounded-lg font-normal text-base/none text-neu-0 font-sans h-14 px-8 data-[size=md]:h-12", + props.className, + ) + + const styleAttrs = { "data-size": props.size } + + if ("href" in props && typeof props.href === "string") { + const { className: _1, size: _2, children, ...rest } = props + + return ( + + {children} + + ) + } + + if (props.as) { + const { className: _1, size: _2, children, as, ...rest } = props + const Root = as as "span" // we don't need HTMLDivElement type + return ( + + {children} + + ) + } + + const { className: _1, size: _2, children, ...rest } = props + + return ( + + ) +} From aaf944e110336fbfe2050587247f5d794804cda8 Mon Sep 17 00:00:00 2001 From: Piotr Monwid-Olechnowicz Date: Mon, 21 Apr 2025 22:29:46 +0200 Subject: [PATCH 014/134] Add `variant` prop --- src/app/conf/_design-system/button.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/app/conf/_design-system/button.tsx b/src/app/conf/_design-system/button.tsx index 6605a21752..cff8eed440 100644 --- a/src/app/conf/_design-system/button.tsx +++ b/src/app/conf/_design-system/button.tsx @@ -2,11 +2,13 @@ import { clsx } from "clsx" import { Anchor } from "./anchor" type Size = "md" | "lg" +type Variant = "primary" | "secondary" // eslint-disable-next-line @typescript-eslint/no-namespace export declare namespace ButtonProps { export interface BaseProps { size?: Size + variant?: Variant } export interface AnchorProps @@ -54,11 +56,11 @@ export type ButtonProps = export function Button(props: ButtonProps) { const className = clsx( - "relative flex items-center justify-center gap-2.5 rounded-lg font-normal text-base/none text-neu-0 font-sans h-14 px-8 data-[size=md]:h-12", + "relative flex items-center justify-center gap-2.5 font-normal text-base/none text-neu-0 font-sans h-14 px-8 data-[size=md]:h-12 data-[variant=secondary]:bg-neu-100 data-[variant=secondary]:light:text-neu-900", props.className, ) - const styleAttrs = { "data-size": props.size } + const styleAttrs = { "data-size": props.size, "data-variant": props.variant } if ("href" in props && typeof props.href === "string") { const { className: _1, size: _2, children, ...rest } = props From 088a5780936d8d76d56cb3a0baf279d6280f57fe Mon Sep 17 00:00:00 2001 From: Piotr Monwid-Olechnowicz Date: Tue, 22 Apr 2025 01:03:46 +0200 Subject: [PATCH 015/134] Fix Button colors --- src/app/conf/_design-system/button.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/conf/_design-system/button.tsx b/src/app/conf/_design-system/button.tsx index cff8eed440..3aa0b09ed4 100644 --- a/src/app/conf/_design-system/button.tsx +++ b/src/app/conf/_design-system/button.tsx @@ -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 font-sans h-14 px-8 data-[size=md]:h-12 data-[variant=secondary]:bg-neu-100 data-[variant=secondary]:light:text-neu-900", + "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/50 data-[variant=secondary]:active:bg-neu-200", props.className, ) From c04ac456900eac5cece77889ab726be4518f4d65 Mon Sep 17 00:00:00 2001 From: Piotr Monwid-Olechnowicz Date: Tue, 22 Apr 2025 02:11:21 +0200 Subject: [PATCH 016/134] Tweak hover color --- src/app/conf/_design-system/button.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/conf/_design-system/button.tsx b/src/app/conf/_design-system/button.tsx index 3aa0b09ed4..af1220cf49 100644 --- a/src/app/conf/_design-system/button.tsx +++ b/src/app/conf/_design-system/button.tsx @@ -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/50 data-[variant=secondary]:active:bg-neu-200", + "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", props.className, ) From 80bb1991ec70e1f479a3043516a2545c1c8bb3ef Mon Sep 17 00:00:00 2001 From: Piotr Monwid-Olechnowicz Date: Tue, 22 Apr 2025 01:44:05 +0200 Subject: [PATCH 017/134] Set text color in dark mode --- src/app/conf/2025/layout.tsx | 2 +- src/app/conf/2025/page.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/conf/2025/layout.tsx b/src/app/conf/2025/layout.tsx index e4d8750355..b7734d1ab8 100644 --- a/src/app/conf/2025/layout.tsx +++ b/src/app/conf/2025/layout.tsx @@ -54,7 +54,7 @@ export default function Layout({ ]} is2025 /> -
{children}
+
{children}
{faq.answer}
From f35f352f7ec92c9fa6e839c7b2d78d01a288ce0c Mon Sep 17 00:00:00 2001 From: Piotr Monwid-Olechnowicz Date: Thu, 8 May 2025 18:01:53 +0200 Subject: [PATCH 102/134] Update navbar icons to pixelarticons --- src/app/conf/2025/components/navbar.tsx | 15 ++++++++------- src/app/conf/2025/pixelarticons/close.svg | 3 +++ src/app/conf/2025/pixelarticons/menu.svg | 3 +++ 3 files changed, 14 insertions(+), 7 deletions(-) create mode 100644 src/app/conf/2025/pixelarticons/close.svg create mode 100644 src/app/conf/2025/pixelarticons/menu.svg diff --git a/src/app/conf/2025/components/navbar.tsx b/src/app/conf/2025/components/navbar.tsx index feda24913e..7e9fd6edb4 100644 --- a/src/app/conf/2025/components/navbar.tsx +++ b/src/app/conf/2025/components/navbar.tsx @@ -5,10 +5,11 @@ import NextLink from "next/link" import { clsx } from "clsx" import { usePathname } from "next/navigation" -import { HamburgerIcon, CrossIcon } from "@/icons" - import { Badge } from "../../_components/badge" +import MenuIcon from "../pixelarticons/menu.svg?svgr" +import CloseIcon from "../pixelarticons/close.svg?svgr" + export interface NavbarProps { links: { href: string; children: React.ReactNode; "aria-disabled"?: true }[] year: number @@ -40,8 +41,8 @@ export function Navbar({ links, year }: NavbarProps): ReactElement { />
@@ -73,7 +74,7 @@ export function Navbar({ links, year }: NavbarProps): ReactElement { {mobileDrawerOpen && (
)} @@ -113,10 +114,10 @@ export function Navbar({ links, year }: NavbarProps): ReactElement {
diff --git a/src/app/conf/2025/pixelarticons/close.svg b/src/app/conf/2025/pixelarticons/close.svg new file mode 100644 index 0000000000..d48de61287 --- /dev/null +++ b/src/app/conf/2025/pixelarticons/close.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/app/conf/2025/pixelarticons/menu.svg b/src/app/conf/2025/pixelarticons/menu.svg new file mode 100644 index 0000000000..c87a5135c7 --- /dev/null +++ b/src/app/conf/2025/pixelarticons/menu.svg @@ -0,0 +1,3 @@ + + + From be09cf56423ac35759d1eee9dfa5a22bb65ada6d Mon Sep 17 00:00:00 2001 From: Piotr Monwid-Olechnowicz Date: Thu, 8 May 2025 18:02:03 +0200 Subject: [PATCH 103/134] Make CallForProposals better on tablet screens --- .../2025/components/call-for-proposals.tsx | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/app/conf/2025/components/call-for-proposals.tsx b/src/app/conf/2025/components/call-for-proposals.tsx index cc80c8934d..3073122cd0 100644 --- a/src/app/conf/2025/components/call-for-proposals.tsx +++ b/src/app/conf/2025/components/call-for-proposals.tsx @@ -328,8 +328,8 @@ export function CallForProposals() { // todo: the part with `dark:` here is temporary until we have a dark mode version of this section className="gql-conf-section gql-conf-container dark:text-neu-0" > -
-
+
+

Call for Proposals

Putting on an amazing conference depends on great content, which is @@ -378,7 +378,7 @@ export function CallForProposals() {

{tabsInOrder.map((tab, i) => ( ))}
-
+
{tabsInOrder.map(tab => (
{ @@ -454,7 +454,7 @@ function TabButton({ {...props} > {tab.charAt(0).toUpperCase() + tab.slice(1)} - + ) } @@ -475,8 +475,8 @@ function arrowsMoveSideways(event: React.KeyboardEvent) { function DefinitionListBox({ children }: { children: React.ReactNode }) { return ( -
-
+
+
{children}
@@ -494,7 +494,7 @@ function Stripes() { return (
Date: Thu, 8 May 2025 18:04:30 +0200 Subject: [PATCH 104/134] Fix border colors --- src/app/conf/2025/components/navbar.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/app/conf/2025/components/navbar.tsx b/src/app/conf/2025/components/navbar.tsx index 7e9fd6edb4..914b7edcb8 100644 --- a/src/app/conf/2025/components/navbar.tsx +++ b/src/app/conf/2025/components/navbar.tsx @@ -42,7 +42,9 @@ export function Navbar({ links, year }: NavbarProps): ReactElement {
From 8796373f9185d38854888e4fcbef483a5b28cd9e Mon Sep 17 00:00:00 2001 From: Piotr Monwid-Olechnowicz Date: Thu, 8 May 2025 18:07:31 +0200 Subject: [PATCH 105/134] Tweak spacing --- src/app/conf/2025/sponsorship.tsx | 2 +- src/app/conf/_components/info-grid.tsx | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/app/conf/2025/sponsorship.tsx b/src/app/conf/2025/sponsorship.tsx index 64608abdb5..b5651bf918 100644 --- a/src/app/conf/2025/sponsorship.tsx +++ b/src/app/conf/2025/sponsorship.tsx @@ -40,7 +40,7 @@ export function Sponsor() { ]} /> -
+