feat(calendar-compact): polish + global not-prose opt-out support
CalendarCompact: - denser layout (smaller padding/font/badge), header icon size-8 - icon stein-900 (black), subtle wald gradient background - rounded-sm to match design tokens (was rounded-lg) - list items link to linkTo + "#event-<slug>" anchor; <svelte:element> falls back to div when no linkTo is set - not-prose on root so global content margins/list/link rules don't apply to the card subtree blog-utils.resolveCalendarBlocks: - when items array is empty, fall back to the full calendar_item pool (both default and compact variant get this) — saves editors from re-listing items on every page. app.css: add `:where(:not(.not-prose *))` to .content p/h1-h4, main a (link colour + underline), main ul/ol so subtrees marked not-prose stop inheriting the global prose-like defaults. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+17
-13
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user