feat(260805-d0r): membership-origin badge on chips (D-19/D-20)

- Reuses admin.groups.members.sourceManual/.sourceLdap -- no new i18n key
- Badge markup copied verbatim from GroupMembersModal.tsx (blue for LDAP,
  neutral gray otherwise), same visual language on both surfaces
This commit is contained in:
2026-08-05 09:37:26 +02:00
parent 73122b5676
commit 8ce374818c
@@ -48,6 +48,7 @@ interface UserAccessModalProps {
export function UserAccessModal({ userId, username, onClose }: UserAccessModalProps) { export function UserAccessModal({ userId, username, onClose }: UserAccessModalProps) {
const t = useTranslations('admin.users.grants'); const t = useTranslations('admin.users.grants');
const tCommon = useTranslations('common'); const tCommon = useTranslations('common');
const tMembers = useTranslations('admin.groups.members');
const [rows, setRows] = useState<ModuleAccessRow[] | null>(null); const [rows, setRows] = useState<ModuleAccessRow[] | null>(null);
const [groups, setGroups] = useState<MembershipChip[] | null>(null); const [groups, setGroups] = useState<MembershipChip[] | null>(null);
@@ -162,6 +163,15 @@ export function UserAccessModal({ userId, username, onClose }: UserAccessModalPr
className="flex items-center gap-2 rounded-md border border-border px-3 py-1.5 text-sm" className="flex items-center gap-2 rounded-md border border-border px-3 py-1.5 text-sm"
> >
<span className="font-mono text-xs text-foreground">{group.name}</span> <span className="font-mono text-xs text-foreground">{group.name}</span>
<span
className={`rounded px-1.5 py-0.5 text-xs font-medium ${
group.source === 'LDAP'
? 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400'
: 'bg-gray-100 text-gray-500 dark:bg-gray-800 dark:text-gray-500'
}`}
>
{group.source === 'LDAP' ? tMembers('sourceLdap') : tMembers('sourceManual')}
</span>
</li> </li>
))} ))}
</ul> </ul>