diff --git a/frontend/src/app/app.css b/frontend/src/app/app.css index e69de29..0945092 100644 --- a/frontend/src/app/app.css +++ b/frontend/src/app/app.css @@ -0,0 +1,134 @@ +/* App Layout */ +.app-layout { + display: flex; + min-height: 100vh; + background: #0f172a; + color: #e2e8f0; +} + +.main-content { + flex: 1; + display: flex; + flex-direction: column; + margin-right: 280px; + transition: margin-right 0.3s cubic-bezier(0.4, 0, 0.2, 1); +} + +.main-content.sidebar-collapsed { + margin-right: 80px; +} + +/* Top Header */ +.top-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 16px 32px; + background: #1e293b; + border-bottom: 1px solid rgba(255, 255, 255, 0.1); + position: sticky; + top: 0; + z-index: 100; +} + +.top-header h1 { + display: flex; + align-items: center; + gap: 12px; + font-size: 20px; + font-weight: 600; + color: #f1f5f9; + margin: 0; +} + +.logo { + font-family: 'Courier New', monospace; + color: #3b82f6; + font-weight: 700; + letter-spacing: -1px; +} + +.header-info { + display: flex; + gap: 12px; + align-items: center; +} + +.badge { + padding: 6px 14px; + background: rgba(59, 130, 246, 0.1); + color: #3b82f6; + border-radius: 12px; + font-size: 12px; + font-weight: 500; + border: 1px solid rgba(59, 130, 246, 0.2); +} + +/* Content Area */ +.content-area { + flex: 1; + padding: 24px; + overflow-y: auto; +} + +/* Responsive Adjustments */ +@media (max-width: 1024px) { + .main-content { + margin-right: 240px; + } +} + +@media (max-width: 768px) { + .main-content { + margin-right: 0; + } + + .top-header { + padding: 12px 16px; + } + + .top-header h1 { + font-size: 18px; + } + + .content-area { + padding: 16px; + } + + .header-info { + flex-direction: column; + gap: 6px; + align-items: flex-end; + } +} + +/* Smooth Scrolling */ +.content-area::-webkit-scrollbar { + width: 8px; +} + +.content-area::-webkit-scrollbar-thumb { + background: rgba(59, 130, 246, 0.3); + border-radius: 4px; +} + +.content-area::-webkit-scrollbar-track { + background: rgba(0, 0, 0, 0.1); +} + +/* Global Material Icons Sizing */ +.material-icons.md-16 { + font-size: 16px; +} + +.material-icons.md-18 { + font-size: 18px; +} + +.material-icons.md-20 { + font-size: 20px; +} + +.material-icons.md-24 { + font-size: 24px; +} diff --git a/frontend/src/app/app.routes.ts b/frontend/src/app/app.routes.ts index f72a3fe..30cd831 100644 --- a/frontend/src/app/app.routes.ts +++ b/frontend/src/app/app.routes.ts @@ -2,10 +2,14 @@ import { Routes } from '@angular/router'; import { ArtifactsListComponent } from './components/artifacts-list/artifacts-list'; import { UploadFormComponent } from './components/upload-form/upload-form'; import { QueryFormComponent } from './components/query-form/query-form'; +import { SettingsComponent } from './components/settings/settings'; +import { ProfileComponent } from './components/profile/profile'; export const routes: Routes = [ { path: '', redirectTo: '/artifacts', pathMatch: 'full' }, { path: 'artifacts', component: ArtifactsListComponent }, { path: 'upload', component: UploadFormComponent }, - { path: 'query', component: QueryFormComponent } + { path: 'query', component: QueryFormComponent }, + { path: 'settings', component: SettingsComponent }, + { path: 'profile', component: ProfileComponent } ]; diff --git a/frontend/src/app/app.ts b/frontend/src/app/app.ts index eeb5b0d..cbed5ac 100644 --- a/frontend/src/app/app.ts +++ b/frontend/src/app/app.ts @@ -1,36 +1,30 @@ import { Component, OnInit } from '@angular/core'; import { CommonModule } from '@angular/common'; -import { RouterOutlet, RouterLink, RouterLinkActive } from '@angular/router'; -import { provideHttpClient } from '@angular/common/http'; +import { RouterOutlet } from '@angular/router'; import { ArtifactService } from './services/artifact'; +import { NavSidebarComponent } from './components/nav-sidebar/nav-sidebar'; @Component({ selector: 'app-root', standalone: true, - imports: [CommonModule, RouterOutlet, RouterLink, RouterLinkActive], + imports: [CommonModule, RouterOutlet, NavSidebarComponent], template: ` -
Manage your account information
+{{ user.email }}
+ +Last changed 3 months ago
+Add an extra layer of security
+Manage your active login sessions
+Manage your Warehouse13 preferences
+Choose your preferred color scheme
+Enable desktop notifications for updates
+Automatically refresh artifact list
+Currently using: MinIO
+Maximum file size: 500MB
+Backend service endpoint
+/api/v1
+ Manage API authentication tokens
+Warehouse13 v1.0.0
+View API documentation and guides
+