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