feat: change main font to Schibsted Grotesk, adjust sizes

This commit is contained in:
jake committed 2026-09-26 13:17:25 -04:00
1 parent 2403842f39
commit ed62c0cd6e
12 files changed
+26 -33

No files matched your search

+8 -8
View File
@@ -24,18 +24,18 @@ const projects: readonly Project[] = [
tagline: "Domain intelligence made easy",
icon: domainstackIcon,
},
{
name: "Stanza",
url: "https://stanza.tools",
tagline: "shadcn/ui for infrastructure",
icon: stanzaIcon,
},
{
name: "Sofa",
url: "https://sofa.watch",
tagline: "Self-hosted movie & TV show tracker",
icon: sofaIcon,
},
{
name: "Stanza",
url: "https://stanza.tools",
tagline: "shadcn/ui for infrastructure",
icon: stanzaIcon,
},
{
name: "Versioneer",
url: "https://versioneer.app",
@@ -58,7 +58,7 @@ const projects: readonly Project[] = [
const Page = () => (
<FadeTransition>
<h1 className="text-lg font-medium tracking-tight">
<h1 className="text-lg font-medium">
Hi there! I&rsquo;m Jake.{" "}
<span className="ml-0.5 inline-block origin-[65%_80%] text-[1.2rem] motion-safe:animate-wave">
👋
@@ -66,7 +66,7 @@ const Page = () => (
</h1>
<div className="markdown">
<p className="text-sm leading-normal tracking-[-0.0125em]">
<p className="text-sm leading-normal">
I&rsquo;m a developer based in the Boston area working on some cool stuff:
</p>
</div>
+1 -2
View File
@@ -7,8 +7,7 @@
@custom-variant dark (&:where(.dark *));
@theme inline {
--font-sans: var(--font-inter);
--font-sans--font-feature-settings: "rlig" 1, "calt" 0;
--font-sans: var(--font-schibsted-grotesk);
--font-mono: var(--font-jetbrains-mono);
--font-mono--font-feature-settings: "liga" 0;
--radius-sm: calc(var(--radius) - 4px);
+3 -3
View File
@@ -8,7 +8,7 @@ import { Providers } from "@/components/providers";
import { Toaster } from "@/components/ui/toast";
import authorConfig from "@/lib/config/author";
import siteConfig from "@/lib/config/site";
import { Inter, JetBrainsMono } from "@/lib/fonts";
import { SchibstedGrotesk, JetBrainsMono } from "@/lib/fonts";
import { defaultMetadata } from "@/lib/metadata";
import { cn } from "@/lib/utils";
@@ -19,7 +19,7 @@ export const metadata = defaultMetadata;
const RootLayout = ({ children }: Readonly<{ children: React.ReactNode }>) => (
<html
lang={process.env.NEXT_PUBLIC_SITE_LOCALE}
className={cn(Inter.variable, JetBrainsMono.variable)}
className={cn(SchibstedGrotesk.variable, JetBrainsMono.variable)}
suppressHydrationWarning
>
<head>
@@ -33,7 +33,7 @@ const RootLayout = ({ children }: Readonly<{ children: React.ReactNode }>) => (
image: [`${process.env.NEXT_PUBLIC_BASE_URL}/opengraph-image.jpg`],
sameAs: [
process.env.NEXT_PUBLIC_BASE_URL!,
`https://${authorConfig.social?.mastodon}`,
authorConfig.social?.mastodon?.replace(/^@([^@]+)@(.+)$/, "https://$2/@$1"),
`https://github.com/${authorConfig.social?.github}`,
`https://bsky.app/profile/${authorConfig.social?.bluesky}`,
`https://twitter.com/${authorConfig.social?.twitter}`,
+2
View File
@@ -18,6 +18,8 @@ import { getFrontMatter, getPost, getSlugs, POSTS_DIR } from "@/lib/posts";
import { size as ogImageSize } from "./opengraph-image";
export const instant = false;
export const generateStaticParams = () => {
const slugs = getSlugs();
+1 -1
View File
@@ -58,7 +58,7 @@ const PostsList = () => {
Object.entries(postsByYear).forEach(([year, yearPosts]) => {
sections.push(
<section className="my-8 first-of-type:mt-0 last-of-type:mb-0" key={year}>
<h2 id={year} className="mt-0 mb-4 text-xl font-semibold tracking-tight">
<h2 id={year} className="mt-0 mb-4 text-xl font-semibold">
{year}
</h2>
<ul className="space-y-4">
+1 -1
View File
@@ -90,7 +90,7 @@ const Page = async () => {
</p>
)}
<div className="flex flex-wrap gap-x-4 text-[11px] leading-loose whitespace-nowrap">
<div className="flex flex-wrap gap-x-4 text-[0.7rem] leading-loose whitespace-nowrap">
{repo?.primaryLanguage && (
<div className="inline-flex flex-nowrap items-center gap-1.5 text-muted-foreground">
{repo?.primaryLanguage.color && (
+1 -1
View File
@@ -51,7 +51,7 @@ const Comments = async ({ slug }: { slug: string }) => {
))}
</div>
) : (
<div className="py-8 text-center text-lg font-medium tracking-tight text-foreground/80">
<div className="py-8 text-center text-lg font-medium text-foreground/80">
Be the first to comment!
</div>
)}
+2 -7
View File
@@ -93,7 +93,7 @@ const contactLinks = [
{
label: "Mastodon",
value: authorConfig.social.mastodon,
href: `https://${authorConfig.social.mastodon}`,
href: authorConfig.social.mastodon.replace(/^@([^@]+)@(.+)$/, "https://$2/@$1"),
Icon: (props: React.SVGProps<SVGSVGElement>) => (
<svg
xmlns="http://www.w3.org/2000/svg"
@@ -317,12 +317,7 @@ const Header = ({ className }: { className?: string }) => {
quality={75}
priority
/>
<span
className={cn(
"text-[17.5px] font-medium tracking-[-0.0375em] whitespace-nowrap",
"max-md:sr-only",
)}
>
<span className={cn("text-[17.5px] font-medium whitespace-nowrap", "max-md:sr-only")}>
{siteConfig.name}
</span>
</Link>
+1 -4
View File
@@ -11,10 +11,7 @@ const PageTitle = ({
canonical: string;
}) => (
<h1
className={cn(
"not-prose mt-0 mb-6 text-left text-2xl font-medium tracking-tight lowercase",
className,
)}
className={cn("not-prose mt-0 mb-6 text-left text-2xl font-medium lowercase", className)}
{...rest}
>
<Link
+2 -2
View File
@@ -72,7 +72,7 @@ const PostStats = ({ slug }: { slug: string }) => {
{viewCount > 0 && (
<Badge
variant="secondary"
className="gap-[5px] text-[11px] text-foreground/80 tabular-nums"
className="gap-[5px] text-xs font-medium tracking-wide text-foreground/80"
>
<IconEye className="text-foreground/65" aria-hidden="true" />
{numberFormatter.format(viewCount)}
@@ -82,7 +82,7 @@ const PostStats = ({ slug }: { slug: string }) => {
{commentCount > 0 && (
<Badge
variant="secondary"
className="gap-[5px] text-[11px] text-foreground/80 tabular-nums"
className="gap-[5px] text-xs font-medium tracking-wide text-foreground/80"
render={
<Link
href={`/${slug}#comments`}
+1 -1
View File
@@ -8,7 +8,7 @@ const authorConfig = {
medium: "jakejarvis",
linkedin: "jakejarvis",
instagram: "jakejarvis",
mastodon: "fediverse.jarv.is/@jake",
mastodon: "@jakejarvis@mastodon.social",
bluesky: "jarv.is",
},
} as const;
+3 -3
View File
@@ -3,14 +3,14 @@
import {
Comic_Neue as ComicNeueLoader,
Inter as InterLoader,
JetBrains_Mono as JetBrainsMonoLoader,
Schibsted_Grotesk as SchibstedGroteskLoader,
} from "next/font/google";
export const Inter = InterLoader({
export const SchibstedGrotesk = SchibstedGroteskLoader({
subsets: ["latin"],
display: "swap",
variable: "--font-inter",
variable: "--font-schibsted-grotesk",
preload: true,
});