BlogSiteOptions Pennington.BlogSite
Options record passed to AddBlogSite that configures the BlogSite template: site identity, content paths, typography, author chrome, homepage composition (hero, project cards, social links, nav), and feed toggles (RSS, sitemap).
Properties
AdditionalHtmlHeadContentstring?- Default:
nullRaw HTML appended to the document<head>(for analytics, meta tags, etc.). AdditionalRoutingAssembliesSystem.Reflection.Assembly[]- Default:
[]Additional assemblies scanned for Razor components so out-of-project pages participate in routing. AuthorBiostring?- Default:
nullShort author bio displayed on the homepage and post pages. AuthorNamestring?- Default:
nullAuthor name displayed in the byline and RSS channel. BlogBaseUrlstring- Default:
"/blog"URL prefix under which blog posts are published. BlogContentPathstring- Default:
"Blog"Folder (relative toContentRootPath) containing blog post markdown files. BodyFontFamilystring?- Default:
nullCSS font-family stack used for body copy. CanonicalBaseUrlstring?- Default:
nullAbsolute base URL used to build canonical links, sitemap, and RSS entries. ColorSchemePennington.MonorailCss.IColorScheme?- Default:
nullColor scheme driving the MonorailCSS theme. Defaults to the built-in BlogSite palette when null. ContentRootPathstring- Default:
"Content"Root folder (relative to the content project) that holds the content tree. Descriptionstring- requiredShort description used for the meta description tag and RSS channel.
DisplayFontFamilystring?- Default:
nullCSS font-family stack used for display type (headings). EnableRssbool- Default:
trueWhen true, an RSS feed is generated for blog posts. EnableSitemapbool- Default:
trueWhen true, a sitemap.xml is generated for the site. ExtraStylesstring?- Default:
nullAdditional CSS appended to the generated stylesheet. FontPreloadsPennington.Infrastructure.FontPreload[]- Default:
[]Fonts to preload via<link rel="preload">for faster first paint. HeroContentPennington.BlogSite.HeroContent?- Default:
nullHomepage hero content. When null, the hero section is not rendered. MainSiteLinksPennington.BlogSite.HeaderLink[]- Default:
[]Navigation links rendered in the site header. MyWorkPennington.BlogSite.Project[]- Default:
[]Featured projects displayed on the homepage. SiteTitlestring- requiredSite title shown in the header, OpenGraph tags, and RSS channel.
SocialMediaImageUrlFactorySystem.Func<Pennington.BlogSite.BlogPostPage, string>?- Default:
nullFactory producing a social-share image URL for a given post. Return null to fall back to defaults. SocialsPennington.BlogSite.SocialLink[]- Default:
[]Social media links rendered in the site chrome. TagsPageUrlstring- Default:
"/tags"URL for the tag index page.
Pennington.BlogSite.BlogSiteOptions
namespace Pennington.BlogSite;
/// Options record passed to AddBlogSite that configures the BlogSite template: site identity, content paths, typography, author chrome, homepage composition (hero, project cards, social links, nav), and feed toggles (RSS, sitemap).
public record BlogSiteOptions
{
/// Raw HTML appended to the document <head> (for analytics, meta tags, etc.).
public string? AdditionalHtmlHeadContent { get; init; }
/// Additional assemblies scanned for Razor components so out-of-project pages participate in routing.
public Assembly[] AdditionalRoutingAssemblies { get; init; } = [];
/// Short author bio displayed on the homepage and post pages.
public string? AuthorBio { get; init; }
/// Author name displayed in the byline and RSS channel.
public string? AuthorName { get; init; }
/// URL prefix under which blog posts are published.
public string BlogBaseUrl { get; init; } = "/blog";
/// Folder (relative to ContentRootPath) containing blog post markdown files.
public string BlogContentPath { get; init; } = "Blog";
/// CSS font-family stack used for body copy.
public string? BodyFontFamily { get; init; }
/// Absolute base URL used to build canonical links, sitemap, and RSS entries.
public string? CanonicalBaseUrl { get; init; }
/// Color scheme driving the MonorailCSS theme. Defaults to the built-in BlogSite palette when null.
public IColorScheme? ColorScheme { get; init; }
/// Root folder (relative to the content project) that holds the content tree.
public string ContentRootPath { get; init; } = "Content";
/// Short description used for the meta description tag and RSS channel.
public required string Description { get; init; }
/// CSS font-family stack used for display type (headings).
public string? DisplayFontFamily { get; init; }
/// When true, an RSS feed is generated for blog posts.
public bool EnableRss { get; init; } = true;
/// When true, a sitemap.xml is generated for the site.
public bool EnableSitemap { get; init; } = true;
/// Additional CSS appended to the generated stylesheet.
public string? ExtraStyles { get; init; }
/// Fonts to preload via <link rel="preload"> for faster first paint.
public FontPreload[] FontPreloads { get; init; } = [];
/// Homepage hero content. When null, the hero section is not rendered.
public HeroContent? HeroContent { get; init; }
/// Navigation links rendered in the site header.
public HeaderLink[] MainSiteLinks { get; init; } = [];
/// Featured projects displayed on the homepage.
public Project[] MyWork { get; init; } = [];
/// Site title shown in the header, OpenGraph tags, and RSS channel.
public required string SiteTitle { get; init; }
/// Factory producing a social-share image URL for a given post. Return null to fall back to defaults.
public Func<BlogPostPage, string>? SocialMediaImageUrlFactory { get; init; }
/// Social media links rendered in the site chrome.
public SocialLink[] Socials { get; init; } = [];
/// URL for the tag index page.
public string TagsPageUrl { get; init; } = "/tags";
}