frontend
Technical notes on web development, DevOps, and AI integration.
103 articles
- 12:39frontend
Fallback Icons Wobbled My Sidebar: Image Dimensions and CLS
Adding fallback icons for categories without one made the sidebar jump. Explicit width/height on images, and og:image dimensions, keep CLS under control.
#nextjs#cls#og-image - 09:25frontend
A TOC Spine That Fades Like a Notes-App Timeline
Tired of the stiff left border on my blog TOC, I swapped it for a Tailwind gradient spine that fades downward. Pure CSS utility, plus a note on the bg-gradient-to-* rename in v4.
#tailwind#css - 04:29frontend
Related Articles Without a Waterfall
What commit 70a43a9 taught me about related articles, parallel fetching, a CSS timeline, and a file-tree TOC in a Next.js blog.
#nextjs#react#frontend - 02:39frontend
Why My Blog List Renders Stack Icons on the Server
Runtime Iconify requests made my blog list icons appear late. I replaced them with server-rendered SVG and fallback icon sets.
#nextjs#react#frontend - 01:00frontend
My Accent Color Looked Great in Dark Mode, Then Died in Light
Orange looked great in dark mode but washed out in light. A split accent, emerald-600 in light and mint in dark, clears the WCAG contrast bar in both.
#tailwind#css#frontend - 00:48frontend
Flat Gray Tag Chips Never Invited a Click
Flat gray tag chips all carry equal weight. A 10% primary tint plus a hairline inset ring makes them feel alive and clickable again.
#tailwind#css#frontend - 00:38frontend
When I Fixed My Blog Sidebar Headings That Read Like a Whisper
Sidebar headings at 11px uppercase dim gray were the hardest text to read. Switching to 13px bold normal-case plus icons raised contrast and fixed asymmetry.
#tailwind#css#frontend - 22:34frontend
The 1px Sidebar Wobble That Ended My Chip Borders
Swapping a chip border for a background nudged the whole row by 1px. The fix: an inset ring, because box-shadow never affects layout.
#tailwind#css#frontend - 18:32frontend
MessageCircle Is Not WhatsApp, the Client Told Me So
A WhatsApp CTA with a generic lucide chat icon made visitors hesitate. The fix: an inline brand SVG, a real label, and better button contrast.
#react#frontend#seo