diff --git a/alfa-client/libs/admin/settings/src/lib/admin-settings.module.ts b/alfa-client/libs/admin/settings/src/lib/admin-settings.module.ts
index 321e7c04c5850b85027d827f2bc43e971cdef1b1..547ed3eb703a152778d7bb53bd6658a5abfe7d3d 100644
--- a/alfa-client/libs/admin/settings/src/lib/admin-settings.module.ts
+++ b/alfa-client/libs/admin/settings/src/lib/admin-settings.module.ts
@@ -7,7 +7,7 @@ import { ReactiveFormsModule } from '@angular/forms';
 import { RouterModule } from '@angular/router';
 import KcAdminClient from '@keycloak/keycloak-admin-client';
 import { ButtonWithSpinnerComponent, TextareaEditorComponent } from '@ods/component';
-import { MailboxIconComponent, PersonIconComponent, TextInputComponent } from '@ods/system';
+import { ListComponent, ListItemComponent, MailboxIconComponent, PersonIconComponent, TextInputComponent } from '@ods/system';
 import { createSettingListResourceService, SettingListResourceService } from './admin-settings-resource.service';
 import { SettingsService } from './admin-settings.service';
 import { ConfigurationResourceService, createConfigurationResourceService } from './configuration/configuration-resource.service';
@@ -58,6 +58,8 @@ import { UsersRolesComponent } from './users-roles/users-roles.component';
     MailboxIconComponent,
     PersonIconComponent,
     ToUserNamePipe,
+    ListComponent,
+    ListItemComponent,
   ],
   exports: [PostfachContainerComponent, OrganisationseinheitContainerComponent, NavigationItemComponent, UsersRolesComponent],
   providers: [
diff --git a/alfa-client/libs/admin/settings/src/lib/users-roles/users-roles.component.html b/alfa-client/libs/admin/settings/src/lib/users-roles/users-roles.component.html
index 38c6cab182bd292ea1d60227a3d03eef8a7d621e..e22ebee9686297df2df289a14d42508c0d008ad7 100644
--- a/alfa-client/libs/admin/settings/src/lib/users-roles/users-roles.component.html
+++ b/alfa-client/libs/admin/settings/src/lib/users-roles/users-roles.component.html
@@ -1,61 +1,51 @@
 <h1 class="heading-1">Benutzer & Rollen</h1>
 <ods-button-with-spinner text="Benutzer hinzufügen" class="py-8" dataTestId="add-user-button" />
-<ng-container *ngIf="users$ | async as users">
-  <ul class="divide-y divide-gray-300 rounded-md bg-background-50 text-text shadow-sm ring-1 ring-gray-300 empty:hidden">
-    <li *ngFor="let user of users.resource">
-      <a
-        href="#"
-        (click)="(false)"
-        class="flex flex-col items-start justify-between gap-6 border-primary-600/50 px-6 py-4 hover:bg-background-150 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus lg:flex-row"
-      >
-        <div class="flex-1 basis-1/2">
-          <div class="mb-2 flex flex-wrap items-center gap-3">
-            <h3 class="text-md font-semibold">{{ user | toUserName }}</h3>
-            <dl class="flex flex-wrap gap-2">
-              <dt class="sr-only">Rollen:</dt>
-              <dd
-                *ngFor="let role of user.roles"
-                class="inline-flex flex-shrink-0 items-center rounded-full bg-green-50 px-1.5 py-0.5 text-sm font-medium text-green-700 ring-1 ring-inset ring-green-600/20"
-              >
-                {{ role }}
-              </dd>
-            </dl>
-          </div>
+<ods-list *ngIf="users$ | async as users">
+  <ods-list-item *ngFor="let user of users.resource" [routerLink]="user.username">
+    <div class="flex-1 basis-1/2">
+      <div class="mb-2 flex flex-wrap items-center gap-3">
+        <h3 class="text-md font-semibold">{{ user | toUserName }}</h3>
+        <dl class="flex flex-wrap gap-2">
+          <dt class="sr-only">Rollen:</dt>
+          <dd
+            *ngFor="let role of user.roles"
+            class="inline-flex flex-shrink-0 items-center rounded-full bg-green-50 px-1.5 py-0.5 text-sm font-medium text-green-700 ring-1 ring-inset ring-green-600/20"
+          >
+            {{ role }}
+          </dd>
+        </dl>
+      </div>
 
-          <dl>
-            <div *ngIf="user.email" class="flex items-center gap-2">
-              <dt>
-                <span class="sr-only">E-Mail:</span>
-                <ods-mailbox-icon size="small" class="stroke-gray-600" />
-              </dt>
-              <dd>{{ user.email }}</dd>
-            </div>
-            <div class="flex items-center gap-2">
-              <dt>
-                <span class="sr-only">Benutzername:</span>
-                <ods-person-icon />
-              </dt>
-              <dd>{{ user.username }}</dd>
-            </div>
-          </dl>
+      <dl>
+        <div *ngIf="user.email" class="flex items-center gap-2">
+          <dt>
+            <span class="sr-only">E-Mail:</span>
+            <ods-mailbox-icon size="small" class="stroke-gray-600" />
+          </dt>
+          <dd>{{ user.email }}</dd>
         </div>
+        <div class="flex items-center gap-2">
+          <dt>
+            <span class="sr-only">Benutzername:</span>
+            <ods-person-icon />
+          </dt>
+          <dd>{{ user.username }}</dd>
+        </div>
+      </dl>
+    </div>
 
-        <div class="flex-1 basis-1/2">
-          <h4 class="sr-only">Zuständige Stellen</h4>
+    <div class="flex-1 basis-1/2">
+      <h4 class="sr-only">Zuständige Stellen</h4>
 
-          <ng-container *ngIf="user.groups.length > 0; else noGroups">
-            <ul class="list-outside list-disc pl-4">
-              <ng-container *ngFor="let group of user.groups | slice: 0 : GROUPS_TO_DISPLAY">
-                <li>{{ group }}</li>
-              </ng-container>
-            </ul>
-            <p *ngIf="user.groups.length > GROUPS_TO_DISPLAY" class="pl-4 text-gray-500">
-              und {{ user.groups.length - 3 }} weitere
-            </p>
+      <ng-container *ngIf="user.groups.length > 0; else noGroups">
+        <ul class="list-outside list-disc pl-4">
+          <ng-container *ngFor="let group of user.groups | slice: 0 : GROUPS_TO_DISPLAY">
+            <li>{{ group }}</li>
           </ng-container>
-          <ng-template #noGroups>keine zuständige Stelle zugewiesen</ng-template>
-        </div>
-      </a>
-    </li>
-  </ul>
-</ng-container>
+        </ul>
+        <p *ngIf="user.groups.length > GROUPS_TO_DISPLAY" class="pl-4 text-gray-500">und {{ user.groups.length - 3 }} weitere</p>
+      </ng-container>
+      <ng-template #noGroups>keine zuständige Stelle zugewiesen</ng-template>
+    </div>
+  </ods-list-item>
+</ods-list>
diff --git a/alfa-client/libs/design-system/src/index.ts b/alfa-client/libs/design-system/src/index.ts
index 9a450a885bbe052655354f1410a730ad501ea22e..56c5707d5f5902b8ed9b58688fb606adc6eb8b0d 100644
--- a/alfa-client/libs/design-system/src/index.ts
+++ b/alfa-client/libs/design-system/src/index.ts
@@ -35,6 +35,8 @@ export * from './lib/icons/stamp-icon/stamp-icon.component';
 export * from './lib/icons/users-icon/users-icon.component';
 export * from './lib/instant-search/instant-search/instant-search.component';
 export * from './lib/instant-search/instant-search/instant-search.model';
+export * from './lib/list/list-item/list-item.component';
+export * from './lib/list/list.component';
 export * from './lib/navbar/nav-item/nav-item.component';
 export * from './lib/navbar/navbar/navbar.component';
 export * from './lib/testbtn/testbtn.component';
diff --git a/alfa-client/libs/design-system/src/lib/list/list-item/list-item.component.spec.ts b/alfa-client/libs/design-system/src/lib/list/list-item/list-item.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..ecec5321cbfbc0feb43f59e6523a67612db186a3
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/list/list-item/list-item.component.spec.ts
@@ -0,0 +1,40 @@
+import { getElementFromFixture } from '@alfa-client/test-utils';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { provideRouter } from '@angular/router';
+import faker from '@faker-js/faker';
+import { getDataTestClassOf } from 'libs/tech-shared/test/data-test';
+import { ListItemComponent } from './list-item.component';
+
+describe('ListItemComponent', () => {
+  let component: ListItemComponent;
+  let fixture: ComponentFixture<ListItemComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      imports: [ListItemComponent],
+      providers: [provideRouter([])],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(ListItemComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+
+  describe('input', () => {
+    describe('routerLink', () => {
+      it('should set href attribute', () => {
+        component.routerLink = faker.system.filePath();
+        const resultingLink: string = 'http://localhost' + component.routerLink;
+        const linkElement: HTMLLinkElement = getElementFromFixture(fixture, getDataTestClassOf('list-item-link'));
+
+        fixture.detectChanges();
+
+        expect(linkElement.href).toBe(resultingLink);
+      });
+    });
+  });
+});
diff --git a/alfa-client/libs/design-system/src/lib/list/list-item/list-item.component.ts b/alfa-client/libs/design-system/src/lib/list/list-item/list-item.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..89e51332eda0375bfd8cfc77a383dca0a3f70175
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/list/list-item/list-item.component.ts
@@ -0,0 +1,21 @@
+import { CommonModule } from '@angular/common';
+import { Component, Input } from '@angular/core';
+import { RouterLink } from '@angular/router';
+
+@Component({
+  selector: 'ods-list-item',
+  standalone: true,
+  imports: [CommonModule, RouterLink],
+  template: `<li>
+    <a
+      [routerLink]="routerLink"
+      data-test-class="list-item-link"
+      class="flex flex-col items-start justify-between gap-6 border-primary-600/50 px-6 py-4 hover:bg-background-150 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus lg:flex-row"
+      ><ng-content
+    /></a>
+  </li>`,
+  styles: [':host { @apply block w-full }'],
+})
+export class ListItemComponent {
+  @Input() routerLink: string;
+}
diff --git a/alfa-client/libs/design-system/src/lib/list/list.component.spec.ts b/alfa-client/libs/design-system/src/lib/list/list.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..35076e4e0ed34c166da97e496571c43c642f14a0
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/list/list.component.spec.ts
@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ListComponent } from './list.component';
+
+describe('ListComponent', () => {
+  let component: ListComponent;
+  let fixture: ComponentFixture<ListComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      imports: [ListComponent],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(ListComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/alfa-client/libs/design-system/src/lib/list/list.component.ts b/alfa-client/libs/design-system/src/lib/list/list.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..c4e903c1990ebc67a3bcb51f7e3596d0391c011e
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/list/list.component.ts
@@ -0,0 +1,15 @@
+import { CommonModule } from '@angular/common';
+import { Component } from '@angular/core';
+import { ListItemComponent } from './list-item/list-item.component';
+
+@Component({
+  selector: 'ods-list',
+  standalone: true,
+  imports: [CommonModule, ListItemComponent],
+  template: `
+    <ul class="divide-y divide-gray-300 rounded-md bg-background-50 text-text shadow-sm ring-1 ring-gray-300 empty:hidden">
+      <ng-content />
+    </ul>
+  `,
+})
+export class ListComponent {}