Initial site: Astro + M3 Expressive, projects, blog
Personal site & blog for jeanlucmakiola.de. - Astro 7 static output; self-hosted Inter + JetBrains Mono (Fontsource) - Material 3 Expressive design tokens (red accent over neutral surfaces) - Home (hero + about + selected work + latest writing) - /work index + per-app pages (Calendula, Agendula, floret-kit) with build-time Gitea release tags, brand-icon link rows, features grid, and an at-a-glance facts panel - Blog via Markdown content collection; RSS, sitemap, robots, OG/SEO - Privacy-respecting Umami analytics, env-gated (off in dev) - Dockerfile (build -> Caddy) + Caddyfile for Coolify deploy Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
---
|
||||
import BaseLayout from './BaseLayout.astro';
|
||||
import FormattedDate from '../components/FormattedDate.astro';
|
||||
import type { CollectionEntry } from 'astro:content';
|
||||
|
||||
interface Props {
|
||||
post: CollectionEntry<'blog'>['data'];
|
||||
}
|
||||
const { post } = Astro.props;
|
||||
const { title, description, pubDate, updatedDate, tags } = post;
|
||||
---
|
||||
|
||||
<BaseLayout title={title} description={description} type="article" width="narrow">
|
||||
<article class="prose">
|
||||
<header class="post-header">
|
||||
<h1>{title}</h1>
|
||||
<p class="post-meta">
|
||||
<FormattedDate date={pubDate} />
|
||||
{updatedDate && <span> · updated <FormattedDate date={updatedDate} /></span>}
|
||||
</p>
|
||||
{
|
||||
tags.length > 0 && (
|
||||
<ul class="chip-set">
|
||||
{tags.map((tag) => (
|
||||
<li>
|
||||
<a class="chip" href={`/tags/${tag}`}>#{tag}</a>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
)
|
||||
}
|
||||
</header>
|
||||
<slot />
|
||||
</article>
|
||||
</BaseLayout>
|
||||
Reference in New Issue
Block a user