// Morning standup ritual — a typeset letter from Reginald: drift, plan, nag const standupCSS = ` @keyframes ct-standup-settle { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } } .ct-standup-section { opacity: 1; } @media (prefers-reduced-motion: no-preference) { .ct-standup-section { animation: ct-standup-settle 320ms var(--ease-out) both; } } `; (function inject() { if (typeof document !== 'undefined' && !document.getElementById('ct-standup-css')) { const s = document.createElement('style'); s.id = 'ct-standup-css'; s.textContent = standupCSS; document.head.appendChild(s); } })(); function StandupScreen({ onBegin, onOpenIssue }) { const DS = window.CommiTeaDesignSystem_20e63b; const { Button, Tag, Badge, Icon } = DS; const s = window.CT_DATA.standup; const Section = ({ overline, children, order }) => (

{overline}

{children}
); const toneColor = { ok: 'var(--ok)', warn: 'var(--warn)', danger: 'var(--danger)' }; return (
{/* letterhead */}

{s.date} · prepared 07:00

Morning standup

{s.drift.map((d) => (
{d.text} {d.delta}
))}
{s.plan.map((p) => (
{p.who.split(' ').map((w) => w[0]).join('')}
{p.who} {p.pick} {p.title}

{p.why}

))}
onOpenIssue({ id: s.nag.id, title: 'Fix lifecycle inference on merge events', labels: ['est/2d', 'p/1'], days: s.nag.days })} style={{ display: 'flex', gap: 10, alignItems: 'flex-start', cursor: 'pointer', background: 'var(--warn-tint)', borderRadius: 'var(--radius-2)', padding: '12px 14px', }} >
#{s.nag.id} steeping {s.nag.days} blocks {s.nag.blocks.join(', ')}

{s.nag.text}

{/* sign-off */}
); } Object.assign(window, { StandupScreen });