- {{ user.username }}
+ {{ user.username }}
+
diff --git a/src/app/components/ui/info/user-role.component.ts b/src/app/components/ui/info/user-role.component.ts
new file mode 100644
index 00000000..1ed7d252
--- /dev/null
+++ b/src/app/components/ui/info/user-role.component.ts
@@ -0,0 +1,76 @@
+import {Component, Input} from '@angular/core';
+import { UserRoles } from '../../../api/types/users/user-roles';
+import { RolePipe } from '../../../pipes/role.pipe';
+import { FaIconComponent } from "@fortawesome/angular-fontawesome";
+import { IconProp } from '@fortawesome/fontawesome-svg-core';
+import { faUser, faUserAltSlash, faUserAstronaut, faUserCheck, faUserGear, faUserLock, faUserPen, faUserShield } from '@fortawesome/free-solid-svg-icons';
+import { TooltipComponent } from "../text/tooltip.component";
+
+@Component({
+ selector: 'app-user-role',
+ imports: [
+ RolePipe,
+ FaIconComponent,
+ TooltipComponent
+],
+ providers: [
+ RolePipe
+ ],
+ template: `
+
+
+
+ @if (roleIcon) {
+
+ }
+ @if (!short) {
+ {{ role | role }}
+ }
+
+
+
+ `
+})
+export class UserRoleComponent {
+ @Input({required: true}) role: UserRoles = UserRoles.User;
+ @Input() short: boolean = false;
+ roleIcon: IconProp | undefined;
+
+ ngOnInit() {
+ switch (this.role) {
+ case UserRoles.Admin:
+ this.roleIcon = this.faUserGear;
+ break;
+ case UserRoles.Moderator:
+ this.roleIcon = this.faUserShield;
+ break;
+ case UserRoles.Curator:
+ this.roleIcon = this.faUserPen;
+ break;
+ case UserRoles.Trusted:
+ this.roleIcon = this.faUserCheck;
+ break;
+ case UserRoles.User:
+ this.roleIcon = this.faUser;
+ break;
+ case UserRoles.Restricted:
+ this.roleIcon = this.faUserLock;
+ break;
+ case UserRoles.Banned:
+ this.roleIcon = this.faUserAltSlash;
+ break;
+ default:
+ this.roleIcon = this.faUserAstronaut;
+ break;
+ }
+ }
+
+ protected readonly faUserGear = faUserGear;
+ protected readonly faUserShield = faUserShield;
+ protected readonly faUserPen = faUserPen;
+ protected readonly faUserCheck = faUserCheck;
+ protected readonly faUser = faUser;
+ protected readonly faUserAltSlash = faUserAltSlash;
+ protected readonly faUserLock = faUserLock;
+ protected readonly faUserAstronaut = faUserAstronaut;
+}
diff --git a/src/app/components/ui/text/wrappers/user-wrapper.component.ts b/src/app/components/ui/text/wrappers/user-wrapper.component.ts
index 79aad976..ceea9650 100644
--- a/src/app/components/ui/text/wrappers/user-wrapper.component.ts
+++ b/src/app/components/ui/text/wrappers/user-wrapper.component.ts
@@ -8,7 +8,7 @@ import {User} from "../../../../api/types/users/user";
selector: 'app-user-wrapper',
imports: [
UserAvatarComponent,
- UserRouterLinkComponent
+ UserRouterLinkComponent,
],
template: `
diff --git a/src/app/pages/user/user.component.html b/src/app/pages/user/user.component.html
index aceefd82..bd0c9476 100644
--- a/src/app/pages/user/user.component.html
+++ b/src/app/pages/user/user.component.html
@@ -3,10 +3,13 @@
[description]="user.description | default: user.username + ' hasn\'t introduced themselves yet.'">
+
+
+
diff --git a/src/app/pages/user/user.component.ts b/src/app/pages/user/user.component.ts
index 24987084..c362f822 100644
--- a/src/app/pages/user/user.component.ts
+++ b/src/app/pages/user/user.component.ts
@@ -15,6 +15,7 @@ import { UserRelations } from '../../api/types/users/user-relations';
import { FancyHeaderUserButtonsComponent } from "../../components/ui/layouts/fancy-header-user-buttons.component";
import { ExtendedUser } from '../../api/types/users/extended-user';
import { AuthenticationService } from '../../api/authentication.service';
+import { UserRoleComponent } from "../../components/ui/info/user-role.component";
@Component({
selector: 'app-user',
@@ -26,7 +27,8 @@ import { AuthenticationService } from '../../api/authentication.service';
AsyncPipe,
UserStatusComponent,
UserStatisticsComponent,
- FancyHeaderUserButtonsComponent
+ FancyHeaderUserButtonsComponent,
+ UserRoleComponent
],
templateUrl: './user.component.html',
styles: ``