fix: cover as public-path string (Sveltia uploads) + render cover in article

This commit is contained in:
ctao
2026-07-24 20:34:22 +02:00
parent ed45ff6d54
commit 228ad5b60b
3 changed files with 13 additions and 10 deletions
+4 -3
View File
@@ -6,14 +6,15 @@ import { glob } from 'astro/loaders';
// renders them to static HTML at build time.
const news = defineCollection({
loader: glob({ pattern: '**/*.md', base: './src/content/news' }),
schema: ({ image }) =>
z.object({
schema: z.object({
title: z.string(),
description: z.string(),
date: z.coerce.date(),
category: z.string().default('news'),
author: z.string().default('CTAO'),
cover: image().optional(),
// Public-path string, e.g. "/uploads/foo.jpg" — Sveltia uploads media to
// public/uploads, which Astro's image() helper can't validate (src/ only).
cover: z.string().optional(),
draft: z.boolean().default(false),
}),
});
+1
View File
@@ -16,6 +16,7 @@ const fmt = (d) => new Intl.DateTimeFormat('pl-PL', { dateStyle: 'long' }).forma
<a class="back" href="/">← Wszystkie newsy</a>
<h1>{post.data.title}</h1>
<div class="meta">{post.data.category} · {post.data.author} · {fmt(post.data.date)}</div>
{post.data.cover && <img class="cover" src={post.data.cover} alt="" />}
<div class="prose">
<Content />
</div>
+1
View File
@@ -135,6 +135,7 @@ img { max-width: 100%; height: auto; display: block; }
line-height: 1.15; letter-spacing: -0.02em;
}
.article .meta { color: var(--muted); font-size: 0.9rem; margin-bottom: 28px; }
.article .cover { border: 1px solid var(--border); border-radius: var(--radius); margin-bottom: 28px; }
.prose h2 { margin: 34px 0 10px; font-size: 1.45rem; letter-spacing: -0.01em; }
.prose h3 { margin: 26px 0 8px; font-size: 1.15rem; }
.prose p { margin: 0 0 16px; }