Skip to content

feat: narrow blog reading column and add tracked CTA#989

Merged
ngnijland merged 9 commits into
masterfrom
feature/blog-detail-cta-and-readability
Apr 22, 2026
Merged

feat: narrow blog reading column and add tracked CTA#989
ngnijland merged 9 commits into
masterfrom
feature/blog-detail-cta-and-readability

Conversation

@ngnijland
Copy link
Copy Markdown
Collaborator

Summary

  • Cap blog post content at 680px for more comfortable reading line length — YouTube embeds follow automatically since they're already width: 100% inside the content wrapper.
  • Render the existing <CallToAction /> block at the end of blog posts, matching the pattern already used on /for-teams, /pricing, and /features/*. The site footer (social icons, nav, terms) was already rendering via Base.astro.
  • Add a blog branch to CallToAction's getEventName so blog-sourced clicks fire as CTA:+Blog+Bottom+-+Download and CTA:+Blog+Bottom+-+Trial in Plausible — distinguishable from existing marketing-page events so blog→App Store / Teams trial conversion is measurable separately.

Not in this PR

  • Code block contrast: code highlighting is emitted by the WordPress Code Block Pro plugin with inline style="color: …" on every span (currently the nord theme). Astro-side CSS cannot cleanly override inline styles, so the fix is in WP admin — switch the default theme to one-dark-pro, github-dark-default, or dracula for stronger token contrast.
  • Dedicated "Follow us" button row below posts — existing footer already has YouTube / LinkedIn / X icons.
  • Width change does not apply to static Astro blog pages (e.g. 15-voiceover-navigator-pro-…) — WordPress-backed [slug].astro only, as requested.

Test plan

  • npm run dev and open a post with a <Youtube /> embed and fenced code block.
  • At XL viewport: article text, images, and YouTube iframe all ~680px wide and centered; hero image above header still spans wider (unchanged).
  • End of post: confirm CallToAction renders (dark rounded card with "Download now" + "Start a 14-day Teams Trial"), followed by the usual site footer.
  • Inspect the two CTA anchors — they carry plausible-event-name=CTA:+Blog+Bottom+-+Download and plausible-event-name=CTA:+Blog+Bottom+-+Trial.
  • Smoke-check /for-teams and /pricing: their existing Plausible event names are unchanged (no regression in the getEventName switch).
  • Mobile viewport: content still has comfortable padding (container px-6 still applies); no horizontal scroll.
  • npm run lint, npm run format:check, npm run typecheck, npm run build all green locally.

🤖 Generated with Claude Code

ngnijland and others added 9 commits April 22, 2026 17:17
- Cap blog post content at 680px for more comfortable line length;
  YouTube embeds now match the content column since they're already
  100%-width inside the wrapper.
- Render the existing CallToAction block at the end of blog posts
  (matches the pattern on /for-teams, /pricing, /features) so readers
  see App Store and Teams trial CTAs.
- Add a blog branch to CallToAction's getEventName so blog-sourced
  clicks fire as "CTA:+Blog+Bottom+-+Download" and
  "CTA:+Blog+Bottom+-+Trial" in Plausible, distinguishable from
  existing marketing-page events.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Slightly wider than the 680px body column so the heading keeps
visual weight while sharing the same centered axis.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Title wrapper now uses the same 680px max-width as the body column
and shares the same left edge when centered in the container,
replacing the previously centered hero text.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Bullet and number markers in prose content now match the body text
color, reducing visual noise in article lists.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
WordPress oEmbed hardcodes width/height attrs on the iframe (e.g.
500x281), so the wrapper stretches to the column but the iframe
stays at its intrinsic size. Target the .wp-embed-aspect-16-9
wrapper to enforce a 16:9 aspect ratio and make the iframe fill it.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
List items were falling back to the default prose size while
paragraphs used text-h6-sm with medium weight, creating a
noticeable size drop inside articles. Apply the same size and
weight to list items for a consistent reading rhythm.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
On the black page background, primary-blue inline code with the
default prose backtick decorators reads as visually noisy. Replace
with a muted rounded pill (bg-light + subtle border) and off-white
text at 90% size, normal weight, no backticks.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The previous change applied the dark pill to every <code> element,
which also hit the <code> inside <pre> blocks, giving every line of
a code block its own pill background. Replace the prose-code:
utilities with a :not(pre) > code selector so the pill targets
inline code and leaves rendered code blocks to their own theme.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Zero the prose list-item top/bottom margin so consecutive bullets
sit at the same vertical cadence as wrapped lines inside a single
bullet, giving lists a consistent reading rhythm instead of a
larger between-item gap.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@ngnijland ngnijland merged commit 30680b7 into master Apr 22, 2026
1 check passed
@ngnijland ngnijland deleted the feature/blog-detail-cta-and-readability branch April 22, 2026 15:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant