{{ art()!.title }}
+by {{ art()!.artist }}
+ +Description
+{{ art()!.description }}
+diff --git a/apps/frontend/src/app/app.routes.ts b/apps/frontend/src/app/app.routes.ts index c15c563..1c837e4 100644 --- a/apps/frontend/src/app/app.routes.ts +++ b/apps/frontend/src/app/app.routes.ts @@ -29,6 +29,30 @@ export const appRoutes: Route[] = [ path: 'manga', loadComponent: () => import('./components/manga/manga-list.component').then(m => m.MangaListComponent) }, + { + path: 'games/:id', + loadComponent: () => import('./components/games/game-detail.component').then(m => m.GameDetailComponent) + }, + { + path: 'books/:id', + loadComponent: () => import('./components/books/book-detail.component').then(m => m.BookDetailComponent) + }, + { + path: 'music/:id', + loadComponent: () => import('./components/music/music-detail.component').then(m => m.MusicDetailComponent) + }, + { + path: 'art/:id', + loadComponent: () => import('./components/art/art-detail.component').then(m => m.ArtDetailComponent) + }, + { + path: 'shows/:id', + loadComponent: () => import('./components/shows/show-detail.component').then(m => m.ShowDetailComponent) + }, + { + path: 'manga/:id', + loadComponent: () => import('./components/manga/manga-detail.component').then(m => m.MangaDetailComponent) + }, { path: 'admin/users', loadComponent: () => import('./components/admin/admin-users.component').then(m => m.AdminUsersComponent) diff --git a/apps/frontend/src/app/components/activity/activity-feed.component.ts b/apps/frontend/src/app/components/activity/activity-feed.component.ts index 927fac9..9cf6334 100644 --- a/apps/frontend/src/app/components/activity/activity-feed.component.ts +++ b/apps/frontend/src/app/components/activity/activity-feed.component.ts @@ -83,7 +83,7 @@ import { SanitizeService } from '../../services/sanitize.service'; liked - + {{ activity.entityTitle }} diff --git a/apps/frontend/src/app/components/art/art-detail.component.ts b/apps/frontend/src/app/components/art/art-detail.component.ts new file mode 100644 index 0000000..8a9596a --- /dev/null +++ b/apps/frontend/src/app/components/art/art-detail.component.ts @@ -0,0 +1,542 @@ +/** + * @copyright 2026 NHCarrigan + * @license Naomi's Public License + * @author Naomi Carrigan + */ + +import { Component, OnInit, inject, signal } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { RouterLink, ActivatedRoute, Router } from '@angular/router'; +import { FormsModule } from '@angular/forms'; +import { ArtService } from '../../services/art.service'; +import { CommentsService } from '../../services/comments.service'; +import { AuthService } from '../../services/auth.service'; +import { SanitizeService } from '../../services/sanitize.service'; +import { CommentDisplayComponent } from '../comment-display/comment-display.component'; +import { LikeButtonComponent } from '../shared/like-button.component'; +import { Art, Comment } from '@library/shared-types'; + +@Component({ + selector: 'app-art-detail', + standalone: true, + imports: [CommonModule, RouterLink, FormsModule, CommentDisplayComponent, LikeButtonComponent], + template: ` +
by {{ art()!.artist }}
+ +{{ art()!.description }}
++ 📚 {{ book()!.series }}@if (book()!.seriesOrder) { #{{ book()!.seriesOrder }}} +
+ } + + @if (book()!.isbn) { +{{ book()!.notes }}
+Please sign in to comment.
++ 📚 {{ game()!.series }}@if (game()!.seriesOrder) { #{{ game()!.seriesOrder }}} +
+ } + + @if (game()!.platform) { +{{ game()!.notes }}
+Please sign in to comment.
+{{ manga()!.notes }}
+Please sign in to comment.
+by {{ music()!.artist }}
+ + @if (music()!.rating) { +{{ music()!.notes }}
+Please sign in to comment.
+{{ show()!.notes }}
+Please sign in to comment.
+
Comments
+ @if (authService.isAuthenticated()) { + @if (authService.user()?.isBanned) { +Please sign in to comment.
+