Loading the builder…
Builder
Pick sections from 307 blocks, drag them into order, and theme the lot in one go. What renders below is the actual component, not a picture of it — the same one the 126 pages in the catalog are built from. When it looks right, run it or take the source.
The layout and the theme both live in the address bar, so this page is shareable as a link and needs no account. Every edit is a normal navigation, which makes the back button an undo.
Hover a section to move, duplicate or remove it. Drag it to reorder.
The renewal conversation should start ninety days out, not thirty. By the time a customer is thirty days from renewal they have already formed a view, and the only lever left is discount. Teams that open the conversation at ninety days spend it on scope instead of price, and close at a materially higher rate — the difference in our own book was eleven points last year.
Select any text above to raise the toolbar. Shift-Arrow works too.
Blameless is easy to say and hard to schedule. The template, the timebox, and the one question we ask before anyone opens a dashboard.
Six weeks, zero visual regressions, one codemod we should have written first.
At 1.8B rows the vacuum stopped keeping up. What we tried, in order.
Turns out "Contact us" was doing a lot of damage for a two-word button.
A written design doc predicts on-the-job performance better than a weekend project.
Every block in the catalog, filtered by what it is. Click to append to the end of the page, or drag one into the outline to place it.
Writes each block to components/, which is where the page below imports them from.
npx hoverlab add selection-ai-toolbar blog-post-gridThese sections import lucide-react — everything else they use is React and Tailwind.
Sets the component name and the filename. Optional.
Saves as app/composed-page.tsx
/**
* ComposedPage — composed from 2 Hoverlab blocks.
*
* Install the sections this file imports:
* npx hoverlab add selection-ai-toolbar blog-post-grid
*
* Packages the sections need: lucide-react
*
* Rebuild or edit this layout: https://hoverlab5.netlify.app/builder?b=selection-ai-toolbar,blog-post-grid
*/
import * as React from 'react'
import { SelectionAiToolbar } from '@/components/selection-ai-toolbar'
import { BlogPostGrid } from '@/components/blog-post-grid'
export default function ComposedPage() {
return (
<main className="min-h-screen bg-background text-foreground">
<SelectionAiToolbar />
<BlogPostGrid />
</main>
)
}