Fine tuned organisation onboarding and tenant management

This commit is contained in:
2026-10-04 10:34:59 +02:00
parent 5fb67df9ac
commit 681ed99fea
5 changed files with 407 additions and 261 deletions
@@ -441,6 +441,7 @@ export const SettingsPage: React.FC = () => {
const userExportColumns: ExportColumn<User>[] = [
{ header: 'User Email', key: 'email', format: (val, u) => val || getUserEmail(u.id) || '—' },
{ header: 'User Identifier', key: 'id' },
{ header: 'Id Number', key: 'idNumber', format: (val) => val || '—' },
{ header: 'Role', key: 'role', format: (val) => getUserRoleBadge(val).label },
{ header: 'Status', key: 'status', format: (val) => getActivityStatusBadge(val).label },
{ header: 'Last Login', key: 'lastLoginAt', format: (val) => (val ? formatDate(val) : 'Never') },
@@ -770,6 +771,9 @@ export const SettingsPage: React.FC = () => {
<SortableTh column="id" currentColumn={userSortCol} direction={userSortDir} onSort={handleUserSort} className="py-3.5 px-4">
User Identifier
</SortableTh>
<SortableTh column="idNumber" currentColumn={userSortCol} direction={userSortDir} onSort={handleUserSort} className="py-3.5 px-4">
Id Number
</SortableTh>
<SortableTh column="role" currentColumn={userSortCol} direction={userSortDir} onSort={handleUserSort} className="py-3.5 px-4">
Role
</SortableTh>
@@ -785,13 +789,13 @@ export const SettingsPage: React.FC = () => {
<tbody className="divide-y divide-slate-800/50">
{loadingUsers ? (
<tr>
<td colSpan={6} className="py-8 text-center text-slate-500">
<td colSpan={7} className="py-8 text-center text-slate-500">
Loading user directory...
</td>
</tr>
) : sortedUsers.length === 0 ? (
<tr>
<td colSpan={6} className="py-8 text-center text-slate-500">
<td colSpan={7} className="py-8 text-center text-slate-500">
No users found matching current filters.
</td>
</tr>
@@ -806,6 +810,9 @@ export const SettingsPage: React.FC = () => {
<td className="py-3.5 px-4 font-mono text-slate-400 text-[11px]">
{u.id}
</td>
<td className="py-3.5 px-4 font-mono text-slate-300 text-[11px]">
{u.idNumber || <span className="text-slate-600">—</span>}
</td>
<td className="py-3.5 px-4">
<UserRoleBadge role={u.role} />
</td>
@@ -2113,6 +2120,12 @@ export const SettingsPage: React.FC = () => {
{userFreshDetail?.id || selectedUserForDetail.id}
</span>
</div>
<div>
<span className="text-slate-400 font-semibold block text-[11px] uppercase">Id Number:</span>
<span className="font-mono text-slate-200 text-xs">
{userFreshDetail?.idNumber || selectedUserForDetail.idNumber || '—'}
</span>
</div>
<div>
<span className="text-slate-400 font-semibold block text-[11px] uppercase mb-1">System Role:</span>
<UserRoleBadge role={userFreshDetail?.role ?? selectedUserForDetail.role} />