Department cards with team lead, headcount, open roles badge, and links. Helps candidates explore teams before applying.
A centered header block (optional badge, <strong>-aware heading, and description) above a two-column grid of department cards, each rendering a title, description, team lead, headcount, an open-roles badge, and a "View open roles" link.
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/careers18?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/careers18?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/careers18.tsx, plus the badge shadcn/ui primitive it uses for the eyebrow badge and the per-card open-roles count.
The installed file exports careers18Demo alongside the block: the exact props behind the preview above. Spread it to get a working department grid in one line.
import { Careers18, careers18Demo } from "@/components/beste/block/careers18";
export default function Page() {
return <Careers18 {...careers18Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Careers18 } from "@/components/beste/block/careers18";
export default function Page() {
return (
<Careers18
badge={{ label: "Our Teams", variant: "secondary" }}
heading="Explore our <strong>departments</strong>"
description="Find where your skills align and discover your next career move."
items={[
{
title: "Engineering",
description: "Build and scale our core platform, APIs, and infrastructure.",
lead: "James Kim",
teamSize: "45 people",
openRoles: 8,
href: "/careers/engineering",
},
]}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
badge | { label: string; variant?: "default" | "secondary" | "outline" } | – | Optional eyebrow badge above the heading |
heading | string | – | Centered heading, supports inline <strong> |
description | string | – | Sub-heading paragraph under the heading |
items | DepartmentItem[] | [] | Department cards rendered in the grid |
className | string | – | Extra classes for the outer <section> |
type DepartmentItem = {
title: string;
description?: string;
lead?: string;
teamSize?: string;
openRoles?: number;
href?: string;
};badge, heading, or description is provided, so an items-only grid has no top margin gap from an empty header.heading is injected via dangerouslySetInnerHTML, and any inline <strong> inside it is recolored to text-primary through the [&>strong] selector, so pass trusted markup only.sm breakpoint up (sm:grid-cols-2); there is no prop to change the column count.| divider when both lead and teamSize are present, and the open-roles Badge renders only when openRoles is non-null and greater than 0.openRoles is exactly 1 and "roles" otherwise.item.href is set; it is a real next/link navigation (not a decorative or console.log handler), and its trailing ArrowRight nudges right on card hover via the group-hover/careers18 group.careers2
Job openings grid with department badges, location tags, and apply buttons. Card-based layout for career pages.
careers36
Team lead profiles with photos, bios, and department badges. Introduces future managers to candidates with detailed backgrounds.
careers14
Team member photo grid with names and roles. Square portrait layout for showcasing leadership and team composition.
careers1
Job listings section with role cards showing department, location, and employment type. Clean list layout with hover effects and apply buttons.
careers3
Department-grouped job listings with minimal row layout. Jobs organized by team with location and type indicators.
careers5
Highlighted featured position card with a compact list of additional openings below. Great for showcasing priority roles.