A single-page switching campaign: an announcement navbar anchored to the sections below it, a hero floating a live saving calculation, an evidence band with the method written out, five objections answered with proof against each, two closing paths on an inverted band, and a footer carrying the same anchors.
Composed from 6 blocks. Installing this page installs all of them, plus the pieces and primitives they use.
Built in the Sirius collection.
A single-page switching campaign: an announcement navbar anchored to the sections below it, a hero floating a live saving calculation, an evidence band with the method written out, six objections answered with proof against each, two closing paths on an inverted band, and a footer carrying the same anchors. Six 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/landing5?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the page to components/beste/page/landing5.tsx and everything behind it: the six blocks it composes (navbar73, hero161, stats70, faq83, cta83, footer120), the four components they use (money23, chart7, button21, badge23) and the shadcn/ui button primitive. Eleven files, no follow-up installs.
The installed file exports landing5Demo alongside the page: the exact props behind the preview above. Spread it to get a working page in one line.
import { Landing5, landing5Demo } from "@/components/beste/page/landing5";
export default function Page() {
return <Landing5 {...landing5Demo} />;
}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 { Landing5, landing5Demo } from "@/components/beste/page/landing5";
export default function Page() {
return (
<Landing5
{...landing5Demo}
savings={{
label: "Evidence",
heading: "Where the saving comes from, written out.",
stats: [
{ value: "€1,840", label: "Average monthly saving, 40 seats" },
{ value: "11 min", label: "Saved per invoice run" },
{ value: "0", label: "Days of overlap you pay for twice" },
],
}}
/>
);
}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 Navbar73> | – | Announcement navbar; its links are the anchors below |
hero | ComponentProps<typeof Hero161> | – | Hero floating a live saving calculation |
savings | ComponentProps<typeof Stats70> | – | Evidence band with the method written out |
objections | ComponentProps<typeof Faq83> | – | Objections, each answered with proof |
cta | ComponentProps<typeof Cta83> | – | Two closing paths |
footer | ComponentProps<typeof Footer120> | – | Footer carrying the same anchors |
className | string | – | Extra classes for the page's outer wrapper |
| Section | Anchor | Block | Notes |
|---|---|---|---|
| Saving | #saving | hero161 | The floating figure is money23, a real component |
| Evidence | #evidence | stats70 | Given bg-muted/40; states the method, not just the result |
| Worries | #worries | faq83 | Six objections, which is what fills the grid |
| Switch | #switch | cta83 | Rendered on the inverted band, two paths not one |
savings 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.sticky top-0 z-50 by the page and stays for the whole document. On a one-page site it is the only navigation there is, so it has to be reachable from the bottom as well as the top; it works here because the block carries its own opaque band.money23, chart7), so they take your theme and typography rather than shipping an image of someone else's numbers.dark class, which swaps the theme tokens for that subtree rather than painting the section, so both paths keep their contrast.navbar73
A navbar with a dark announcement strip above a hairline-bordered row carrying a lowercase wordmark, uppercase links, a sign-in link, an accent call to action, and a mobile menu.
hero161
A hero that pairs a light display heading with an offset paragraph and action, then drops a wide image band under them and overlaps its lower edge with a live savings card.
stats70
An annual results section pairing an image tile that floats a live breakdown chart with a light interpretation of it, then four hairline readings that each name their own source, closing on a method panel.
faq83
An always-open FAQ that states four buying worries as quoted headings in a hairline matrix of cards, each answering in full and closing on a line of proof under a rule.