Wrenn - Team { if (e.key === 'Escape') { if (openDropdownId) { openDropdownId = null; return; } if (editingName && !savingName) { cancelEditName(); return; } if (removing || adding || dangerLoading) return; removeTarget = null; if (!adding) showAddMember = false; showDangerConfirm = false; } }} onclick={(e) => { if (openDropdownId && !(e.target as Element)?.closest('.split-btn-container')) { openDropdownId = null; } if (showResults && !(e.target as Element)?.closest('.search-container')) { showResults = false; } }} />

Team

Manage your team, its members, and account settings.

{#if error}
{error}
{/if} {#if loading}
Loading team...
{:else if !auth.teamId}

No team yet

Use the team switcher in the sidebar to create your first team.

{:else if team}
Team name
{#if editingName}
{ if (e.key === 'Enter' && !savingName) saveEditName(); if (e.key === 'Escape' && !savingName) cancelEditName(); }} disabled={savingName} class="min-w-0 flex-1 rounded-[var(--radius-input)] border border-[var(--color-accent)] bg-[var(--color-bg-4)] px-3 py-1.5 text-ui text-[var(--color-text-bright)] outline-none transition-colors duration-150 disabled:opacity-60" />
{#if nameError}

{nameError}

{/if} {:else}
{ if (e.key === 'Enter' || e.key === ' ') startEditName(); } : undefined} class:cursor-pointer={canManage} title={canManage ? 'Click to edit' : undefined} > {team.name} {#if canManage} {/if}
{/if}
Slug
{team.slug}
Team ID
{team.id}

Members

{members.length} {members.length === 1 ? 'member' : 'members'}

{#if canManage} {/if}
Member
Role
Joined
{#each members as member, i (member.user_id)}
{member.email} {#if member.user_id === auth.userId} you {/if}
{#if updatingRoleId === member.user_id} {:else} {roleLabel(member.role)} {/if}
{formatDate(member.joined_at)}
{#if canActOn(member)}
{/if}
{/each}

Danger Zone

{#if myRole === 'owner'}

Delete this team

{#if isLastTeam}Create another team before deleting this one.{:else}Permanently deletes the team and destroys all running capsules. This cannot be undone.{/if}

{:else}

Leave this team

{#if isLastTeam}Create another team before leaving this one.{:else}You will lose access to all capsules and resources belonging to this team.{/if}

{/if}
{/if}
{#if openDropdownId} {@const dropdownMember = members.find((m) => m.user_id === openDropdownId)} {#if dropdownMember}
{#if dropdownMember.role === 'member'} {:else if dropdownMember.role === 'admin'} {/if}
{/if} {/if} {#if showAddMember}
{ if (!adding) { showAddMember = false; } }} onkeydown={(e) => { if (e.key === 'Escape' && !adding) showAddMember = false; }} >

Add Member

Add an existing Wrenn user to your team by email.

{#if addError}
{addError}
{/if}
{ if (e.key === 'Enter' && !adding) handleAddMember(); }} disabled={adding} class="w-full rounded-[var(--radius-input)] border border-[var(--color-border)] bg-[var(--color-bg-4)] px-3 py-2 text-ui text-[var(--color-text-bright)] outline-none placeholder:text-[var(--color-text-muted)] transition-colors duration-150 focus:border-[var(--color-accent)] disabled:opacity-60" /> {#if searchLoading}
{/if}
{#if showResults && searchResults.length > 0}
{#each searchResults as result (result.user_id)} {/each}
{/if}
{/if} {#if removeTarget}
{ if (!removing) removeTarget = null; }} onkeydown={(e) => { if (e.key === 'Escape' && !removing) removeTarget = null; }} >

Remove Member

Remove {removeTarget.email} from the team? They will lose access immediately.

{#if removeError}
{removeError}
{/if}
{/if} {#if showDangerConfirm}
{ if (!dangerLoading) showDangerConfirm = false; }} onkeydown={(e) => { if (e.key === 'Escape' && !dangerLoading) showDangerConfirm = false; }} >
{#if myRole === 'owner'}

Delete Team

This will permanently delete {team?.name} and destroy all running capsules. This action cannot be undone.

{:else}

Leave Team

You will lose access to all capsules and resources in {team?.name}.

{/if}

{#if myRole === 'owner'} All team data, API keys, and running capsules will be permanently destroyed. {:else} You'll need a new invitation to rejoin this team. {/if}

{#if dangerError}
{dangerError}
{/if}
{/if}