Skip to content

Revamp Clips/Slides landing pages, add pricing page and design crawl - #2818

Open
timmilazzo wants to merge 153 commits into
mainfrom
ai_main_fe32ae7a7f32446fa319
Open

Revamp Clips/Slides landing pages, add pricing page and design crawl#2818
timmilazzo wants to merge 153 commits into
mainfrom
ai_main_fe32ae7a7f32446fa319

Conversation

@timmilazzo

@timmilazzo timmilazzo commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Summary

Reworks the Clips and Slides app landing pages with new hero copy, CTAs, and comparison tables, adds an interactive "Try Now" slide-deck prompt builder backed by a new website design-extraction action, and introduces a new Pricing page linked from the footer.

Problem

The Slides and Clips landing pages had generic, PowerPoint/Loom-alternative messaging and no way for a visitor to quickly generate a tailored starting prompt for the Slides agent. There was also no pricing page explaining the open-source/MIT model versus the optional managed backend.

Solution

  • Added a crawl-design-reference action that safely fetches a public URL via the hosted freedesign.md extraction API, normalizes colors/fonts, and returns bounded metadata for use in prompt generation, with SSRF protections and tests.
  • Built a SlidesTryNow composer component that lets users pick a deck type/length, optionally pull design signals from a URL, and streams a style-guide summary into an editable prompt before linking out to the Slides app with the prompt pre-filled.
  • Rebuilt the Clips landing page hero, stats, "paste into your AI" prompt block, a new clip preview slider, and a trimmed competitor comparison table.
  • Added a new /pricing route with hero, free-features list, fine-print, optional Builder backend section, self-host vs. Builder comparison table, FAQ, and an email capture CTA.
  • Updated hero copy for Clips/Slides across all locales, added a footer.pricing link, and reused the new hero copy in the /apps template cards.
  • Added a ClipsQuickStart recording-mode picker component (screen/camera/audio options).
  • Minor global CSS fix for sidebar-related scrollbar overflow.

Key Changes

  • New action: packages/docs/actions/crawl-design-reference.ts (+tests) — fetches and normalizes design signals (title, description, colors, fonts) from a public URL via freedesign.md, with SSRF/DNS safety checks and hex/HSL color name lookup via color.pizza.
  • New component: SlidesTryNow.tsx (+tests) — deck-type/style dropdowns, streaming style-guide injection, contentEditable prompt composer, and "Generate my deck" link that appends only selected dropdown values to initialPrompt.
  • New component: ClipsQuickStart.tsx — recording mode/surface/audio picker for the Clips landing page.
  • New route: pricing.tsx (+ locale alias route) — full pricing page with free features, fine print, Builder backend section, self-host cost comparison table, FAQ accordion, and email signup form.
  • Templates.clips.tsx / templates.slides.tsx: restructured hero actions, added prompt-copy CTA section, clip preview slider, updated comparison tables, and secondary/primary CTA treatment adjustments.
  • TemplateCard.tsx: reordered featuredTemplates, and Clips/Slides cards now source hero copy overrides for /apps listing.
  • Footer.tsx: added Pricing link after Skills.
  • i18n: updated hero copy, added footer.pricing, templateLanding.clips.quickStart.*, and templateLanding.slides.tryNow.* keys across all supported locales.
  • global.css: fixed double-scrollbar issue when the agent sidebar is closed.

Edit in Builder  Preview


To clone this PR locally use the Github CLI with command gh pr checkout 2818

You can tag me at @BuilderIO for anything you want me to fix or change

@builder-io-integration builder-io-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Builder reviewed your changes and found 7 potential issues 🔴

Review Details

Incremental Code Review Summary

This update expands the PR substantially by refactoring the shared docs header and template landing components, adding localized template surfaces, and simplifying the Slides and Clips landing implementations. I reviewed the new changes against the previously open findings: the Clips launch-path comment and the obsolete successive-style-guide comment were resolved; the extractor SSRF gap, font bound, color-response cleanup, microphone omission, pricing placeholders, and pricing localization remain open and were not reposted.

New Findings

  • 🔴 HIGHtemplates.$slug.tsx no longer typechecks because trackEvent is still called after its import was removed, while TemplateDocsLink is unused.
  • 🟡 MEDIUM — Existing TemplateCard interaction tests now fail after the accessible control contract was changed.
  • 🟡 MEDIUM — The Slides guided builder no longer invokes the newly added design-reference action, leaving the advertised flow unreachable.
  • 🟡 MEDIUM — The redesigned header removes docs search and locale/theme controls without replacements.
  • 🟡 MEDIUM — The fixed dark header background makes light-theme navigation and branding unreadable.
  • 🟡 MEDIUM — Several localized template pages now use a hardcoded English final CTA.

The shared refactor needs a build/test pass before merge, particularly around header affordances and generic template routing.

🧪 Browser testing: Will run after this review (PR touches UI code)

Comment on lines +160 to +162
onClick={(event) => {
applyFirstTouchAttributionToLink(event.currentTarget);
trackEvent("try live demo", {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 Restore the generic template route imports

The demo click handler still calls trackEvent, but the refactor removed its import; TemplateDocsLink is also left unused. With the docs package's TypeScript settings these produce Cannot find name 'trackEvent' and TS6133, so the package cannot typecheck/build. Restore the tracking import or remove the handler, and remove/use the stale docs-link import.

Fix in Builder

Comment on lines +280 to +291
<Link
data-an-prefetch="viewport"
to={sitePathForLocale(`/apps/${template.slug}`, locale)}
className="primary-button w-full"
onClick={() =>
trackEvent("click template", {
template: template.slug,
location: "card",
})
}
>
Learn more

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Preserve or update the TemplateCard interaction contract

The card replaces the existing Try It/Customize It controls with Learn more/Customize it, but PopoverControls.test.tsx still queries the old accessible names and now fails in four cases. Preserve the tested labels/behavior or update the affected tests and consumers to the new contract before merging.

Fix in Builder

Comment on lines +26 to +29
export function SlidesTryNow() {
const t = useT();
const tn = (key: string) => t(`templateLanding.slides.tryNow.${key}`);
const editorRef = useRef<HTMLDivElement>(null);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Wire the guided Slides builder to the design-reference action

This component now only exposes an editor ref, a blank contenteditable prompt, and the outbound link; it never calls crawl-design-reference. The new action and its design-reference/style-guide UI copy are therefore unreachable, so the advertised guided deck-builder flow has regressed to a hand-written prompt. Restore the controls/action integration or remove the unused action and associated copy.

Fix in Builder

</ContextMenuContent>
</ContextMenu>

{/* Desktop nav links */}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Restore an entry point for docs search

The redesign removes SearchTrigger, the Cmd/Ctrl-K listener, and the SearchModal render. SearchModal is not rendered elsewhere, so users can no longer search the documentation. Keep the existing trigger/modal wiring or provide a replacement entry point.

Fix in Builder

</a>
</div>

{/* Right actions */}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Keep locale and theme controls reachable

The refactor removes DocsLanguagePicker, DocsLanguageSuggestion, and ThemeToggle from both desktop and mobile header markup without adding replacements. Users can no longer discover/switch localized routes or override the browser theme through the UI. Restore these controls or expose equivalent reachable settings.

Fix in Builder

Comment on lines +153 to +155
className={`sticky top-0 z-50 transition-[background-color,backdrop-filter] duration-300 ${
showHeaderBg
? "bg-[rgba(10,10,10,0.90)] backdrop-blur-md"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Use theme-aware colors for the scrolled header

The new scrolled/non-home header always applies bg-[rgba(10,10,10,0.90)], while the light-theme navigation and logo remain dark variants. In light mode this produces a near-black header with near-black text/wordmark, making primary navigation effectively unreadable. Use theme variables or matching dark-theme foreground/logo variants.

Fix in Builder

Comment on lines +363 to +368
<Link
data-an-prefetch="viewport"
to={sitePathForLocale("/apps", locale)}
className="secondary-button"
>
View more apps

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Localize the final app-catalog CTA

The refactor replaces the existing localized CTA key with the English literal View more apps; the same literal was added to the Analytics, Calendar, Content, Dispatch, Forms, Mail, and Plan template routes. Non-English template pages now render this prominent CTA in English. Restore the existing per-template key or add a shared localized key and use it across the routes.

Fix in Builder

@github-actions

Copy link
Copy Markdown
Contributor

Here's a visual recap of what changed:

Visual recap

Open the full interactive recap

Large diff — this recap is a summarized view (top files + schema/API deltas).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants