Studio Contact PagePRO

A contact page for a studio that answers before you write: masthead navbar, a contact panel with the address and reply time, a FAQ with a booking aside, three rated accounts of the first call, and a mega footer.

Composed from 5 blocks. Installing this page installs all of them, plus the pieces and primitives they use.

Built in the Polaris collection.

Contact1: Studio Contact Page

A complete contact page for a studio that answers before you write: a masthead navbar carrying the location and inbox, a contact panel on a tinted surface instead of a hero, an FAQ with a booking card beside it, an inverted band of client quotes about the first conversation, and a four-column footer. Five blocks, one install.

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.

Upgrade Now

Installation

Swap YOUR_EMAIL and YOUR_KEY for the email and license key on your account. Find your license key on your account page.

bash
npx shadcn add "https://ui.beste.co/page/r/contact1?email=YOUR_EMAIL&license_key=YOUR_KEY"

This installs the page to components/beste/page/contact1.tsx and everything behind it in one command: the five blocks it composes (navbar52, cta68, faq69, testimonial30, footer102), the button1 and badge6 components they use, and the shadcn/ui button primitive. Eight files, no follow-up installs.

Quick start

The installed file exports contact1Demo alongside the page: the exact props behind the preview above. Spread it to get a working page in one line.

tsx
import { Contact1, contact1Demo } from "@/components/beste/page/contact1";

export default function Page() {
  return <Contact1 {...contact1Demo} />;
}

Each section is a separate prop, so the usual next step is to keep the demo and replace one section at a time rather than writing all five at once.

tsx
import { Contact1, contact1Demo } from "@/components/beste/page/contact1";

export default function Page() {
  return (
    <Contact1
      {...contact1Demo}
      navbar={{
        brand: "Halden",
        tagline: "Design and build, two projects at a time",
        locationLabel: "Oslo, 09:40",
        email: "studio@halden.example",
        links: [
          { label: "Work", href: "/work" },
          { label: "Studio", href: "/studio" },
        ],
        cta: { label: "Start a project", href: "/contact" },
      }}
      contact={{
        label: "Contact",
        badge: { label: "Booking from March" },
        heading: "Tell us what is actually wrong.",
        description: "Not the deliverable, the problem. One paragraph is plenty.",
        button: { label: "Write to the studio", href: "mailto:studio@halden.example" },
        secondaryLink: { label: "Or book a call", href: "/call" },
        meta: ["studio@halden.example", "Oslo, Norway", "Reply within two days"],
      }}
    />
  );
}

Props

Every prop is the full prop object of the block that renders that section, so anything the block accepts is accepted here.

PropTypeDefaultDescription
navbarComponentProps<typeof Navbar52>Masthead: brand, tagline, location, inbox, links, CTA
contactComponentProps<typeof Cta68>The contact panel, standing in for a hero
faqComponentProps<typeof Faq69>Questions, plus the side card that offers a call
testimonialComponentProps<typeof Testimonial30>Client quotes, rendered on the inverted band
footerComponentProps<typeof Footer102>Brand blurb, socials, link columns, legal row
classNamestringExtra classes for the page's outer wrapper

Sections

SectionBlockNotes
Mastheadnavbar52Carries a tagline, local time and email beside the links
Contactcta68Given bg-muted/50 by the page, so it reads as the opening surface
Questionsfaq69Two columns: the questions, and an image card offering a call
Quotestestimonial30Six quotes; the demo fills the grid rather than leaving a gap
Footerfooter102Brand column, three link columns, socials and a legal row

Behavior notes

Blocks in this page

Browse all blocks
PRO

navbar52

Letterhead Navbar

Letterhead-style navbar with a stacked brand block beside stacked rows of location, email and links, closed off by a seal CTA on the right.

PRO

cta68

Contact CTA

Centered contact call to action with an availability badge and big headline.

PRO

faq69

FAQ With Contact

Numbered FAQ accordion beside a contact card with image, prompt and a contact CTA.

PRO

testimonial30

Rated Reviews

Centered grid of star-rated testimonial cards with avatars.

PRO

footer102

Mega Footer

Complete studio mega footer with brand column, link columns, socials and legal bar.