package main // noirHeadingComponent renders a heading using the display-serif font slot. templ noirHeadingComponent(level int, text, textClass string) { switch level { case 1:

{ text }

case 2:

{ text }

case 3:

{ text }

case 4:

{ text }

case 5:
{ text }
case 6:
{ text }
default:

{ text }

} } // noirTextComponent renders text with the humanist sans family and generous leading. // The body family resolves through --font-body; the surrounding .noir-page already // supplies the fallback stack from style.css, so we only need spacing here. templ noirTextComponent(text, class string) {
@templ.Raw(text)
} // noirImageComponent renders an image full-bleed within its container with a mono caption. templ noirImageComponent(src, alt, caption string) {
if src != "" { { } if caption != "" {
{ caption }
}
} // noirButtonComponent renders the hairline outline button. templ noirButtonComponent(text, href string) { if href != "" { { text } } else { } } // noirCardComponent renders the transparent hairline-bordered card. templ noirCardComponent(title, body string) {
if title != "" {

{ title }

} if body != "" {
@templ.Raw(body)
}
}