| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- 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,
- Headphones,
- Languages,
- LayoutDashboard,
- ListChecks,
- ListTodo,
- LogOut,
- LucideAngularModule,
- Menu,
- Megaphone,
- MessageSquareText,
- 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, Headphones, Languages, LayoutDashboard, ListChecks, ListTodo,
- LogOut, Megaphone, Menu, MessageSquareText, 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;
- }
- }
|