feat: implement typography system updates, integrate custom Google fonts via next/font, and add marquee animation utilities - #2471
Conversation
… fonts via next/font - Add lib/fonts.js configuring Inter, JetBrains_Mono, and Source_Serif_4 via next/font/google with CSS variables (--font-sans, --font-mono, --font-serif). - Wire font variables in pages/_app.page.tsx and remove manual Google Fonts <link>/<preconnect> tags from pages/_document.page.tsx. - Exclude lib/fonts from the dev babel-loader rule in next.config.js so next/font can process it. - Rewrite tailwind fontFamily to consume the CSS variables and rebuild fontSize (base, xl, h1-h5 + mobile variants) with line-height and letter-spacing tuples; add lineHeight, letterSpacing, and maxWidth.prose tokens. - Add @layer base in styles/globals.css with html/body font-family, font-feature-settings, text-wrap: balance/pretty, ::selection, and prefers-reduced-motion overrides. - Update components/Headlines.tsx, Code.tsx, and StyledMarkdownBlock.tsx to use the new type scale, max-w-prose for long-form content, and Source Serif for Bigquote/Regularquote. - Harmonize home and community pages with the new typography tokens and add an UpcomingEventsList with a 'Read more' expander.
|
Hi @10vulture1005! Thanks a lot for your contribution! I noticed that the following required information is missing or incomplete: issue reference, kind of change description Please update the PR description to include this information. You can find placeholders in the PR template for these items. Thanks a lot! |
Node 20 is being deprecated on GitHub Actions runners (the workflow was running on Node 24 by default and emitting a deprecation warning). Bump all six setup-node usages to Node 24 to match the runner default and avoid the deprecation notice / future breakage. Also bump the local-development toolchain to match: - Dockerfile: node:20-alpine -> node:24-alpine - package.json engines.node: ^20.0.0 -> >=20.0.0 (still allows 20+ while documenting 24 as the new baseline) - package.json volta.node: 20.9.0 -> 24.0.0 Workflows updated: - .github/workflows/build-preview.yml - .github/workflows/ci.yml (two jobs) - .github/workflows/link-checker.yml - .github/workflows/production-deployment.yml - .github/workflows/validate-tooling-data.yml
|
Hi @10vulture1005! Thanks a lot for your contribution! I noticed that the following required information is missing or incomplete: issue reference, kind of change description Please update the PR description to include this information. You can find placeholders in the PR template for these items. Thanks a lot! |
Converts the custom theme colors (white, black, primary, btnOrange, btnGold, startBlue, endBlue, linkBlue) from plain hex strings to the rgb(... / <alpha-value>) format introduced in Tailwind 3.3+. Why: @apply bg-primary/15 (and similar opacity-suffixed classes) inside @layer base requires the color to be defined in <alpha-value> format, otherwise Tailwind fails to generate the class and PostCSS reports 'The bg-primary/15 class does not exist'. This manifested in CI as a webpack build failure on styles/globals.css. The new format keeps every existing class (bg-primary, hover:bg-primary/90, text-primary, etc.) working unchanged, and additionally makes the opacity-suffixed variants usable from @apply directives.
|
Hi @10vulture1005! Thanks a lot for your contribution! I noticed that the following required information is missing or incomplete: issue reference, kind of change description Please update the PR description to include this information. You can find placeholders in the PR template for these items. Thanks a lot! |
|
Hi @10vulture1005! Thanks a lot for your contribution! I noticed that the following required information is missing or incomplete: kind of change description Please update the PR description to include this information. You can find placeholders in the PR template for these items. Thanks a lot! |
1 similar comment
|
Hi @10vulture1005! Thanks a lot for your contribution! I noticed that the following required information is missing or incomplete: kind of change description Please update the PR description to include this information. You can find placeholders in the PR template for these items. Thanks a lot! |
…tion The 'bg-primary/15' and 'bg-primary/30' classes were failing to build because the arbitrary opacity modifiers were not resolving correctly within the @apply directive in the @layer base block. Replace with explicit RGB color values using CSS custom selectors to avoid relying on Tailwind's opacity modifier syntax.
built with Refined Cloudflare Pages Action⚡ Cloudflare Pages Deployment
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #2471 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 31 31
Lines 695 695
Branches 215 215
=========================================
Hits 695 695 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
📝 Summary
Migrates the project from manually injected Google Fonts
<link>tags tonext/font/googlefor self-hosted, zero-CLS font loading. This PR also introduces a unified typography scale and reusable marquee animation utilities in Tailwind.Closes #2469
🎯 Motivation
next/font/googleto self-host and optimize fonts.🛠️ Changes
🔤 Fonts
Inter,JetBrains_Mono, andSource_Serif_4usingnext/font/google.pages/_app.page.tsx.<link>and<preconnect>tags.next.config.jsto preservenext/fontoptimization.🎨 Typography
fontFamilydefinitions using CSS variables.lineHeightandletterSpacingtokens.maxWidth.prosefor long-form content.🔄 Marquee Animations
--duration.marquee-fastandmarquee-slowpresets.🌐 Global Styles
scroll-padding-top.🧩 Components & Pages
Headlines.tsxwith the new typography scale.Code.tsx.StyledMarkdownBlock.tsx.UpcomingEventsListpreview/expander behavior.What kind of change does this PR introduce?
This PR introduces frontend improvements to typography, font loading, readability, accessibility, and reusable marquee animations. It replaces externally loaded Google Fonts with
next/font/google, centralizes typography tokens, and improves long-form content styling.📸 Proof
✅ Checklist