Which means every role is a real gap rather than a headcount target, and the person who fills it is in the room for the work from the first week.
Work is reviewed out loud, in front of everyone, twice a week. It is the least comfortable hour in the calendar and the reason nothing ships half-considered.
Nothing here is discretionary or unlocked after a year. It applies from the first Monday.
Every role has a band on this site and you are placed in it by evidence, not by how hard you pushed in the last call.
Four weeks a year for work with no client on it. Show it at the Friday review or do not, but take the week.
Thirty days of your own, and the studio closes for the last week of December on top of them.
Full private cover for you and anyone who lives with you, with dental, from the first Monday rather than after probation.
A machine and a desk setup of your choosing, replaced when it annoys you rather than on a three-year cycle.
Two thousand a year for courses, conferences, type licences or a workshop in something unrelated. No approval, just tell us afterwards.
No take-home the week before Christmas, no panel of nine, and a decision within ten working days of the first call. If we say no it comes with reasons.
Thirty minutes, no slides. You ask what the work is really like and we ask what you want to be doing in two years.
Walk us through two projects, including one that went badly. We care more about what you changed afterwards than about the final frame.
A live brief with one of us alongside you, paid at your day rate. You keep the work whatever we decide.
The band is published, so this is about where in it you land and why. We put the reasoning in writing.
Tell us what you would want to be doing and show us something you made. We keep good notes and we do come back to them.
Send an open applicationA careers page in seven sections: a hiring hero with the open roles listed, a culture band with studio photographs, an icon grid of benefits, a roles table with published pay bands, the hiring process step by step, an open-application call to action and a CTA footer.
Composed from 8 blocks. Installing this page installs all of them, plus the pieces and primitives they use.
Built in the Polaris collection.
A careers page in seven sections: a hiring hero with the open roles listed, a culture band with studio photographs, an icon grid of benefits, a roles table with published pay bands, the hiring process step by step, an open-application call to action, and a CTA footer. Eight blocks, one install.
Upgrade to Pro
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.
npx shadcn add "https://ui.beste.co/page/r/jobs1?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the page to components/beste/page/jobs1.tsx and everything behind it: the eight blocks it composes (navbar44, careers48, careers42, careers41, careers40, careers43, cta66, footer104), the button1 and badge6 components they use, and the shadcn/ui button primitive. Eleven files, no follow-up installs.
The installed file exports jobs1Demo alongside the page: the exact props behind the preview above. Spread it to get a working page in one line.
import { Jobs1, jobs1Demo } from "@/components/beste/page/jobs1";
export default function Page() {
return <Jobs1 {...jobs1Demo} />;
}Each section is a separate prop, so the usual next step is to keep the demo and replace one section at a time. The roles table is the one that changes most often.
import { Jobs1, jobs1Demo } from "@/components/beste/page/jobs1";
export default function Page() {
return (
<Jobs1
{...jobs1Demo}
roles={{
label: "Open roles",
heading: "Three, and the band is published.",
roles: [
{ title: "Senior Brand Designer", team: "Design", location: "Lisbon or remote in CET", salary: "€62k to €74k" },
{ title: "Design Engineer", team: "Build", location: "Lisbon", salary: "€58k to €70k" },
{ title: "Studio Producer", team: "Operations", location: "Lisbon, three days on site", salary: "€48k to €56k" },
],
}}
/>
);
}Every prop is the full prop object of the block that renders that section, so anything the block accepts is accepted here.
| Prop | Type | Default | Description |
|---|---|---|---|
navbar | ComponentProps<typeof Navbar44> | – | Studio navbar |
hero | ComponentProps<typeof Careers48> | – | Hiring hero listing the open roles |
culture | ComponentProps<typeof Careers42> | – | Culture band with studio photographs |
benefits | ComponentProps<typeof Careers41> | – | Icon grid of benefits |
roles | ComponentProps<typeof Careers40> | – | Roles table with pay bands |
process | ComponentProps<typeof Careers43> | – | Hiring process, step by step |
cta | ComponentProps<typeof Cta66> | – | Open-application call to action |
footer | ComponentProps<typeof Footer104> | – | Footer leading with a CTA |
className | string | – | Extra classes for the page's outer wrapper |
| Section | Block | Notes |
|---|---|---|
| Navbar | navbar44 | Sticky for the whole document |
| Hero | careers48 | Lists the openings in the fold, so nobody scrolls to count them |
| Culture | careers42 | Photographs of the studio, not stock desks |
| Benefits | careers41 | Given bg-muted/50; an icon grid, so fill the rows |
| Roles | careers40 | A table; the pay band column is the point of it |
| Process | careers43 | Also given bg-muted/50, pairing it with the benefits band |
| Closing | cta66 | For people who fit no listed role |
| Footer | footer104 | Opens with a CTA of its own |
culture removes that section entirely rather than rendering an empty one.careers* variants doing different jobs, so the page holds up when a section is dropped; the hero and the roles table are the two worth keeping.sticky top-0 z-50 by the page, which works because the block carries its own opaque band.className="bg-muted/50" on both the benefits and process sections after spreading their props, so a className passed inside those props is overridden. Tint from the page, not through the prop.dark band on this page. A careers page reads as an invitation, and the two tinted bands supply enough rhythm without one section shouting.roles without changing hero is the easiest inconsistency to ship here.