Milestone 0/1: shell, calendar/psalter/hours scaffold, Prime
Deploy / deploy (push) Failing after 1m8s
Deploy / deploy (push) Failing after 1m8s
Client-side-first PWA (Vite/TS, no backend) per the approved plan: day- navigable shell listing all 8 hours, Prime fully resolves via the calendar -> psalter -> ordo pipeline, the other 7 hours are registered but flagged not-implemented. Sanctoral/temporal calendar data uses a day -> id indirection layer (saints, easter-offsets, fixed-date-calendar) so reassigning a feast to a different day is a data edit, not a code change. Docker (Caddy-serving-static) + Gitea CI workflow scaffolded to match the eec/drip/bookshop operational pattern. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
import { getState, setSelectedHour } from '../app-state';
|
||||
import { HOUR_IDS, resolveOrdo, type HourId } from '../hours';
|
||||
import { hourLabel } from './format';
|
||||
|
||||
export function renderHourList(container: HTMLElement): void {
|
||||
const { date, selectedHour } = getState();
|
||||
|
||||
const items = HOUR_IDS.map((hourId) => {
|
||||
const ordo = resolveOrdo(hourId, date);
|
||||
const isSelected = hourId === selectedHour;
|
||||
const isReady = !ordo.notImplemented;
|
||||
return `
|
||||
<li>
|
||||
<button
|
||||
type="button"
|
||||
class="hour-item${isSelected ? ' is-selected' : ''}${isReady ? '' : ' is-pending'}"
|
||||
data-hour="${hourId}"
|
||||
aria-current="${isSelected ? 'true' : 'false'}"
|
||||
>
|
||||
<span class="hour-name">${hourLabel(hourId)}</span>
|
||||
${isReady ? '' : '<span class="hour-status">coming soon</span>'}
|
||||
</button>
|
||||
</li>
|
||||
`;
|
||||
}).join('');
|
||||
|
||||
container.innerHTML = `<ul class="hour-list">${items}</ul>`;
|
||||
|
||||
container.querySelectorAll<HTMLButtonElement>('[data-hour]').forEach((btn) => {
|
||||
btn.addEventListener('click', () => {
|
||||
setSelectedHour(btn.dataset.hour as HourId);
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user