A full featured-role posting with responsibilities, requirements and a sticky apply card.
A single-role job posting laid out in a two-column grid: the left column stacks an eyebrow badge, the role title, a row of chip pills (department, location, type, salary), a lead paragraph, and two check-listed columns for responsibilities and requirements, while the right column holds a sticky card with a facts definition list, a full-width apply button, and a closing note.
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/careers46?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/careers46?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/careers46.tsx.
The installed file exports careers46Demo alongside the block: the exact props behind the preview above. Spread it to get a working role posting in one line.
import { Careers46, careers46Demo } from "@/components/beste/block/careers46";
export default function CareersPage() {
return <Careers46 {...careers46Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Careers46 } from "@/components/beste/block/careers46";
export default function CareersPage() {
return (
<Careers46
label="Now hiring"
role={{
title: "Senior Brand Designer",
department: "Creative Studio",
location: "Brooklyn, NY / Remote",
type: "Full-time",
salary: "$135k to $165k",
}}
description="Own the visual voice of three to four client engagements at once, from first sketch to a production-ready toolkit."
responsibilities={["Lead end-to-end identity work.", "Translate strategy decks into design directions."]}
requirements={["6+ years of brand or identity design.", "Fluency in Figma and the full Adobe suite."]}
facts={[
{ label: "Team", value: "Creative Studio" },
{ label: "Reports to", value: "Creative Director" },
]}
applyHref="https://beste.co"
applyLabel="Apply now"
note="We review every application within five business days."
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
label | string | – | Eyebrow badge text above the title; the badge only renders when set |
role | Role | – | Title plus the four chip values (department, location, type, salary) |
description | string | – | Lead paragraph under the chip row |
responsibilities | string[] | [] | Check-listed items under the "What you'll do" column |
requirements | string[] | [] | Check-listed items under the "What you bring" column |
facts | Fact[] | [] | Label/value rows in the sticky card's definition list |
applyHref | string | – | Destination for the apply button |
applyLabel | string | – | Apply button text |
note | string | – | Fine-print paragraph below the apply button |
className | string | – | Extra classes for the outer <section> |
type Role = {
title: string;
department: string;
location: string;
type: string;
salary: string;
};
type Fact = {
label: string;
value: string;
};role chip row is hardcoded to exactly four values, iterating [role.department, role.location, role.type, role.salary] by array index, so a missing field renders an empty chip rather than being skipped.role) and the chip row require the role object; when role is undefined neither renders, even if other props are set.applyHref and applyLabel are set; it is a Button1 with asChild wrapping a Next.js Link, so navigation is real (not a console.log stub) but requires the Next.js router.lg:sticky lg:top-24 and only sticks at the lg breakpoint and above; on smaller screens it stacks below the posting and scrolls normally.divide-y with first:pt-0 so dividers appear between rows, not above the first one.useState or callback surface: the block is fully presentational and driven entirely by props.careers5
Highlighted featured position card with a compact list of additional openings below. Great for showcasing priority roles.
careers1
Job listings section with role cards showing department, location, and employment type. Clean list layout with hover effects and apply buttons.
careers22
Featured employee profile with portrait photo, personal quote, and career milestone timeline. Showcases real growth stories.
careers8
Single job posting detail with responsibilities, requirements, nice-to-haves, and apply CTA. Full position description layout.
careers18
Department cards with team lead, headcount, open roles badge, and links. Helps candidates explore teams before applying.