A whole agency on one page: a floating card navbar anchored to the sections below it, an editorial split hero closing on a client strip, a stats-led studio band, four projects with what each was for, an inverted band of client-reported numbers, an inline contact form and a mega footer repeating the anchors.
Composed from 7 blocks. Installing this page installs all of them, plus the pieces and primitives they use.
Built in the Polaris collection.
A whole agency on one page: a floating card navbar anchored to the sections below it, an editorial split hero that closes on a client strip, a stats-led studio band, four projects with what each one was for, an inverted band of client-reported numbers, an inline contact panel, and a mega footer repeating the anchors. Seven blocks, one install, one page.
Upgrade to Pro
Pro blocks install through the shadcn CLI with your license key and ship their full source. Docs and live previews stay open to everyone, so you can read every block's details first.
Swap YOUR_EMAIL and YOUR_KEY for the email and license key on your account. Find your license key on your account page.
npx shadcn add "https://ui.beste.co/page/r/landing4?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the page to components/beste/page/landing4.tsx and everything behind it: the seven blocks it composes (navbar50, hero112, about34, showcase37, stats57, cta65, footer102), the button1 and badge6 components they use, and the shadcn/ui button primitive. Ten files, no follow-up installs.
The installed file exports landing4Demo alongside the page: the exact props behind the preview above. Spread it to get a working page in one line.
import { Landing4, landing4Demo } from "@/components/beste/page/landing4";
export default function Page() {
return <Landing4 {...landing4Demo} />;
}Each section is a separate prop, so the usual next step is to keep the demo and replace one section at a time. Keep the navbar's href values pointing at the anchors, or the page stops navigating itself.
import { Landing4, landing4Demo } from "@/components/beste/page/landing4";
export default function Page() {
return (
<Landing4
{...landing4Demo}
results={{
label: "Results",
heading: "Numbers our clients reported, not ones we measured.",
stats: [
{ value: "2.4x", label: "Repeat orders, first year after relaunch" },
{ value: "31%", label: "Lower cost per acquisition" },
{ value: "9 days", label: "From brief to first press check" },
],
}}
/>
);
}Every prop is the full prop object of the block that renders that section, so anything the block accepts is accepted here.
| Prop | Type | Default | Description |
|---|---|---|---|
navbar | ComponentProps<typeof Navbar50> | – | Floating card navbar; its links are the anchors below |
hero | ComponentProps<typeof Hero112> | – | Editorial split hero, closing on the client strip |
studio | ComponentProps<typeof About34> | – | Stats-led studio band |
work | ComponentProps<typeof Showcase37> | – | Four projects, with what each was for |
results | ComponentProps<typeof Stats57> | – | Client-reported numbers |
cta | ComponentProps<typeof Cta65> | – | Contact panel |
footer | ComponentProps<typeof Footer102> | – | Mega footer, repeating the anchors |
className | string | – | Extra classes for the page's outer wrapper |
| Section | Anchor | Block | Notes |
|---|---|---|---|
| Studio | #studio | about34 | Given bg-muted/50; figures before adjectives |
| Work | #work | showcase37 | Four projects; each says what it was for, not what it looked like |
| Results | #results | stats57 | Rendered on the inverted band |
| Contact | #contact | cta65 | The page's only ask |
results removes that section entirely rather than rendering an empty one. On a one-page site that also removes the target of a navbar link, so drop the matching link too.div carrying the id and a scroll-mt offset, so no block is modified to be linkable.style element that targets html, with a prefers-reduced-motion guard. Element selectors only, so class obfuscation cannot detach it.heading is rendered as HTML, so a <br /> sets the line break and the words inside <strong> are the ones that drop to the muted tone. It is the one string on the page that is not plain text.clients array removes the strip and the rule above it.dark class, which swaps the theme tokens for that subtree rather than painting the section, so the block's own figures and labels follow.showcase37 lays out four projects. Three leaves a hole in the grid, and the copy convention here is what each project was for, which is what makes the section read as evidence rather than as a gallery.navbar50
Detached floating navbar card with a square-mark wordmark, uppercase links and a compact seal CTA — the mobile menu unfolds inside the card.
hero112
Two-column studio hero with a two-tone headline, dual CTAs, tall image and a client wordmark strip.
about34
About section: eyebrow label, two-tone heading, two portraits beside a 2x2 stats grid.