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.
6 actions the agent will not take on its own · 2 must be opened individually
| Select the 4 actions that can be approved in bulk | Action | Amount | Deadline |
|---|---|---|---|
Refund order 41822 Damaged on arrival · photo attached · customer since 2023 | £38.00 | Auto-approves in 3h | |
Refund order 41830 Never delivered · carrier confirmed loss | £12.50 | Auto-approves in 3h | |
Refund order 41833 Duplicate charge · matched to payment intent pi_3Qk | £64.00 | Auto-approves in 6h | |
Close account for Meridian Foods Requested by an admin · 41 users · 3 years of data Deletes data — opens individually | — | Open Close account for Meridian Foods | |
Refund order 41840 Late delivery · goodwill, within policy | £9.99 | Auto-approves in 12h | |
Issue account credit to Halden Group Outage compensation · agent proposed 3 months Above the bulk limit — opens individually | £4,200.00 | Open Issue account credit to Halden Group |
No install step, no configuration file, no build plugin.
import { PricingTiers } from '@/components/pricing-tiers'import { FaqAccordion } from '@/components/faq-accordion' export default function Page() { return ( <main> <PricingTiers /> <FaqAccordion /> </main> )}No install step, no configuration file, no build plugin.
import { PricingTiers } from '@/components/pricing-tiers'import { FaqAccordion } from '@/components/faq-accordion' export default function Page() { return ( <main> <PricingTiers /> <FaqAccordion /> </main> )}Everything you need to launch — auth, billing, analytics and a dashboard your customers will actually understand.
No tiers on the reading, no account on the copying.
Every artifact is readable and copyable signed out. The wall is on commercial use, not on looking.
Set a brand palette once and the whole catalog previews in it, so what you copy already matches.
No runtime package, no wrapper components, nothing to keep in step with a version of ours.
Install a component, a page or a whole template into an existing project from the terminal.
An MCP server your editor can call, so the component arrives without anyone opening a browser.
The catalog is a plain unauthenticated REST surface. Read it, script it, mirror it.
Real semantics, real focus states, and decorative motion gated behind prefers-reduced-motion.
Panels are drawn rather than fetched, so nothing reflows while a remote asset decides to arrive.
Effects build blocks, blocks build pages, pages build templates — one system rather than four products.
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 approval-queue code-showcase hero-split feature-icon-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 5 Hoverlab blocks.
*
* Install the sections this file imports:
* npx hoverlab add approval-queue code-showcase hero-split feature-icon-grid
*
* Packages the sections need: lucide-react
*
* Rebuild or edit this layout: https://hoverlab5.netlify.app/builder?b=approval-queue,code-showcase,code-showcase,hero-split,feature-icon-grid
*/
import * as React from 'react'
import { ApprovalQueue } from '@/components/approval-queue'
import { CodeShowcase } from '@/components/code-showcase'
import { HeroSplit } from '@/components/hero-split'
import { FeatureIconGrid } from '@/components/feature-icon-grid'
export default function ComposedPage() {
return (
<main className="min-h-screen bg-background text-foreground">
<ApprovalQueue />
<CodeShowcase />
<CodeShowcase />
<HeroSplit />
<FeatureIconGrid />
</main>
)
}