Team management
Component-composed team context, current memberships, pending invitations, server-enforced ownership, access changes, and pressure states.
Team members and invitations
Inventory, search, invitation, access changes, removal, recovery, density, and mobile pressure.
Dense
Eight deterministic memberships pressure row actions and long account data.
Large team inventory
8 current memberships with roles, join dates, and account actions.
| Member | Role | Status | Joined | Actions |
|---|---|---|---|---|
| Ada Lovelace[email protected] | Owner | Active | 2024-02-12 | |
| Grace Hopper[email protected] | Admin | Active | 2024-09-03 | |
| Dorothy Vaughan[email protected] | Admin | Active | 2025-01-14 | |
| Mary Jackson[email protected] | Member | Active | 2025-03-21 | |
| Annie Easley[email protected] | Viewer | Active | 2025-05-09 | |
| Margaret Hamilton[email protected] | Member | Active | 2025-08-17 | |
| Hedy Lamarr[email protected] | Viewer | Suspended | 2025-11-02 | |
| Radia Perlman[email protected] | Member | Active | 2026-01-19 |
Pending invitations
Invitations remain separate from memberships until the intended recipient accepts.
| Role | Invited by | Sent | Expires | Actions | |
|---|---|---|---|---|---|
| [email protected] | Member | Ada Lovelace | 12 Jul 16:18 | July 26, 2026 | |
| [email protected] | Administrator | Grace Hopper | 13 Jul 09:04 | July 27, 2026 |
Viewport
Ruby
test/dummy/app/components/gallery/compositions/team_management_page.rbdiv(
data: {
gallery: "composition-surface",
gallery_composition: "team-management",
gallery_composition_state: state,
gallery_mobile: state == "mobile" ? "true" : nil
}.compact
) do
render NitroKit::Container.new(size: :xl, id: "gallery-team-container") do
render NitroKit::Flex.new(dir: :col, gap: 6, align: :stretch, id: "gallery-team-stack") do
turbo_frame_tag("gallery-team-management-frame") { render_screen }
end
end
end