Help Improvement 8 — Related Articles
Status: [To Build]
Purpose: Help topic pages end abruptly — there is no suggestion of where to read next. A “Related articles” footer at the bottom of each topic drives deeper engagement and surfaces topics the user may not have known to search for.
Data Shape
Add an optional related field to HelpPageData in packages/common/src/help-types.ts:
interface HelpPageData {
// ... existing fields ...
related?: string[]; // slugs of related topics
}Example usage in _data/index.ts:
{
slug: "blog",
title: "Blog Posts",
// ...
related: ["content-briefs", "activities", "calendar"],
}UI Component
// In packages/ui/src/HelpPage.tsx
// Add to the bottom of the page, after all sections + rating footer:
{relatedPages.length > 0 && !inDrawer && (
<aside className="mt-10 border-t pt-6">
<h3 className="text-sm font-semibold text-muted-foreground uppercase tracking-wide mb-3">
Related articles
</h3>
<ul className="space-y-2">
{relatedPages.map(p => (
<li key={p.slug}>
<Link
href={`${basePath ?? "/help"}/${p.slug}`}
className="flex items-center gap-2 text-sm text-foreground
hover:text-violet-600 transition-colors group"
>
<BookOpen className="w-3.5 h-3.5 shrink-0 text-muted-foreground group-hover:text-violet-600" />
{p.title}
</Link>
</li>
))}
</ul>
</aside>
)}Compute relatedPages inside HelpPage:
const relatedPages = useMemo(() => {
if (!data.related?.length || !allPages) return [];
return data.related
.map(slug => allPages.find(p => p.slug === slug))
.filter((p): p is HelpPageData => !!p);
}, [data.related, allPages]);This requires allPages to be passed (already added by improvement #6).
In-Drawer Behaviour
Related articles are hidden when inDrawer={true} — the drawer is meant to be a quick reference panel, not a reading path. Users can open the full /help/{slug} page via the “Open in full page” link at the top of the drawer for deeper navigation.
Suggested Related Links per Category
Seed these into _data/index.ts when writing the data:
| Topic | Related slugs |
|---|---|
blog | content-briefs, activities, calendar |
social | channels, calendar, activities |
newsletters | channels, activities, calendar |
content-briefs | blog, seo, activities |
activities | deliverables, goals, calendar |
deliverables | activities, goals |
goals | deliverables, activities |
calendar | activities, blog, social, newsletters |
context | strategy, deliverables |
strategy | context, goals |
channels | social, insights, ai-search |
seo | blog, content-briefs, ai-search |
ai-search | seo, insights |
reports | agent-run-stats (once written), insights |
Affected Files
| File | Change |
|---|---|
packages/common/src/help-types.ts | Add related?: string[] to HelpPageData |
packages/ui/src/HelpPage.tsx | Compute + render related articles section |
apps/dashboard/src/app/(dashboard)/help/_data/index.ts | Add related arrays to all 26 existing topics |