diff --git a/src/content.config.ts b/src/content.config.ts index 81d3095..abeeb2d 100644 --- a/src/content.config.ts +++ b/src/content.config.ts @@ -6,16 +6,17 @@ 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({ - title: z.string(), - description: z.string(), - date: z.coerce.date(), - category: z.string().default('news'), - author: z.string().default('CTAO'), - cover: image().optional(), - draft: z.boolean().default(false), - }), + schema: z.object({ + title: z.string(), + description: z.string(), + date: z.coerce.date(), + category: z.string().default('news'), + author: z.string().default('CTAO'), + // 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), + }), }); export const collections = { news }; diff --git a/src/pages/news/[slug].astro b/src/pages/news/[slug].astro index 51fcbf5..fa2154d 100644 --- a/src/pages/news/[slug].astro +++ b/src/pages/news/[slug].astro @@ -16,6 +16,7 @@ const fmt = (d) => new Intl.DateTimeFormat('pl-PL', { dateStyle: 'long' }).forma ← Wszystkie newsy

{post.data.title}

{post.data.category} · {post.data.author} · {fmt(post.data.date)}
+ {post.data.cover && }
diff --git a/src/styles/global.css b/src/styles/global.css index a30c1dc..2fc3a87 100644 --- a/src/styles/global.css +++ b/src/styles/global.css @@ -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; }