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.
Last owner validation
A failed server validation preserves the attempted demotion and explains last-owner policy.
Keep an owner
The domain model rejects role changes and removals that would leave a team ownerless.
Ada Lovelace is the last owner
The server rejected this change. Promote another member before changing Ada Lovelace's role.
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