// Remaining pages: Ideas, Components, Tickets, Help, Admin. Plus shared wizards/drawers. // ── IDEAS LIST ─────────────────────────────────────────────────────── const IdeasPage = ({ goto, openCompose }) => { const [filter, setFilter] = React.useState('all'); const items = APM_IDEAS.filter(i => filter === 'all' ? true : i.status === filter); return ( } onClick={openCompose}>Log idea} />
{[ { id: 'all', label: 'All', n: APM_IDEAS.length }, { id: 'new', label: 'New', n: APM_IDEAS.filter(i => i.status === 'new').length }, { id: 'promoted', label: 'Promoted', n: APM_IDEAS.filter(i => i.status === 'promoted').length }, { id: 'merged', label: 'Merged', n: APM_IDEAS.filter(i => i.status === 'merged').length }, ].map(f => { const active = filter === f.id; return ( ); })}
{items.map(idea => ( goto('ideas', { id: idea.id })}>
{idea.title}
{idea.description}
{PERSON_BY_ID[idea.submitter].name} · {idea.submitted} {idea.tags?.map(t => {t})}
{idea.status}
{idea.upvotes}
))}
); }; // ── IDEA DETAIL ────────────────────────────────────────────────────── const IdeaDetail = ({ id, goto }) => { const idea = APM_IDEAS.find(i => i.id === id) || APM_IDEAS[0]; const [pickerOpen, setPickerOpen] = React.useState(false); return ( {idea.status} · {idea.upvotes} upvotes {PERSON_BY_ID[idea.submitter].name} } action={} />
Discussion · 4 replies
{[ { who: 'p_priya', when: '2 days ago', text: 'I\'d be hesitant to overlap this with the Q-shape preview work — different patient outcomes. Worth its own project?' }, { who: 'p_jenna', when: '1 day ago', text: 'If we ship summaries to patients we need consent scope for it. Let\'s scope that into the wizard before promoting.' }, { who: 'p_dr_ito', when: '4 hours ago', text: '+1 to keeping it separate. I\'d like to see this on the FY27 deck.' }, ].map((c, i) => (
{PERSON_BY_ID[c.who].name} {c.when}
{c.text}
))}