# Role Permission Invite block

> Enterprise member invite form with searchable role permission tree and access guardrails

Invite teammates and assign scoped workspace roles: email combobox chips, workspace and expiry selects, member-type radios, SSO switches, and a searchable checkbox role tree with privileged badges. ReUI Badge and Tree, shadcn Card. For RBAC.

- Type: Pro block
- Category: [Form](https://web.dev.reui.io/blocks/application/form.md)
- Page: https://web.dev.reui.io/blocks/application/form/form-9
- Docs (Base UI): https://ui.shadcn.com/docs/components/base/field.md
- Docs (Radix UI): https://ui.shadcn.com/docs/components/radix/field.md
- MCP: `get_block("form-9")`
- Built with: Badge, Button, Card, Checkbox, Combobox, Empty, Field, Input Group, Radio Group, Select, Separator, Switch, Textarea, Tooltip, Tree
- Installs with a ReUI Pro or Ultimate license; setup: https://web.dev.reui.io/docs/license-setup

## Best for

Teammate invites that pick roles from a searchable checkbox tree of 7 groups with Privileged and MFA badges

## Agent notes

- Replace `INVITEES`, `WORKSPACE_OPTIONS` and `ROLE_GROUPS` in data.ts; the recipients `Combobox` offers only `INVITEES`, so wire it to your directory search
- Close, Feedback and Save Draft in `InviteToolbar` only call `showMemberInviteToast`; nothing closes, opens a panel or stores a draft
- `handleSubmit` toasts only counts and `workspace`; collect `expiry`, `memberType`, `requireSso`, `notifyManager` and the uncontrolled Internal Note yourself

## When not to use

- Editing what each existing role may do, as a grid of switches with a locked owner: use [Permission Matrix](https://web.dev.reui.io/blocks/solutions/users/solution-users-3.md) (`get_block("solution-users-3")`)
- A quick modal invite where each address row gets one role from a short list: use [Per-Person Invite](https://web.dev.reui.io/blocks/application/dialog/dialog-8.md) (`get_block("dialog-8")`)

## Third-party libraries

- Headless Tree v1: [API reference](https://headless-tree.lukasbach.com/api/core/), [docs](https://headless-tree.lukasbach.com/getstarted/)
- Sonner v2: [API reference](https://sonner.emilkowal.ski/toast), [docs](https://sonner.emilkowal.ski/getting-started)

## Install

```bash
npx shadcn@latest add @reui/form-9
```

## About Form blocks

### When to use

- New record entry: an invoice with line items, a product, an app launch, an onboarding plan or a member invite
- Editing a record already on file, such as a user profile, a support ticket or a business verification
- Admin configuration pages for hosted checkout, sign-in methods and lockout rules, or API keys

### When not to use

- An account area that swaps team, notification and billing panels from a side rail or tabs: use the [Profile blocks](https://web.dev.reui.io/blocks/application/profile.md)
- A list of toggles for notification channels, app integrations or workspace options: use the [Settings blocks](https://web.dev.reui.io/blocks/application/settings.md)
- A create, invite or connect flow that opens over the current page in a modal: use the [Dialog blocks](https://web.dev.reui.io/blocks/application/dialog.md)

### Agent notes

- Each submit handler calls `preventDefault` and sends no request; post the values to your API from it
- Save feedback calls `toast` from `sonner`; mount the sonner Toaster once in your layout or no message shows
- Each block sets its own `min-h-svh` wrapper, padding and max width in page.tsx or its root component; drop them inside an app shell

Every ReUI item has a twin like this one; the index is https://web.dev.reui.io/llms.txt. Agents with the ReUI MCP (https://web.dev.reui.io/docs/mcp) get the same guidance from the getters named above.
