From e193e53496bc213895d2caae63f1ac0ae3636520 Mon Sep 17 00:00:00 2001 From: Jacob Zweifel Date: Mon, 24 Aug 2026 17:41:10 -0400 Subject: [PATCH] Banner heroes, section grammar, and the sifa profile fields The hero now uses the imagery the user's PDS already holds. With a Bluesky banner present, the default hero renders it as a full-width band under the masthead with the avatar overlapping its lower edge; a new optional style field on page.mooring.site#heroSection selects the postcard variant instead, which mounts the banner as a framed photograph beside the type block. Without a banner the hero is a media-object row: a 184px avatar plate beside the name. The value space is open; unknown styles fall back to band. The content column now centres on a --shell width instead of anchoring left, and the banner hero splits into name + tagline on the left with the bio right of a hairline rule, filling the previously dead field right of the headlines. The sifa profile carries more than a headline, and the theme now shows it: pronouns sit beside the h1 in every hero variant, the career section opens with the about text as prose, and openTo tokens render as accent-outline chips with display labels mapped from id.sifa.defs (camelCase-split fallback for unknown tokens). Section grammar now differs by content type: writing is title-first with the document description as excerpt and a Read link; career rows stay date-first with the current role's date in accent and education under a Study sublabel; posts remain notes. Long unbreakable display names wrap instead of overflowing. og:image prefers the banner over the avatar. Articles centre on the measure. 11 new or updated unit tests (178 in web, 26 in lexicons). Co-Authored-By: Claude Fable 5 --- .../lib/components/theme/SiteArticle.svelte | 8 +- .../lib/components/theme/SiteLayout.svelte | 18 +- .../lib/components/theme/SiteSections.svelte | 609 ++++++++++++++---- .../lib/server/atmosphere/atmosphere.test.ts | 44 +- apps/web/src/lib/server/atmosphere/bluesky.ts | 6 +- apps/web/src/lib/server/atmosphere/sifa.ts | 32 +- .../lib/server/atmosphere/standard-site.ts | 2 + apps/web/src/lib/server/render/render.test.ts | 17 +- apps/web/src/lib/server/render/sections.ts | 3 + apps/web/src/lib/server/render/site.ts | 8 +- apps/web/src/lib/site-view.ts | 14 +- apps/web/src/routes/+page.svelte | 4 +- apps/web/src/routes/s/[handle]/+page.svelte | 4 +- docs/NEXT.md | 13 +- lexicons/page/mooring/site.json | 5 + 15 files changed, 627 insertions(+), 160 deletions(-) diff --git a/apps/web/src/lib/components/theme/SiteArticle.svelte b/apps/web/src/lib/components/theme/SiteArticle.svelte index 7ee3275..9153da1 100644 --- a/apps/web/src/lib/components/theme/SiteArticle.svelte +++ b/apps/web/src/lib/components/theme/SiteArticle.svelte @@ -25,13 +25,7 @@