# Open Roles

> Careers list grouped by department. Search, department pills with live counts and a Remote / Hybrid / On-site switch filter the roles; each row shows location, workplace, type and salary band, and opens in place to a summary, highlights, an apply button and a copyable deep link. No matches shows an empty state with a reset and an open-application link.

- Slug: `open-roles`
- Category: [Team](https://www.assembli.design/category/team.md)
- Type: block
- Tags: careers, jobs, hiring, filter, search, accordion, deep-link
- npm dependencies: @base-ui/react, motion, lucide-react
- shadcn/ui dependencies: none
- Live preview: https://www.assembli.design/preview/open-roles
- Page: https://www.assembli.design/components/open-roles

![Open Roles preview](https://www.assembli.design/thumbnails/open-roles-light.png)

## Props

Other props pass through to the root element.

| Prop | Type | Default | Description |
| --- | --- | --- | --- |
| `eyebrow` | `React.ReactNode` | `"Careers"` |  |
| `title` | `React.ReactNode` | `"Open roles"` |  |
| `intro` | `React.ReactNode` |  |  |
| `roles` (required) | `OpenRole[]` |  |  |
| `departments` | `string[]` |  | Department order. Defaults to the order departments first appear in `roles`. |
| `openApplication` | `{ label: string; href: string }` |  | A link for people who don't see a fit, shown under the list and in the empty state. |
| `defaultOpen` | `string` |  | Id of a role to show open on first render (a matching URL hash wins). |

## Install

One-time setup (needs a subscription):

1. Add the registry to the project's `components.json`: `{"@assembli":{"url":"https://www.assembli.design/r/{name}.json","headers":{"Authorization":"Bearer ${ASSEMBLI_API_KEY}"}}}` (merge into `"registries"`).
2. Put an API key from https://www.assembli.design/account in `.env.local` as `ASSEMBLI_API_KEY=asm_…`.

Then install with the shadcn CLI (writes `components/open-roles/open-roles.tsx` and installs dependencies):

```bash
npx shadcn@latest add @assembli/open-roles
```

Registry item JSON: https://www.assembli.design/r/open-roles.json (send `Authorization: Bearer <api key>`)

## Code

> Component source needs an Assembli subscription ($12/month or $96/year) and an API key sent as `Authorization: Bearer <key>`. To get one without copying anything, POST https://www.assembli.design/api/agent/login (or call the MCP tool connect_account), show the user the link it returns, and poll https://www.assembli.design/api/agent/token for the key. Or subscribe at https://www.assembli.design/pricing and create a key at https://www.assembli.design/account.
