diff --git a/src/app/app.css b/src/app/app.css
index e126d2c..e69de29 100644
--- a/src/app/app.css
+++ b/src/app/app.css
@@ -1,12 +0,0 @@
-.private {
- padding: 1rem;
- container-type: inline-size;
-}
-
-.public {
- display: flex;
- align-items: center;
- justify-content: center;
- min-height: 100vh;
-}
-
diff --git a/src/app/app.html b/src/app/app.html
index 884fd2b..f0f7a9a 100644
--- a/src/app/app.html
+++ b/src/app/app.html
@@ -1,11 +1 @@
-@if (authStatus()?.authenticated) {
-
-
-
-
-
-} @else {
-
-
-
-}
+
diff --git a/src/app/app.routes.ts b/src/app/app.routes.ts
index 70e3c70..40c2bca 100644
--- a/src/app/app.routes.ts
+++ b/src/app/app.routes.ts
@@ -8,18 +8,18 @@ export const routes: Routes = [
{ path: '', redirectTo: 'auth', pathMatch: 'full' },
{ path: 'auth', component: AuthPage, data: { title: 'Authentication' } },
{
- path: 'home',
+ path: 'articles',
loadComponent: async () => {
- const c = await import('./pages/home/home-page.component')
- return c.HomePage
+ const c = await import('./pages/articles-page/articles-page')
+ return c.ArticlesPage
},
canMatch: [authGuard],
},
{
path: 'bookmarks',
loadComponent: async () => {
- const c = await import('./pages/bookmarks/bookmarks')
- return c.Bookmarks
+ const c = await import('./pages/bookmarks-page/bookmarks-page')
+ return c.BookmarksPage
},
canMatch: [authGuard],
},
@@ -35,7 +35,7 @@ export const routes: Routes = [
{
path: 'subscription/:subscriptionId/article/:articleId',
loadComponent: async () => {
- const c = await import('./pages/article-page/article-page.component')
+ const c = await import('./pages/article-page/article-page')
return c.ArticlePage
},
data: { title: 'Article' },
@@ -44,7 +44,7 @@ export const routes: Routes = [
{
path: 'tags',
loadComponent: async () => {
- const c = await import('./pages/tags/tags-page.component')
+ const c = await import('./pages/tags-page/tags-page')
return c.TagsPage
},
data: { title: 'Tags' },
@@ -63,6 +63,7 @@ export const routes: Routes = [
path: 'status',
component: StatusPage,
data: { title: 'Status' },
+ canMatch: [authGuard],
},
{
path: '**',
diff --git a/src/app/app.ts b/src/app/app.ts
index b209834..11e2d60 100644
--- a/src/app/app.ts
+++ b/src/app/app.ts
@@ -1,16 +1,21 @@
import { Component, inject } from '@angular/core'
-import { RouterOutlet } from '@angular/router'
-import { NavComponent } from './components/nav/nav.component'
import { AuthService } from './services/auth-service'
import { toSignal } from '@angular/core/rxjs-interop'
+import { PrivateOutlet } from './outlet/private-outlet/private-outlet'
+import { PublicOutlet } from './outlet/public-outlet/public-outlet'
+import { NgComponentOutlet } from '@angular/common'
@Component({
selector: 'app-root',
- imports: [RouterOutlet, NavComponent],
+ imports: [NgComponentOutlet],
templateUrl: './app.html',
styleUrl: './app.css',
})
export class App {
private readonly authService = inject(AuthService)
- protected readonly authStatus = toSignal(this.authService.$authStatus)
+ private readonly authStatus = toSignal(this.authService.$authStatus)
+
+ getOutlet() {
+ return this.authStatus()?.authenticated ? PrivateOutlet : PublicOutlet
+ }
}
diff --git a/src/app/components/login-form/login-form.css b/src/app/components/login-form/login-form.css
index ac5b999..46ba7b7 100644
--- a/src/app/components/login-form/login-form.css
+++ b/src/app/components/login-form/login-form.css
@@ -4,3 +4,7 @@
gap: 1rem;
margin: 1rem 0;
}
+
+.description {
+ max-width: 30ch;
+}
diff --git a/src/app/components/login-form/login-form.html b/src/app/components/login-form/login-form.html
index 658e2ec..a58c371 100644
--- a/src/app/components/login-form/login-form.html
+++ b/src/app/components/login-form/login-form.html
@@ -1,5 +1,8 @@