+
+
Groups
+ {#if group}
+ {#each group.path as p (p.id)}
+
/
+ {#if p.id === group.id}
+
{p.slug}
+ {:else}
+
{p.name}
+ {/if}
+ {/each}
+ {:else}
+
/
+
{slug}
+ {/if}
+
+ {#if group}
+ {group.name}
+ {#if group.description}{group.description}
{/if}
+ {/if}
+
+
+{#if group}
+
+ Members
+
+ Users with explicit access to this group. Instance owners and admins
+ already have implicit access — they are not listed here. Use the Users
+ page to invite a member first, then grant them group access
+ below.
+
+
+
+
+ {#if memberActionError}
+ {memberActionError}
+ {/if}
+
+ {#if members.length === 0}
+ No explicit members yet.
+ {:else}
+
+
+
User
+
Instance
+
Group role
+
Joined
+
+
+ {#each members as m (m.user_id)}
+
+
+ {m.username}
+ {#if m.email}{m.email}{/if}
+ {#if !m.is_active}(inactive){/if}
+
+
+
+
{shortDate(m.created_at)}
+
+
changeMemberRole(m, 'app_admin')
+ },
+ {
+ label: 'Make editor',
+ disabled: m.role === 'editor' || roleChangeBusy === m.user_id,
+ onClick: () => changeMemberRole(m, 'editor')
+ },
+ {
+ label: 'Make viewer',
+ disabled: m.role === 'viewer' || roleChangeBusy === m.user_id,
+ onClick: () => changeMemberRole(m, 'viewer')
+ },
+ {
+ label: 'Remove from group',
+ danger: true,
+ onClick: () => askRemoveMember(m)
+ }
+ ]}
+ />
+
+
+ {/each}
+
+ {/if}
+
+ {:else if activeTab === 'settings' && canManage}
+