/* TargiApp — wspólne UI + hook do store */ const { useState, useEffect, useMemo, useRef } = React; const T = window.TargiStore; function useStore() { const [, force] = useState(0); useEffect(() => T.subscribe(() => force((n) => n + 1)), []); return T; } function Avatar({ name, size, color }) { const ini = (name || "?").split(" ").map((w) => w[0]).slice(0, 2).join("").toUpperCase(); const s = size || 32; return (
{ini}
); } function RoleChip({ roleKey }) { const r = T.roleOf(roleKey); return {r.short}; } function fmtDayLong(date) { const d = new Date(date); return d.toLocaleDateString("pl-PL", { weekday: "long", day: "numeric", month: "long" }); } function fmtDayShort(date) { const d = new Date(date); const wd = ["niedz.", "pon.", "wt.", "śr.", "czw.", "pt.", "sob."][d.getDay()]; return wd + " " + d.getDate() + "." + String(d.getMonth() + 1).padStart(2, "0"); } Object.assign(window, { useStore, Avatar, RoleChip, fmtDayLong, fmtDayShort });