diff --git a/src/app.css b/src/app.css index af88ea6..52e1c38 100644 --- a/src/app.css +++ b/src/app.css @@ -304,13 +304,15 @@ h4 { } } -/* Content-Links: Himmel (Design System – Links) */ -main a:not(.no-underline):not([class*="btn"]) { +/* Content-Links: Himmel (Design System – Links). + * `:where(:not(.not-prose *))` schließt jeden Subtree mit `.not-prose` + * aus — Card-Links etc. behalten ihre eigene Farbe + kein Underline. */ +main a:not(.no-underline):not([class*="btn"]):where(:not(.not-prose *)) { color: var(--color-link); text-decoration: underline; } -main a:not(.no-underline):not([class*="btn"]):hover { +main a:not(.no-underline):not([class*="btn"]):where(:not(.not-prose *)):hover { color: var(--color-himmel-600); } @@ -327,21 +329,21 @@ main strong { font-weight: 600; } -main ul:not(.not-prose) { +main ul:not(.not-prose):where(:not(.not-prose *)) { margin-left: 1em; margin-bottom: 1em; } -main ul:not(.not-prose) li { +main ul:not(.not-prose):where(:not(.not-prose *)) li { list-style: disc; } -main ol:not(.not-prose) { +main ol:not(.not-prose):where(:not(.not-prose *)) { margin-left: 1.1em; margin-bottom: 1em; } -main ol:not(.not-prose) li { +main ol:not(.not-prose):where(:not(.not-prose *)) li { list-style-type: decimal; } @@ -473,15 +475,17 @@ article [data-block-type="markdown"] .markdown > p:first-child { max-width: 50%; } -/* Content-Blöcke */ -.content p { +/* Content-Blöcke. `:where(:not(.not-prose *))` lässt jeden Subtree mit + * .not-prose komplett ausserhalb dieser Margin-Defaults — Components, die + * eigene Abstände setzen, müssen nur `not-prose` auf den Root packen. */ +.content p:where(:not(.not-prose *)) { @apply mb-4; } -.content h1, -.content h2, -.content h3, -.content h4 { +.content h1:where(:not(.not-prose *)), +.content h2:where(:not(.not-prose *)), +.content h3:where(:not(.not-prose *)), +.content h4:where(:not(.not-prose *)) { @apply mb-2; } diff --git a/src/lib/blog-utils.ts b/src/lib/blog-utils.ts index 11c37ae..d34bd83 100644 --- a/src/lib/blog-utils.ts +++ b/src/lib/blog-utils.ts @@ -593,6 +593,13 @@ export async function resolveCalendarBlocks( resolve: "items", }); const raw = calendar?.items ?? rawItems; + // Leere items-Liste → alle calendar_items aus der Collection (Pool). + // Greift sowohl für default-Variante als auch compact-Anteaser. + if (raw.length === 0) { + const pool = (await getCalendarItems({ locale: "de" })) as unknown as CalendarItemData[]; + (item as { items?: CalendarItemData[] }).items = pool; + continue; + } const settled = await Promise.all( raw.map(async (x): Promise => { if ( diff --git a/src/lib/components/blocks/CalendarCompactBlock.svelte b/src/lib/components/blocks/CalendarCompactBlock.svelte index f89e7b9..c617fba 100644 --- a/src/lib/components/blocks/CalendarCompactBlock.svelte +++ b/src/lib/components/blocks/CalendarCompactBlock.svelte @@ -62,45 +62,53 @@
-
-
diff --git a/src/lib/iconify-mdi-subset.generated.json b/src/lib/iconify-mdi-subset.generated.json index 9351bd9..f662a22 100644 --- a/src/lib/iconify-mdi-subset.generated.json +++ b/src/lib/iconify-mdi-subset.generated.json @@ -96,6 +96,9 @@ "calendar-plus": { "body": "" }, + "calendar-month-outline": { + "body": "" + }, "arrow-right": { "body": "" },