diff --git a/frontend/src/app/app.component.ts b/frontend/src/app/app.component.ts
index 3fe6db9..cf0bee1 100644
--- a/frontend/src/app/app.component.ts
+++ b/frontend/src/app/app.component.ts
@@ -1,14 +1,116 @@
-import { Component } from '@angular/core';
+import { Component, signal } from '@angular/core';
+import { FormsModule } from '@angular/forms';
import { ToastModule } from 'primeng/toast';
import { AppLayoutComponent } from './components/app-layout/app-layout.component';
+const AUTH_KEY = 'test-x6-auth';
+const CODE_WORD = 'пупырка';
+
@Component({
selector: 'app-root',
standalone: true,
- imports: [ToastModule, AppLayoutComponent],
+ imports: [FormsModule, ToastModule, AppLayoutComponent],
template: `
-
-
+ @if (authorized()) {
+
+
+ } @else {
+
+
+
Детальная схема связей
+
Введите кодовое слово для входа
+
+ @if (showError()) {
+
Неверное кодовое слово
+ }
+
+
+
+ }
+ `,
+ styles: `
+ .login-wrapper {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ height: 100vh;
+ background: #f5f5f5;
+ }
+ .login-card {
+ background: #fff;
+ border-radius: 8px;
+ padding: 32px;
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
+ text-align: center;
+ width: 320px;
+ }
+ .login-card h2 {
+ margin: 0 0 8px;
+ font-size: 18px;
+ color: #333;
+ }
+ .login-card p {
+ margin: 0 0 20px;
+ color: #888;
+ font-size: 13px;
+ }
+ .login-card input {
+ width: 100%;
+ padding: 10px 12px;
+ border: 1px solid #d9d9d9;
+ border-radius: 6px;
+ font-size: 14px;
+ outline: none;
+ box-sizing: border-box;
+ transition: border-color 0.2s;
+ }
+ .login-card input:focus {
+ border-color: #4096ff;
+ }
+ .login-card input.error {
+ border-color: #ff4d4f;
+ }
+ .error-text {
+ display: block;
+ color: #ff4d4f;
+ font-size: 12px;
+ margin-top: 6px;
+ }
+ .login-card button {
+ margin-top: 16px;
+ width: 100%;
+ padding: 10px;
+ background: #4096ff;
+ color: #fff;
+ border: none;
+ border-radius: 6px;
+ font-size: 14px;
+ cursor: pointer;
+ transition: background 0.2s;
+ }
+ .login-card button:hover {
+ background: #1677ff;
+ }
`,
})
-export class AppComponent {}
+export class AppComponent {
+ authorized = signal(localStorage.getItem(AUTH_KEY) === 'true');
+ showError = signal(false);
+ inputValue = '';
+
+ tryLogin() {
+ if (this.inputValue.trim().toLowerCase() === CODE_WORD) {
+ localStorage.setItem(AUTH_KEY, 'true');
+ this.authorized.set(true);
+ } else {
+ this.showError.set(true);
+ }
+ }
+}