themes-kindergarten/heading_override.templ
Alex Dunmow ffe46a146c initial: theme plugin kindergarten
Bootstrapped during the 2026-06-06 BlockNinja consolidation. Was previously
an unversioned directory inside ~/src/blockninja-themes/kindergarten.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-06 14:11:35 +08:00

58 lines
1.9 KiB
Plaintext

package main
import "fmt"
// kgHeadingBaseClass returns size classes per heading level (Tailwind-like
// utilities scoped to the kindergarten CSS).
func kgHeadingBaseClass(level int) string {
switch level {
case 1:
return "kg-display kg-crayon-underline"
case 2:
return "kg-display kg-crayon-underline"
case 3:
return "kg-display"
case 4:
return "kg-display"
case 5:
return "kg-display"
case 6:
return "kg-display"
default:
return "kg-display"
}
}
// kgHeadingComponent renders a heading with Kindergarten accents, optionally
// preceded by a circular step badge (e.g. for "Step 1", "Step 2" sections).
templ kgHeadingComponent(level int, text, textClass string, step int) {
if step > 0 {
<div class="kg-heading-stepped">
<span class="kg-heading-step-badge" aria-hidden="true">{ fmt.Sprintf("%d", step) }</span>
@kgHeadingTag(level, text, textClass)
</div>
} else {
@kgHeadingTag(level, text, textClass)
}
}
// kgHeadingTag emits the actual <h1>..<h6> tag at the requested level.
templ kgHeadingTag(level int, text, textClass string) {
switch level {
case 1:
<h1 class={ kgHeadingBaseClass(1), textClass } style="font-size: clamp(2.5rem, 6vw, 4rem); margin: 0;">{ text }</h1>
case 2:
<h2 class={ kgHeadingBaseClass(2), textClass } style="font-size: 2.25rem; margin: 0;">{ text }</h2>
case 3:
<h3 class={ kgHeadingBaseClass(3), textClass } style="font-size: 1.75rem; margin: 0;">{ text }</h3>
case 4:
<h4 class={ kgHeadingBaseClass(4), textClass } style="font-size: 1.5rem; margin: 0;">{ text }</h4>
case 5:
<h5 class={ kgHeadingBaseClass(5), textClass } style="font-size: 1.25rem; margin: 0;">{ text }</h5>
case 6:
<h6 class={ kgHeadingBaseClass(6), textClass } style="font-size: 1.125rem; margin: 0;">{ text }</h6>
default:
<h2 class={ kgHeadingBaseClass(2), textClass } style="font-size: 2.25rem; margin: 0;">{ text }</h2>
}
}