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>
58 lines
1.9 KiB
Plaintext
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>
|
|
}
|
|
}
|