Transparent salary bands with level, role, visual range bars, and equity details. Pay transparency table with responsive card fallback.
A pay-transparency section that renders an optional centered header (badge, <strong>-aware heading, description) above a list of engineering levels shown as a bordered desktop table and a stacked mobile card layout, each row pairing a level badge, role name, a $XXK – $YYK salary range with a proportional range bar scaled against the highest band, and an optional equity string, closed by an optional fine-print 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/careers35?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/careers35?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/careers35.tsx, plus the badge shadcn/ui primitive it uses for the header eyebrow and the per-row level tag.
The installed file exports careers35Demo alongside the block: the exact props behind the preview above. Spread it to get a working salary bands table in one line.
import { Careers35, careers35Demo } from "@/components/beste/block/careers35";
export default function CareersPayPage() {
return <Careers35 {...careers35Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Careers35 } from "@/components/beste/block/careers35";
export default function CareersPayPage() {
return (
<Careers35
badge={{ label: "Pay Transparency", variant: "secondary" }}
heading="Open and <strong>transparent</strong> pay"
description="Every offer falls within these published ranges."
items={[
{ level: "L1", role: "Junior Engineer", salaryMin: 85000, salaryMax: 110000, equity: "0.01% – 0.03%" },
{ level: "L2", role: "Mid-Level Engineer", salaryMin: 110000, salaryMax: 145000 },
]}
note="Ranges reflect base salary for US-based roles."
/>
);
}| 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 | – | Sub-copy shown under the heading |
items | SalaryBand[] | [] | Rows rendered in the table and mobile cards |
note | string | – | Fine-print line rendered below the table |
className | string | – | Extra classes for the outer <section> |
type SalaryBand = {
level: string;
role: string;
salaryMin: number;
salaryMax: number;
equity?: string;
};badge, heading, or description is present; with all three omitted the section starts directly at the table.heading is injected via dangerouslySetInnerHTML, so inline <strong> is styled with text-primary; any HTML you pass is rendered raw and unsanitized.globalMax = Math.max(...items.map(i => i.salaryMax), 1), the largest salaryMax across all rows, so every band's bar is positioned relative to the top of the whole set, not each row independently.formatSalary, which divides by 1000 and rounds to a whole number, rendering e.g. $85K; sub-thousand precision is lost.md breakpoint and a stacked card list hidden at and above it; both are always in the DOM.grid-cols-[60px_1fr_1fr_140px] layout with zebra striping on odd rows (bg-muted/30) and a bottom border on every row except the last.index, and a missing equity value falls back to a literal em-dash character; there are no interactive elements, callbacks, or internal state in this block.careers21
Transparent compensation philosophy with salary, equity, bonus, and perks cards. Shows total rewards approach with highlighted details.
careers31
Side-by-side role comparison grid showing team, skills, experience, and salary for different positions. Responsive table-to-card layout.
careers7
Team culture stats bar followed by detailed job position cards. Combines social proof with open roles listing.
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.
careers33
Formal HR job posting with responsibilities, qualifications, benefits, and sidebar summary. Corporate-style position detail page with apply CTA.