Replaced emoji icons throughout the Angular app with modern Lucide icon library for a more professional and consistent look matching the original static site design. **Icon Updates:** - Navigation tabs: Database, Upload, Search icons - Toolbar buttons: RefreshCw, Sparkles, Search, X icons - Action buttons: Download, Trash2 icons - Form buttons: Upload, Search, X icons **Style Improvements:** - Added softer blue color for artifact links (#93c5fd) - Added hover effect with lighter blue (#bfdbfe) - Added proper cursor pointer for clickable rows - Improved icon color consistency throughout **Dependencies:** - Added lucide-angular (v0.545.0) for icon support - Bundle size: 356.54 kB (raw) → 93.91 kB (gzipped) - Minimal impact: only +7.79 kB for full icon library All components updated with Lucide imports and icon references. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
58 lines
1.9 KiB
TypeScript
58 lines
1.9 KiB
TypeScript
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 { ArtifactService } from './services/artifact';
|
|
import { LucideAngularModule, Database, Upload, Search } from 'lucide-angular';
|
|
|
|
@Component({
|
|
selector: 'app-root',
|
|
standalone: true,
|
|
imports: [CommonModule, RouterOutlet, RouterLink, RouterLinkActive, LucideAngularModule],
|
|
template: `
|
|
<div class="container">
|
|
<header>
|
|
<h1>◆ Obsidian</h1>
|
|
<div class="header-info">
|
|
<span class="badge">{{ deploymentMode }}</span>
|
|
<span class="badge">{{ storageBackend }}</span>
|
|
</div>
|
|
</header>
|
|
|
|
<nav class="tabs">
|
|
<a routerLink="/artifacts" routerLinkActive="active" class="tab-button">
|
|
<lucide-icon [img]="Database" [size]="16"></lucide-icon> Artifacts
|
|
</a>
|
|
<a routerLink="/upload" routerLinkActive="active" class="tab-button">
|
|
<lucide-icon [img]="Upload" [size]="16"></lucide-icon> Upload
|
|
</a>
|
|
<a routerLink="/query" routerLinkActive="active" class="tab-button">
|
|
<lucide-icon [img]="Search" [size]="16"></lucide-icon> Query
|
|
</a>
|
|
</nav>
|
|
|
|
<router-outlet></router-outlet>
|
|
</div>
|
|
`,
|
|
styleUrls: ['./app.css']
|
|
})
|
|
export class AppComponent implements OnInit {
|
|
deploymentMode: string = '';
|
|
storageBackend: string = '';
|
|
readonly Database = Database;
|
|
readonly Upload = Upload;
|
|
readonly Search = Search;
|
|
|
|
constructor(private artifactService: ArtifactService) {}
|
|
|
|
ngOnInit() {
|
|
this.artifactService.getApiInfo().subscribe({
|
|
next: (info) => {
|
|
this.deploymentMode = `Mode: ${info.deployment_mode}`;
|
|
this.storageBackend = `Storage: ${info.storage_backend}`;
|
|
},
|
|
error: (err) => console.error('Failed to load API info:', err)
|
|
});
|
|
}
|
|
}
|