Two-column guide with preparation tips and company commitments to candidates. Sets expectations for the hiring process with contact info.
A centered header (optional badge, <strong>-aware heading, and description) above a two-column card grid where the left card lists preparation tips each prefixed by a CheckCircle icon and the right card lists company commitments each prefixed by a Shield icon, closed by an optional "Questions?" line linking a mailto: contact email.
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.
Radix flavor
npx shadcn add "https://ui.beste.co/r/careers39?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/careers39?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/careers39.tsx, plus the badge shadcn/ui primitive it uses for the section eyebrow.
The installed file exports careers39Demo alongside the block: the exact props behind the preview above. Spread it to get a working candidate-experience section in one line.
import { Careers39, careers39Demo } from "@/components/beste/block/careers39";
export default function CareersPage() {
return <Careers39 {...careers39Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Careers39 } from "@/components/beste/block/careers39";
export default function CareersPage() {
return (
<Careers39
badge={{ label: "For Candidates", variant: "secondary" }}
heading="What to <strong>expect</strong>"
description="How to prepare and what we promise in return."
prepareTitle="What to Prepare"
prepareItems={[
{ text: "Review the job description and map your experience to it" },
{ text: "Bring specific examples that demonstrate impact" },
]}
commitTitle="Our Commitment to You"
commitItems={[
{ text: "You'll hear back within 5 business days of every stage" },
{ text: "You'll receive detailed feedback regardless of outcome" },
]}
contactEmail="recruiting@company.com"
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
badge | { label: string; variant?: "default" | "secondary" | "outline" } | – | Section eyebrow badge, centered above the heading |
heading | string | – | Section heading, supports inline <strong> |
description | string | – | Subheading paragraph under the heading |
prepareTitle | string | – | Title of the left ("prepare") card |
prepareItems | CommitmentItem[] | [] | Rows in the left card, each with a CheckCircle icon |
commitTitle | string | – | Title of the right ("commitment") card |
commitItems | CommitmentItem[] | [] | Rows in the right card, each with a Shield icon |
contactEmail | string | – | Address for the closing mailto: link |
className | string | – | Extra classes for the outer <section> |
type CommitmentItem = {
text: string;
};badge, heading, or description is provided.heading is injected via dangerouslySetInnerHTML, so inline <strong> is honored and styled text-primary; passing untrusted strings here is unsafe.badge.variant falls back to "default" when omitted; the badge itself only renders when the badge object is present.*Items array is empty (default []); only the mapped rows and the optional *Title heading are conditional.CheckCircle icon and right rows use a Shield icon; the icon choice is fixed per column and not configurable per item.index, so reordering prepareItems or commitItems can cause unnecessary re-renders.mailto: link, renders only when contactEmail is set; there are no click callbacks or internal state anywhere in the component.md, where the two cards stack vertically.careers36
Team lead profiles with photos, bios, and department badges. Introduces future managers to candidates with detailed backgrounds.
careers10
Step-by-step hiring process timeline with numbered stages. Shows candidates the interview journey from application to onboarding.
careers18
Department cards with team lead, headcount, open roles badge, and links. Helps candidates explore teams before applying.
careers46
A full featured-role posting with responsibilities, requirements and a sticky apply card.
careers37
Email subscription form for job alerts with trust indicators. Captures candidate interest for future openings with clean card layout.
careers19
Internship program section with highlights, mentorship details, program summary card, and apply CTA. For recruiting early-career talent.