blog author bio profile social articles author bio profile social articles writer blog author bio section writer profile with recent posts
Blog Author Bio
Fetch pattern JSON:
curl https://webspire.de/patterns/blog/author.json author.html
<section class="ws-blog bg-[var(--ws-blog-bg)] py-20">
<div class="mx-auto max-w-5xl px-6">
<div class="grid gap-12 lg:grid-cols-[280px_1fr] lg:items-start">
<!-- Author profile -->
<div class="flex flex-col items-center text-center lg:sticky lg:top-24">
<!-- Avatar (decorative gradient — keep hardcoded) -->
<div class="h-36 w-36 overflow-hidden rounded-full bg-[var(--ws-blog-card-bg)] ring-4 ring-[var(--ws-blog-bg)]">
<div class="h-full w-full bg-gradient-to-br from-indigo-300 to-purple-400"></div>
</div>
<!-- Name & role -->
<h2 class="mt-5 text-xl font-bold text-[var(--ws-blog-text)]">Anna Weber</h2>
<p class="mt-1 text-sm font-medium text-[var(--ws-blog-accent)]">Senior Frontend Engineer</p>
<!-- Bio -->
<p class="mt-4 text-sm leading-relaxed text-[var(--ws-blog-text-soft)]">Building design systems and UI patterns at the intersection of performance and aesthetics. Passionate about CSS, accessibility, and developer tooling.</p>
<!-- Social links -->
<div class="mt-5 flex items-center gap-4">
<a href="#" class="text-[var(--ws-blog-text-muted)] transition hover:text-[var(--ws-blog-text)]" aria-label="Twitter">
<svg class="h-5 w-5" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/>
</svg>
</a>
<a href="#" class="text-[var(--ws-blog-text-muted)] transition hover:text-[var(--ws-blog-text)]" aria-label="GitHub">
<svg class="h-5 w-5" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path fill-rule="evenodd" d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z" clip-rule="evenodd"/>
</svg>
</a>
<a href="#" class="text-[var(--ws-blog-text-muted)] transition hover:text-[var(--ws-blog-text)]" aria-label="LinkedIn">
<svg class="h-5 w-5" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/>
</svg>
</a>
</div>
</div>
<!-- Recent articles -->
<div>
<h3 class="text-sm font-semibold uppercase tracking-[0.18em] text-[var(--ws-blog-text-muted)]">Recent articles</h3>
<div class="mt-6 divide-y divide-[var(--ws-blog-border)]">
<article class="group py-5 first:pt-0">
<a href="#" class="block">
<div class="flex items-center gap-3">
<span class="inline-block rounded-full bg-indigo-100 px-2.5 py-0.5 text-xs font-medium text-indigo-700">Guide</span>
<time class="text-xs text-[var(--ws-blog-text-muted)]" datetime="2026-03-08">Mar 8, 2026</time>
</div>
<h4 class="mt-2 text-lg font-semibold text-[var(--ws-blog-text)] transition group-hover:text-[var(--ws-blog-accent)]">The complete guide to building a pattern registry</h4>
<p class="mt-1.5 text-sm text-[var(--ws-blog-text-soft)]">From CSS snippets to full page sections — how we built a searchable, AI-native component library.</p>
</a>
</article>
<article class="group py-5">
<a href="#" class="block">
<div class="flex items-center gap-3">
<span class="inline-block rounded-full bg-emerald-100 px-2.5 py-0.5 text-xs font-medium text-emerald-700">Tutorial</span>
<time class="text-xs text-[var(--ws-blog-text-muted)]" datetime="2026-02-28">Feb 28, 2026</time>
</div>
<h4 class="mt-2 text-lg font-semibold text-[var(--ws-blog-text)] transition group-hover:text-[var(--ws-blog-accent)]">Scroll-driven animations without JavaScript</h4>
<p class="mt-1.5 text-sm text-[var(--ws-blog-text-soft)]">Harness the new CSS scroll-timeline API to create buttery-smooth animations with zero runtime cost.</p>
</a>
</article>
<article class="group py-5">
<a href="#" class="block">
<div class="flex items-center gap-3">
<span class="inline-block rounded-full bg-amber-100 px-2.5 py-0.5 text-xs font-medium text-amber-700">Deep dive</span>
<time class="text-xs text-[var(--ws-blog-text-muted)]" datetime="2026-02-14">Feb 14, 2026</time>
</div>
<h4 class="mt-2 text-lg font-semibold text-[var(--ws-blog-text)] transition group-hover:text-[var(--ws-blog-accent)]">Glass effects with OKLCH and fallbacks</h4>
<p class="mt-1.5 text-sm text-[var(--ws-blog-text-soft)]">Modern glassmorphism techniques using OKLCH colors, backdrop-filter, and graceful degradation strategies.</p>
</a>
</article>
</div>
</div>
</div>
</div>
</section>
Details
Responsive Dark Mode Tailwind Only SSR Safe Copy & Paste
Stable Published
blogauthorbioprofilesocialarticles
Slots
| Name | Required | Description |
|---|---|---|
| avatar | Yes | Large circular author avatar image. |
| bio | Yes | Author name, role, and short biography paragraph. |
| social | No | Row of social media profile links. |
| articles | No | List of recent articles by the author. |
Author bio section with large circular avatar, name, role/title, short bio paragraph, social links row (Twitter, GitHub, LinkedIn), and a list of three recent articles with titles and dates. Responsive layout stacks vertically on mobile, side-by-side on larger screens. Full dark mode support.