File indexing completed on 2025-04-18 08:05:34
0001 <div class="display-shell">
0002
0003 <mat-toolbar class="mat-elevation-z4 top-toolbar">
0004
0005
0006
0007
0008
0009 <button mat-icon-button [matMenuTriggerFor]="logoMenu" class="logo-button hide-mobile" aria-label="App Logo">
0010 <img src="assets/firebird/firebird-simplified-circle.png" width="32" height="32" alt="App Logo" />
0011 </button>
0012
0013
0014 <mat-menu #logoMenu="matMenu">
0015 <ng-container *ngFor="let item of navItems">
0016 <button mat-menu-item *ngIf="!item.alwaysVisible" (click)="onNavItemClick(item)">
0017 <mat-icon *ngIf="item.icon">{{ item.icon }}</mat-icon>
0018 <span *ngIf="item.label">{{ item.label }}</span>
0019 </button>
0020 </ng-container>
0021 </mat-menu>
0022
0023
0024 <div class="nav-items visible-nav hide-mobile">
0025 <ng-container *ngFor="let item of navItems">
0026 <button
0027 mat-button
0028 *ngIf="item.alwaysVisible"
0029 (click)="onNavItemClick(item)"
0030 [attr.aria-label]="item.label"
0031 >
0032 <mat-icon *ngIf="item.icon">{{ item.icon }}</mat-icon>
0033 {{ item.label }}
0034 </button>
0035 </ng-container>
0036 </div>
0037
0038
0039 <div class="middle-section">
0040 <ng-content select="[header]"></ng-content>
0041 </div>
0042
0043
0044 <span class="flex-spacer"></span>
0045
0046
0047 <app-theme-switcher class="theme-toggle hide-mobile"></app-theme-switcher>
0048
0049
0050 <button
0051 mat-icon-button
0052 class="hamburger-btn hide-desktop"
0053 (click)="toggleNavConfig()"
0054 aria-label="Toggle navigation menu"
0055 >
0056 <mat-icon>{{ navOpen ? 'close' : 'menu' }}</mat-icon>
0057 </button>
0058 </mat-toolbar>
0059
0060
0061 <div class="mobile-menu" [class.open]="navOpen">
0062 <ng-container *ngFor="let item of navItems">
0063
0064 <button
0065 mat-button
0066 (click)="onNavItemClick(item)"
0067 [attr.aria-label]="item.label"
0068 >
0069 <mat-icon *ngIf="item.icon">{{ item.icon }}</mat-icon>
0070 {{ item.label }}
0071 </button>
0072 </ng-container>
0073
0074 <app-theme-switcher class="theme-toggle-mobile"></app-theme-switcher>
0075 </div>
0076
0077
0078 <div class="main-content" #mainContent>
0079
0080 <div
0081 *ngIf="isLeftPaneVisible"
0082 class="pane left-pane"
0083 [style]="{ 'flex-basis': leftPaneWidth + 'px' }"
0084 >
0085 <ng-content select="[leftPane]"></ng-content>
0086 <ng-template #leftPaneContainer></ng-template>
0087 </div>
0088 <div
0089 *ngIf="isLeftPaneVisible"
0090 class="divider left-divider"
0091 (mousedown)="onMouseDownLeft($event)"
0092 ></div>
0093
0094
0095 <div class="central-pane">
0096 <ng-content select="[centralPane]"></ng-content>
0097 </div>
0098
0099
0100 <div
0101 *ngIf="isRightPaneVisible"
0102 class="divider right-divider"
0103 (mousedown)="onMouseDownRight($event)"
0104 ></div>
0105 <div
0106 *ngIf="isRightPaneVisible"
0107 class="pane right-pane"
0108 [style]="{ 'flex-basis': rightPaneWidth + 'px' }"
0109 >
0110 <ng-content select="[rightPane]"></ng-content>
0111 <ng-template #rightPaneContainer></ng-template>
0112 </div>
0113 </div>
0114
0115
0116
0117 <div class="footer">
0118
0119 <div class="footer-left">
0120 <ng-content select="[footer-left]"></ng-content>
0121 </div>
0122
0123
0124 <div class="footer-center">
0125 <ng-content select="[footer]"></ng-content>
0126 </div>
0127
0128
0129 <div class="footer-right">
0130 <ng-content select="[footer-right]"></ng-content>
0131 </div>
0132 </div>
0133 </div>