Permissions Tree
The canonical checkbox-tree use case: grant access by category, lock down anything too dangerous to bulk-toggle.
Billing
View invoices
Edit payment methods
Export reports
User Management
View users
Invite users
Remove users
Workspace Settings
General settings
Integrations
Danger zone
Show code
const data = [
{
id: "users",
label: "User Management",
children: [
{ id: "users.view", label: "View users" },
{ id: "users.invite", label: "Invite users" },
{ id: "users.remove", label: "Remove users", disabled: true },
],
},
// ...billing, settings...
];
<TreeKit
data={data}
defaultExpandedIds={["billing", "users", "settings"]}
defaultCheckedIds={["billing.view"]}
/>"Remove users" and "Danger zone" are permanently disabled here, but this is exactly the shape you'd drive from a real permissions API — see Disabled Nodes.