Internship program section with highlights, mentorship details, program summary card, and apply CTA. For recruiting early-career talent.
A centered internship recruiting section that pairs a badge, <strong>-aware heading, and lead paragraph with a two-column body: a list of icon-fronted highlight rows on the left and a bordered "Program Details" card on the right that stacks label/value rows above a column of full-width CTA buttons.
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/careers19?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/careers19?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/careers19.tsx, plus the badge and button shadcn/ui primitives it uses for the eyebrow badge and the CTA buttons in the details card.
The installed file exports careers19Demo alongside the block: the exact props behind the preview above. Spread it to get a working internship program section in one line.
import { Careers19, careers19Demo } from "@/components/beste/block/careers19";
export default function Page() {
return <Careers19 {...careers19Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Rocket, Users } from "lucide-react";
import { Careers19 } from "@/components/beste/block/careers19";
export default function Page() {
return (
<Careers19
badge={{ label: "Internship Program", variant: "secondary" }}
heading="Launch your career with our <strong>internship program</strong>"
description="A 12-week immersive program working on real products alongside our team."
highlights={[
{ icon: Rocket, title: "Real Impact", description: "Ship production features used by thousands." },
{ icon: Users, title: "Dedicated Mentorship", description: "Get paired with a senior team member." },
]}
details={[
{ label: "Duration", value: "12 weeks" },
{ label: "Start Date", value: "June 2026" },
]}
buttons={[{ label: "Apply Now", href: "https://beste.co" }]}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
badge | { label: string; variant?: "default" | "secondary" | "outline" } | – | Optional eyebrow badge above the heading |
heading | string | – | Section heading, supports inline <strong> |
description | string | – | Lead paragraph under the heading |
highlights | HighlightItem[] | [] | Icon-fronted rows in the left column |
details | ProgramDetail[] | [] | Label/value rows in the details card |
buttons | { label: string; href: string; variant?: "default" | "secondary" | "outline" }[] | [] | Full-width CTA buttons in the details card |
className | string | – | Extra classes for the outer <section> |
type HighlightItem = {
icon?: LucideIcon;
title: string;
description?: string;
};
type ProgramDetail = {
label: string;
value: string;
};badge, heading, or description is truthy, so passing none of them collapses that whole region.heading is injected via dangerouslySetInnerHTML, and any inline <strong> inside it is styled to text-primary with font-semibold; pass only trusted markup.bg-primary/10 avatar, but the icon inside is conditional: omit item.icon and the circle renders empty. A highlight's description is likewise optional and simply skipped when absent.lg:grid-cols-5 grid where highlights take lg:col-span-3 and the details card takes lg:col-span-2; below the lg breakpoint both stack full width.badge and each button default to variant: "default" when their own variant is unset.buttons.length > 0, and each is a Button asChild wrapping a next/link Link to button.href; there is no onClick callback, navigation is pure href.details.careers23
Referral program section with step-by-step process, bonus highlight card, and submit CTA. Encourages employee referrals.
careers33
Formal HR job posting with responsibilities, qualifications, benefits, and sidebar summary. Corporate-style position detail page with apply CTA.
careers8
Single job posting detail with responsibilities, requirements, nice-to-haves, and apply CTA. Full position description layout.
careers5
Highlighted featured position card with a compact list of additional openings below. Great for showcasing priority roles.
careers28
Professional development program cards with conference budget, courses, mentorship, and tech talks. Highlights company investment in employee growth.
careers46
A full featured-role posting with responsibilities, requirements and a sticky apply card.