Job listings section with role cards showing department, location, and employment type. Clean list layout with hover effects and apply buttons.
A centered careers section that renders an optional badge, heading, and description above a bordered, row-divided list of job openings, each showing a title, inline department/location/type metadata with icons, an optional description, and an "Apply" button linking to the role's URL.
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/careers1?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/careers1?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/careers1.tsx, plus the badge and button shadcn/ui primitives it uses for the section eyebrow and the per-row apply button.
The installed file exports careers1Demo alongside the block: the exact props behind the preview above. Spread it to get a working job listings section in one line.
import { Careers1, careers1Demo } from "@/components/beste/block/careers1";
export default function CareersPage() {
return <Careers1 {...careers1Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Briefcase } from "lucide-react";
import { Careers1 } from "@/components/beste/block/careers1";
export default function CareersPage() {
return (
<Careers1
badge={{ label: "We're Hiring", variant: "secondary" }}
heading="Join our <strong>growing team</strong>"
description="Explore our open positions and find your next opportunity."
items={[
{
title: "Senior Frontend Engineer",
department: "Engineering",
location: "Remote",
type: "Full-time",
description: "Build and maintain our React-based web applications.",
href: "https://beste.co",
icon: Briefcase,
},
]}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
badge | { label: string; variant?: "default" | "secondary" | "outline" } | – | Optional section eyebrow badge |
heading | string | – | Section heading, supports inline <strong> |
description | string | – | Supporting paragraph under the heading |
items | JobItem[] | [] | Job rows rendered in the bordered list |
className | string | – | Extra classes for the outer <section> |
type JobItem = {
title: string;
department?: string;
location?: string;
type?: string;
description?: string;
href?: string;
icon?: LucideIcon;
};badge, heading, or description is present; otherwise the list renders on its own.heading is injected via dangerouslySetInnerHTML, and any inline <strong> inside it is recolored to text-primary, so pass trusted markup only.badge.variant falls back to "default" when omitted; the badge itself is skipped entirely if badge is undefined.department, location, and type metadata (with Briefcase, MapPin, and Clock icons respectively), so any missing field simply drops out of the inline row.JobItem.icon field is part of the type but is never read by the component; the metadata icons are hardcoded, so setting icon has no visual effect.item.href is set, wraps a next/link to that URL, and its trailing ArrowRight nudges right on row hover; there is no onClick callback.index rather than a stable id, so reordering or filtering items can confuse React's reconciliation.careers2
Job openings grid with department badges, location tags, and apply buttons. Card-based layout for career pages.
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.
careers18
Department cards with team lead, headcount, open roles badge, and links. Helps candidates explore teams before applying.
careers6
Tabbed job board with department filters using shadcn Tabs component. Browse positions by team with location and type details.