Employee Spotlight Story

Employee Spotlight

Growing with our team

Real stories from people who've built their careers here.

Maria Santos

Maria Santos

Staff Engineer, Platform Team

I joined as a junior engineer three years ago, and the growth I've experienced here has been incredible. The mentorship, the challenges, and the trust from leadership gave me the confidence to take on bigger and bigger problems.
2023Junior Software Engineer
2024Software Engineer
2025Senior Engineer
2026Staff Engineer, Platform Team
About this block

Employee Spotlight StoryPRO

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

Careers22: Employee Spotlight Story

A single-employee spotlight section that pairs a portrait image in a 3:4 frame with a name, role, a left-bordered italic pull quote, and a stacked list of year/role career milestones, all under an optional centered badge, heading, and description block.

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/careers22?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

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

This installs the block to components/beste/block/careers22.tsx, plus the badge shadcn/ui primitive it uses for the section eyebrow badge.

Quick start

The installed file exports careers22Demo alongside the block: the exact props behind the preview above. Spread it to get a working employee spotlight in one line.

tsx
import { Careers22, careers22Demo } from "@/components/beste/block/careers22";

export default function Page() {
  return <Careers22 {...careers22Demo} />;
}

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

tsx
import { Careers22 } from "@/components/beste/block/careers22";

export default function Page() {
  return (
    <Careers22
      badge={{ label: "Employee Spotlight", variant: "secondary" }}
      heading="Growing with <strong>our team</strong>"
      description="Real stories from people who've built their careers here."
      name="Maria Santos"
      role="Staff Engineer, Platform Team"
      image={{ src: "/team/maria.jpg", alt: "Maria Santos" }}
      quote="The mentorship and trust from leadership gave me the confidence to take on bigger problems."
      milestones={[
        { year: "2023", role: "Junior Software Engineer" },
        { year: "2026", role: "Staff Engineer, Platform Team" },
      ]}
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string; variant?: "default" | "secondary" | "outline" }Centered eyebrow badge above the heading
headingstringSection heading, supports inline <strong>
descriptionstringSub-heading paragraph under the heading
namestringFeatured employee name
rolestringEmployee role shown under the name
image{ src: string; alt: string }Portrait rendered in a 3:4 frame
quotestringPull quote wrapped in typographic quotation marks
milestonesMilestoneItem[][]Year/role rows in the career timeline
classNamestringExtra classes for the outer <section>
ts
type MilestoneItem = {
  year: string;
  role: string;
};

Behavior notes

  • The entire header block (badge, heading, description) is only rendered when at least one of badge, heading, or description is present, so omitting all three drops the top margin and centered container entirely.
  • heading is injected via dangerouslySetInnerHTML, and any inline <strong> inside it is recolored to text-primary; pass only trusted markup.
  • The layout is a two-column grid on lg screens, but the image column only renders when image is provided, so without it the text column stretches full width.
  • The name/role sub-block is conditional on name || role, and name and role render independently, so you can show just one of them.
  • The quote is wrapped in literal &ldquo;/&rdquo; entities in addition to the blockquote; do not add your own surrounding quotation marks to the quote string.
  • Milestones use the array index as their React key and render nothing when milestones is empty, so reordering or filtering the list in place can cause reconciliation churn.
  • The component is a pure presentational block with no callbacks, internal state, or interactive controls; there is nothing to wire up beyond passing props.

More Careers blocks

View all Careers
PRO

careers26

Hiring by the Numbers

Recruitment statistics dashboard with key metrics, trends, and detailed hiring process stats. Transparent data-driven hiring showcase.

PRO

careers46

Role Spotlight

A full featured-role posting with responsibilities, requirements and a sticky apply card.

PRO

careers32

Alumni Network Showcase

Former employee showcase with career progression from company role to current position. Demonstrates the company as a career launchpad.

PRO

careers16

Employee Testimonials

Employee testimonial cards with quotes, avatars, and roles. Social proof grid showcasing team member experiences and company culture.

PRO

careers14

Meet the Team Gallery

Team member photo grid with names and roles. Square portrait layout for showcasing leadership and team composition.

PRO

careers36

Hiring Manager Profiles

Team lead profiles with photos, bios, and department badges. Introduces future managers to candidates with detailed backgrounds.