Employee Referral Program

Refer a Friend

Know someone great?

Our best hires come from referrals. Help us grow the team and earn a bonus for every successful hire.

1

Submit a Referral

Share your contact's name, email, and the role you think they'd be perfect for.

2

We Reach Out

Our recruiting team reviews the referral and connects with the candidate within 48 hours.

3

Earn Your Bonus

Once your referral is hired and completes their first 90 days, the bonus is yours.

$5,000 referral bonus

For every successful hire through our referral program. No limit on how many people you can refer.

About this block

Employee Referral ProgramPRO

Referral program section with step-by-step process, bonus highlight card, and submit CTA. Encourages employee referrals.

Careers23: Employee Referral Program

A centered referral-program section that renders an optional badge, heading, and description above a three-up numbered step grid, followed by a bordered reward card showing a bonus title, supporting copy, and one or more link buttons.

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.

Radix flavor

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

Base UI flavor

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

This installs the block to components/beste/block/careers23.tsx, plus the badge and button shadcn/ui primitives it uses for the section eyebrow and the reward-card call-to-action links.

Quick start

The installed file exports careers23Demo alongside the block: the exact props behind the preview above. Spread it to get a working referral-program section in one line.

tsx
import { Careers23, careers23Demo } from "@/components/beste/block/careers23";

export default function Page() {
  return <Careers23 {...careers23Demo} />;
}

Then replace the demo with your own props. Written out, a trimmed setup looks like this:

tsx
import { Careers23 } from "@/components/beste/block/careers23";

export default function Page() {
  return (
    <Careers23
      badge={{ label: "Refer a Friend", variant: "secondary" }}
      heading="Know someone <strong>great?</strong>"
      description="Our best hires come from referrals."
      steps={[
        { title: "Submit a Referral", description: "Share your contact's name and the role." },
        { title: "We Reach Out", description: "Our team connects within 48 hours." },
        { title: "Earn Your Bonus", description: "Paid after their first 90 days." },
      ]}
      rewardTitle="$5,000 referral bonus"
      rewardDescription="For every successful hire through the program."
      buttons={[{ label: "Submit a Referral", href: "/refer" }]}
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string; variant?: "default" | "secondary" | "outline" }Section eyebrow badge above the heading
headingstringSection heading, supports inline <strong>
descriptionstringSupporting copy below the heading
stepsStepItem[][]Numbered cards in the three-up process grid
rewardTitlestringBold headline inside the reward card
rewardDescriptionstringSupporting copy inside the reward card
buttons{ label: string; href: string; variant?: "default" | "secondary" | "outline" }[][]Link buttons rendered in the reward card
classNamestringExtra classes for the outer <section>
ts
type StepItem = {
  title: string;
  description?: string;
};

Behavior notes

  • The header block (badge, heading, description) only renders when at least one of those three props is provided; otherwise the section opens straight into the step grid.
  • heading is injected via dangerouslySetInnerHTML, so inline <strong> markup is honored and styled with text-primary; any HTML you pass is rendered as-is.
  • Each step's index number is derived from its array position (index + 1), so reordering the steps array renumbers the circular badges automatically.
  • The grid is fixed at sm:grid-cols-3 regardless of how many steps you pass, so a count other than three leaves uneven columns or wraps rows.
  • The reward card only renders when rewardTitle, rewardDescription, or a non-empty buttons array is present; an empty buttons array suppresses the button row on its own.
  • Buttons render as real next/link anchors via asChild, so navigation follows href directly; there is no click callback, and each step's description is optional and simply omitted when absent.

More Careers blocks

View all Careers
PRO

careers19

Internship Program

Internship program section with highlights, mentorship details, program summary card, and apply CTA. For recruiting early-career talent.

PRO

careers27

Speculative Application CTA

Bottom-of-page careers CTA for general applications with email, action buttons, and company highlight badges. Captures candidates without matching roles.

PRO

careers33

HR Job Posting Detail

Formal HR job posting with responsibilities, qualifications, benefits, and sidebar summary. Corporate-style position detail page with apply CTA.

PRO

careers28

Learning & Development

Professional development program cards with conference budget, courses, mentorship, and tech talks. Highlights company investment in employee growth.

PRO

careers22

Employee Spotlight Story

Featured employee profile with portrait photo, personal quote, and career milestone timeline. Showcases real growth stories.

PRO

careers8

Job Detail Page

Single job posting detail with responsibilities, requirements, nice-to-haves, and apply CTA. Full position description layout.