| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- import { CommonModule } from '@angular/common';
- import { ChangeDetectionStrategy, Component, signal } from '@angular/core';
- import { RouterLink, RouterLinkActive, RouterOutlet } from '@angular/router';
- import {
- Bell,
- BookOpen,
- Braces,
- CalendarDays,
- ChartNoAxesCombined,
- ChartBarBig,
- ChevronLeft,
- ChevronRight,
- ClipboardCheck,
- ClipboardList,
- Files,
- GalleryHorizontalEnd,
- GraduationCap,
- Languages,
- LayoutDashboard,
- ListChecks,
- ListTodo,
- LogOut,
- LucideAngularModule,
- Menu,
- Megaphone,
- Route,
- Search,
- Shapes,
- TableProperties,
- Tags,
- Users,
- } from 'lucide-angular';
- import { ADMIN_NAVIGATION } from '../admin.constants';
- import { AdminSessionService } from '../admin-session.service';
- @Component({
- selector: 'app-admin-shell',
- standalone: true,
- imports: [CommonModule, RouterLink, RouterLinkActive, RouterOutlet, LucideAngularModule],
- templateUrl: './admin-shell.component.html',
- styleUrl: './admin-shell.component.scss',
- changeDetection: ChangeDetectionStrategy.OnPush,
- })
- export class AdminShellComponent {
- readonly navigation = ADMIN_NAVIGATION;
- readonly collapsed = signal(false);
- readonly mobileOpen = signal(false);
- readonly icons = {
- Bell, BookOpen, Braces, CalendarDays, ChartBarBig, ChartNoAxesCombined, ChevronLeft, ChevronRight,
- ClipboardCheck, ClipboardList, Files, GalleryHorizontalEnd, GraduationCap, Languages, LayoutDashboard, ListChecks, ListTodo,
- LogOut, Megaphone, Menu, Route, Search, Shapes, TableProperties, Tags, Users,
- };
- constructor(readonly sessions: AdminSessionService) {}
- iconFor(name: string) {
- const key = Object.keys(this.icons).find((value) => value.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`).replace(/^-/, '') === name);
- return this.icons[key as keyof typeof this.icons] ?? this.icons.Files;
- }
- }
|