tin-spa 20.13.0 → 20.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, EnvironmentProviders, Injector, NgZone, OnInit, OnDestroy, TemplateRef, ViewContainerRef, OnChanges, SimpleChanges, EventEmitter, ChangeDetectorRef, AfterViewInit, DoCheck, PipeTransform, ElementRef, AfterViewChecked } from '@angular/core';
2
+ import { InjectionToken, EnvironmentProviders, Injector, NgZone, OnInit, AfterViewInit, OnDestroy, SimpleChanges, EventEmitter, QueryList, TemplateRef, ViewContainerRef, OnChanges, ChangeDetectorRef, DoCheck, PipeTransform, ElementRef, AfterViewChecked } from '@angular/core';
3
3
  import * as i12 from '@angular/material/snack-bar';
4
4
  import { MatSnackBar } from '@angular/material/snack-bar';
5
5
  import * as i11 from '@angular/material/dialog';
@@ -8,8 +8,8 @@ import * as rxjs from 'rxjs';
8
8
  import { Observable, BehaviorSubject, Subject } from 'rxjs';
9
9
  import * as i1 from '@angular/router';
10
10
  import { Router, ActivatedRoute, CanActivateFn } from '@angular/router';
11
- import * as i66 from '@angular/common/http';
12
- import { HttpClient, HttpErrorResponse } from '@angular/common/http';
11
+ import * as i68 from '@angular/common/http';
12
+ import { HttpClient, HttpContext, HttpErrorResponse, HttpContextToken } from '@angular/common/http';
13
13
  import * as i7$1 from '@abacritt/angularx-social-login';
14
14
  import { SocialUser, SocialAuthService, SocialAuthServiceConfig } from '@abacritt/angularx-social-login';
15
15
  import * as i4 from '@angular/common';
@@ -19,10 +19,10 @@ import { BreakpointObserver } from '@angular/cdk/layout';
19
19
  import { DomSanitizer, SafeResourceUrl, SafeHtml } from '@angular/platform-browser';
20
20
  import { SwUpdate } from '@angular/service-worker';
21
21
  import * as tin_spa from 'tin-spa';
22
- import * as i3 from '@angular/forms';
23
- import { FormControl, ControlValueAccessor } from '@angular/forms';
24
22
  import * as _angular_material_paginator from '@angular/material/paginator';
25
23
  import { MatPaginator, PageEvent } from '@angular/material/paginator';
24
+ import * as i3 from '@angular/forms';
25
+ import { FormControl, ControlValueAccessor } from '@angular/forms';
26
26
  import * as i5 from '@angular/material/table';
27
27
  import { MatTableDataSource } from '@angular/material/table';
28
28
  import { ChartData, ChartOptions, Plugin } from 'chart.js';
@@ -32,9 +32,9 @@ import * as i22 from '@angular/material/autocomplete';
32
32
  import { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';
33
33
  import * as i17 from '@angular/material/chips';
34
34
  import { MatChipInputEvent } from '@angular/material/chips';
35
- import * as i68 from '@kolkov/angular-editor';
35
+ import * as i70 from '@kolkov/angular-editor';
36
36
  import { AngularEditorConfig } from '@kolkov/angular-editor';
37
- import * as i70 from '@angular/cdk/drag-drop';
37
+ import * as i72 from '@angular/cdk/drag-drop';
38
38
  import { CdkDragEnter, CdkDragExit, CdkDragDrop } from '@angular/cdk/drag-drop';
39
39
  import * as i3$1 from '@angular/material/menu';
40
40
  import * as i4$1 from '@angular/material/slider';
@@ -58,7 +58,7 @@ import * as i28 from '@angular/material/progress-bar';
58
58
  import * as i29 from '@angular/material/sidenav';
59
59
  import * as i30 from '@angular/material/toolbar';
60
60
  import * as i32 from '@angular/material/expansion';
61
- import * as i69 from 'ng2-charts';
61
+ import * as i71 from 'ng2-charts';
62
62
  import { MsalService } from '@azure/msal-angular';
63
63
 
64
64
  declare class TinSpaService {
@@ -94,6 +94,9 @@ declare class MessageService {
94
94
  info(details: string): void;
95
95
  infoWithSubject(subject: string, details: string): void;
96
96
  error(details: string): void;
97
+ errorWithSubject(subject: string, details: string, reference?: string): void;
98
+ warning(details: string, subject?: string): void;
99
+ success(details: string, subject?: string): void;
97
100
  confirm(msg: string): Observable<any>;
98
101
  static ɵfac: i0.ɵɵFactoryDeclaration<MessageService, never>;
99
102
  static ɵprov: i0.ɵɵInjectableDeclaration<MessageService>;
@@ -480,14 +483,15 @@ declare class HttpService {
480
483
  private router;
481
484
  constructor(httpClient: HttpClient, router: Router);
482
485
  apiUrl: string;
483
- Post(service: string, data: any): Observable<any>;
486
+ Post(service: string, data: any, context?: HttpContext): Observable<any>;
484
487
  Put(service: string, data: any): Observable<any>;
485
488
  Post_Raw(url: string, data: any): Observable<any>;
486
489
  Post_WithFile(service: string, data: any, file: File): Observable<Object>;
487
- Post_FormData(service: string, formData: FormData): Observable<Object>;
488
- Get(service: string): Observable<any>;
490
+ Post_FormData(service: string, formData: FormData, context?: HttpContext): Observable<Object>;
491
+ Get(service: string, context?: HttpContext): Observable<any>;
489
492
  Get_Raw(url: string): Observable<any>;
490
493
  Error(error: HttpErrorResponse): "Unauthorized" | "Connection failed";
494
+ private withContext;
491
495
  private httpOptions_Legacy;
492
496
  private httpOptions_Files;
493
497
  static ɵfac: i0.ɵɵFactoryDeclaration<HttpService, never>;
@@ -499,6 +503,14 @@ interface TinSpaMsalConfig {
499
503
  authority: string;
500
504
  redirectUri: string;
501
505
  }
506
+ interface TinSpaTableDefaults {
507
+ /** Default for TableConfig.realTime. */
508
+ realTime?: boolean;
509
+ /** Default for TableConfig.offline. `true` is shorthand for { enabled: true }. */
510
+ offline?: any;
511
+ /** Default for TableConfig.pagination. `true` is shorthand for the library's default page size. */
512
+ pagination?: any;
513
+ }
502
514
  interface TinSpaRuntimeConfig {
503
515
  /** Use path routing (/home) instead of hash routing (/#/home). Default false (hash). */
504
516
  pathRouting: boolean;
@@ -511,6 +523,8 @@ interface TinSpaRuntimeConfig {
511
523
  microsoftAuth: boolean;
512
524
  /** MSAL credentials — required only when microsoftAuth is used. */
513
525
  msal?: TinSpaMsalConfig;
526
+ /** Added: app-wide defaults applied to every spa-table that does not state its own value. */
527
+ tableDefaults?: TinSpaTableDefaults;
514
528
  }
515
529
  declare const TIN_SPA_RUNTIME_CONFIG: InjectionToken<TinSpaRuntimeConfig>;
516
530
  declare function tinSpaLocationStrategyFactory(platformLocation: PlatformLocation, baseHref: string, config: TinSpaRuntimeConfig): LocationStrategy;
@@ -699,6 +713,7 @@ declare class DetailsDialogConfig {
699
713
  keepOpenBehavior?: 'reset' | 'edit';
700
714
  nestingLevel?: number;
701
715
  localMode?: boolean;
716
+ quietLoading?: boolean;
702
717
  }
703
718
  declare class Action {
704
719
  method?: 'get' | 'post';
@@ -708,6 +723,7 @@ declare class Action {
708
723
  isFormData?: boolean;
709
724
  skipCache?: boolean;
710
725
  cacheDurationMinutes?: number;
726
+ silent?: boolean;
711
727
  }
712
728
  interface CacheRule {
713
729
  pattern: string;
@@ -952,6 +968,8 @@ interface Tile {
952
968
  badge?: string;
953
969
  badgeColor?: string;
954
970
  chart?: TileChartConfig;
971
+ filter?: (row: any) => boolean;
972
+ data?: any;
955
973
  }
956
974
  declare class TileConfig {
957
975
  tiles: Tile[];
@@ -959,6 +977,7 @@ declare class TileConfig {
959
977
  loadInit?: boolean;
960
978
  clickable?: boolean;
961
979
  headerPosition?: 'top' | 'middle';
980
+ quietLoading?: boolean;
962
981
  }
963
982
  type SpaChartType = 'line' | 'bar' | 'pie' | 'doughnut';
964
983
  interface ChartItem {
@@ -1127,6 +1146,25 @@ declare class TableConfig {
1127
1146
  keepOpenBehavior?: 'reset' | 'edit';
1128
1147
  inlineEdit?: boolean | InlineEditConfig;
1129
1148
  createConfig?: CreateTabConfig;
1149
+ quietLoading?: boolean;
1150
+ sectionConfig?: TableSectionConfig;
1151
+ hideColumnHeaders?: boolean;
1152
+ }
1153
+ interface TableSectionChip {
1154
+ text?: string;
1155
+ color?: string;
1156
+ hidden?: VisibilityValue;
1157
+ visible?: VisibilityValue;
1158
+ }
1159
+ interface TableSectionConfig {
1160
+ title: string;
1161
+ icon?: string;
1162
+ showCount?: boolean;
1163
+ chips?: TableSectionChip[];
1164
+ buttons?: Button[];
1165
+ collapsible?: boolean;
1166
+ collapsed?: boolean;
1167
+ hideWhenEmpty?: boolean;
1130
1168
  }
1131
1169
  declare class PageConfig {
1132
1170
  title?: string;
@@ -1198,9 +1236,22 @@ declare class AppConfig {
1198
1236
  capItems: CapItem[];
1199
1237
  multitenant: boolean;
1200
1238
  navigation: 'top' | 'side' | 'side-modern' | 'top-modern';
1239
+ /**
1240
+ * @deprecated INERT since 2026-08-05 — setting it has no effect.
1241
+ *
1242
+ * This used to gate the details dialog's `<mat-progress-bar mode="indeterminate">`. That bar has been
1243
+ * replaced by the same perceived-progress line the tables and tiles use, so it is no longer a separate
1244
+ * feature with its own switch — `quietLoading` controls the whole non-blocking loading story, this line
1245
+ * included.
1246
+ *
1247
+ * The property is KEPT rather than deleted only so the four consumer SPAs (grip/shift/pulse/piglet), which
1248
+ * each still assign `appConfig.progressLine = true`, keep compiling. Delete those assignments and then this
1249
+ * declaration when those repos are next touched.
1250
+ */
1201
1251
  progressLine: boolean;
1202
1252
  docsBaseUrl: string;
1203
1253
  loginStyle: string;
1254
+ dialogStyle: string;
1204
1255
  loginTitle: string;
1205
1256
  loginMessage: string;
1206
1257
  termsUrl: string;
@@ -1211,11 +1262,14 @@ declare class AppConfig {
1211
1262
  navImage: string;
1212
1263
  keepSignedIn: boolean;
1213
1264
  resumeLastRoute: boolean;
1265
+ quietLoading: boolean;
1214
1266
  setupConfig: SetupConfig;
1267
+ dayBookConfig: DayBookConfig;
1215
1268
  }
1216
1269
  interface SetupStepAction {
1217
1270
  button?: Button;
1218
1271
  link?: string;
1272
+ linkDisplay?: string;
1219
1273
  import?: ImportConfig;
1220
1274
  roleTemplates?: boolean;
1221
1275
  }
@@ -1265,6 +1319,64 @@ interface SetupRoleTemplate {
1265
1319
  module?: string;
1266
1320
  exists: boolean;
1267
1321
  }
1322
+ interface DayBookLane {
1323
+ key: string;
1324
+ label: string;
1325
+ }
1326
+ interface DayBookStage {
1327
+ key: string;
1328
+ lane?: string;
1329
+ label: string;
1330
+ icon?: string;
1331
+ countField: string;
1332
+ valueField?: string;
1333
+ hint?: string;
1334
+ alert?: VisibilityValue;
1335
+ hidden?: VisibilityValue;
1336
+ visible?: VisibilityValue;
1337
+ }
1338
+ interface DayBookSection {
1339
+ key: string;
1340
+ lane?: string;
1341
+ listField: string;
1342
+ collapsed?: boolean;
1343
+ tableConfig: TableConfig;
1344
+ }
1345
+ interface DayBookConfig {
1346
+ title?: string;
1347
+ loadAction: Action;
1348
+ lanes?: DayBookLane[];
1349
+ stages: DayBookStage[];
1350
+ sections: DayBookSection[];
1351
+ booksFromField?: string;
1352
+ owedField?: string;
1353
+ allClearMessage?: string;
1354
+ }
1355
+ interface ChecklistAction {
1356
+ type?: 'create' | 'import' | 'link' | 'custom';
1357
+ display?: string;
1358
+ icon?: string;
1359
+ primary?: boolean;
1360
+ disabled?: (item: ChecklistItem) => boolean;
1361
+ onClick: (item: ChecklistItem) => void;
1362
+ }
1363
+ interface ChecklistItem {
1364
+ key: string;
1365
+ title: string;
1366
+ description?: string;
1367
+ complete?: boolean;
1368
+ optional?: boolean;
1369
+ progressText?: string;
1370
+ actions?: ChecklistAction[];
1371
+ data?: any;
1372
+ hidden?: VisibilityValue;
1373
+ visible?: VisibilityValue;
1374
+ }
1375
+ interface ChecklistConfig {
1376
+ items: ChecklistItem[];
1377
+ expandedKey?: string;
1378
+ itemTemplate?: any;
1379
+ }
1268
1380
 
1269
1381
  interface ResolvedOfflineConfig {
1270
1382
  enabled: boolean;
@@ -1400,6 +1512,8 @@ declare class DataServiceLib {
1400
1512
  private appConfigSource;
1401
1513
  appConfigObserv: Observable<AppConfig>;
1402
1514
  UpdateAppConfig(config: AppConfig): void;
1515
+ get modernDialogs(): boolean;
1516
+ get dialogPanelClass(): string[];
1403
1517
  cacheConfig: CacheConfig;
1404
1518
  myRole: any;
1405
1519
  capHome: CapItem;
@@ -1555,7 +1669,9 @@ declare class DataServiceLib {
1555
1669
  private listCache;
1556
1670
  private cacheTimestamps;
1557
1671
  private ongoingRequests;
1558
- CallApi(action: Action, data?: any): Observable<any>;
1672
+ CallApi(action: Action, data?: any, options?: {
1673
+ silent?: boolean;
1674
+ }): Observable<any>;
1559
1675
  private isCrudAction;
1560
1676
  private extractEntityName;
1561
1677
  private handleCachedCall;
@@ -1629,8 +1745,12 @@ declare class DialogService {
1629
1745
  private dialog;
1630
1746
  private breakpointObserver;
1631
1747
  private defaultDialogComponent;
1748
+ private importDialogComponent;
1749
+ private dataService;
1632
1750
  private smallScreen;
1633
- constructor(dialog: MatDialog, breakpointObserver: BreakpointObserver, defaultDialogComponent: any);
1751
+ constructor(dialog: MatDialog, breakpointObserver: BreakpointObserver, defaultDialogComponent: any, // Changed: Inject default dialog component
1752
+ importDialogComponent: any, // Added: import wizard by token, see dialog-component.token.ts
1753
+ dataService: DataServiceLib);
1634
1754
  openDetailsDialog<T>(config: DetailsDialogConfig, dialogComponent: new (...args: any[]) => T): {
1635
1755
  afterClosed: Observable<any>;
1636
1756
  inputChange: Observable<any>;
@@ -1644,9 +1764,10 @@ declare class DialogService {
1644
1764
  dialogRef: MatDialogRef<any>;
1645
1765
  };
1646
1766
  openViewerDialog(fileName: string, fileNames: string[] | string, path: string): MatDialogRef<viewerDialog>;
1767
+ private get modernPanelClass();
1647
1768
  openImportDialog(config: ImportConfig): Observable<any>;
1648
1769
  openPrintDialog(htmlContent: any): void;
1649
- static ɵfac: i0.ɵɵFactoryDeclaration<DialogService, [null, null, { optional: true; }]>;
1770
+ static ɵfac: i0.ɵɵFactoryDeclaration<DialogService, [null, null, { optional: true; }, { optional: true; }, { optional: true; }]>;
1650
1771
  static ɵprov: i0.ɵɵInjectableDeclaration<DialogService>;
1651
1772
  }
1652
1773
 
@@ -2002,9 +2123,11 @@ declare class TabService {
2002
2123
  [index: number]: Subject<boolean>;
2003
2124
  };
2004
2125
  };
2126
+ private isQuiet;
2005
2127
  loadTabCount(tabIndex: number, countAction: any, tabCounts: {
2006
2128
  [index: number]: number;
2007
- }, parentData?: any): void;
2129
+ }, parentData?: any, // Changed: Accept parentData for URL placeholder replacement
2130
+ quiet?: boolean): void;
2008
2131
  refreshTabCount(index: number, tableConfigs: TableConfig[], tabCounts: {
2009
2132
  [index: number]: number;
2010
2133
  }, parentData?: any): void;
@@ -2120,6 +2243,8 @@ declare class AgentService {
2120
2243
  loadMessages(conversationId: number): void;
2121
2244
  sendMessage(text: string): void;
2122
2245
  transcribeOnly(audio: Blob, fileName: string): rxjs.Observable<any>;
2246
+ voiceTurn(audio: Blob, fileName: string): rxjs.Observable<any>;
2247
+ appendSpokenMessage(text: string): void;
2123
2248
  sendComposed(photo: Blob | null, photoName: string, audio: Blob | null, audioName: string, caption?: string): void;
2124
2249
  sendMedia(file: Blob, fileName: string, kind: 'voice' | 'photo', caption?: string): void;
2125
2250
  private replaceMessage;
@@ -2146,6 +2271,37 @@ declare class AnalyticsService {
2146
2271
  static ɵprov: i0.ɵɵInjectableDeclaration<AnalyticsService>;
2147
2272
  }
2148
2273
 
2274
+ type ApiErrorKind = 'network' | 'timeout' | 'badrequest' | 'forbidden' | 'notfound' | 'server' | 'unavailable' | 'unknown' | 'appfailure' | 'appfailure-submit';
2275
+ type AppFailureClass = 'opaque' | 'business';
2276
+ type AppFailureContext = 'submit' | 'load' | 'action';
2277
+ interface ApiErrorInfo {
2278
+ kind: ApiErrorKind;
2279
+ title: string;
2280
+ message: string;
2281
+ }
2282
+ declare class ApiErrorService {
2283
+ private messageService;
2284
+ private lastShownAt;
2285
+ /** How long a given kind stays suppressed after being shown. The user described "the same 10 seconds or so". */
2286
+ suppressWindowMs: number;
2287
+ submitSuppressWindowMs: number;
2288
+ constructor(messageService: MessageService);
2289
+ classify(error: HttpErrorResponse): ApiErrorInfo;
2290
+ /** True when this kind was already shown inside the suppression window — i.e. the user has already been told. */
2291
+ private isSuppressed;
2292
+ present(error: HttpErrorResponse): ApiErrorInfo;
2293
+ private opaqueMarkers;
2294
+ classifyMessage(message: string | null | undefined): AppFailureClass;
2295
+ extractReference(message: string | null | undefined): string | null;
2296
+ presentAppFailure(response: {
2297
+ message?: string;
2298
+ } | null | undefined, context?: AppFailureContext, url?: string): AppFailureClass;
2299
+ /** Clears suppression so the next failure speaks up again — call after a successful request or reconnect. */
2300
+ reset(): void;
2301
+ static ɵfac: i0.ɵɵFactoryDeclaration<ApiErrorService, never>;
2302
+ static ɵprov: i0.ɵɵInjectableDeclaration<ApiErrorService>;
2303
+ }
2304
+
2149
2305
  declare class SetupService {
2150
2306
  private dataService;
2151
2307
  private pendingCount;
@@ -2199,9 +2355,10 @@ declare class SetupGuideComponent implements OnInit {
2199
2355
  status: SetupStatus | null;
2200
2356
  groups: {
2201
2357
  name: string;
2202
- steps: SetupStep[];
2358
+ completed: number;
2359
+ total: number;
2360
+ config: ChecklistConfig;
2203
2361
  }[];
2204
- expandedKey: string;
2205
2362
  modules: SetupModule$1[];
2206
2363
  togglingKey: string;
2207
2364
  roleTemplates: SetupRoleTemplate[];
@@ -2212,13 +2369,12 @@ declare class SetupGuideComponent implements OnInit {
2212
2369
  get title(): string;
2213
2370
  ngOnInit(): void;
2214
2371
  private buildGroups;
2372
+ private toItem;
2373
+ private buildActions;
2215
2374
  getAction(step: SetupStep): SetupStepAction;
2216
2375
  hasDialog(step: SetupStep): boolean;
2217
2376
  hasAction(step: SetupStep): boolean;
2218
2377
  primaryLabel(step: SetupStep): string;
2219
- groupCompleted(group: {
2220
- steps: SetupStep[];
2221
- }): number;
2222
2378
  progressLabel(step: SetupStep): string;
2223
2379
  doPrimary(step: SetupStep): void;
2224
2380
  navigate(step: SetupStep): void;
@@ -2231,11 +2387,237 @@ declare class SetupGuideComponent implements OnInit {
2231
2387
  private hasRoleTemplatesStep;
2232
2388
  private loadRoleTemplates;
2233
2389
  get selectedTemplateCount(): number;
2390
+ toggleTemplate(tpl: SetupRoleTemplate): void;
2234
2391
  createSelectedRoles(): void;
2235
2392
  static ɵfac: i0.ɵɵFactoryDeclaration<SetupGuideComponent, never>;
2236
2393
  static ɵcmp: i0.ɵɵComponentDeclaration<SetupGuideComponent, "spa-setup-guide", never, {}, {}, never, never, false, never>;
2237
2394
  }
2238
2395
 
2396
+ declare class ConditionService {
2397
+ testIconCondition(icon: Icon, row: any): boolean;
2398
+ testColorCondition(color: Color, row: any): boolean;
2399
+ getColor(value: any, options: any[]): string;
2400
+ testCondition(condition: (value: any) => boolean, value: any): boolean;
2401
+ static ɵfac: i0.ɵɵFactoryDeclaration<ConditionService, never>;
2402
+ static ɵprov: i0.ɵɵInjectableDeclaration<ConditionService>;
2403
+ }
2404
+
2405
+ declare class TableComponent implements OnInit, AfterViewInit, OnDestroy {
2406
+ private dataService;
2407
+ private messageService;
2408
+ private breakpointObserver;
2409
+ dialog: MatDialog;
2410
+ private buttonService;
2411
+ private dialogService;
2412
+ private tableConfigService;
2413
+ private conditionService;
2414
+ private authService;
2415
+ private signalRService;
2416
+ private offline;
2417
+ private apiErrorService;
2418
+ private runtimeConfig;
2419
+ constructor(dataService: DataServiceLib, messageService: MessageService, breakpointObserver: BreakpointObserver, dialog: MatDialog, buttonService: ButtonService, dialogService: DialogService, tableConfigService: TableConfigService, conditionService: ConditionService, authService: AuthService, signalRService: SignalRService, // Changed: Added SignalRService
2420
+ offline: OfflineService, // Changed: TinSync unified offline service (inert unless config.offline is set)
2421
+ apiErrorService: ApiErrorService, // Added: routes application-level (HTTP 200, success:false) failures through the shared classify + dedupe path
2422
+ runtimeConfig: TinSpaRuntimeConfig | null);
2423
+ private subs;
2424
+ ngOnInit(): void;
2425
+ ngAfterViewInit(): void;
2426
+ ngOnChanges(changes: SimpleChanges): void;
2427
+ elevation: string;
2428
+ actionsWidth: string;
2429
+ sectionCollapsed: boolean;
2430
+ get sectionHidden(): boolean;
2431
+ toggleSection(): void;
2432
+ sectionChips(): tin_spa.TableSectionChip[];
2433
+ sectionButtons(): Button[];
2434
+ sectionButtonClicked(button: any, event: Event): void;
2435
+ showFilterButton: boolean;
2436
+ tileReload: Subject<boolean>;
2437
+ hasBeenActivated: boolean;
2438
+ smallScreen: boolean;
2439
+ hasFormAccess: boolean;
2440
+ tableDataSource: any;
2441
+ dataSource: any[];
2442
+ displayedColumns: any[];
2443
+ displayedButtons: any[];
2444
+ originalTableLoadAction: Action;
2445
+ tablePaginator: MatPaginator;
2446
+ data: any;
2447
+ tileData: any;
2448
+ config: TableConfig;
2449
+ localMode: boolean;
2450
+ parentDetails: any;
2451
+ reload: Subject<boolean>;
2452
+ activeTab: boolean;
2453
+ inTab: boolean;
2454
+ nestingLevel: number;
2455
+ dataLoad: EventEmitter<any>;
2456
+ totalChange: EventEmitter<number>;
2457
+ actionSuccess: EventEmitter<any>;
2458
+ refreshClick: EventEmitter<any>;
2459
+ searchClick: EventEmitter<any>;
2460
+ createClick: EventEmitter<any>;
2461
+ actionClick: EventEmitter<any>;
2462
+ inputChange: EventEmitter<any>;
2463
+ actionResponse: EventEmitter<any>;
2464
+ private realTimeSubs;
2465
+ private realTimeEntityName;
2466
+ private get tableDefaults();
2467
+ get effRealTime(): boolean;
2468
+ get effOffline(): any;
2469
+ get effPagination(): any;
2470
+ get effQuietLoading(): boolean;
2471
+ static readonly STAGE_DELAY_MS = 300;
2472
+ static readonly STAGE_MIN_MS = 300;
2473
+ loadingStage: 'initial' | 'refresh' | null;
2474
+ progressPercent: number;
2475
+ progressDisplay: number;
2476
+ private progress;
2477
+ private hasLoadedOnce;
2478
+ private nextStageKind;
2479
+ private requestStartedAt;
2480
+ private stageShownAt;
2481
+ private stageDelayTimer;
2482
+ private stageHoldTimer;
2483
+ private stageInFlight;
2484
+ ghostRows: number[];
2485
+ get ghostColumns(): any[];
2486
+ ghostWidth(index: number, column: any): number;
2487
+ get stageEntityName(): string;
2488
+ ghostCards: number[];
2489
+ ghostCapsules: number[];
2490
+ ghostGroups: number[];
2491
+ private beginStage;
2492
+ private endStage;
2493
+ private clearStage;
2494
+ isSignalRConnected: boolean;
2495
+ private offlineEntry;
2496
+ private pendingOps;
2497
+ private rawRows;
2498
+ private offlineSubs;
2499
+ pagedMode: boolean;
2500
+ serverTotal: number;
2501
+ loadedRows: any[];
2502
+ filteredRows: any[];
2503
+ pageIndex: number;
2504
+ pageSize: number;
2505
+ filterActive: boolean;
2506
+ private filterText;
2507
+ groupFilterText: string;
2508
+ private fetchSize;
2509
+ private pagedUrlBase;
2510
+ private pageFetchInFlight;
2511
+ private initializeComponent;
2512
+ get isLocal(): boolean;
2513
+ private get localRows();
2514
+ private refreshLocalData;
2515
+ editingRow: any;
2516
+ editingModel: any;
2517
+ isRowEditing(row: any): boolean;
2518
+ getInlineField(column: Column): Field | null;
2519
+ startInlineEdit(row: any): void;
2520
+ cancelInlineEdit(): void;
2521
+ submitInlineEdit(): void;
2522
+ private updateTableConfiguration;
2523
+ private setupDataLoading;
2524
+ loadData(action: Action, data: any): void;
2525
+ private setPaginator;
2526
+ private setupPagination;
2527
+ private loadDataPaged;
2528
+ private fetchChunk;
2529
+ private withPaging;
2530
+ private applyFullSet;
2531
+ private clampPageIndex;
2532
+ private updateSlice;
2533
+ private pagedRowMatches;
2534
+ onServerPage(e: PageEvent): void;
2535
+ filterChanged(text: string): void;
2536
+ inputChanged(event: any): void;
2537
+ formDefaults(): void;
2538
+ setButtons(): void;
2539
+ getButton(name: string): Button;
2540
+ getIcon(buttonName: string): string;
2541
+ getButtonColor(button: Button, row: any): string;
2542
+ getOptions(column: any): Column;
2543
+ getColor(value: any, options: any[]): string;
2544
+ testIconCondition(row: any, icon: Icon): boolean;
2545
+ testColorCondition(row: any, color: Color): boolean;
2546
+ showBanner(message: string): void;
2547
+ testDisabled(row: any, buttonName: string): boolean;
2548
+ lastSearch: any;
2549
+ searchClicked(x: any): void;
2550
+ private activeTileFilter;
2551
+ private applyTileFilter;
2552
+ tileClicked(tile: any): void;
2553
+ tileUnClicked(tile: any): void;
2554
+ refreshClicked(): void;
2555
+ dataLoaded(x: any): void;
2556
+ actionClicked(name: string, row: any, group?: any, button?: Button): void;
2557
+ columnClicked(column: Column, row: any): void;
2558
+ customModel(name: any, row: any, button?: Button): void;
2559
+ actionClickedEmit(name: any, row: any): void;
2560
+ viewModel(row: any, button?: Button): void;
2561
+ newModel(): void;
2562
+ editModel(row: any, button?: Button): void;
2563
+ private open;
2564
+ deleteModel(row: any, button?: Button): void;
2565
+ doAction(buttonName: string, row: any): void;
2566
+ execAction(button: Button, row: any): void;
2567
+ private getElevationClass;
2568
+ private realTimeRefreshOrFallback;
2569
+ private setupOffline;
2570
+ private placeStatusIcons;
2571
+ private applyOfflineOverlay;
2572
+ private computeOverlay;
2573
+ private reapplyOverlay;
2574
+ private setupRealTimeSubscriptions;
2575
+ private realTimeBaseRows;
2576
+ private applyRealTimeData;
2577
+ private deriveEntityName;
2578
+ private findIdKey;
2579
+ ngOnDestroy(): void;
2580
+ private setTableData;
2581
+ private rowIdKey;
2582
+ trackByRow: (index: number, row: any) => any;
2583
+ static ɵfac: i0.ɵɵFactoryDeclaration<TableComponent, [null, null, null, null, null, null, null, null, null, null, null, null, { optional: true; }]>;
2584
+ static ɵcmp: i0.ɵɵComponentDeclaration<TableComponent, "spa-table", never, { "data": { "alias": "data"; "required": false; }; "tileData": { "alias": "tileData"; "required": false; }; "config": { "alias": "config"; "required": false; }; "localMode": { "alias": "localMode"; "required": false; }; "parentDetails": { "alias": "parentDetails"; "required": false; }; "reload": { "alias": "reload"; "required": false; }; "activeTab": { "alias": "activeTab"; "required": false; }; "inTab": { "alias": "inTab"; "required": false; }; "nestingLevel": { "alias": "nestingLevel"; "required": false; }; }, { "dataLoad": "dataLoad"; "totalChange": "totalChange"; "actionSuccess": "actionSuccess"; "refreshClick": "refreshClick"; "searchClick": "searchClick"; "createClick": "createClick"; "actionClick": "actionClick"; "inputChange": "inputChange"; "actionResponse": "actionResponse"; }, never, never, false, never>;
2585
+ }
2586
+
2587
+ declare class DayBookComponent implements OnInit {
2588
+ dataService: DataServiceLib;
2589
+ tables: QueryList<TableComponent>;
2590
+ book: any;
2591
+ loading: boolean;
2592
+ lane: string;
2593
+ tileConfig: TileConfig | null;
2594
+ sectionConfigs: {
2595
+ section: DayBookSection;
2596
+ cfg: TableConfig;
2597
+ }[];
2598
+ get config(): DayBookConfig | undefined;
2599
+ get title(): string;
2600
+ ngOnInit(): void;
2601
+ load(): void;
2602
+ get lanes(): DayBookLane[];
2603
+ setLane(key: string): void;
2604
+ inLane(lane?: string): boolean;
2605
+ private buildTiles;
2606
+ onTileClick(event: any): void;
2607
+ private buildSections;
2608
+ get visibleSections(): {
2609
+ section: DayBookSection;
2610
+ cfg: TableConfig;
2611
+ }[];
2612
+ rowsFor(section: DayBookSection): any[];
2613
+ goTo(key: string): void;
2614
+ get booksFrom(): any;
2615
+ get owed(): number | null;
2616
+ get allClear(): boolean;
2617
+ static ɵfac: i0.ɵɵFactoryDeclaration<DayBookComponent, never>;
2618
+ static ɵcmp: i0.ɵɵComponentDeclaration<DayBookComponent, "spa-day-book", never, {}, {}, never, never, false, never>;
2619
+ }
2620
+
2239
2621
  declare class OfflineIndicatorComponent {
2240
2622
  private offline;
2241
2623
  private router;
@@ -2361,6 +2743,39 @@ declare class DetailsDialogProcessor {
2361
2743
  };
2362
2744
  }
2363
2745
 
2746
+ interface PerceivedProgressOptions {
2747
+ cap?: number;
2748
+ completeMs?: number;
2749
+ onChange?: (percent: number) => void;
2750
+ }
2751
+ declare class PerceivedProgress {
2752
+ private options;
2753
+ static readonly TAU_MS = 3000;
2754
+ static readonly CAP = 94;
2755
+ static readonly COMPLETE_MS = 200;
2756
+ static valueAt(elapsedMs: number, cap?: number): number;
2757
+ static now(): number;
2758
+ percent: number;
2759
+ running: boolean;
2760
+ private startedAt;
2761
+ private frame;
2762
+ private completing;
2763
+ private completeFrom;
2764
+ private completeStartedAt;
2765
+ private doneCallback;
2766
+ constructor(options?: PerceivedProgressOptions);
2767
+ get display(): number;
2768
+ private get cap();
2769
+ private get completeMs();
2770
+ start(now?: number): void;
2771
+ complete(done?: () => void): void;
2772
+ stop(): void;
2773
+ tick(now?: number): void;
2774
+ private emit;
2775
+ private scheduleFrame;
2776
+ private cancelFrame;
2777
+ }
2778
+
2364
2779
  /** "Msal" section — PascalCase keys to match backend appsettings conventions. */
2365
2780
  interface TinSpaMsalSettings {
2366
2781
  ClientId?: string;
@@ -2385,6 +2800,16 @@ interface TinSpaAppSettings {
2385
2800
  RealTime?: boolean;
2386
2801
  /** Offline capability on or off per environment (overrides the code-declared `offline`). */
2387
2802
  Offline?: boolean;
2803
+ /** Added: app-wide per-table defaults, tunable per environment without a rebuild. A table's own
2804
+ * TableConfig value always wins over these; these only fill in what a table did not state.
2805
+ * PageSize is offered as a number because tuning it per server is the main reason to expose it —
2806
+ * e.g. a slow-link deployment dropping every unstated table to 10 rows a page. */
2807
+ TableDefaults?: {
2808
+ RealTime?: boolean;
2809
+ Offline?: boolean;
2810
+ Pagination?: boolean;
2811
+ PageSize?: number;
2812
+ };
2388
2813
  Msal?: TinSpaMsalSettings;
2389
2814
  /** Same key name the backend reads for token validation — the two MUST hold the same value,
2390
2815
  * since the backend validates the Google id-token audience against its own GoogleClientID. */
@@ -2402,6 +2827,17 @@ declare function getTinSpaAppSettings(): TinSpaAppSettings | null;
2402
2827
  */
2403
2828
  declare function loadTinSpaAppSettings(): Promise<TinSpaAppSettings | null>;
2404
2829
 
2830
+ declare const TIN_SILENT_REQUEST: HttpContextToken<boolean>;
2831
+ declare function silentContext(silent?: boolean, context?: HttpContext): HttpContext | undefined;
2832
+ declare function isSilentRequest(context: HttpContext | undefined | null): boolean;
2833
+
2834
+ interface QuietLoadingHost {
2835
+ quietLoading?: boolean;
2836
+ }
2837
+ declare function resolveQuietLoading(config: QuietLoadingHost | null | undefined, appDefault: boolean | undefined): boolean;
2838
+ declare const QUIET_DELAY_MS = 300;
2839
+ declare const QUIET_MIN_MS = 300;
2840
+
2405
2841
  declare class TinSpaComponent {
2406
2842
  static ɵfac: i0.ɵɵFactoryDeclaration<TinSpaComponent, never>;
2407
2843
  static ɵcmp: i0.ɵɵComponentDeclaration<TinSpaComponent, "spa-tin-spa", never, {}, {}, never, never, false, never>;
@@ -2768,6 +3204,7 @@ declare class FilterComponent implements OnInit, OnDestroy {
2768
3204
  showButton: boolean;
2769
3205
  smallScreen: boolean;
2770
3206
  data: MatTableDataSource<unknown, _angular_material_paginator.MatPaginator>;
3207
+ refreshing: boolean;
2771
3208
  refreshClick: EventEmitter<any>;
2772
3209
  filterChange: EventEmitter<string>;
2773
3210
  _filterText: string;
@@ -2776,19 +3213,31 @@ declare class FilterComponent implements OnInit, OnDestroy {
2776
3213
  refreshClicked(): void;
2777
3214
  clear(): void;
2778
3215
  static ɵfac: i0.ɵɵFactoryDeclaration<FilterComponent, never>;
2779
- static ɵcmp: i0.ɵɵComponentDeclaration<FilterComponent, "spa-filter", never, { "flatButtons": { "alias": "flatButtons"; "required": false; }; "showText": { "alias": "showText"; "required": false; }; "showButton": { "alias": "showButton"; "required": false; }; "smallScreen": { "alias": "smallScreen"; "required": false; }; "data": { "alias": "data"; "required": false; }; }, { "refreshClick": "refreshClick"; "filterChange": "filterChange"; }, never, never, false, never>;
3216
+ static ɵcmp: i0.ɵɵComponentDeclaration<FilterComponent, "spa-filter", never, { "flatButtons": { "alias": "flatButtons"; "required": false; }; "showText": { "alias": "showText"; "required": false; }; "showButton": { "alias": "showButton"; "required": false; }; "smallScreen": { "alias": "smallScreen"; "required": false; }; "data": { "alias": "data"; "required": false; }; "refreshing": { "alias": "refreshing"; "required": false; }; }, { "refreshClick": "refreshClick"; "filterChange": "filterChange"; }, never, never, false, never>;
2780
3217
  }
2781
3218
 
2782
3219
  declare class messageDialog implements OnInit {
2783
3220
  private dialogRef;
2784
3221
  data: any;
2785
- constructor(dialogRef: MatDialogRef<messageDialog>, data: any);
3222
+ private dataService;
3223
+ constructor(dialogRef: MatDialogRef<messageDialog>, data: any, dataService: DataServiceLib);
2786
3224
  ngOnInit(): void;
2787
3225
  messageType: any;
2788
3226
  _messageSubject: any;
2789
3227
  _messageDetails: any;
3228
+ _messageReference: any;
3229
+ modern: boolean;
3230
+ private static readonly TYPES;
3231
+ private get spec();
3232
+ get iconName(): string;
3233
+ get title(): string;
3234
+ get paragraphs(): string[];
3235
+ get reference(): string | null;
3236
+ get isConfirm(): boolean;
3237
+ private static readonly CLASSIC_HEADINGS;
3238
+ get classicHeading(): string;
2790
3239
  response(resp: string): void;
2791
- static ɵfac: i0.ɵɵFactoryDeclaration<messageDialog, never>;
3240
+ static ɵfac: i0.ɵɵFactoryDeclaration<messageDialog, [null, null, { optional: true; }]>;
2792
3241
  static ɵcmp: i0.ɵɵComponentDeclaration<messageDialog, "lib-app-message", never, {}, {}, never, never, false, never>;
2793
3242
  }
2794
3243
 
@@ -2863,9 +3312,11 @@ declare class TilesComponent implements OnInit, OnChanges, OnDestroy {
2863
3312
  private dataService;
2864
3313
  private messageService;
2865
3314
  private cdr;
3315
+ private apiErrorService;
2866
3316
  private subs;
2867
3317
  private chartCache;
2868
- constructor(dataService: DataServiceLib, messageService: MessageService, cdr: ChangeDetectorRef);
3318
+ constructor(dataService: DataServiceLib, messageService: MessageService, cdr: ChangeDetectorRef, apiErrorService: ApiErrorService);
3319
+ get effQuietLoading(): boolean;
2869
3320
  ngOnInit(): void;
2870
3321
  ngOnChanges(): void;
2871
3322
  ngOnDestroy(): void;
@@ -2882,7 +3333,20 @@ declare class TilesComponent implements OnInit, OnChanges, OnDestroy {
2882
3333
  tileClick: EventEmitter<any>;
2883
3334
  tileUnClick: EventEmitter<any>;
2884
3335
  selectedTile: string;
3336
+ private static readonly GHOST_DELAY_MS;
3337
+ private static readonly GHOST_MIN_MS;
3338
+ loading: boolean;
3339
+ private ghostDelayTimer;
3340
+ private ghostSettleTimer;
3341
+ private pendingApply;
3342
+ private ghostShownAt;
2885
3343
  loadData(action: Action, data: any): void;
3344
+ showValueGhost(tile: Tile): boolean;
3345
+ private beginGhost;
3346
+ private settle;
3347
+ private finish;
3348
+ private flushPending;
3349
+ private ghostWouldRender;
2886
3350
  isClickable(tile: Tile): boolean;
2887
3351
  clicked(clickedTile: Tile): void;
2888
3352
  pop(x: any): void;
@@ -2907,6 +3371,7 @@ declare class StepsComponent implements OnInit {
2907
3371
  value: string;
2908
3372
  config: StepConfig;
2909
3373
  data: any;
3374
+ activeIndex: number | null;
2910
3375
  selectedIndex: number;
2911
3376
  smallScreen: boolean;
2912
3377
  steps: Step[];
@@ -2915,7 +3380,21 @@ declare class StepsComponent implements OnInit {
2915
3380
  get shouldShowLabels(): boolean;
2916
3381
  getVisibleSteps(): Step[];
2917
3382
  static ɵfac: i0.ɵɵFactoryDeclaration<StepsComponent, never>;
2918
- static ɵcmp: i0.ɵɵComponentDeclaration<StepsComponent, "spa-steps", never, { "value": { "alias": "value"; "required": false; }; "config": { "alias": "config"; "required": false; }; "data": { "alias": "data"; "required": false; }; }, {}, never, never, false, never>;
3383
+ static ɵcmp: i0.ɵɵComponentDeclaration<StepsComponent, "spa-steps", never, { "value": { "alias": "value"; "required": false; }; "config": { "alias": "config"; "required": false; }; "data": { "alias": "data"; "required": false; }; "activeIndex": { "alias": "activeIndex"; "required": false; }; }, {}, never, never, false, never>;
3384
+ }
3385
+
3386
+ declare class ChecklistComponent implements OnChanges {
3387
+ config: ChecklistConfig;
3388
+ itemTemplate: TemplateRef<any>;
3389
+ expandedKey: string;
3390
+ ngOnChanges(changes: SimpleChanges): void;
3391
+ get items(): ChecklistItem[];
3392
+ get template(): TemplateRef<any> | null;
3393
+ toggle(item: ChecklistItem): void;
3394
+ isExpanded(item: ChecklistItem): boolean;
3395
+ isDisabled(act: ChecklistAction, item: ChecklistItem): boolean;
3396
+ static ɵfac: i0.ɵɵFactoryDeclaration<ChecklistComponent, never>;
3397
+ static ɵcmp: i0.ɵɵComponentDeclaration<ChecklistComponent, "spa-checklist", never, { "config": { "alias": "config"; "required": false; }; "itemTemplate": { "alias": "itemTemplate"; "required": false; }; }, {}, never, never, false, never>;
2919
3398
  }
2920
3399
 
2921
3400
  declare class AttachComponent implements OnInit {
@@ -3027,156 +3506,6 @@ declare class NavMenuComponent {
3027
3506
  static ɵcmp: i0.ɵɵComponentDeclaration<NavMenuComponent, "spa-nav-menu", never, { "appConfig": { "alias": "appConfig"; "required": false; }; "footer": { "alias": "footer"; "required": false; }; }, {}, never, never, false, never>;
3028
3507
  }
3029
3508
 
3030
- declare class ConditionService {
3031
- testIconCondition(icon: Icon, row: any): boolean;
3032
- testColorCondition(color: Color, row: any): boolean;
3033
- getColor(value: any, options: any[]): string;
3034
- testCondition(condition: (value: any) => boolean, value: any): boolean;
3035
- static ɵfac: i0.ɵɵFactoryDeclaration<ConditionService, never>;
3036
- static ɵprov: i0.ɵɵInjectableDeclaration<ConditionService>;
3037
- }
3038
-
3039
- declare class TableComponent implements OnInit, AfterViewInit, OnDestroy {
3040
- private dataService;
3041
- private messageService;
3042
- private breakpointObserver;
3043
- dialog: MatDialog;
3044
- private buttonService;
3045
- private dialogService;
3046
- private tableConfigService;
3047
- private conditionService;
3048
- private authService;
3049
- private signalRService;
3050
- private offline;
3051
- constructor(dataService: DataServiceLib, messageService: MessageService, breakpointObserver: BreakpointObserver, dialog: MatDialog, buttonService: ButtonService, dialogService: DialogService, tableConfigService: TableConfigService, conditionService: ConditionService, authService: AuthService, signalRService: SignalRService, // Changed: Added SignalRService
3052
- offline: OfflineService);
3053
- private subs;
3054
- ngOnInit(): void;
3055
- ngAfterViewInit(): void;
3056
- ngOnChanges(changes: SimpleChanges): void;
3057
- elevation: string;
3058
- actionsWidth: string;
3059
- showFilterButton: boolean;
3060
- tileReload: Subject<boolean>;
3061
- hasBeenActivated: boolean;
3062
- smallScreen: boolean;
3063
- hasFormAccess: boolean;
3064
- tableDataSource: any;
3065
- dataSource: any[];
3066
- displayedColumns: any[];
3067
- displayedButtons: any[];
3068
- originalTableLoadAction: Action;
3069
- tablePaginator: MatPaginator;
3070
- data: any;
3071
- tileData: any;
3072
- config: TableConfig;
3073
- localMode: boolean;
3074
- parentDetails: any;
3075
- reload: Subject<boolean>;
3076
- activeTab: boolean;
3077
- inTab: boolean;
3078
- nestingLevel: number;
3079
- dataLoad: EventEmitter<any>;
3080
- totalChange: EventEmitter<number>;
3081
- actionSuccess: EventEmitter<any>;
3082
- refreshClick: EventEmitter<any>;
3083
- searchClick: EventEmitter<any>;
3084
- createClick: EventEmitter<any>;
3085
- actionClick: EventEmitter<any>;
3086
- inputChange: EventEmitter<any>;
3087
- actionResponse: EventEmitter<any>;
3088
- private realTimeSubs;
3089
- private realTimeEntityName;
3090
- isSignalRConnected: boolean;
3091
- private offlineEntry;
3092
- private pendingOps;
3093
- private rawRows;
3094
- private offlineSubs;
3095
- pagedMode: boolean;
3096
- serverTotal: number;
3097
- loadedRows: any[];
3098
- filteredRows: any[];
3099
- pageIndex: number;
3100
- pageSize: number;
3101
- filterActive: boolean;
3102
- private filterText;
3103
- private fetchSize;
3104
- private pagedUrlBase;
3105
- private pageFetchInFlight;
3106
- private initializeComponent;
3107
- get isLocal(): boolean;
3108
- private get localRows();
3109
- private refreshLocalData;
3110
- editingRow: any;
3111
- editingModel: any;
3112
- isRowEditing(row: any): boolean;
3113
- getInlineField(column: Column): Field | null;
3114
- startInlineEdit(row: any): void;
3115
- cancelInlineEdit(): void;
3116
- submitInlineEdit(): void;
3117
- private updateTableConfiguration;
3118
- private setupDataLoading;
3119
- loadData(action: Action, data: any): void;
3120
- private setPaginator;
3121
- private setupPagination;
3122
- private loadDataPaged;
3123
- private fetchChunk;
3124
- private withPaging;
3125
- private applyFullSet;
3126
- private clampPageIndex;
3127
- private updateSlice;
3128
- private pagedRowMatches;
3129
- onServerPage(e: PageEvent): void;
3130
- filterChanged(text: string): void;
3131
- inputChanged(event: any): void;
3132
- formDefaults(): void;
3133
- setButtons(): void;
3134
- getButton(name: string): Button;
3135
- getIcon(buttonName: string): string;
3136
- getButtonColor(button: Button, row: any): string;
3137
- getOptions(column: any): Column;
3138
- getColor(value: any, options: any[]): string;
3139
- testIconCondition(row: any, icon: Icon): boolean;
3140
- testColorCondition(row: any, color: Color): boolean;
3141
- showBanner(message: string): void;
3142
- testDisabled(row: any, buttonName: string): boolean;
3143
- lastSearch: any;
3144
- searchClicked(x: any): void;
3145
- tileClicked(tile: any): void;
3146
- tileUnClicked(tile: any): void;
3147
- refreshClicked(): void;
3148
- dataLoaded(x: any): void;
3149
- actionClicked(name: string, row: any, group?: any, button?: Button): void;
3150
- columnClicked(column: Column, row: any): void;
3151
- customModel(name: any, row: any, button?: Button): void;
3152
- actionClickedEmit(name: any, row: any): void;
3153
- viewModel(row: any, button?: Button): void;
3154
- newModel(): void;
3155
- editModel(row: any, button?: Button): void;
3156
- private open;
3157
- deleteModel(row: any, button?: Button): void;
3158
- doAction(buttonName: string, row: any): void;
3159
- execAction(button: Button, row: any): void;
3160
- private getElevationClass;
3161
- private realTimeRefreshOrFallback;
3162
- private setupOffline;
3163
- private placeStatusIcons;
3164
- private applyOfflineOverlay;
3165
- private computeOverlay;
3166
- private reapplyOverlay;
3167
- private setupRealTimeSubscriptions;
3168
- private realTimeBaseRows;
3169
- private applyRealTimeData;
3170
- private deriveEntityName;
3171
- private findIdKey;
3172
- ngOnDestroy(): void;
3173
- private setTableData;
3174
- private rowIdKey;
3175
- trackByRow: (index: number, row: any) => any;
3176
- static ɵfac: i0.ɵɵFactoryDeclaration<TableComponent, never>;
3177
- static ɵcmp: i0.ɵɵComponentDeclaration<TableComponent, "spa-table", never, { "data": { "alias": "data"; "required": false; }; "tileData": { "alias": "tileData"; "required": false; }; "config": { "alias": "config"; "required": false; }; "localMode": { "alias": "localMode"; "required": false; }; "parentDetails": { "alias": "parentDetails"; "required": false; }; "reload": { "alias": "reload"; "required": false; }; "activeTab": { "alias": "activeTab"; "required": false; }; "inTab": { "alias": "inTab"; "required": false; }; "nestingLevel": { "alias": "nestingLevel"; "required": false; }; }, { "dataLoad": "dataLoad"; "totalChange": "totalChange"; "actionSuccess": "actionSuccess"; "refreshClick": "refreshClick"; "searchClick": "searchClick"; "createClick": "createClick"; "actionClick": "actionClick"; "inputChange": "inputChange"; "actionResponse": "actionResponse"; }, never, never, false, never>;
3178
- }
3179
-
3180
3509
  interface ExtraButtonVM {
3181
3510
  button: Button;
3182
3511
  visible: boolean;
@@ -3195,8 +3524,12 @@ declare class DetailsDialog implements OnInit, OnDestroy {
3195
3524
  private authService;
3196
3525
  tableConfigService: TableConfigService;
3197
3526
  private zone;
3198
- constructor(breakpointObserver: BreakpointObserver, loaderService: LoaderService, dataService: DataServiceLib, messageService: MessageService, dialogRef: MatDialogRef<DetailsDialog>, detailsConfig: DetailsDialogConfig, buttonService: ButtonService, dialogService: DialogService, authService: AuthService, tableConfigService: TableConfigService, zone: NgZone);
3527
+ private apiErrorService;
3528
+ constructor(breakpointObserver: BreakpointObserver, loaderService: LoaderService, dataService: DataServiceLib, messageService: MessageService, dialogRef: MatDialogRef<DetailsDialog>, detailsConfig: DetailsDialogConfig, buttonService: ButtonService, dialogService: DialogService, authService: AuthService, tableConfigService: TableConfigService, zone: NgZone, // TS-20: NgZone injected
3529
+ apiErrorService: ApiErrorService);
3199
3530
  private subs;
3531
+ modern: boolean;
3532
+ get effQuietLoading(): boolean;
3200
3533
  ngOnInit(): void;
3201
3534
  ngOnDestroy(): void;
3202
3535
  private refreshSubscription;
@@ -3226,6 +3559,26 @@ declare class DetailsDialog implements OnInit, OnDestroy {
3226
3559
  showTabs: boolean;
3227
3560
  isLoadComplete: boolean;
3228
3561
  isProcessing: boolean;
3562
+ private static readonly SKELETON_DELAY_MS;
3563
+ private static readonly SKELETON_MIN_MS;
3564
+ showSkeleton: boolean;
3565
+ private readsInFlight;
3566
+ private skeletonDelayTimer;
3567
+ private skeletonSettleTimer;
3568
+ private pending;
3569
+ private skeletonShownAt;
3570
+ get entityLoading(): boolean;
3571
+ progressPercent: number;
3572
+ progressDisplay: number;
3573
+ private progress;
3574
+ private progressRunning;
3575
+ get showProgressLine(): boolean;
3576
+ private syncProgress;
3577
+ private beginRead;
3578
+ private skeletonWouldRender;
3579
+ private settleRead;
3580
+ private finishRead;
3581
+ private flushPending;
3229
3582
  inputChange: EventEmitter<any>;
3230
3583
  private initAutoRefresh;
3231
3584
  private startAutoRefresh;
@@ -3273,10 +3626,11 @@ declare class FormComponent implements OnInit, OnDestroy, DoCheck {
3273
3626
  private messageService;
3274
3627
  private dataService;
3275
3628
  private authService;
3629
+ private apiErrorService;
3276
3630
  private subscriptions;
3277
3631
  visibleFields: Field[];
3278
3632
  private lastMode;
3279
- constructor(messageService: MessageService, dataService: DataServiceLib, authService: AuthService);
3633
+ constructor(messageService: MessageService, dataService: DataServiceLib, authService: AuthService, apiErrorService: ApiErrorService);
3280
3634
  ngOnDestroy(): void;
3281
3635
  ngOnInit(): void;
3282
3636
  ngDoCheck(): void;
@@ -3324,6 +3678,29 @@ declare class FormComponent implements OnInit, OnDestroy, DoCheck {
3324
3678
  static ɵcmp: i0.ɵɵComponentDeclaration<FormComponent, "spa-form", never, { "files": { "alias": "files"; "required": false; }; "data": { "alias": "data"; "required": false; }; "config": { "alias": "config"; "required": false; }; }, { "buttonClick": "buttonClick"; "inputChange": "inputChange"; }, ["dynamicSelectTemplate"], never, false, never>;
3325
3679
  }
3326
3680
 
3681
+ interface SkeletonUnit {
3682
+ section: boolean;
3683
+ blank: boolean;
3684
+ span: boolean;
3685
+ labelWidth: string;
3686
+ delay: string;
3687
+ }
3688
+ declare class FormSkeletonComponent implements OnChanges {
3689
+ private authService;
3690
+ constructor(authService: AuthService);
3691
+ config: FormConfig;
3692
+ units: SkeletonUnit[];
3693
+ multiColumn: boolean;
3694
+ ngOnChanges(): void;
3695
+ private static readonly LABEL_WIDTHS;
3696
+ private static readonly STAGGER_MS;
3697
+ private build;
3698
+ private isSpanned;
3699
+ private isVisible;
3700
+ static ɵfac: i0.ɵɵFactoryDeclaration<FormSkeletonComponent, never>;
3701
+ static ɵcmp: i0.ɵɵComponentDeclaration<FormSkeletonComponent, "spa-form-skeleton", never, { "config": { "alias": "config"; "required": false; }; }, {}, never, never, false, never>;
3702
+ }
3703
+
3327
3704
  declare class CamelToWordsPipe implements PipeTransform {
3328
3705
  transform(value: string): string;
3329
3706
  static ɵfac: i0.ɵɵFactoryDeclaration<CamelToWordsPipe, never>;
@@ -3335,6 +3712,8 @@ declare class NumberComponent implements OnInit, OnChanges {
3335
3712
  ngOnChanges(changes: SimpleChanges): void;
3336
3713
  ngOnInit(): void;
3337
3714
  ngAfterViewInit(): void;
3715
+ get inputMode(): string;
3716
+ blockNonNumericKeys(event: KeyboardEvent): void;
3338
3717
  initControl(control: FormControl): void;
3339
3718
  hideRequiredControl: FormControl<boolean>;
3340
3719
  hide: boolean;
@@ -3472,6 +3851,7 @@ declare class TableHeaderComponent implements OnInit, OnChanges {
3472
3851
  tileData: any;
3473
3852
  isRealTime: boolean;
3474
3853
  isConnected: boolean;
3854
+ refreshing: boolean;
3475
3855
  createClick: EventEmitter<void>;
3476
3856
  customClick: EventEmitter<any>;
3477
3857
  refreshClick: EventEmitter<void>;
@@ -3486,6 +3866,7 @@ declare class TableHeaderComponent implements OnInit, OnChanges {
3486
3866
  onImportClick(): void;
3487
3867
  onRefreshClick(): void;
3488
3868
  onFilterChange(text: string): void;
3869
+ get showGroupedFilter(): boolean;
3489
3870
  onTileClick(tile: any): void;
3490
3871
  onTileUnClick(tile: any): void;
3491
3872
  getHeaderButtons(): Button[];
@@ -3494,7 +3875,7 @@ declare class TableHeaderComponent implements OnInit, OnChanges {
3494
3875
  testDisabled(button: Button): boolean;
3495
3876
  getButtonColor(button: Button, row: any): string;
3496
3877
  static ɵfac: i0.ɵɵFactoryDeclaration<TableHeaderComponent, never>;
3497
- static ɵcmp: i0.ɵɵComponentDeclaration<TableHeaderComponent, "app-table-header", never, { "lastSearch": { "alias": "lastSearch"; "required": false; }; "config": { "alias": "config"; "required": false; }; "hideTitle": { "alias": "hideTitle"; "required": false; }; "tableDataSource": { "alias": "tableDataSource"; "required": false; }; "tileConfig": { "alias": "tileConfig"; "required": false; }; "smallScreen": { "alias": "smallScreen"; "required": false; }; "tileReload": { "alias": "tileReload"; "required": false; }; "showFilterButton": { "alias": "showFilterButton"; "required": false; }; "data": { "alias": "data"; "required": false; }; "tileData": { "alias": "tileData"; "required": false; }; "isRealTime": { "alias": "isRealTime"; "required": false; }; "isConnected": { "alias": "isConnected"; "required": false; }; }, { "createClick": "createClick"; "customClick": "customClick"; "refreshClick": "refreshClick"; "tileClick": "tileClick"; "tileUnClick": "tileUnClick"; "filterChange": "filterChange"; }, never, never, false, never>;
3878
+ static ɵcmp: i0.ɵɵComponentDeclaration<TableHeaderComponent, "app-table-header", never, { "lastSearch": { "alias": "lastSearch"; "required": false; }; "config": { "alias": "config"; "required": false; }; "hideTitle": { "alias": "hideTitle"; "required": false; }; "tableDataSource": { "alias": "tableDataSource"; "required": false; }; "tileConfig": { "alias": "tileConfig"; "required": false; }; "smallScreen": { "alias": "smallScreen"; "required": false; }; "tileReload": { "alias": "tileReload"; "required": false; }; "showFilterButton": { "alias": "showFilterButton"; "required": false; }; "data": { "alias": "data"; "required": false; }; "tileData": { "alias": "tileData"; "required": false; }; "isRealTime": { "alias": "isRealTime"; "required": false; }; "isConnected": { "alias": "isConnected"; "required": false; }; "refreshing": { "alias": "refreshing"; "required": false; }; }, { "createClick": "createClick"; "customClick": "customClick"; "refreshClick": "refreshClick"; "tileClick": "tileClick"; "tileUnClick": "tileUnClick"; "filterChange": "filterChange"; }, never, never, false, never>;
3498
3879
  }
3499
3880
 
3500
3881
  interface CellVM {
@@ -4003,6 +4384,7 @@ declare class GroupsComponent implements OnInit {
4003
4384
  config: TableConfig;
4004
4385
  dataSource: any[];
4005
4386
  displayedButtons: Button[];
4387
+ showOwnFilter: boolean;
4006
4388
  actionClick: EventEmitter<{
4007
4389
  name: string;
4008
4390
  row: any;
@@ -4038,13 +4420,14 @@ declare class GroupsComponent implements OnInit {
4038
4420
  itemActionClicked(buttonName: string, item: any, group: GroupData): void;
4039
4421
  headerButtonClicked(button: Button, group: GroupData): void;
4040
4422
  static ɵfac: i0.ɵɵFactoryDeclaration<GroupsComponent, never>;
4041
- static ɵcmp: i0.ɵɵComponentDeclaration<GroupsComponent, "spa-groups", never, { "config": { "alias": "config"; "required": false; }; "dataSource": { "alias": "dataSource"; "required": false; }; "displayedButtons": { "alias": "displayedButtons"; "required": false; }; }, { "actionClick": "actionClick"; }, never, never, false, never>;
4423
+ static ɵcmp: i0.ɵɵComponentDeclaration<GroupsComponent, "spa-groups", never, { "config": { "alias": "config"; "required": false; }; "dataSource": { "alias": "dataSource"; "required": false; }; "displayedButtons": { "alias": "displayedButtons"; "required": false; }; "showOwnFilter": { "alias": "showOwnFilter"; "required": false; }; "filterText": { "alias": "filterText"; "required": false; }; }, { "actionClick": "actionClick"; }, never, never, false, never>;
4042
4424
  }
4043
4425
 
4044
4426
  declare class TitleActionsComponent implements OnInit {
4045
4427
  private dataService;
4046
4428
  private messageService;
4047
- constructor(dataService: DataServiceLib, messageService: MessageService);
4429
+ private apiErrorService;
4430
+ constructor(dataService: DataServiceLib, messageService: MessageService, apiErrorService: ApiErrorService);
4048
4431
  ngOnInit(): void;
4049
4432
  titleActions: Field[];
4050
4433
  actionChange: EventEmitter<{
@@ -4127,7 +4510,8 @@ declare class PrivacyDialogComponent {
4127
4510
  declare class ChartsComponent implements OnInit {
4128
4511
  private dataService;
4129
4512
  private messageService;
4130
- constructor(dataService: DataServiceLib, messageService: MessageService);
4513
+ private apiErrorService;
4514
+ constructor(dataService: DataServiceLib, messageService: MessageService, apiErrorService: ApiErrorService);
4131
4515
  config: ChartConfig;
4132
4516
  data: any;
4133
4517
  reload: Subject<boolean>;
@@ -4337,6 +4721,7 @@ declare class ToastComponent implements OnInit, OnDestroy {
4337
4721
  declare class AgentComponent implements OnInit, OnDestroy, AfterViewChecked {
4338
4722
  agentService: AgentService;
4339
4723
  private signalRService;
4724
+ private zone;
4340
4725
  messageContainer: ElementRef;
4341
4726
  messageInput: ElementRef;
4342
4727
  cameraInput: ElementRef<HTMLInputElement>;
@@ -4362,7 +4747,43 @@ declare class AgentComponent implements OnInit, OnDestroy, AfterViewChecked {
4362
4747
  private recordTimer;
4363
4748
  private stopMode;
4364
4749
  private static readonly MAX_RECORD_SECONDS;
4365
- constructor(agentService: AgentService, signalRService: SignalRService);
4750
+ voiceMode: boolean;
4751
+ voiceState: 'idle' | 'starting' | 'listening' | 'capturing' | 'thinking' | 'speaking';
4752
+ voiceTranscript: string;
4753
+ voiceReply: string;
4754
+ voiceError: string;
4755
+ voiceLevel: number;
4756
+ voiceThreshold: number;
4757
+ noiseMultiplier: number;
4758
+ maxThreshold: number;
4759
+ onsetMs: number;
4760
+ silenceMs: number;
4761
+ minSpeechMs: number;
4762
+ noiseFloor: number;
4763
+ activeThreshold: number;
4764
+ private static readonly SETTLE_MS;
4765
+ private static readonly CALIBRATION_MS;
4766
+ private static readonly CONTINUE_RATIO;
4767
+ private static readonly MAX_UTTERANCE_MS;
4768
+ private static readonly IDLE_MS;
4769
+ private static readonly MAX_SILENT_MS;
4770
+ private calibrationEndsAt;
4771
+ private calibrationSamples;
4772
+ private loudSince;
4773
+ private voiceRecorder;
4774
+ private voiceStream;
4775
+ private voiceChunks;
4776
+ private audioContext;
4777
+ private analyser;
4778
+ private vadTimer;
4779
+ private player;
4780
+ private speechStartedAt;
4781
+ private lastLoudAt;
4782
+ private listenStartedAt;
4783
+ private silentSince;
4784
+ private abandonUtterance;
4785
+ constructor(agentService: AgentService, signalRService: SignalRService, zone: NgZone);
4786
+ private setVoiceState;
4366
4787
  get agentName(): string;
4367
4788
  ngOnInit(): void;
4368
4789
  ngAfterViewChecked(): void;
@@ -4379,6 +4800,31 @@ declare class AgentComponent implements OnInit, OnDestroy, AfterViewChecked {
4379
4800
  stopRecording(): void;
4380
4801
  stopAndTranscribe(): void;
4381
4802
  cancelRecording(): void;
4803
+ micHeld: boolean;
4804
+ private micHoldTimer;
4805
+ private micHoldFired;
4806
+ private static readonly MIC_HOLD_MS;
4807
+ onMicPressStart(): void;
4808
+ onMicPressEnd(): void;
4809
+ onMicClick(): void;
4810
+ startVoiceMode(): Promise<void>;
4811
+ stopVoiceMode(): void;
4812
+ private beginListening;
4813
+ private startVad;
4814
+ private evaluateVad;
4815
+ private applyCalibration;
4816
+ private endUtterance;
4817
+ private onUtteranceCaptured;
4818
+ private onTurnAnswered;
4819
+ private speakThenListen;
4820
+ private speakFallback;
4821
+ private afterSpeaking;
4822
+ private earcon;
4823
+ private releaseMic;
4824
+ private stopVoiceCapture;
4825
+ private stopPlayback;
4826
+ get voiceStateLabel(): string;
4827
+ get voiceStateIcon(): string;
4382
4828
  takePhoto(): void;
4383
4829
  choosePhoto(): void;
4384
4830
  onPhotoSelected(event: Event): void;
@@ -4401,12 +4847,19 @@ declare class ImportDialogComponent implements OnInit {
4401
4847
  private messageService;
4402
4848
  private dialogRef;
4403
4849
  config: ImportConfig;
4404
- stepper: MatStepper;
4405
4850
  entity: string;
4406
4851
  title: string;
4407
4852
  loading: boolean;
4853
+ stepIndex: number;
4854
+ stepsConfig: StepConfig;
4855
+ reviewTableConfig: TableConfig;
4856
+ reviewRows: any[];
4857
+ editingRow: any;
4858
+ private buildReviewTable;
4859
+ rebuildReviewRows(): void;
4408
4860
  batchId: number;
4409
4861
  status: number;
4862
+ reversible: boolean;
4410
4863
  fileName: string;
4411
4864
  fields: any[];
4412
4865
  headers: any[];
@@ -4420,7 +4873,6 @@ declare class ImportDialogComponent implements OnInit {
4420
4873
  rows: any[];
4421
4874
  committedCount: number;
4422
4875
  selectedFile: File;
4423
- onlyProblems: boolean;
4424
4876
  editingRowId: number;
4425
4877
  editModel: any;
4426
4878
  constructor(httpService: HttpService, http: HttpClient, messageService: MessageService, dialogRef: MatDialogRef<ImportDialogComponent>, config: ImportConfig);
@@ -4436,21 +4888,19 @@ declare class ImportDialogComponent implements OnInit {
4436
4888
  confidenceClass(m: any): string;
4437
4889
  onMappingChange(m: any): void;
4438
4890
  confirmMapping(): void;
4439
- get reviewColumns(): any[];
4440
- get displayedColumns(): string[];
4441
- get visibleRows(): any[];
4891
+ reviewColumns: any[];
4892
+ private computeReviewColumns;
4442
4893
  displayFor(property: string): string;
4443
- cellValue(row: any, property: string): any;
4444
- cellSeverity(row: any, property: string): string;
4445
4894
  rowIssueText(row: any): string;
4446
4895
  loadRows(after?: () => void): void;
4447
4896
  startEdit(row: any): void;
4448
4897
  cancelEdit(): void;
4449
- saveEdit(row: any): void;
4898
+ saveEdit(): void;
4450
4899
  refreshBatch(): void;
4451
4900
  doCommit(): void;
4452
4901
  startOver(): void;
4453
4902
  close(): void;
4903
+ undoImport(): void;
4454
4904
  private applyBatch;
4455
4905
  private applySummary;
4456
4906
  private resetState;
@@ -4480,6 +4930,7 @@ declare class CurrencyInputMaskDirective implements ControlValueAccessor, OnInit
4480
4930
  handleCut(event: any): void;
4481
4931
  handleKeypress(event: any): void;
4482
4932
  handleInput(event: any): void;
4933
+ private sanitizeVisibleValue;
4483
4934
  handlePaste(event: any): void;
4484
4935
  handleBlur(event: any): void;
4485
4936
  registerOnChange(callbackFunction: Function): void;
@@ -4511,7 +4962,7 @@ declare class CurrencyInputModule {
4511
4962
 
4512
4963
  declare class TinSpaModule {
4513
4964
  static ɵfac: i0.ɵɵFactoryDeclaration<TinSpaModule, never>;
4514
- static ɵmod: i0.ɵɵNgModuleDeclaration<TinSpaModule, [typeof TinSpaComponent, typeof TextComponent, typeof TextMaskComponent, typeof TextAreaComponent, typeof TextSingleComponent, typeof CheckComponent, typeof DateComponent, typeof DatetimeComponent, typeof LabelComponent, typeof SelectComponent, typeof ActivityComponent, typeof FilterComponent, typeof messageDialog, typeof MoneyComponent, typeof OptionComponent, typeof TilesComponent, typeof StepsComponent, typeof AttachComponent, typeof ChipsComponent, typeof LoaderComponent, typeof NavMenuComponent, typeof TableComponent, typeof DetailsDialog, typeof FormComponent, typeof CamelToWordsPipe, typeof NumberComponent, typeof SearchComponent, typeof ViewerComponent, typeof viewerDialog, typeof ListDialogComponent, typeof InvitationsTableComponent, typeof TableHeaderComponent, typeof TableRowComponent, typeof TableActionComponent, typeof InlineCellComponent, typeof AlertComponent, typeof EmailComponent, typeof PageComponent, typeof SelectCommonComponent, typeof SuffixComponent, typeof SelectContextDirective, typeof SelectLiteComponent, typeof TextMultiComponent, typeof SelectMultiComponent, typeof SelectBitwiseComponent, typeof HtmlComponent, typeof EditorComponent, typeof NotesComponent, typeof CapsulesComponent, typeof CardsComponent, typeof TabsComponent, typeof StatusesComponent, typeof GroupsComponent, typeof TitleActionsComponent, typeof WelcomeComponent, typeof TermsDialogComponent, typeof PrivacyDialogComponent, typeof ChartsComponent, typeof FeatureDirective, typeof SpaLandingComponent, typeof ToastComponent, typeof AgentComponent, typeof OfflineIndicatorComponent, typeof ImportDialogComponent], [typeof SpaMatModule, typeof i66.HttpClientModule, typeof CurrencyInputModule, typeof i68.AngularEditorModule, typeof i69.BaseChartDirective, typeof i70.DragDropModule], [typeof TinSpaComponent, typeof SpaMatModule, typeof AlertComponent, typeof TextComponent, typeof TextMaskComponent, typeof TextAreaComponent, typeof TextSingleComponent, typeof TextMultiComponent, typeof messageDialog, typeof NavMenuComponent, typeof LoaderComponent, typeof TilesComponent, typeof DateComponent, typeof SelectComponent, typeof SelectBitwiseComponent, typeof SelectMultiComponent, typeof DatetimeComponent, typeof CheckComponent, typeof AttachComponent, typeof MoneyComponent, typeof ChipsComponent, typeof ActivityComponent, typeof OptionComponent, typeof LabelComponent, typeof StepsComponent, typeof FilterComponent, typeof TableComponent, typeof DetailsDialog, typeof FormComponent, typeof NumberComponent, typeof SearchComponent, typeof ViewerComponent, typeof viewerDialog, typeof ImportDialogComponent, typeof ListDialogComponent, typeof ListDialogComponent, typeof EmailComponent, typeof PageComponent, typeof HtmlComponent, typeof EditorComponent, typeof NotesComponent, typeof CapsulesComponent, typeof TabsComponent, typeof StatusesComponent, typeof GroupsComponent, typeof TitleActionsComponent, typeof WelcomeComponent, typeof InvitationsTableComponent, typeof TermsDialogComponent, typeof PrivacyDialogComponent, typeof SelectLiteComponent, typeof ChartsComponent, typeof FeatureDirective, typeof SpaLandingComponent, typeof AgentComponent, typeof OfflineIndicatorComponent]>;
4965
+ static ɵmod: i0.ɵɵNgModuleDeclaration<TinSpaModule, [typeof TinSpaComponent, typeof TextComponent, typeof TextMaskComponent, typeof TextAreaComponent, typeof TextSingleComponent, typeof CheckComponent, typeof DateComponent, typeof DatetimeComponent, typeof LabelComponent, typeof SelectComponent, typeof ActivityComponent, typeof FilterComponent, typeof messageDialog, typeof MoneyComponent, typeof OptionComponent, typeof TilesComponent, typeof StepsComponent, typeof ChecklistComponent, typeof AttachComponent, typeof ChipsComponent, typeof LoaderComponent, typeof NavMenuComponent, typeof TableComponent, typeof DetailsDialog, typeof FormComponent, typeof FormSkeletonComponent, typeof CamelToWordsPipe, typeof NumberComponent, typeof SearchComponent, typeof ViewerComponent, typeof viewerDialog, typeof ListDialogComponent, typeof InvitationsTableComponent, typeof TableHeaderComponent, typeof TableRowComponent, typeof TableActionComponent, typeof InlineCellComponent, typeof AlertComponent, typeof EmailComponent, typeof PageComponent, typeof SelectCommonComponent, typeof SuffixComponent, typeof SelectContextDirective, typeof SelectLiteComponent, typeof TextMultiComponent, typeof SelectMultiComponent, typeof SelectBitwiseComponent, typeof HtmlComponent, typeof EditorComponent, typeof NotesComponent, typeof CapsulesComponent, typeof CardsComponent, typeof TabsComponent, typeof StatusesComponent, typeof GroupsComponent, typeof TitleActionsComponent, typeof WelcomeComponent, typeof TermsDialogComponent, typeof PrivacyDialogComponent, typeof ChartsComponent, typeof FeatureDirective, typeof SpaLandingComponent, typeof ToastComponent, typeof AgentComponent, typeof OfflineIndicatorComponent, typeof ImportDialogComponent], [typeof SpaMatModule, typeof i68.HttpClientModule, typeof CurrencyInputModule, typeof i70.AngularEditorModule, typeof i71.BaseChartDirective, typeof i72.DragDropModule], [typeof TinSpaComponent, typeof SpaMatModule, typeof AlertComponent, typeof TextComponent, typeof TextMaskComponent, typeof TextAreaComponent, typeof TextSingleComponent, typeof TextMultiComponent, typeof messageDialog, typeof NavMenuComponent, typeof LoaderComponent, typeof TilesComponent, typeof DateComponent, typeof SelectComponent, typeof SelectBitwiseComponent, typeof SelectMultiComponent, typeof DatetimeComponent, typeof CheckComponent, typeof AttachComponent, typeof MoneyComponent, typeof ChipsComponent, typeof ActivityComponent, typeof OptionComponent, typeof LabelComponent, typeof StepsComponent, typeof ChecklistComponent, typeof FilterComponent, typeof TableComponent, typeof DetailsDialog, typeof FormComponent, typeof FormSkeletonComponent, typeof NumberComponent, typeof SearchComponent, typeof ViewerComponent, typeof viewerDialog, typeof ImportDialogComponent, typeof ListDialogComponent, typeof ListDialogComponent, typeof EmailComponent, typeof PageComponent, typeof HtmlComponent, typeof EditorComponent, typeof NotesComponent, typeof CapsulesComponent, typeof TabsComponent, typeof StatusesComponent, typeof GroupsComponent, typeof TitleActionsComponent, typeof WelcomeComponent, typeof InvitationsTableComponent, typeof TermsDialogComponent, typeof PrivacyDialogComponent, typeof SelectLiteComponent, typeof ChartsComponent, typeof FeatureDirective, typeof SpaLandingComponent, typeof AgentComponent, typeof OfflineIndicatorComponent]>;
4515
4966
  static ɵinj: i0.ɵɵInjectorDeclaration<TinSpaModule>;
4516
4967
  }
4517
4968
 
@@ -4531,8 +4982,10 @@ declare class LoginComponent implements OnInit {
4531
4982
  private setupService;
4532
4983
  private lastRouteService;
4533
4984
  private runtimeConfig;
4985
+ private apiErrorService;
4534
4986
  private socialAuthConfig;
4535
- constructor(httpService: HttpService, storageService: StorageService, router: Router, messageService: MessageService, dataService: DataServiceLib, authService: AuthService, logService: LogService, route: ActivatedRoute, notificationsService: NotificationsService, signalRService: SignalRService, msalService: MsalService, dialog: MatDialog, setupService: SetupService, lastRouteService: LastRouteService, runtimeConfig: TinSpaRuntimeConfig, socialAuthConfig: SocialAuthServiceConfig | null);
4987
+ constructor(httpService: HttpService, storageService: StorageService, router: Router, messageService: MessageService, dataService: DataServiceLib, authService: AuthService, logService: LogService, route: ActivatedRoute, notificationsService: NotificationsService, signalRService: SignalRService, msalService: MsalService, dialog: MatDialog, setupService: SetupService, lastRouteService: LastRouteService, runtimeConfig: TinSpaRuntimeConfig, apiErrorService: ApiErrorService, // Added: routes application-level (HTTP 200, success:false) failures through the shared classify + dedupe path
4988
+ socialAuthConfig: SocialAuthServiceConfig | null);
4536
4989
  private resumeTarget;
4537
4990
  ngOnInit(): void;
4538
4991
  loginWithMS(): void;
@@ -4556,7 +5009,7 @@ declare class LoginComponent implements OnInit {
4556
5009
  notifications(): void;
4557
5010
  openTerms(): void;
4558
5011
  openPrivacy(): void;
4559
- static ɵfac: i0.ɵɵFactoryDeclaration<LoginComponent, [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, { optional: true; }]>;
5012
+ static ɵfac: i0.ɵɵFactoryDeclaration<LoginComponent, [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, { optional: true; }]>;
4560
5013
  static ɵcmp: i0.ɵɵComponentDeclaration<LoginComponent, "spa-login", never, {}, {}, never, never, false, never>;
4561
5014
  }
4562
5015
 
@@ -4572,8 +5025,10 @@ declare class SignupComponent implements OnInit {
4572
5025
  private setupService;
4573
5026
  private dialog;
4574
5027
  private cdr;
5028
+ private apiErrorService;
4575
5029
  constructor(httpService: HttpService, messageService: MessageService, dataService: DataServiceLib, authService: AuthService, storageService: StorageService, router: Router, msalService: MsalService, notificationsService: NotificationsService, setupService: SetupService, // Added: SetupService for setup badge
4576
- dialog: MatDialog, cdr: ChangeDetectorRef);
5030
+ dialog: MatDialog, cdr: ChangeDetectorRef, // Changed: Inject ChangeDetectorRef for invitation toggle
5031
+ apiErrorService: ApiErrorService);
4577
5032
  ngOnInit(): void;
4578
5033
  appConfig: AppConfig;
4579
5034
  style: string;
@@ -4599,7 +5054,8 @@ declare class RecoverAccountComponent implements OnInit {
4599
5054
  private dataService;
4600
5055
  authService: AuthService;
4601
5056
  private messageService;
4602
- constructor(location: Location, dataService: DataServiceLib, authService: AuthService, messageService: MessageService);
5057
+ private apiErrorService;
5058
+ constructor(location: Location, dataService: DataServiceLib, authService: AuthService, messageService: MessageService, apiErrorService: ApiErrorService);
4603
5059
  ngOnInit(): void;
4604
5060
  userName: string;
4605
5061
  recover(): void;
@@ -4621,7 +5077,8 @@ declare class ChangePasswordComponent implements OnInit {
4621
5077
  dataService: DataServiceLib;
4622
5078
  private authService;
4623
5079
  private route;
4624
- constructor(router: Router, location: Location, httpService: HttpService, messageService: MessageService, dataService: DataServiceLib, authService: AuthService, route: ActivatedRoute);
5080
+ private apiErrorService;
5081
+ constructor(router: Router, location: Location, httpService: HttpService, messageService: MessageService, dataService: DataServiceLib, authService: AuthService, route: ActivatedRoute, apiErrorService: ApiErrorService);
4625
5082
  ngOnInit(): void;
4626
5083
  myRole: any;
4627
5084
  redirectPath: any;
@@ -4638,7 +5095,8 @@ declare class ProfileComponent implements OnInit {
4638
5095
  private httpService;
4639
5096
  private router;
4640
5097
  private authService;
4641
- constructor(dataService: DataServiceLib, messageService: MessageService, httpService: HttpService, router: Router, authService: AuthService);
5098
+ private apiErrorService;
5099
+ constructor(dataService: DataServiceLib, messageService: MessageService, httpService: HttpService, router: Router, authService: AuthService, apiErrorService: ApiErrorService);
4642
5100
  ngOnInit(): void;
4643
5101
  isProcessing: boolean;
4644
5102
  myRole: any;
@@ -4693,7 +5151,8 @@ declare class RolesComponent implements OnInit {
4693
5151
  private dialogService;
4694
5152
  dialog: MatDialog;
4695
5153
  private messageService;
4696
- constructor(httpService: HttpService, router: Router, authService: AuthService, dataService: DataServiceLib, dialogService: DialogService, dialog: MatDialog, messageService: MessageService);
5154
+ private apiErrorService;
5155
+ constructor(httpService: HttpService, router: Router, authService: AuthService, dataService: DataServiceLib, dialogService: DialogService, dialog: MatDialog, messageService: MessageService, apiErrorService: ApiErrorService);
4697
5156
  ngOnInit(): void;
4698
5157
  isProcessing: boolean;
4699
5158
  roles: Role[];
@@ -4725,7 +5184,8 @@ declare class CreateAccountComponent implements OnInit {
4725
5184
  private dataService;
4726
5185
  private authService;
4727
5186
  router: Router;
4728
- constructor(httpService: HttpService, messageService: MessageService, dataService: DataServiceLib, authService: AuthService, router: Router);
5187
+ private apiErrorService;
5188
+ constructor(httpService: HttpService, messageService: MessageService, dataService: DataServiceLib, authService: AuthService, router: Router, apiErrorService: ApiErrorService);
4729
5189
  ngOnInit(): void;
4730
5190
  appConfig: AppConfig;
4731
5191
  isProcessing: boolean;
@@ -4759,7 +5219,8 @@ declare class LogsComponent implements OnInit {
4759
5219
  declare class SettingsComponent implements OnInit {
4760
5220
  private dataService;
4761
5221
  private messageService;
4762
- constructor(dataService: DataServiceLib, messageService: MessageService);
5222
+ private apiErrorService;
5223
+ constructor(dataService: DataServiceLib, messageService: MessageService, apiErrorService: ApiErrorService);
4763
5224
  ngOnInit(): void;
4764
5225
  _filterText: string;
4765
5226
  settings: any;
@@ -4955,6 +5416,7 @@ declare class TransactionTypesComponent implements OnInit {
4955
5416
 
4956
5417
  declare class TransactionsComponent implements OnInit {
4957
5418
  private accountingService;
5419
+ private dataService;
4958
5420
  private dialog;
4959
5421
  page?: PageComponent;
4960
5422
  pageConfig: PageConfig;
@@ -5107,6 +5569,7 @@ declare class FiscalPeriodsComponent implements OnInit {
5107
5569
 
5108
5570
  declare class ReceiptsComponent implements OnInit {
5109
5571
  accountingService: AccountingService;
5572
+ private dataService;
5110
5573
  private dialog;
5111
5574
  private httpService;
5112
5575
  private http;
@@ -5149,6 +5612,7 @@ declare class ReceiptDialogComponent implements OnInit {
5149
5612
  declare class BankReconciliationComponent implements OnInit {
5150
5613
  accountingService: AccountingService;
5151
5614
  private dialog;
5615
+ private dataService;
5152
5616
  page?: PageComponent;
5153
5617
  pageConfig: PageConfig;
5154
5618
  constructor();
@@ -5202,6 +5666,7 @@ declare class ReconcileDialogComponent implements OnInit {
5202
5666
 
5203
5667
  declare class RevenueSchedulesComponent implements OnInit {
5204
5668
  accountingService: AccountingService;
5669
+ private dataService;
5205
5670
  private dialog;
5206
5671
  page?: PageComponent;
5207
5672
  pageConfig: PageConfig;
@@ -5900,7 +6365,7 @@ declare class AssetsModule {
5900
6365
 
5901
6366
  declare class SetupModule {
5902
6367
  static ɵfac: i0.ɵɵFactoryDeclaration<SetupModule, never>;
5903
- static ɵmod: i0.ɵɵNgModuleDeclaration<SetupModule, [typeof SetupGuideComponent], [typeof i4.CommonModule, typeof i3.FormsModule, typeof SpaMatModule], never>;
6368
+ static ɵmod: i0.ɵɵNgModuleDeclaration<SetupModule, [typeof SetupGuideComponent, typeof DayBookComponent], [typeof i4.CommonModule, typeof SpaMatModule, typeof TinSpaModule], never>;
5904
6369
  static ɵinj: i0.ɵɵInjectorDeclaration<SetupModule>;
5905
6370
  }
5906
6371
 
@@ -5910,5 +6375,5 @@ declare class SpaHomeModule {
5910
6375
  static ɵinj: i0.ɵɵInjectorDeclaration<SpaHomeModule>;
5911
6376
  }
5912
6377
 
5913
- export { ALSQUARE_SVG_DARK, ALSQUARE_SVG_WHITE, Account, AccountsComponent as AccountingAccountsComponent, AggregatesComponent as AccountingAggregatesComponent, AgingComponent as AccountingAgingComponent, CreditNotesComponent as AccountingCreditNotesComponent, CurrenciesComponent as AccountingCurrenciesComponent, AccountingDashboardComponent, InvoicesComponent as AccountingInvoicesComponent, AccountingModule, ReportsComponent as AccountingReportsComponent, AccountingService, StatementComponent as AccountingStatementComponent, TransactionTypesComponent as AccountingTransactionTypesComponent, TransactionsComponent as AccountingTransactionsComponent, VatReturnComponent as AccountingVatReturnComponent, Action, ActivityComponent, AdminModule, AgentComponent, AgentService, AlertComponent, AlertConfig, AlertMessage, AnalyticsService, ApiResponse, AppConfig, AppModelsComponent, AssetStatus, AssetsService, AttachComponent, AuthService, BankReconciliationComponent, BillingPageComponent, BrandsComponent, CacheConfig, CapItem, CapsulesComponent, CategoriesComponent, ChangePasswordComponent, ChangeUserPassword, ChartConfig, ChartsComponent, CheckComponent, ChipsComponent, Constants, Core, CreateAccountComponent, CreditNoteStatus, CustomersComponent, DataServiceLib, DateComponent, DatetimeComponent, DepartmentsComponent, DetailsDialog, DetailsDialogConfig, DetailsDialogProcessor, DetailsSource, DialogService, EditorComponent, EmailComponent, EmployeesComponent, ExportService, FeatureDirective, FilterComponent, FiscalPeriodStatus, FiscalPeriodsComponent, FormComponent, FormConfig, GeneralModule, GeneralService, GradesComponent, GroupsComponent, HRModule, HtmlComponent, HttpService, ImportDialogComponent, IndexModule, InventoryDashboardComponent, InventoryModule, InventoryService, InvitationsTableComponent, InvoiceDashboardComponent, InvoiceItemType, InvoiceStatus, JournalEntryDialogComponent, LabelComponent, LastRouteService, ListDialogComponent, ListDialogConfig, LoaderComponent, LoaderService, LoanPaymentsComponent, LoanProductsComponent, LoansComponent, LoansModule, LoansService, LogLevel, LogService, LoginComponent, LogsComponent, ManufacturingModule, MembershipComponent, MessageService, MoneyComponent, MovementType, NavMenuComponent, NotesComponent, NotesConfig, NotificationsService, NumberComponent, OfflineIndicatorComponent, OfflineService, OnboardingComponent, OptionComponent, OverviewDashboardComponent, OverviewModule, PageComponent, PageConfig, PaginationConfig, PayrollDashboardComponent, PayrollModule, PlansComponent, PositionsComponent, PreferencesComponent, PrivacyDialogComponent, Profile, ProfileComponent, PurchaseStatus, PurchasingDashboardComponent, PurchasingModule, PushNotificationService, QuoteStatus, QuotesComponent, ReceiptDialogComponent, ReceiptStatus, ReceiptsComponent, ReconcileDialogComponent, RecoverAccountComponent, Register, RevenueScheduleDialogComponent, RevenueSchedulesComponent, Role, RoleAccess, RolesComponent, SalesDashboardComponent, SalesModule, SearchComponent, SearchConfig, SecurityConfig, SelectBitwiseComponent, SelectComponent, SelectLiteComponent, SelectMultiComponent, SettingsComponent, SetupGuideComponent, SetupService, SignupComponent, SignupData, SpaAdminModule, SpaHomeModule, SpaIndexModule, SpaLandingComponent, SpaMatModule, SpaUserModule, StatementImportDialogComponent, StatusesComponent, Step, StepConfig, StepsComponent, StorageService, SubCategoriesComponent, SubscriptionPageComponent, SubscriptionService, SuppliersComponent, SyncComponent, TIN_SPA_RUNTIME_CONFIG, TabService, TableComponent, TableConfig, TabsComponent, TasksComponent, TenancyModule, TenantsComponent, TermsDialogComponent, TextAreaComponent, TextComponent, TextMaskComponent, TextMultiComponent, TextSingleComponent, TileConfig, TilesComponent, TinSpaComponent, TinSpaModule, TinSpaService, TitleActionsComponent, TransactionTiming, UnitOfMeasure, UpdateService, User, UserModule, UsersComponent, ViewerComponent, WelcomeComponent, WorkflowModule, authGuard, dialogOptions, featureGuard, getTinSpaAppSettings, loadTinSpaAppSettings, loginConfig, messageDialog, provideTinSpaRuntime, tinSpaLocationStrategyFactory, tinSpaMsalInstanceFactory, tinSpaRuntimeConfigFactory, viewerDialog };
5914
- export type { AgentMessage, AutoRefreshConfig, BitwiseOption, Button, CacheRule, CapsuleConfig, CardConfig, ChartItem, ChildField, CloseOptions, Color, Column, Confirm, ConversationSummary, CreateTabConfig, Field, GroupConfig, GroupData, Icon, ImportConfig, InlineEditConfig, LandingBrandOverride, LandingColors, LandingConfig, LandingFeature, LandingFooterColumn, LandingFooterLink, LandingMetric, LandingModuleGroup, LandingModuleTile, LandingNavLink, LandingPricingPlan, LandingSecurityItem, LandingStep, LandingTestimonial, OfflineConfig, OfflineEntry, OfflineOpStatus, OutboxOp, RefreshResult, SearchField, SetupConfig, SetupModule$1 as SetupModule, SetupRoleTemplate, SetupStatus, SetupStep, SetupStepAction, SpaChartType, StatusConfig, StatusItem, StatusState, TableViewType, Tile, TileChartConfig, TileChartType, TileStyle, TinSpaAppSettings, TinSpaMsalConfig, TinSpaMsalSettings, TinSpaRuntimeConfig, VisibilityValue, VisibleTab };
6378
+ export { ALSQUARE_SVG_DARK, ALSQUARE_SVG_WHITE, Account, AccountsComponent as AccountingAccountsComponent, AggregatesComponent as AccountingAggregatesComponent, AgingComponent as AccountingAgingComponent, CreditNotesComponent as AccountingCreditNotesComponent, CurrenciesComponent as AccountingCurrenciesComponent, AccountingDashboardComponent, InvoicesComponent as AccountingInvoicesComponent, AccountingModule, ReportsComponent as AccountingReportsComponent, AccountingService, StatementComponent as AccountingStatementComponent, TransactionTypesComponent as AccountingTransactionTypesComponent, TransactionsComponent as AccountingTransactionsComponent, VatReturnComponent as AccountingVatReturnComponent, Action, ActivityComponent, AdminModule, AgentComponent, AgentService, AlertComponent, AlertConfig, AlertMessage, AnalyticsService, ApiErrorService, ApiResponse, AppConfig, AppModelsComponent, AssetStatus, AssetsService, AttachComponent, AuthService, BankReconciliationComponent, BillingPageComponent, BrandsComponent, CacheConfig, CapItem, CapsulesComponent, CategoriesComponent, ChangePasswordComponent, ChangeUserPassword, ChartConfig, ChartsComponent, CheckComponent, ChecklistComponent, ChipsComponent, Constants, Core, CreateAccountComponent, CreditNoteStatus, CustomersComponent, DataServiceLib, DateComponent, DatetimeComponent, DayBookComponent, DepartmentsComponent, DetailsDialog, DetailsDialogConfig, DetailsDialogProcessor, DetailsSource, DialogService, EditorComponent, EmailComponent, EmployeesComponent, ExportService, FeatureDirective, FilterComponent, FiscalPeriodStatus, FiscalPeriodsComponent, FormComponent, FormConfig, FormSkeletonComponent, GeneralModule, GeneralService, GradesComponent, GroupsComponent, HRModule, HtmlComponent, HttpService, ImportDialogComponent, IndexModule, InventoryDashboardComponent, InventoryModule, InventoryService, InvitationsTableComponent, InvoiceDashboardComponent, InvoiceItemType, InvoiceStatus, JournalEntryDialogComponent, LabelComponent, LastRouteService, ListDialogComponent, ListDialogConfig, LoaderComponent, LoaderService, LoanPaymentsComponent, LoanProductsComponent, LoansComponent, LoansModule, LoansService, LogLevel, LogService, LoginComponent, LogsComponent, ManufacturingModule, MembershipComponent, MessageService, MoneyComponent, MovementType, NavMenuComponent, NotesComponent, NotesConfig, NotificationsService, NumberComponent, OfflineIndicatorComponent, OfflineService, OnboardingComponent, OptionComponent, OverviewDashboardComponent, OverviewModule, PageComponent, PageConfig, PaginationConfig, PayrollDashboardComponent, PayrollModule, PerceivedProgress, PlansComponent, PositionsComponent, PreferencesComponent, PrivacyDialogComponent, Profile, ProfileComponent, PurchaseStatus, PurchasingDashboardComponent, PurchasingModule, PushNotificationService, QUIET_DELAY_MS, QUIET_MIN_MS, QuoteStatus, QuotesComponent, ReceiptDialogComponent, ReceiptStatus, ReceiptsComponent, ReconcileDialogComponent, RecoverAccountComponent, Register, RevenueScheduleDialogComponent, RevenueSchedulesComponent, Role, RoleAccess, RolesComponent, SalesDashboardComponent, SalesModule, SearchComponent, SearchConfig, SecurityConfig, SelectBitwiseComponent, SelectComponent, SelectLiteComponent, SelectMultiComponent, SettingsComponent, SetupGuideComponent, SetupService, SignupComponent, SignupData, SpaAdminModule, SpaHomeModule, SpaIndexModule, SpaLandingComponent, SpaMatModule, SpaUserModule, StatementImportDialogComponent, StatusesComponent, Step, StepConfig, StepsComponent, StorageService, SubCategoriesComponent, SubscriptionPageComponent, SubscriptionService, SuppliersComponent, SyncComponent, TIN_SILENT_REQUEST, TIN_SPA_RUNTIME_CONFIG, TabService, TableComponent, TableConfig, TabsComponent, TasksComponent, TenancyModule, TenantsComponent, TermsDialogComponent, TextAreaComponent, TextComponent, TextMaskComponent, TextMultiComponent, TextSingleComponent, TileConfig, TilesComponent, TinSpaComponent, TinSpaModule, TinSpaService, TitleActionsComponent, TransactionTiming, UnitOfMeasure, UpdateService, User, UserModule, UsersComponent, ViewerComponent, WelcomeComponent, WorkflowModule, authGuard, dialogOptions, featureGuard, getTinSpaAppSettings, isSilentRequest, loadTinSpaAppSettings, loginConfig, messageDialog, provideTinSpaRuntime, resolveQuietLoading, silentContext, tinSpaLocationStrategyFactory, tinSpaMsalInstanceFactory, tinSpaRuntimeConfigFactory, viewerDialog };
6379
+ export type { AgentMessage, ApiErrorInfo, ApiErrorKind, AppFailureClass, AppFailureContext, AutoRefreshConfig, BitwiseOption, Button, CacheRule, CapsuleConfig, CardConfig, ChartItem, ChecklistAction, ChecklistConfig, ChecklistItem, ChildField, CloseOptions, Color, Column, Confirm, ConversationSummary, CreateTabConfig, DayBookConfig, DayBookLane, DayBookSection, DayBookStage, Field, GroupConfig, GroupData, Icon, ImportConfig, InlineEditConfig, LandingBrandOverride, LandingColors, LandingConfig, LandingFeature, LandingFooterColumn, LandingFooterLink, LandingMetric, LandingModuleGroup, LandingModuleTile, LandingNavLink, LandingPricingPlan, LandingSecurityItem, LandingStep, LandingTestimonial, OfflineConfig, OfflineEntry, OfflineOpStatus, OutboxOp, PerceivedProgressOptions, QuietLoadingHost, RefreshResult, SearchField, SetupConfig, SetupModule$1 as SetupModule, SetupRoleTemplate, SetupStatus, SetupStep, SetupStepAction, SpaChartType, StatusConfig, StatusItem, StatusState, TableSectionChip, TableSectionConfig, TableViewType, Tile, TileChartConfig, TileChartType, TileStyle, TinSpaAppSettings, TinSpaMsalConfig, TinSpaMsalSettings, TinSpaRuntimeConfig, TinSpaTableDefaults, VisibilityValue, VisibleTab };