Align public messaging and add news banners

This commit is contained in:
Remi
2025-09-17 19:22:56 +02:00
parent d033f03f88
commit a4b8a0ca2f
14 changed files with 242 additions and 68 deletions

View File

@@ -6,6 +6,7 @@ export interface NewsPost {
body: string
html: string
readingTime: string
bannerFile: string
}
interface FrontMatter {
@@ -15,6 +16,7 @@ interface FrontMatter {
excerpt?: string
description?: string
readingTime?: string
banner?: string
}
const rawNewsModules = import.meta.glob('~~/content/news/*.md', {
@@ -51,6 +53,7 @@ function parseNewsFile(path: string, raw: string): NewsPost | null {
const excerpt = truncateText(excerptSource || firstParagraph(cleanBody), 220)
const html = markdownToHtml(cleanBody)
const readingTime = attributes.readingTime || formatReadingTime(cleanBody)
const bannerFile = normalizeBannerFile(attributes.banner, slug)
return {
slug,
@@ -60,6 +63,7 @@ function parseNewsFile(path: string, raw: string): NewsPost | null {
body: cleanBody,
html,
readingTime,
bannerFile,
}
}
@@ -146,6 +150,14 @@ function formatReadingTime(content: string): string {
return `${minutes} Min Lesezeit`
}
function normalizeBannerFile(banner: string | undefined, slug: string): string {
const value = (banner || '').trim()
if (!value) {
return `${slug}.svg`
}
return value.includes('.') ? value : `${value}.svg`
}
function markdownToHtml(markdown: string): string {
const lines = markdown.split(/\r?\n/)
let html = ''