Skip to content

Commit 7b80820

Browse files
feat: refresh hero copy, social row, and reading theme
- Rewrite hero with a personal intro and move social icons below the copy - Restyle HeroSocials as a clean brand-icon row instead of inline mentions - Switch dark background to pure black and lighten prose body weight - Round the scrolled navbar to a pill and tidy separators Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent ae53aaa commit 7b80820

6 files changed

Lines changed: 39 additions & 49 deletions

File tree

app/blog/[slug]/page.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ export default async function BlogPost({
9595

9696
const articleClass = isScrolly
9797
? "prose prose-invert max-w-none prose-headings:font-medium prose-headings:tracking-tight prose-p:text-muted-foreground prose-p:leading-relaxed prose-strong:text-foreground prose-strong:font-medium prose-code:text-sm prose-code:bg-muted prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded prose-code:before:content-none prose-code:after:content-none prose-a:text-primary prose-a:underline hover:prose-a:text-primary/80"
98-
: "font-[family-name:var(--font-poppins)] prose prose-invert max-w-none pb-8 prose-headings:font-medium prose-headings:tracking-tight prose-headings:text-foreground prose-h1:text-[1.875rem] prose-h1:mt-16 prose-h1:mb-8 prose-h2:text-[1.375rem] prose-h2:mt-14 prose-h2:mb-6 prose-h3:text-lg prose-h3:mt-10 prose-h3:mb-4 prose-p:text-[1.0625rem] prose-p:text-foreground/90 prose-p:leading-[1.9] prose-p:my-7 prose-strong:text-foreground prose-strong:font-medium prose-code:text-sm prose-code:bg-muted prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded prose-code:before:content-none prose-code:after:content-none prose-a:text-[#e8a87c] prose-a:no-underline hover:prose-a:underline prose-a:transition-colors prose-li:text-[1.0625rem] prose-li:text-foreground/90 prose-li:my-3 prose-li:leading-[1.8] prose-ul:my-7 prose-ol:my-7 prose-blockquote:border-l-[#e8a87c] prose-blockquote:text-foreground/70 prose-blockquote:italic prose-blockquote:pl-6 prose-blockquote:my-8 prose-pre:p-0 prose-pre:m-0 prose-pre:bg-transparent prose-pre:my-8 prose-img:my-10 prose-img:rounded-lg prose-hr:my-16 prose-hr:border-muted-foreground/15";
98+
: "font-[family-name:var(--font-poppins)] prose prose-invert max-w-none pb-8 prose-headings:font-medium prose-headings:tracking-tight prose-headings:text-foreground prose-h1:text-[1.875rem] prose-h1:mt-16 prose-h1:mb-8 prose-h2:text-[1.375rem] prose-h2:mt-14 prose-h2:mb-6 prose-h3:text-lg prose-h3:mt-10 prose-h3:mb-4 prose-p:text-[1.0625rem] prose-p:text-foreground/90 prose-p:leading-[1.9] prose-p:my-7 prose-p:font-light prose-strong:text-foreground prose-strong:font-medium prose-code:text-sm prose-code:bg-muted prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded prose-code:before:content-none prose-code:after:content-none prose-a:text-[#e8a87c] prose-a:no-underline hover:prose-a:underline prose-a:transition-colors prose-li:text-[1.0625rem] prose-li:text-foreground/90 prose-li:my-3 prose-li:leading-[1.8] prose-li:font-light prose-ul:my-7 prose-ol:my-7 prose-blockquote:border-l-[#e8a87c] prose-blockquote:text-foreground/70 prose-blockquote:italic prose-blockquote:pl-6 prose-blockquote:my-8 prose-pre:p-0 prose-pre:m-0 prose-pre:bg-transparent prose-pre:my-8 prose-img:my-10 prose-img:rounded-lg prose-hr:my-16 prose-hr:border-muted-foreground/15";
9999

100100
return (
101101
<>
@@ -148,7 +148,7 @@ export default async function BlogPost({
148148
<AskAIButtons slug={slug} title={post.frontmatter.title} />
149149

150150
{/* Elegant separator */}
151-
<div className="mt-12 w-16 h-px bg-muted-foreground/20 mx-auto" />
151+
<div className="mt-10 w-full h-px bg-muted-foreground/15" />
152152
</header>
153153
</div>
154154
)}

app/globals.css

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@
7070

7171
.dark {
7272
/* Premium bluish reading experience - inspired by GAIA */
73-
--background: oklch(0.145 0.008 265);
74-
/* Deep dark with a cool blue undertone */
73+
--background: oklch(0 0 0);
74+
/* Pure black */
7575
--foreground: oklch(0.93 0.006 250);
7676
/* Cool off-white for crisp, premium reading */
7777
--card: oklch(0.18 0.008 265);

app/page.tsx

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import Link from "next/link";
21
import { getAllPosts } from "@/lib/mdx-data";
32
import { PostsGrid, ContentWrapper } from "@/components/home/posts-list";
43
import { HeroSocials } from "@/components/home/hero-socials";
@@ -22,21 +21,16 @@ export default function Home() {
2221
{/* Hero */}
2322
<section className="pt-6 pb-24 md:pt-12 md:pb-36">
2423
<p className="max-w-2xl text-base md:text-xl text-muted-foreground leading-relaxed md:leading-relaxed">
25-
Where I dig into how React actually works under the hood: Fiber,
26-
reconciliation, and server components. Find me on <HeroSocials />{" "}
27-
where I share deep dives every week.
24+
Hey, I&apos;m{" "}
25+
<span className="font-medium text-foreground">Sanku</span> — a developer
26+
who got a little obsessed with how React actually works under the
27+
hood. This is where I share deep dives into Fiber, reconciliation,
28+
server components, and the machinery behind the framework you use
29+
every day.
2830
</p>
2931

30-
<div className="mt-9 flex flex-wrap items-center gap-3">
31-
{posts.length > 0 && (
32-
<Link
33-
href={`/blog/${posts[0].slug}`}
34-
className="btn-raised px-5 py-2.5 rounded-lg bg-primary hover:bg-primary/90 text-primary-foreground font-medium text-sm transition-all duration-150 hover:-translate-y-px active:translate-y-0.5 flex items-center gap-2"
35-
>
36-
Read the latest
37-
<span></span>
38-
</Link>
39-
)}
32+
<div className="mt-4">
33+
<HeroSocials />
4034
</div>
4135
</section>
4236

components/blog/ask-ai-buttons.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ Help me understand the concepts explained in this article. Be ready to explain c
1717
const claudeUrl = `https://claude.ai/new?q=${encodedPrompt}`;
1818

1919
return (
20-
<div className="flex items-center justify-center gap-3 mt-8 pt-6 border-t border-muted-foreground/15">
20+
<div className="flex items-center justify-center gap-3 mt-8">
2121
<a
2222
href={chatGPTUrl}
2323
target="_blank"

components/home/hero-socials.tsx

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -18,33 +18,28 @@ const socials = [
1818
},
1919
];
2020

21-
/**
22-
* Inline social mentions — brand icon tile + name woven into the hero copy,
23-
* the way Spectrum highlights iMessage / WhatsApp / Discord in its tagline.
24-
*/
21+
/** Clean row of brand social icons shown under the hero copy. */
2522
export function HeroSocials() {
2623
return (
27-
<>
28-
{socials.map((social, i) => (
29-
<span key={social.name} className="whitespace-nowrap">
30-
<a
31-
href={social.href}
32-
target="_blank"
33-
rel="noopener noreferrer"
34-
className="group inline-flex items-center gap-1.5 align-middle font-semibold text-foreground transition-opacity duration-200 hover:opacity-80"
35-
>
36-
<Image
37-
src={social.icon}
38-
alt={social.name}
39-
width={22}
40-
height={22}
41-
className="rounded-[5px] transition-transform duration-200 group-hover:-translate-y-px"
42-
/>
43-
{social.name}
44-
</a>
45-
{i < socials.length - 1 ? <span>,&nbsp;</span> : null}
46-
</span>
24+
<div className="flex items-center gap-2 -ml-2">
25+
{socials.map((social) => (
26+
<a
27+
key={social.name}
28+
href={social.href}
29+
target="_blank"
30+
rel="noopener noreferrer"
31+
aria-label={social.name}
32+
className="rounded-lg p-2 transition-colors duration-200 hover:bg-muted/50"
33+
>
34+
<Image
35+
src={social.icon}
36+
alt={social.name}
37+
width={28}
38+
height={28}
39+
className="h-7 w-7 rounded-md"
40+
/>
41+
</a>
4742
))}
48-
</>
43+
</div>
4944
);
5045
}

components/navbar-withmenu.tsx

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -254,9 +254,9 @@ export function NavbarWithMenu({
254254
className={cn(
255255
"navbar_content relative flex h-14 w-full items-center justify-between border transition-[border-radius,background-color,border-color] duration-300",
256256
activeDropdown
257-
? "rounded-t-lg border-border border-b-transparent bg-background backdrop-blur-md"
257+
? "rounded-t-full border-border border-b-transparent bg-background backdrop-blur-md"
258258
: scrolled
259-
? "rounded-lg border-border bg-card/40 backdrop-blur-md"
259+
? "rounded-full border-border bg-card/40 backdrop-blur-md"
260260
: "rounded-none border-transparent bg-transparent",
261261
)}
262262
animate={{
@@ -298,7 +298,9 @@ export function NavbarWithMenu({
298298
setActiveDropdown(null);
299299
}}
300300
>
301-
{item.icon ?? <span className="relative z-10">{item.label}</span>}
301+
{item.icon ?? (
302+
<span className="relative z-10">{item.label}</span>
303+
)}
302304
</Link>
303305
) : (
304306
<button
@@ -312,8 +314,7 @@ export function NavbarWithMenu({
312314
)}
313315
<div className="relative z-10 flex items-center gap-2">
314316
<span>
315-
{item.label.charAt(0).toUpperCase() +
316-
item.label.slice(1)}
317+
{item.label.charAt(0).toUpperCase() + item.label.slice(1)}
317318
</span>
318319
<HugeiconsIcon
319320
icon={ArrowDown01Icon}

0 commit comments

Comments
 (0)