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>
61 lines
3.6 KiB
Plaintext
61 lines
3.6 KiB
Plaintext
package main
|
|
|
|
// scheduleComponent renders the day schedule.
|
|
templ scheduleComponent(data ScheduleData) {
|
|
<section class="kg-section" data-block="kindergarten:schedule">
|
|
<div class="kg-container">
|
|
if data.Title != "" {
|
|
<h2 class="kg-display kg-crayon-underline" style="font-size: 2rem; margin-bottom: 1.5rem;">{ data.Title }</h2>
|
|
}
|
|
if len(data.Items) == 0 {
|
|
<div class="kg-empty" data-empty="true">No schedule items yet — add a time block to get started.</div>
|
|
} else {
|
|
<ol style="list-style: none; padding: 0; margin: 0;">
|
|
for _, item := range data.Items {
|
|
<li class="kg-schedule-item">
|
|
<span class="kg-schedule-time">
|
|
if item.Time != "" {
|
|
{ item.Time }
|
|
} else {
|
|
--:--
|
|
}
|
|
</span>
|
|
<span class="kg-schedule-activity">
|
|
if item.Activity != "" {
|
|
{ item.Activity }
|
|
} else {
|
|
Activity
|
|
}
|
|
</span>
|
|
<span class="kg-schedule-icon" aria-hidden="true">
|
|
@scheduleIcon(item.Icon)
|
|
</span>
|
|
</li>
|
|
}
|
|
</ol>
|
|
}
|
|
</div>
|
|
</section>
|
|
}
|
|
|
|
// scheduleIcon renders a small SVG matching the icon name. Defaults to a star
|
|
// shape when the icon is missing or unknown so we never render a broken image.
|
|
templ scheduleIcon(name string) {
|
|
switch name {
|
|
case "sun":
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="4"/><path d="M12 2v2"/><path d="M12 20v2"/><path d="m4.93 4.93 1.41 1.41"/><path d="m17.66 17.66 1.41 1.41"/><path d="M2 12h2"/><path d="M20 12h2"/><path d="m4.93 19.07 1.41-1.41"/><path d="m17.66 6.34 1.41-1.41"/></svg>
|
|
case "book":
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"/><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"/></svg>
|
|
case "paint":
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M19 11h2m-1 -1v2"/><circle cx="13" cy="6" r="2"/><circle cx="19" cy="11" r="2"/><circle cx="6" cy="14" r="2"/><circle cx="10" cy="20" r="2"/><path d="M7.4 12.4l3.6 -2.4"/><path d="M11.6 8.6l1.4 -0.6"/><path d="M15 6l4 5"/><path d="M8 16l2 4"/></svg>
|
|
case "snack":
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M8 14s1.5 2 4 2 4-2 4-2"/><line x1="9" y1="9" x2="9.01" y2="9"/><line x1="15" y1="9" x2="15.01" y2="9"/></svg>
|
|
case "play":
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="5 3 19 12 5 21 5 3"/></svg>
|
|
case "nap":
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg>
|
|
default:
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 15 8.5 22 9.3 17 14 18.2 21 12 17.8 5.8 21 7 14 2 9.3 9 8.5 12 2"/></svg>
|
|
}
|
|
}
|