A four-column hiring-process section that renders an optional eyebrow badge, a heading, and an intro paragraph above a connected flow of numbered steps, each node showing an index badge, title, duration, and description, joined by a connector rail that runs vertically down the column on mobile and horizontally between nodes on desktop.
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/careers43?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/careers43?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/careers43.tsx.
The installed file exports careers43Demo alongside the block: the exact props behind the preview above. Spread it to get a working hiring-process flow in one line.
import { Careers43, careers43Demo } from "@/components/beste/block/careers43";
export default function Page() {
return <Careers43 {...careers43Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Careers43 } from "@/components/beste/block/careers43";
export default function Page() {
return (
<Careers43
label="Hiring at Polaris"
heading="How we get to know your craft"
intro="About 2 weeks, 4 steps of real conversations about the work."
steps={[
{
title: "Intro call",
description: "A relaxed talk with a studio lead about your story.",
duration: "30 min",
},
{
title: "Craft session",
description: "A paid, collaborative working session on a real brief.",
duration: "3 hrs",
},
]}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
label | string | – | Eyebrow text rendered inside a Badge6; the badge is omitted when empty |
heading | string | – | Section heading; only rendered when provided |
intro | string | – | Intro paragraph below the heading; only rendered when provided |
steps | ProcessStep[] | [] | Numbered step nodes rendered in the flow grid |
className | string | – | Extra classes merged onto the outer <section> |
type ProcessStep = {
title: string;
description: string;
duration: string;
};useState, and no interactive elements, so all content is driven entirely by props.label is only shown when truthy, and it is passed to the Badge6 component rather than rendered as raw text; heading and intro are likewise conditionally rendered only when non-empty.index, and the visible node number is index + 1, so reordering the steps array renumbers the flow.title, description, duration, intro) render as plain React children with no dangerouslySetInnerHTML, so inline HTML like <strong> in these strings would be escaped, not parsed.aria-hidden) and layout-aware: the last step hides both its mobile vertical rail (index === steps.length - 1) and its desktop horizontal rail, so no dangling line trails past the final node.md:grid-cols-4, so the layout is tuned for four steps; passing more or fewer changes the column packing and can leave uneven rows.steps array renders the header block alone with an empty flow grid below it.careers10
Step-by-step hiring process timeline with numbered stages. Shows candidates the interview journey from application to onboarding.
careers26
Recruitment statistics dashboard with key metrics, trends, and detailed hiring process stats. Transparent data-driven hiring showcase.
careers17
Job application form with input fields, file upload area, and position summary sidebar. Complete apply page layout for career sites.