// Shared helpers for Canon's pages. No build step, no dependencies. /** Create an element: h("button", { class: "btn", onclick }, "Save") */ export function h(tag, attrs = {}, ...children) { const el = document.createElement(tag); let value; for (const [k, v] of Object.entries(attrs || {})) { if (v === false || v == null) continue; if (k === "value") value = v; else if (k.startsWith("on") && typeof v === "function") el.addEventListener(k.slice(2), v); else if (k === "class") el.className = v; else if (k === "style" && typeof v === "object") Object.assign(el.style, v); else if (k in el && typeof v !== "string") el[k] = v; else el.setAttribute(k, v === true ? "" : v); } append(el, children); // Set after children so