This commit is contained in:
Tizian.Breuch
2025-09-09 16:09:28 +02:00
parent 5601cd0110
commit b97fc21024
17 changed files with 645 additions and 249 deletions

View File

@@ -0,0 +1,66 @@
/* Verschieben Sie alle .sidebar... und .nav-item... Klassen aus styles.css hierher */
:host {
display: block;
}
.sidebar {
width: 260px;
height: 100vh;
position: sticky;
top: 0;
display: flex;
flex-direction: column;
padding: 1.5rem;
background: var(--glass-bg);
backdrop-filter: var(--glass-backdrop-filter);
-webkit-backdrop-filter: var(--glass-backdrop-filter);
border-right: 1px solid var(--color-border);
transition: background-color var(--transition-speed),
border-color var(--transition-speed);
}
.sidebar-header {
margin-bottom: 2rem;
}
.sidebar-title {
font-size: 1.5rem;
font-weight: 900;
}
.sidebar-nav {
display: flex;
flex-direction: column;
gap: 0.5rem;
flex-grow: 1;
}
.sidebar-footer {
margin-top: auto;
}
.nav-item {
display: flex;
align-items: center;
gap: 1rem;
padding: 0.75rem 1rem;
border-radius: var(--border-radius-md);
color: var(--color-text-light);
font-weight: 500;
text-decoration: none;
transition: all var(--transition-speed);
}
.nav-item app-icon {
font-size: 20px; /* Steuert die Größe des Icons */
transition: color var(--transition-speed);
}
.nav-item:hover {
background-color: rgba(0, 0, 0, 0.05);
color: var(--color-text);
}
:host-context(body.dark-theme) .nav-item:hover {
background-color: rgba(255, 255, 255, 0.05);
}
.nav-item.active {
background: var(--color-primary-gradient);
color: #fff;
box-shadow: 0 4px 10px rgba(52, 152, 219, 0.4);
}
.nav-item.active app-icon {
color: #fff;
}

View File

@@ -0,0 +1,45 @@
<aside class="sidebar">
<div class="sidebar-header">
<h1 class="sidebar-title">CustomDash</h1>
</div>
<nav class="sidebar-nav">
<a
class="nav-item"
[class.active]="activeRoute === 'dashboard'"
(click)="setActive('dashboard')"
>
<app-icon name="placeholder"></app-icon>
<span>Übersicht</span>
</a>
<a
class="nav-item"
[class.active]="activeRoute === 'analytics'"
(click)="setActive('analytics')"
>
<app-icon name="placeholder"></app-icon>
<span>Analysen</span>
</a>
<a
class="nav-item"
[class.active]="activeRoute === 'reports'"
(click)="setActive('reports')"
>
<app-icon name="placeholder"></app-icon>
<span>Berichte</span>
</a>
</nav>
<div class="sidebar-footer">
<a
class="nav-item"
[class.active]="activeRoute === 'settings'"
(click)="setActive('settings')"
>
<app-icon name="placeholder"></app-icon>
<span>Einstellungen</span>
</a>
</div>
</aside>

View File

@@ -0,0 +1,21 @@
import { Component } from '@angular/core';
import { CommonModule } from '@angular/common';
import { IconComponent } from '../../ui/icon/icon.component';
@Component({
selector: 'app-sidebar',
standalone: true,
imports: [CommonModule, IconComponent],
templateUrl: './sidebar.component.html',
styleUrl: './sidebar.component.css'
})
export class SidebarComponent {
// Wir verwalten nur noch, welcher Link aktiv ist. 'dashboard' ist der Standard.
activeRoute = 'dashboard';
// Methode, um den aktiven Link bei einem Klick zu ändern.
// In einer echten App würde dies durch den Angular Router gesteuert werden.
setActive(route: string): void {
this.activeRoute = route;
}
}