@flusys/ng-layout 1.1.0 → 1.2.0-rc.1

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/package.json CHANGED
@@ -1,19 +1,17 @@
1
1
  {
2
2
  "name": "@flusys/ng-layout",
3
- "version": "1.1.0",
3
+ "version": "1.2.0-rc.1",
4
4
  "description": "Layout components for FLUSYS Angular applications",
5
5
  "license": "MIT",
6
6
  "peerDependencies": {
7
- "@angular/common": ">=21.0.0",
8
- "@angular/core": ">=21.0.0",
9
- "@angular/router": ">=21.0.0",
10
- "@flusys/ng-core": ">=1.1.0",
11
- "@flusys/ng-shared": ">=1.1.0",
12
- "@primeuix/themes": ">=1.0.0",
13
- "primeicons": ">=7.0.0",
14
- "primeng": ">=21.0.0",
7
+ "@angular/common": ">=22.0.0",
8
+ "@angular/core": ">=22.0.0",
9
+ "@angular/router": ">=22.0.0",
10
+ "@flusys/ng-core": ">=1.2.0-rc.1",
11
+ "@flusys/ng-shared": ">=1.2.0-rc.1",
12
+ "@flusys/ng-ui": ">=1.2.0-rc.1",
15
13
  "tailwindcss": ">=4.0.0",
16
- "tailwindcss-primeui": ">=0.6.0"
14
+ "rxjs": "^7.8.0"
17
15
  },
18
16
  "sideEffects": false,
19
17
  "module": "fesm2022/flusys-ng-layout.mjs",
@@ -27,6 +25,7 @@
27
25
  "default": "./fesm2022/flusys-ng-layout.mjs"
28
26
  }
29
27
  },
28
+ "type": "module",
30
29
  "dependencies": {
31
30
  "tslib": "^2.3.0"
32
31
  }
@@ -1,14 +1,18 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { Signal, InjectionToken } from '@angular/core';
2
+ import { Signal, InjectionToken, Type } from '@angular/core';
3
+ import { PresetName, ApplyThemeOptions } from '@flusys/ng-ui';
4
+ export { ApplyThemeOptions, applyTheme, buildBootstrapPreset } from '@flusys/ng-ui';
3
5
  import * as rxjs from 'rxjs';
4
6
  import { Observable } from 'rxjs';
7
+ import { LayoutConfig } from '@flusys/ng-core';
5
8
  import { ILogicNode, IconTypeEnum } from '@flusys/ng-shared';
6
9
  import * as _flusys_ng_layout from '@flusys/ng-layout';
7
- import * as _primeuix_themes_types from '@primeuix/themes/types';
8
10
 
9
11
  declare class AppFooter {
10
12
  private readonly layoutService;
11
13
  readonly appName: string;
14
+ readonly displayLogo: string;
15
+ readonly isLogoSvg: boolean;
12
16
  readonly authorName: string;
13
17
  readonly authorUrl: string;
14
18
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppFooter, never>;
@@ -17,8 +21,11 @@ declare class AppFooter {
17
21
 
18
22
  interface ILauncherApp {
19
23
  id: string;
20
- name: string;
21
- iconType: IconTypeEnum;
24
+ /** Display name (use nameKey for localization instead) */
25
+ name?: string;
26
+ /** Translation key for the name - preferred over name for localization */
27
+ nameKey?: string;
28
+ iconType?: IconTypeEnum;
22
29
  icon: string;
23
30
  url: string;
24
31
  /** Optional permission logic - if set, app only visible when logic passes */
@@ -46,7 +53,10 @@ interface IUserInfo {
46
53
  }
47
54
  interface IMenuItem {
48
55
  id?: string;
56
+ /** Display label (use labelKey for localization instead) */
49
57
  label?: string;
58
+ /** Translation key for the label - preferred over label for localization */
59
+ labelKey?: string;
50
60
  icon?: string;
51
61
  iconType?: number;
52
62
  routerLink?: string[];
@@ -64,28 +74,38 @@ interface ILayoutAuthState {
64
74
  loginUserData: Signal<IUserInfo | null>;
65
75
  }
66
76
  interface ILayoutAuthApi {
67
- logOut(): Observable<any>;
77
+ logOut(): Observable<unknown>;
68
78
  navigateLogin(withUrl?: boolean): void;
69
- switchCompany(companyId: string, branchId: string): Observable<any>;
79
+ switchCompany(companyId: string, branchId: string): Observable<unknown>;
70
80
  getUserCompanies(): Observable<ICompanyInfo[]>;
71
81
  getCompanyBranches(companyId: string): Observable<IBranchInfo[]>;
72
82
  }
73
83
  declare const LAYOUT_AUTH_STATE: InjectionToken<ILayoutAuthState>;
74
84
  declare const LAYOUT_AUTH_API: InjectionToken<ILayoutAuthApi>;
75
-
76
- interface LayoutConfig {
77
- preset?: string;
78
- primary?: string;
79
- surface?: string | null;
80
- darkTheme?: boolean;
81
- menuMode?: 'static' | 'overlay';
85
+ declare const LAYOUT_NOTIFICATION_BELL: InjectionToken<Type<unknown>>;
86
+ declare const LAYOUT_LANGUAGE_SELECTOR: InjectionToken<Type<unknown>>;
87
+ declare const LAYOUT_LANGUAGE_SELECTOR_PANEL: InjectionToken<Type<unknown>>;
88
+ declare const LAYOUT_SEARCHBAR: InjectionToken<Type<unknown>>;
89
+ declare const LAYOUT_IS_RTL: InjectionToken<Signal<boolean>>;
90
+ interface ISearchSuggestion {
91
+ label: string;
92
+ icon?: string;
93
+ routerLink?: string[];
94
+ data?: unknown;
95
+ }
96
+ interface ISearchAdapter {
97
+ getSuggestions(query: string): Observable<ISearchSuggestion[]>;
98
+ onSearch?(query: string): void;
82
99
  }
100
+ declare const LAYOUT_SEARCH_ADAPTER: InjectionToken<ISearchAdapter>;
101
+
83
102
  interface LayoutState {
84
103
  staticMenuDesktopInactive?: boolean;
85
104
  overlayMenuActive?: boolean;
86
105
  configSidebarVisible?: boolean;
87
106
  staticMenuMobileActive?: boolean;
88
107
  menuHoverActive?: boolean;
108
+ topbarMenuVisible?: boolean;
89
109
  }
90
110
  interface MenuChangeEvent {
91
111
  key: string;
@@ -103,7 +123,6 @@ interface CompanyProfile {
103
123
  slug: string;
104
124
  logoUrl?: string | null;
105
125
  }
106
- /** Layout configuration and state management service */
107
126
  declare class LayoutService {
108
127
  private readonly document;
109
128
  private readonly platformId;
@@ -112,6 +131,7 @@ declare class LayoutService {
112
131
  private readonly appConfig;
113
132
  private readonly DEFAULT_CONFIG;
114
133
  private readonly DEFAULT_STATE;
134
+ private readonly memorable;
115
135
  private readonly _layoutConfig;
116
136
  private readonly _layoutState;
117
137
  private readonly _transitionComplete;
@@ -123,32 +143,37 @@ declare class LayoutService {
123
143
  private readonly _rawMenu;
124
144
  private readonly _rawApps;
125
145
  private readonly permissionValidator;
146
+ private readonly destroyRef;
147
+ private readonly _windowWidth;
126
148
  readonly userProfile: _angular_core.Signal<UserProfile | null>;
127
149
  readonly companyProfile: _angular_core.Signal<CompanyProfile | null>;
128
150
  readonly appName: string;
151
+ readonly appLogo: string;
152
+ readonly isAppLogoSvg: boolean;
129
153
  readonly authorName: string;
130
154
  readonly authorUrl: string;
131
155
  readonly menu: _angular_core.Signal<IMenuItem[]>;
132
156
  readonly apps: _angular_core.Signal<ILauncherApp[]>;
133
157
  readonly hasApps: _angular_core.Signal<boolean>;
134
158
  readonly isSidebarActive: _angular_core.Signal<boolean | undefined>;
159
+ readonly isDesktop: _angular_core.Signal<boolean>;
160
+ readonly isMobile: _angular_core.Signal<boolean>;
135
161
  readonly isDarkTheme: _angular_core.Signal<boolean | undefined>;
136
- readonly getPrimary: _angular_core.Signal<string | undefined>;
137
- readonly getSurface: _angular_core.Signal<string | null | undefined>;
138
162
  readonly isOverlay: _angular_core.Signal<boolean>;
163
+ readonly isTopbar: _angular_core.Signal<boolean>;
139
164
  readonly userName: _angular_core.Signal<string>;
140
165
  readonly userEmail: _angular_core.Signal<string>;
141
166
  readonly userProfilePictureUrl: _angular_core.Signal<string | null>;
142
167
  readonly companyLogoUrl: _angular_core.Signal<string | null>;
143
168
  readonly isAuthenticated: _angular_core.Signal<boolean>;
144
169
  readonly companyName: _angular_core.Signal<string>;
145
- private readonly configUpdate;
170
+ readonly displayLogo: _angular_core.Signal<string>;
171
+ readonly isDisplayLogoSvg: _angular_core.Signal<boolean>;
146
172
  private readonly overlayOpen;
147
173
  private readonly menuSource;
148
174
  private readonly resetSource;
149
175
  readonly menuSource$: rxjs.Observable<MenuChangeEvent>;
150
176
  readonly resetSource$: rxjs.Observable<boolean>;
151
- readonly configUpdate$: rxjs.Observable<LayoutConfig>;
152
177
  readonly overlayOpen$: rxjs.Observable<void>;
153
178
  private initialized;
154
179
  constructor();
@@ -156,8 +181,6 @@ declare class LayoutService {
156
181
  private handleDarkModeTransition;
157
182
  private onTransitionEnd;
158
183
  onMenuToggle(): void;
159
- isDesktop(): boolean;
160
- isMobile(): boolean;
161
184
  onMenuStateChange(event: MenuChangeEvent): void;
162
185
  reset(): void;
163
186
  updateLayoutConfig(config: Partial<LayoutConfig>): void;
@@ -172,56 +195,14 @@ declare class LayoutService {
172
195
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<LayoutService>;
173
196
  }
174
197
 
175
- /**
176
- * Service for persisting layout configuration to localStorage.
177
- * Handles loading, saving, and validation of layout preferences with SSR-safe checks.
178
- *
179
- * @example
180
- * ```typescript
181
- * const persistence = inject(LayoutPersistenceService);
182
- *
183
- * // Load saved config
184
- * const config = persistence.load();
185
- *
186
- * // Save config
187
- * persistence.save({ darkTheme: true, preset: 'Aura' });
188
- *
189
- * // Clear saved config
190
- * persistence.clear();
191
- * ```
192
- */
193
198
  declare class LayoutPersistenceService {
194
199
  private readonly platformId;
195
200
  private readonly isBrowser;
196
201
  private readonly validPresets;
197
202
  private readonly validMenuModes;
198
- /**
199
- * Load configuration from localStorage.
200
- * Returns null if no saved config or invalid data.
201
- * SSR-safe (returns null on server).
202
- *
203
- * @returns Validated layout configuration or null
204
- */
205
203
  load(): LayoutConfig | null;
206
- /**
207
- * Save configuration to localStorage.
208
- * SSR-safe (no-op on server).
209
- *
210
- * @param config Layout configuration to save
211
- */
212
204
  save(config: LayoutConfig): void;
213
- /**
214
- * Clear stored configuration.
215
- * SSR-safe (no-op on server).
216
- */
217
205
  clear(): void;
218
- /**
219
- * Validate and sanitize configuration.
220
- * Returns null if version mismatch.
221
- *
222
- * @param config Configuration to validate
223
- * @returns Validated configuration or null
224
- */
225
206
  private validateConfig;
226
207
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<LayoutPersistenceService, never>;
227
208
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<LayoutPersistenceService>;
@@ -246,78 +227,35 @@ declare type SurfacesType = {
246
227
  };
247
228
  declare class AppConfigurator {
248
229
  private readonly router;
230
+ private readonly translateAdapter;
231
+ private readonly platformId;
249
232
  readonly layoutService: LayoutService;
250
- readonly presets: string[];
233
+ readonly presets: PresetName[];
251
234
  readonly showMenuModeButton: _angular_core.WritableSignal<boolean>;
252
- readonly menuModeOptions: {
235
+ readonly menuModeOptions: _angular_core.Signal<{
253
236
  label: string;
254
- value: string;
255
- }[];
237
+ value: "static" | "overlay" | "topbar";
238
+ }[]>;
256
239
  constructor();
257
240
  readonly surfaces: SurfacesType[];
258
241
  readonly selectedPrimaryColor: _angular_core.Signal<string | undefined>;
259
242
  readonly selectedSurfaceColor: _angular_core.Signal<string | null | undefined>;
243
+ isSurfaceSelected(surfaceName: string | undefined): boolean;
260
244
  readonly selectedPreset: _angular_core.Signal<string | undefined>;
261
- readonly menuMode: _angular_core.Signal<"static" | "overlay" | undefined>;
245
+ readonly menuMode: _angular_core.Signal<"static" | "overlay" | "topbar" | undefined>;
262
246
  readonly primaryColors: _angular_core.Signal<SurfacesType[]>;
263
- getPresetExt(): {
264
- semantic: {
265
- primary: {
266
- 0?: string;
267
- 50?: string;
268
- 100?: string;
269
- 200?: string;
270
- 300?: string;
271
- 400?: string;
272
- 500?: string;
273
- 600?: string;
274
- 700?: string;
275
- 800?: string;
276
- 900?: string;
277
- 950?: string;
278
- } | undefined;
279
- colorScheme: {
280
- light: {
281
- primary: {
282
- color: string;
283
- contrastColor: string;
284
- hoverColor: string;
285
- activeColor: string;
286
- };
287
- highlight: {
288
- background: string;
289
- focusBackground: string;
290
- color: string;
291
- focusColor: string;
292
- };
293
- };
294
- dark: {
295
- primary: {
296
- color: string;
297
- contrastColor: string;
298
- hoverColor: string;
299
- activeColor: string;
300
- };
301
- highlight: {
302
- background: string;
303
- focusBackground: string;
304
- color: string;
305
- focusColor: string;
306
- };
307
- };
308
- };
309
- };
310
- };
311
247
  updateColors(event: MouseEvent, type: string, color: SurfacesType): void;
312
- applyTheme(type: string, color: SurfacesType): void;
248
+ private _applyColorChange;
313
249
  onPresetChange(event: string): void;
314
- onMenuModeChange(event: 'static' | 'overlay'): void;
250
+ onMenuModeChange(event: 'static' | 'overlay' | 'topbar'): void;
251
+ private translate;
315
252
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppConfigurator, never>;
316
253
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppConfigurator, "app-configurator", never, {}, {}, never, never, true, never>;
317
254
  }
318
255
 
319
256
  declare class AppFloatingConfigurator {
320
257
  private readonly layoutService;
258
+ readonly languageSelectorPanel: _angular_core.Type<unknown> | null;
321
259
  readonly isDarkTheme: _angular_core.Signal<boolean | undefined>;
322
260
  toggleDarkMode(): void;
323
261
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppFloatingConfigurator, never>;
@@ -336,13 +274,13 @@ declare class AppLayout {
336
274
  hideMenu(): void;
337
275
  blockBodyScroll(): void;
338
276
  unblockBodyScroll(): void;
339
- readonly containerClass: _angular_core.Signal<{
340
- 'layout-overlay': boolean;
341
- 'layout-static': boolean;
342
- 'layout-static-inactive': boolean | undefined;
343
- 'layout-overlay-active': boolean | undefined;
344
- 'layout-mobile-active': boolean | undefined;
345
- }>;
277
+ readonly isOverlay: _angular_core.Signal<boolean>;
278
+ readonly isStatic: _angular_core.Signal<boolean>;
279
+ readonly isTopbarMode: _angular_core.Signal<boolean>;
280
+ readonly isStaticInactive: _angular_core.Signal<boolean | undefined>;
281
+ readonly isOverlayActive: _angular_core.Signal<boolean | undefined>;
282
+ readonly isMobileActive: _angular_core.Signal<boolean | undefined>;
283
+ readonly isTopbarNavHidden: _angular_core.Signal<boolean>;
346
284
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppLayout, never>;
347
285
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppLayout, "app-layout", never, {}, {}, never, never, true, never>;
348
286
  }
@@ -391,8 +329,9 @@ declare class AppMenuitem {
391
329
  readonly index: _angular_core.InputSignal<number>;
392
330
  readonly parentKey: _angular_core.InputSignal<string>;
393
331
  private readonly router;
394
- private readonly layoutService;
332
+ readonly layoutService: LayoutService;
395
333
  private readonly destroyRef;
334
+ private readonly parentLink;
396
335
  private readonly _active;
397
336
  readonly active: _angular_core.Signal<boolean>;
398
337
  readonly key: _angular_core.Signal<string>;
@@ -404,6 +343,8 @@ declare class AppMenuitem {
404
343
  readonly fragment: "ignored";
405
344
  }>;
406
345
  constructor();
346
+ onMouseEnter(): void;
347
+ private updateSubmenuPosition;
407
348
  private updateActiveStateFromRoute;
408
349
  itemClick(): void;
409
350
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppMenuitem, never>;
@@ -421,14 +362,21 @@ declare class AppTopbar {
421
362
  private readonly document;
422
363
  private readonly destroyRef;
423
364
  readonly layoutService: LayoutService;
365
+ readonly notificationBellComponent: _angular_core.Type<unknown> | null;
366
+ readonly languageSelectorComponent: _angular_core.Type<unknown> | null;
367
+ private readonly searchAdapter;
368
+ readonly hasSearchAdapter: _angular_core.Signal<boolean>;
424
369
  private readonly configContainer;
370
+ private readonly navContainer;
425
371
  readonly activePanel: _angular_core.WritableSignal<ActivePanel>;
426
372
  constructor();
427
373
  readonly companyName: _angular_core.Signal<string>;
428
- readonly enableCompanyFeature: _angular_core.Signal<boolean>;
374
+ readonly displayLogo: _angular_core.Signal<string>;
375
+ readonly enableCompanyFeature: boolean;
429
376
  toggleDarkMode(): void;
430
377
  togglePanel(panel: ActivePanel): void;
431
378
  private handleOutsideClick;
379
+ private recalculateHoveredSubmenu;
432
380
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppTopbar, never>;
433
381
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppTopbar, "app-topbar", never, {}, {}, never, never, true, never>;
434
382
  }
@@ -439,6 +387,7 @@ declare class AppCompanyBranchSelector {
439
387
  private readonly authState;
440
388
  private readonly authApi;
441
389
  private readonly messageService;
390
+ private readonly translateAdapter;
442
391
  private readonly document;
443
392
  private readonly elementRef;
444
393
  private readonly _isActive;
@@ -467,19 +416,20 @@ declare class AppCompanyBranchSelector {
467
416
  onBranchChange(branchId: string | null): void;
468
417
  private loadBranches;
469
418
  onSwitch(): void;
419
+ private translate;
470
420
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppCompanyBranchSelector, never>;
471
421
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppCompanyBranchSelector, "app-company-branch-selector", never, {}, {}, never, never, true, never>;
472
422
  }
473
423
 
474
424
  declare class AppLauncher {
425
+ readonly layoutService: LayoutService;
475
426
  private readonly destroyRef;
476
427
  private readonly document;
477
428
  private readonly elementRef;
478
- readonly layoutService: LayoutService;
479
429
  private readonly _isActive;
480
430
  readonly isActive: _angular_core.Signal<boolean>;
481
431
  constructor();
482
- togglePanel(): void;
432
+ toggleActive(): void;
483
433
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppLauncher, never>;
484
434
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppLauncher, "app-launcher", never, {}, {}, never, never, true, never>;
485
435
  }
@@ -490,6 +440,8 @@ declare class AppProfile {
490
440
  private readonly authApi;
491
441
  private readonly layoutService;
492
442
  private readonly messageService;
443
+ private readonly translateAdapter;
444
+ private readonly appConfig;
493
445
  private readonly document;
494
446
  private readonly elementRef;
495
447
  private readonly _isActive;
@@ -499,12 +451,42 @@ declare class AppProfile {
499
451
  readonly userName: _angular_core.Signal<string>;
500
452
  readonly userEmail: _angular_core.Signal<string>;
501
453
  readonly profilePicture: _angular_core.Signal<string>;
454
+ readonly signUpEnabled: _angular_core.Signal<boolean>;
502
455
  logout(): void;
503
456
  copySignUpLink(): void;
457
+ private translate;
504
458
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppProfile, never>;
505
459
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppProfile, "app-profile", never, {}, {}, never, never, true, never>;
506
460
  }
507
461
 
462
+ declare class AppSearchbar {
463
+ readonly layoutService: LayoutService;
464
+ private readonly router;
465
+ private readonly searchAdapter;
466
+ private readonly destroyRef;
467
+ private readonly document;
468
+ readonly searchTerm: _angular_core.WritableSignal<string>;
469
+ readonly suggestionsOpen: _angular_core.WritableSignal<boolean>;
470
+ readonly suggestions: _angular_core.WritableSignal<ISearchSuggestion[]>;
471
+ readonly focusedIndex: _angular_core.WritableSignal<number>;
472
+ readonly isSearchExpanded: _angular_core.WritableSignal<boolean>;
473
+ readonly isResponsive: _angular_core.WritableSignal<boolean>;
474
+ private readonly searchWrapper;
475
+ private readonly searchInput;
476
+ private searchTimeout?;
477
+ constructor();
478
+ onFocus(): void;
479
+ handleKeydown(event: KeyboardEvent): void;
480
+ handleEnter(): void;
481
+ selectSuggestion(item: ISearchSuggestion): void;
482
+ private closeSuggestions;
483
+ toggleSearch(): void;
484
+ private closeSearch;
485
+ onSearch(): void;
486
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppSearchbar, never>;
487
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppSearchbar, "app-searchbar", never, {}, {}, never, never, true, never>;
488
+ }
489
+
508
490
  /** Filter launcher apps based on user permission codes */
509
491
  declare function filterAppsByPermissions(apps: ILauncherApp[], permissionCodes: string[]): ILauncherApp[];
510
492
 
@@ -526,9 +508,13 @@ declare function filterAppsByPermissions(apps: ILauncherApp[], permissionCodes:
526
508
  */
527
509
  declare function filterMenuByPermissions(items: IMenuItem[], permissionCode: string[]): IMenuItem[];
528
510
 
529
- declare const NavyBlueTheme: _primeuix_themes_types.Preset;
511
+ declare function buildPreset(presetName: string, primary: string): ApplyThemeOptions;
512
+
513
+ declare const NavyBlueTheme: ApplyThemeOptions;
514
+
515
+ declare const GreenTheme: ApplyThemeOptions;
530
516
 
531
- declare const GreenTheme: _primeuix_themes_types.Preset;
517
+ declare const LAYOUT_MESSAGES: Record<string, string>;
532
518
 
533
- export { AppCompanyBranchSelector, AppConfigurator, AppFloatingConfigurator, AppFooter, AppLauncher, AppLayout, AppMenu, AppMenuitem, AppProfile, AppSidebar, AppTopbar, GreenTheme, LAYOUT_AUTH_API, LAYOUT_AUTH_STATE, LayoutPersistenceService, LayoutService, NavyBlueTheme, filterAppsByPermissions, filterMenuByPermissions };
534
- export type { CompanyProfile, DocumentWithViewTransition, IBranchInfo, ICompanyInfo, ILauncherApp, ILayoutAuthApi, ILayoutAuthState, IMenuItem, IUserInfo, LayoutConfig, LayoutState, MenuChangeEvent, UserProfile, ViewTransition };
519
+ export { AppCompanyBranchSelector, AppConfigurator, AppFloatingConfigurator, AppFooter, AppLauncher, AppLayout, AppMenu, AppMenuitem, AppProfile, AppSearchbar, AppSidebar, AppTopbar, GreenTheme, LAYOUT_AUTH_API, LAYOUT_AUTH_STATE, LAYOUT_IS_RTL, LAYOUT_LANGUAGE_SELECTOR, LAYOUT_LANGUAGE_SELECTOR_PANEL, LAYOUT_MESSAGES, LAYOUT_NOTIFICATION_BELL, LAYOUT_SEARCHBAR, LAYOUT_SEARCH_ADAPTER, LayoutPersistenceService, LayoutService, NavyBlueTheme, buildPreset, filterAppsByPermissions, filterMenuByPermissions };
520
+ export type { CompanyProfile, DocumentWithViewTransition, IBranchInfo, ICompanyInfo, ILauncherApp, ILayoutAuthApi, ILayoutAuthState, IMenuItem, ISearchAdapter, ISearchSuggestion, IUserInfo, LayoutState, MenuChangeEvent, UserProfile, ViewTransition };