@gravionlabs/helix-shell 22.0.0

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.
@@ -0,0 +1,1017 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { InjectionToken, Type, OnInit, OnDestroy, ElementRef, AfterViewInit } from '@angular/core';
3
+ import { AbstractControl, ControlValueAccessor } from '@angular/forms';
4
+ import { ActivatedRoute, ActivatedRouteSnapshot, Route, CanActivateFn, Routes, Router } from '@angular/router';
5
+ import { MenuItem } from '@gravionlabs/helix-core/api';
6
+ import * as _ngrx_signals from '@ngrx/signals';
7
+ import * as _gravionlabs_helix_shell from '@gravionlabs/helix-shell';
8
+ import { HelixConfig } from '@gravionlabs/helix-core/config';
9
+ import * as _angular_platform_browser from '@angular/platform-browser';
10
+
11
+ declare class HelixFormField {
12
+ readonly label: _angular_core.InputSignal<string | undefined>;
13
+ readonly control: _angular_core.InputSignal<AbstractControl<any, any, any> | null>;
14
+ readonly hint: _angular_core.InputSignal<string | undefined>;
15
+ readonly error: _angular_core.InputSignal<string | null>;
16
+ readonly showLabel: _angular_core.InputSignal<boolean>;
17
+ readonly showHint: _angular_core.InputSignal<boolean>;
18
+ readonly activeError: _angular_core.Signal<string | null>;
19
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HelixFormField, never>;
20
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HelixFormField, "helix-form-field", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "control": { "alias": "control"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "showLabel": { "alias": "showLabel"; "required": false; "isSignal": true; }; "showHint": { "alias": "showHint"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
21
+ }
22
+
23
+ declare class HelixSelect implements ControlValueAccessor {
24
+ readonly options: _angular_core.InputSignal<any[]>;
25
+ readonly optionLabel: _angular_core.InputSignal<string>;
26
+ readonly optionValue: _angular_core.InputSignal<string>;
27
+ readonly placeholder: _angular_core.InputSignal<string>;
28
+ readonly disabled: _angular_core.InputSignal<boolean>;
29
+ readonly value: _angular_core.WritableSignal<any>;
30
+ protected onChange: (value: any) => void;
31
+ protected onTouched: () => void;
32
+ readonly processedOptions: _angular_core.Signal<{
33
+ label: any;
34
+ value: any;
35
+ }[]>;
36
+ writeValue(value: any): void;
37
+ registerOnChange(fn: any): void;
38
+ registerOnTouched(fn: any): void;
39
+ setDisabledState?(isDisabled: boolean): void;
40
+ onSelectChange(event: Event): void;
41
+ protected isSelected(optValue: any): boolean;
42
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HelixSelect, never>;
43
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HelixSelect, "helix-select", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "optionLabel": { "alias": "optionLabel"; "required": false; "isSignal": true; }; "optionValue": { "alias": "optionValue"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
44
+ }
45
+
46
+ interface HelixBreadcrumb {
47
+ label: string;
48
+ route?: string;
49
+ }
50
+ declare const HELIX_BREADCRUMB: InjectionToken<HelixBreadcrumb[]>;
51
+
52
+ declare function helixBreadcrumbsFromRoutes(route: ActivatedRoute): MenuItem[];
53
+
54
+ type BadgeSeverity = 'info' | 'warn' | 'error' | 'success';
55
+ declare class HelixBadge {
56
+ severity: _angular_core.InputSignal<BadgeSeverity>;
57
+ label: _angular_core.InputSignal<string | undefined>;
58
+ icon: _angular_core.InputSignal<string | undefined>;
59
+ size: _angular_core.InputSignal<"sm" | "md">;
60
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HelixBadge, never>;
61
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HelixBadge, "helix-badge", never, { "severity": { "alias": "severity"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
62
+ }
63
+
64
+ type Environment = 'development' | 'testing' | 'staging' | 'production';
65
+ declare class HelixEnvironmentBadge {
66
+ environment: _angular_core.InputSignal<Environment>;
67
+ protected mapped: _angular_core.Signal<{
68
+ severity: BadgeSeverity;
69
+ icon: string;
70
+ label: string;
71
+ }>;
72
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HelixEnvironmentBadge, never>;
73
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HelixEnvironmentBadge, "helix-environment-badge", never, { "environment": { "alias": "environment"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
74
+ }
75
+
76
+ /**
77
+ * Extends Helix's MenuItem with Angular routing properties.
78
+ * Allows a single array to define both the sidebar menu and the router configuration.
79
+ */
80
+ interface HelixRouteMenuItem extends MenuItem {
81
+ /** Angular route path segment (relative to the parent route). */
82
+ path?: string;
83
+ /** Breadcrumb label or resolver for auto-generated breadcrumbs. */
84
+ breadcrumb?: string | ((route: ActivatedRouteSnapshot) => string);
85
+ /** Component to render for this route. */
86
+ component?: Type<unknown>;
87
+ /** Lazy-loaded children module or routes. */
88
+ loadChildren?: Route['loadChildren'];
89
+ /** Route guards. */
90
+ canActivate?: CanActivateFn[];
91
+ /** Additional route data (merged with the auto-injected menu data). */
92
+ data?: Record<string, unknown>;
93
+ /** Typed override of MenuItem.items — supports nested HelixRouteMenuItem entries. */
94
+ items?: HelixRouteMenuItem[];
95
+ }
96
+ /**
97
+ * Recursively copies a HelixRouteMenuItem tree and auto-populates `routerLink`
98
+ * from `path` for any item that does not already have a `routerLink`.
99
+ *
100
+ * @param items The source menu items.
101
+ * @param basePath Absolute base path prefix (e.g. `'/uikit'`).
102
+ *
103
+ * @example
104
+ * // uikit-menu-items.ts defines: { path: 'formlayout', label: '...', icon: '...' }
105
+ * helixMenuLinksFrom(UIKIT_ITEMS, '/uikit')
106
+ * // → { path: 'formlayout', label: '...', icon: '...', routerLink: ['/uikit/formlayout'] }
107
+ */
108
+ declare function helixMenuLinksFrom(items: HelixRouteMenuItem[], basePath: string): HelixRouteMenuItem[];
109
+ /**
110
+ * Converts a HelixRouteMenuItem tree into Angular Routes.
111
+ *
112
+ * - Items with `path` + `component` or `loadChildren` generate a route entry.
113
+ * - Items without `path` (visual-only section headers) are skipped for routing
114
+ * but their `items` children are still recursed.
115
+ * - Items with only `routerLink` (e.g. links into lazy-loaded sub-modules) are
116
+ * skipped — they do not need a route entry here.
117
+ */
118
+ declare function helixRoutesFrom(items: HelixRouteMenuItem[]): Routes;
119
+
120
+ type HelixStatusBarTone = 'staging' | 'production' | 'success' | 'danger' | 'neutral';
121
+ interface HelixStatusBarVersion {
122
+ label: string;
123
+ value: string;
124
+ }
125
+
126
+ interface AlertItem {
127
+ id: string;
128
+ label: string;
129
+ severity: string;
130
+ route?: string;
131
+ }
132
+ declare class HelixAlertAction {
133
+ count: _angular_core.InputSignal<number>;
134
+ alerts: _angular_core.InputSignal<AlertItem[] | undefined>;
135
+ protected open: _angular_core.WritableSignal<boolean>;
136
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HelixAlertAction, never>;
137
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HelixAlertAction, "helix-alert-action", never, { "count": { "alias": "count"; "required": true; "isSignal": true; }; "alerts": { "alias": "alerts"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
138
+ }
139
+
140
+ interface HelixTopbarAction {
141
+ icon: string;
142
+ label: string;
143
+ command?: () => void;
144
+ }
145
+ type HelixTopbarItemType = 'darkmode' | 'configurator' | 'mobile' | 'alert' | 'action';
146
+ interface HelixTopbarItem {
147
+ type: HelixTopbarItemType;
148
+ icon?: string;
149
+ label?: string;
150
+ badgeCount?: number;
151
+ alerts?: AlertItem[];
152
+ command?: () => void;
153
+ }
154
+
155
+ declare class HelixAppLayout {
156
+ appTitle: _angular_core.InputSignal<string>;
157
+ environment: _angular_core.InputSignal<Environment | undefined>;
158
+ /** Topbar items. When provided, overrides the default darkmode / configurator / mobile items. */
159
+ topbarItems: _angular_core.InputSignal<HelixTopbarItem[] | undefined>;
160
+ /** Topbar actions rendered in the right-side dropdown. */
161
+ topbarActions: _angular_core.InputSignal<HelixTopbarAction[] | undefined>;
162
+ /**
163
+ * Nav-rail brand icon: inline SVG (`<svg>…</svg>`) or a URL to an SVG file.
164
+ * Falls back to the default hardcoded icon when not provided.
165
+ */
166
+ brandIcon: _angular_core.InputSignal<string | undefined>;
167
+ /** Status bar inputs */
168
+ statusBarEnvironment: _angular_core.InputSignal<string | undefined>;
169
+ statusBarNote: _angular_core.InputSignal<string | undefined>;
170
+ statusBarTone: _angular_core.InputSignal<HelixStatusBarTone>;
171
+ statusBarVersions: _angular_core.InputSignal<HelixStatusBarVersion[]>;
172
+ statusBarBrand: _angular_core.InputSignal<string>;
173
+ /**
174
+ * Menu model. When provided, overrides route data.
175
+ * Also auto-populated from ActivatedRoute.data['menu'] when used as a route component.
176
+ */
177
+ menu: _angular_core.InputSignal<HelixRouteMenuItem[]>;
178
+ private static readonly DEFAULT_TOP_ACTIONS;
179
+ store: {
180
+ preset: _angular_core.Signal<string>;
181
+ primary: _angular_core.Signal<string>;
182
+ surface: _angular_core.Signal<string | null | undefined>;
183
+ darkTheme: _angular_core.Signal<boolean>;
184
+ menuMode: _angular_core.Signal<_gravionlabs_helix_shell.MenuMode>;
185
+ staticMenuDesktopInactive: _angular_core.Signal<boolean>;
186
+ overlayMenuActive: _angular_core.Signal<boolean>;
187
+ configSidebarVisible: _angular_core.Signal<boolean>;
188
+ mobileMenuActive: _angular_core.Signal<boolean>;
189
+ menuHoverActive: _angular_core.Signal<boolean>;
190
+ activePath: _angular_core.Signal<string | null>;
191
+ sidebarCollapsed: _angular_core.Signal<boolean>;
192
+ expandedRoot: _angular_core.Signal<string | null>;
193
+ isDarkTheme: _angular_core.Signal<boolean>;
194
+ isOverlay: _angular_core.Signal<boolean>;
195
+ isStatic: _angular_core.Signal<boolean>;
196
+ isSidebarActive: _angular_core.Signal<boolean>;
197
+ isCollapsed: _angular_core.Signal<boolean>;
198
+ toggleDarkMode: () => void;
199
+ setMenuMode: (menuMode: _gravionlabs_helix_shell.MenuMode) => void;
200
+ showConfigSidebar: () => void;
201
+ hideConfigSidebar: () => void;
202
+ onMenuToggle: () => void;
203
+ closeMobileMenu: () => void;
204
+ setActivePath: (activePath: string | null) => void;
205
+ setExpandedRoot: (key: string | null) => void;
206
+ toggleSidebar: () => void;
207
+ setMenuHoverActive: (menuHoverActive: boolean) => void;
208
+ updateConfig: (config: Partial<_gravionlabs_helix_shell.LayoutConfig>) => void;
209
+ setPreset: (preset: string) => void;
210
+ setPrimary: (primary: string) => void;
211
+ setSurface: (surface: string | null) => void;
212
+ isDesktop: () => boolean;
213
+ reset: () => void;
214
+ } & _ngrx_signals.StateSource<{
215
+ preset: string;
216
+ primary: string;
217
+ surface: string | undefined | null;
218
+ darkTheme: boolean;
219
+ menuMode: _gravionlabs_helix_shell.MenuMode;
220
+ staticMenuDesktopInactive: boolean;
221
+ overlayMenuActive: boolean;
222
+ configSidebarVisible: boolean;
223
+ mobileMenuActive: boolean;
224
+ menuHoverActive: boolean;
225
+ activePath: string | null;
226
+ sidebarCollapsed: boolean;
227
+ expandedRoot: string | null;
228
+ }>;
229
+ private activatedRoute;
230
+ /** Resolved menu: input takes priority, then route data, then empty. */
231
+ protected effectiveMenu: _angular_core.Signal<MenuItem[]>;
232
+ protected effectiveNavGroups: _angular_core.Signal<_gravionlabs_helix_shell.HelixNavGroup[]>;
233
+ protected effectiveEnvironment: _angular_core.Signal<Environment | undefined>;
234
+ protected effectiveItems: _angular_core.Signal<HelixTopbarItem[]>;
235
+ protected effectiveTopbarActions: _angular_core.Signal<HelixTopbarAction[]>;
236
+ constructor();
237
+ containerClass: _angular_core.Signal<{
238
+ 'layout-overlay': boolean;
239
+ 'layout-static': boolean;
240
+ 'layout-static-inactive': boolean;
241
+ 'layout-overlay-active': boolean;
242
+ 'layout-mobile-active': boolean;
243
+ 'layout-sidebar-collapsed': boolean;
244
+ }>;
245
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HelixAppLayout, never>;
246
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HelixAppLayout, "helix-app-layout", never, { "appTitle": { "alias": "appTitle"; "required": false; "isSignal": true; }; "environment": { "alias": "environment"; "required": false; "isSignal": true; }; "topbarItems": { "alias": "topbarItems"; "required": false; "isSignal": true; }; "topbarActions": { "alias": "topbarActions"; "required": false; "isSignal": true; }; "brandIcon": { "alias": "brandIcon"; "required": false; "isSignal": true; }; "statusBarEnvironment": { "alias": "statusBarEnvironment"; "required": false; "isSignal": true; }; "statusBarNote": { "alias": "statusBarNote"; "required": false; "isSignal": true; }; "statusBarTone": { "alias": "statusBarTone"; "required": false; "isSignal": true; }; "statusBarVersions": { "alias": "statusBarVersions"; "required": false; "isSignal": true; }; "statusBarBrand": { "alias": "statusBarBrand"; "required": false; "isSignal": true; }; "menu": { "alias": "menu"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
247
+ }
248
+
249
+ declare type SurfacesType = {
250
+ name?: string;
251
+ palette?: {
252
+ 0?: string;
253
+ 50?: string;
254
+ 100?: string;
255
+ 200?: string;
256
+ 300?: string;
257
+ 400?: string;
258
+ 500?: string;
259
+ 600?: string;
260
+ 700?: string;
261
+ 800?: string;
262
+ 900?: string;
263
+ 950?: string;
264
+ };
265
+ };
266
+ declare class HelixConfigurator implements OnInit {
267
+ router: Router;
268
+ primeng: HelixConfig;
269
+ store: {
270
+ preset: _angular_core.Signal<string>;
271
+ primary: _angular_core.Signal<string>;
272
+ surface: _angular_core.Signal<string | null | undefined>;
273
+ darkTheme: _angular_core.Signal<boolean>;
274
+ menuMode: _angular_core.Signal<_gravionlabs_helix_shell.MenuMode>;
275
+ staticMenuDesktopInactive: _angular_core.Signal<boolean>;
276
+ overlayMenuActive: _angular_core.Signal<boolean>;
277
+ configSidebarVisible: _angular_core.Signal<boolean>;
278
+ mobileMenuActive: _angular_core.Signal<boolean>;
279
+ menuHoverActive: _angular_core.Signal<boolean>;
280
+ activePath: _angular_core.Signal<string | null>;
281
+ sidebarCollapsed: _angular_core.Signal<boolean>;
282
+ expandedRoot: _angular_core.Signal<string | null>;
283
+ isDarkTheme: _angular_core.Signal<boolean>;
284
+ isOverlay: _angular_core.Signal<boolean>;
285
+ isStatic: _angular_core.Signal<boolean>;
286
+ isSidebarActive: _angular_core.Signal<boolean>;
287
+ isCollapsed: _angular_core.Signal<boolean>;
288
+ toggleDarkMode: () => void;
289
+ setMenuMode: (menuMode: _gravionlabs_helix_shell.MenuMode) => void;
290
+ showConfigSidebar: () => void;
291
+ hideConfigSidebar: () => void;
292
+ onMenuToggle: () => void;
293
+ closeMobileMenu: () => void;
294
+ setActivePath: (activePath: string | null) => void;
295
+ setExpandedRoot: (key: string | null) => void;
296
+ toggleSidebar: () => void;
297
+ setMenuHoverActive: (menuHoverActive: boolean) => void;
298
+ updateConfig: (config: Partial<_gravionlabs_helix_shell.LayoutConfig>) => void;
299
+ setPreset: (preset: string) => void;
300
+ setPrimary: (primary: string) => void;
301
+ setSurface: (surface: string | null) => void;
302
+ isDesktop: () => boolean;
303
+ reset: () => void;
304
+ } & _ngrx_signals.StateSource<{
305
+ preset: string;
306
+ primary: string;
307
+ surface: string | undefined | null;
308
+ darkTheme: boolean;
309
+ menuMode: _gravionlabs_helix_shell.MenuMode;
310
+ staticMenuDesktopInactive: boolean;
311
+ overlayMenuActive: boolean;
312
+ configSidebarVisible: boolean;
313
+ mobileMenuActive: boolean;
314
+ menuHoverActive: boolean;
315
+ activePath: string | null;
316
+ sidebarCollapsed: boolean;
317
+ expandedRoot: string | null;
318
+ }>;
319
+ platformId: Object;
320
+ presetOptions: string[];
321
+ showMenuModeButton: _angular_core.WritableSignal<boolean>;
322
+ menuModeOptions: {
323
+ label: string;
324
+ value: string;
325
+ }[];
326
+ surfaces: SurfacesType[];
327
+ selectedPrimaryColor: _angular_core.Signal<string>;
328
+ selectedSurfaceColor: _angular_core.Signal<string | null | undefined>;
329
+ selectedPreset: _angular_core.Signal<string>;
330
+ menuMode: _angular_core.Signal<_gravionlabs_helix_shell.MenuMode>;
331
+ primaryColors: _angular_core.Signal<SurfacesType[]>;
332
+ ngOnInit(): void;
333
+ getPresetExt(): {
334
+ semantic: {
335
+ primary: {
336
+ 0?: string;
337
+ 50?: string;
338
+ 100?: string;
339
+ 200?: string;
340
+ 300?: string;
341
+ 400?: string;
342
+ 500?: string;
343
+ 600?: string;
344
+ 700?: string;
345
+ 800?: string;
346
+ 900?: string;
347
+ 950?: string;
348
+ } | undefined;
349
+ colorScheme: {
350
+ light: {
351
+ primary: {
352
+ color: string;
353
+ contrastColor: string;
354
+ hoverColor: string;
355
+ activeColor: string;
356
+ };
357
+ highlight: {
358
+ background: string;
359
+ focusBackground: string;
360
+ color: string;
361
+ focusColor: string;
362
+ };
363
+ };
364
+ dark: {
365
+ primary: {
366
+ color: string;
367
+ contrastColor: string;
368
+ hoverColor: string;
369
+ activeColor: string;
370
+ };
371
+ highlight: {
372
+ background: string;
373
+ focusBackground: string;
374
+ color: string;
375
+ focusColor: string;
376
+ };
377
+ };
378
+ };
379
+ };
380
+ };
381
+ updateColors(event: Event, type: string, color: SurfacesType): void;
382
+ applyTheme(type: string, color: SurfacesType): void;
383
+ onPresetChange(event: string): void;
384
+ onMenuModeChange(event: string): void;
385
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HelixConfigurator, never>;
386
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HelixConfigurator, "helix-configurator", never, {}, {}, never, never, true, never>;
387
+ }
388
+
389
+ declare class HelixFloatingConfigurator {
390
+ store: {
391
+ preset: _angular_core.Signal<string>;
392
+ primary: _angular_core.Signal<string>;
393
+ surface: _angular_core.Signal<string | null | undefined>;
394
+ darkTheme: _angular_core.Signal<boolean>;
395
+ menuMode: _angular_core.Signal<_gravionlabs_helix_shell.MenuMode>;
396
+ staticMenuDesktopInactive: _angular_core.Signal<boolean>;
397
+ overlayMenuActive: _angular_core.Signal<boolean>;
398
+ configSidebarVisible: _angular_core.Signal<boolean>;
399
+ mobileMenuActive: _angular_core.Signal<boolean>;
400
+ menuHoverActive: _angular_core.Signal<boolean>;
401
+ activePath: _angular_core.Signal<string | null>;
402
+ sidebarCollapsed: _angular_core.Signal<boolean>;
403
+ expandedRoot: _angular_core.Signal<string | null>;
404
+ isDarkTheme: _angular_core.Signal<boolean>;
405
+ isOverlay: _angular_core.Signal<boolean>;
406
+ isStatic: _angular_core.Signal<boolean>;
407
+ isSidebarActive: _angular_core.Signal<boolean>;
408
+ isCollapsed: _angular_core.Signal<boolean>;
409
+ toggleDarkMode: () => void;
410
+ setMenuMode: (menuMode: _gravionlabs_helix_shell.MenuMode) => void;
411
+ showConfigSidebar: () => void;
412
+ hideConfigSidebar: () => void;
413
+ onMenuToggle: () => void;
414
+ closeMobileMenu: () => void;
415
+ setActivePath: (activePath: string | null) => void;
416
+ setExpandedRoot: (key: string | null) => void;
417
+ toggleSidebar: () => void;
418
+ setMenuHoverActive: (menuHoverActive: boolean) => void;
419
+ updateConfig: (config: Partial<_gravionlabs_helix_shell.LayoutConfig>) => void;
420
+ setPreset: (preset: string) => void;
421
+ setPrimary: (primary: string) => void;
422
+ setSurface: (surface: string | null) => void;
423
+ isDesktop: () => boolean;
424
+ reset: () => void;
425
+ } & _ngrx_signals.StateSource<{
426
+ preset: string;
427
+ primary: string;
428
+ surface: string | undefined | null;
429
+ darkTheme: boolean;
430
+ menuMode: _gravionlabs_helix_shell.MenuMode;
431
+ staticMenuDesktopInactive: boolean;
432
+ overlayMenuActive: boolean;
433
+ configSidebarVisible: boolean;
434
+ mobileMenuActive: boolean;
435
+ menuHoverActive: boolean;
436
+ activePath: string | null;
437
+ sidebarCollapsed: boolean;
438
+ expandedRoot: string | null;
439
+ }>;
440
+ float: _angular_core.InputSignal<boolean>;
441
+ isDarkTheme: _angular_core.Signal<boolean>;
442
+ toggleDarkMode(): void;
443
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HelixFloatingConfigurator, never>;
444
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HelixFloatingConfigurator, "helix-floating-configurator", never, { "float": { "alias": "float"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
445
+ }
446
+
447
+ interface HelixFooterLink {
448
+ label: string;
449
+ url?: string;
450
+ route?: string;
451
+ }
452
+ interface HelixFooterColumn {
453
+ title: string;
454
+ links: HelixFooterLink[];
455
+ }
456
+
457
+ declare class HelixFooter {
458
+ brandName: _angular_core.InputSignal<string>;
459
+ brandUrl: _angular_core.InputSignal<string>;
460
+ columns: _angular_core.InputSignal<HelixFooterColumn[]>;
461
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HelixFooter, never>;
462
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HelixFooter, "helix-footer", never, { "brandName": { "alias": "brandName"; "required": false; "isSignal": true; }; "brandUrl": { "alias": "brandUrl"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; }, {}, never, ["[helixFooterStart]", "*"], true, never>;
463
+ }
464
+
465
+ /**
466
+ * A group of nav-rail items under an optional uppercase section label.
467
+ * Reuses HelixRouteMenuItem for items so existing routerLink/path-driven
468
+ * active state, breadcrumbs, and route generation keep working unchanged.
469
+ */
470
+ interface HelixNavGroup {
471
+ /** Uppercase section label shown above the items. Omit for an unlabeled group. */
472
+ section?: string;
473
+ items: HelixRouteMenuItem[];
474
+ }
475
+ /**
476
+ * Adapts a flat HelixRouteMenuItem tree (as used by HelixAppLayout's `menu`
477
+ * input) into HelixNavGroup[] by wrapping it as a single unlabeled group.
478
+ * Each top-level item keeps its own identity (icon, children, etc.), so an
479
+ * item with children renders as a normal expandable HelixNavRailItem rather
480
+ * than being flattened into a static section heading.
481
+ */
482
+ declare function helixNavGroupsFromMenu(items: HelixRouteMenuItem[]): HelixNavGroup[];
483
+
484
+ declare class HelixNavRail implements OnInit, OnDestroy {
485
+ store: {
486
+ preset: _angular_core.Signal<string>;
487
+ primary: _angular_core.Signal<string>;
488
+ surface: _angular_core.Signal<string | null | undefined>;
489
+ darkTheme: _angular_core.Signal<boolean>;
490
+ menuMode: _angular_core.Signal<_gravionlabs_helix_shell.MenuMode>;
491
+ staticMenuDesktopInactive: _angular_core.Signal<boolean>;
492
+ overlayMenuActive: _angular_core.Signal<boolean>;
493
+ configSidebarVisible: _angular_core.Signal<boolean>;
494
+ mobileMenuActive: _angular_core.Signal<boolean>;
495
+ menuHoverActive: _angular_core.Signal<boolean>;
496
+ activePath: _angular_core.Signal<string | null>;
497
+ sidebarCollapsed: _angular_core.Signal<boolean>;
498
+ expandedRoot: _angular_core.Signal<string | null>;
499
+ isDarkTheme: _angular_core.Signal<boolean>;
500
+ isOverlay: _angular_core.Signal<boolean>;
501
+ isStatic: _angular_core.Signal<boolean>;
502
+ isSidebarActive: _angular_core.Signal<boolean>;
503
+ isCollapsed: _angular_core.Signal<boolean>;
504
+ toggleDarkMode: () => void;
505
+ setMenuMode: (menuMode: _gravionlabs_helix_shell.MenuMode) => void;
506
+ showConfigSidebar: () => void;
507
+ hideConfigSidebar: () => void;
508
+ onMenuToggle: () => void;
509
+ closeMobileMenu: () => void;
510
+ setActivePath: (activePath: string | null) => void;
511
+ setExpandedRoot: (key: string | null) => void;
512
+ toggleSidebar: () => void;
513
+ setMenuHoverActive: (menuHoverActive: boolean) => void;
514
+ updateConfig: (config: Partial<_gravionlabs_helix_shell.LayoutConfig>) => void;
515
+ setPreset: (preset: string) => void;
516
+ setPrimary: (primary: string) => void;
517
+ setSurface: (surface: string | null) => void;
518
+ isDesktop: () => boolean;
519
+ reset: () => void;
520
+ } & _ngrx_signals.StateSource<{
521
+ preset: string;
522
+ primary: string;
523
+ surface: string | undefined | null;
524
+ darkTheme: boolean;
525
+ menuMode: _gravionlabs_helix_shell.MenuMode;
526
+ staticMenuDesktopInactive: boolean;
527
+ overlayMenuActive: boolean;
528
+ configSidebarVisible: boolean;
529
+ mobileMenuActive: boolean;
530
+ menuHoverActive: boolean;
531
+ activePath: string | null;
532
+ sidebarCollapsed: boolean;
533
+ expandedRoot: string | null;
534
+ }>;
535
+ router: Router;
536
+ el: ElementRef<any>;
537
+ private sanitizer;
538
+ /** Grouped navigation model. Each group renders an optional uppercase section label. */
539
+ model: _angular_core.InputSignal<HelixNavGroup[]>;
540
+ /** Application title shown in the brand area. Hidden when nav is collapsed. */
541
+ appTitle: _angular_core.InputSignal<string>;
542
+ /**
543
+ * Brand icon: inline SVG (`<svg>…</svg>`) or URL to an SVG file.
544
+ * Falls back to the default hardcoded icon when not provided.
545
+ */
546
+ brandIcon: _angular_core.InputSignal<string | undefined>;
547
+ protected isInlineSvg: _angular_core.Signal<boolean>;
548
+ protected safeBrandIcon: _angular_core.Signal<_angular_platform_browser.SafeHtml | null>;
549
+ private outsideClickListener;
550
+ private destroy$;
551
+ constructor();
552
+ ngOnInit(): void;
553
+ ngOnDestroy(): void;
554
+ private onRouteChange;
555
+ private bindOutsideClickListener;
556
+ private unbindOutsideClickListener;
557
+ private isOutsideClicked;
558
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HelixNavRail, never>;
559
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HelixNavRail, "helix-nav-rail", never, { "model": { "alias": "model"; "required": false; "isSignal": true; }; "appTitle": { "alias": "appTitle"; "required": false; "isSignal": true; }; "brandIcon": { "alias": "brandIcon"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
560
+ }
561
+
562
+ declare class HelixNavRailItem implements AfterViewInit {
563
+ store: {
564
+ preset: _angular_core.Signal<string>;
565
+ primary: _angular_core.Signal<string>;
566
+ surface: _angular_core.Signal<string | null | undefined>;
567
+ darkTheme: _angular_core.Signal<boolean>;
568
+ menuMode: _angular_core.Signal<_gravionlabs_helix_shell.MenuMode>;
569
+ staticMenuDesktopInactive: _angular_core.Signal<boolean>;
570
+ overlayMenuActive: _angular_core.Signal<boolean>;
571
+ configSidebarVisible: _angular_core.Signal<boolean>;
572
+ mobileMenuActive: _angular_core.Signal<boolean>;
573
+ menuHoverActive: _angular_core.Signal<boolean>;
574
+ activePath: _angular_core.Signal<string | null>;
575
+ sidebarCollapsed: _angular_core.Signal<boolean>;
576
+ expandedRoot: _angular_core.Signal<string | null>;
577
+ isDarkTheme: _angular_core.Signal<boolean>;
578
+ isOverlay: _angular_core.Signal<boolean>;
579
+ isStatic: _angular_core.Signal<boolean>;
580
+ isSidebarActive: _angular_core.Signal<boolean>;
581
+ isCollapsed: _angular_core.Signal<boolean>;
582
+ toggleDarkMode: () => void;
583
+ setMenuMode: (menuMode: _gravionlabs_helix_shell.MenuMode) => void;
584
+ showConfigSidebar: () => void;
585
+ hideConfigSidebar: () => void;
586
+ onMenuToggle: () => void;
587
+ closeMobileMenu: () => void;
588
+ setActivePath: (activePath: string | null) => void;
589
+ setExpandedRoot: (key: string | null) => void;
590
+ toggleSidebar: () => void;
591
+ setMenuHoverActive: (menuHoverActive: boolean) => void;
592
+ updateConfig: (config: Partial<_gravionlabs_helix_shell.LayoutConfig>) => void;
593
+ setPreset: (preset: string) => void;
594
+ setPrimary: (primary: string) => void;
595
+ setSurface: (surface: string | null) => void;
596
+ isDesktop: () => boolean;
597
+ reset: () => void;
598
+ } & _ngrx_signals.StateSource<{
599
+ preset: string;
600
+ primary: string;
601
+ surface: string | undefined | null;
602
+ darkTheme: boolean;
603
+ menuMode: _gravionlabs_helix_shell.MenuMode;
604
+ staticMenuDesktopInactive: boolean;
605
+ overlayMenuActive: boolean;
606
+ configSidebarVisible: boolean;
607
+ mobileMenuActive: boolean;
608
+ menuHoverActive: boolean;
609
+ activePath: string | null;
610
+ sidebarCollapsed: boolean;
611
+ expandedRoot: string | null;
612
+ }>;
613
+ item: _angular_core.InputSignal<HelixRouteMenuItem | null>;
614
+ parentPath: _angular_core.InputSignal<string | null>;
615
+ depth: _angular_core.InputSignal<number>;
616
+ /** Whether this item's submenu, having animated open at least once, may transition on leave too. */
617
+ initialized: _angular_core.WritableSignal<boolean>;
618
+ hasChildren: _angular_core.Signal<boolean>;
619
+ isCollapsed: _angular_core.Signal<boolean>;
620
+ /** Stable key used against LayoutStore.expandedRoot() — only one item app-wide is expanded at a time. */
621
+ itemKey: _angular_core.Signal<string>;
622
+ fullPath: _angular_core.Signal<string | null>;
623
+ isActive: _angular_core.Signal<boolean>;
624
+ hasActiveDescendant: _angular_core.Signal<boolean>;
625
+ isExpanded: _angular_core.Signal<boolean>;
626
+ ngAfterViewInit(): void;
627
+ itemClick(event: Event): void;
628
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HelixNavRailItem, never>;
629
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HelixNavRailItem, "[helix-nav-rail-item]", never, { "item": { "alias": "item"; "required": false; "isSignal": true; }; "parentPath": { "alias": "parentPath"; "required": false; "isSignal": true; }; "depth": { "alias": "depth"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
630
+ }
631
+
632
+ declare class HelixStatusBar {
633
+ brand: _angular_core.InputSignal<string>;
634
+ environment: _angular_core.InputSignal<string | undefined>;
635
+ note: _angular_core.InputSignal<string | undefined>;
636
+ versions: _angular_core.InputSignal<HelixStatusBarVersion[]>;
637
+ tone: _angular_core.InputSignal<HelixStatusBarTone>;
638
+ height: _angular_core.InputSignal<string>;
639
+ protected envForBadge: _angular_core.Signal<Environment | undefined>;
640
+ protected bgColor: _angular_core.Signal<string>;
641
+ protected textColor: _angular_core.Signal<string>;
642
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HelixStatusBar, never>;
643
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HelixStatusBar, "helix-status-bar", never, { "brand": { "alias": "brand"; "required": false; "isSignal": true; }; "environment": { "alias": "environment"; "required": false; "isSignal": true; }; "note": { "alias": "note"; "required": false; "isSignal": true; }; "versions": { "alias": "versions"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
644
+ }
645
+
646
+ declare class HelixConfiguratorAction {
647
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HelixConfiguratorAction, never>;
648
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HelixConfiguratorAction, "helix-configurator-action", never, {}, {}, never, never, true, never>;
649
+ }
650
+
651
+ declare class HelixDarkModeAction {
652
+ protected store: {
653
+ preset: _angular_core.Signal<string>;
654
+ primary: _angular_core.Signal<string>;
655
+ surface: _angular_core.Signal<string | null | undefined>;
656
+ darkTheme: _angular_core.Signal<boolean>;
657
+ menuMode: _angular_core.Signal<_gravionlabs_helix_shell.MenuMode>;
658
+ staticMenuDesktopInactive: _angular_core.Signal<boolean>;
659
+ overlayMenuActive: _angular_core.Signal<boolean>;
660
+ configSidebarVisible: _angular_core.Signal<boolean>;
661
+ mobileMenuActive: _angular_core.Signal<boolean>;
662
+ menuHoverActive: _angular_core.Signal<boolean>;
663
+ activePath: _angular_core.Signal<string | null>;
664
+ sidebarCollapsed: _angular_core.Signal<boolean>;
665
+ expandedRoot: _angular_core.Signal<string | null>;
666
+ isDarkTheme: _angular_core.Signal<boolean>;
667
+ isOverlay: _angular_core.Signal<boolean>;
668
+ isStatic: _angular_core.Signal<boolean>;
669
+ isSidebarActive: _angular_core.Signal<boolean>;
670
+ isCollapsed: _angular_core.Signal<boolean>;
671
+ toggleDarkMode: () => void;
672
+ setMenuMode: (menuMode: _gravionlabs_helix_shell.MenuMode) => void;
673
+ showConfigSidebar: () => void;
674
+ hideConfigSidebar: () => void;
675
+ onMenuToggle: () => void;
676
+ closeMobileMenu: () => void;
677
+ setActivePath: (activePath: string | null) => void;
678
+ setExpandedRoot: (key: string | null) => void;
679
+ toggleSidebar: () => void;
680
+ setMenuHoverActive: (menuHoverActive: boolean) => void;
681
+ updateConfig: (config: Partial<_gravionlabs_helix_shell.LayoutConfig>) => void;
682
+ setPreset: (preset: string) => void;
683
+ setPrimary: (primary: string) => void;
684
+ setSurface: (surface: string | null) => void;
685
+ isDesktop: () => boolean;
686
+ reset: () => void;
687
+ } & _ngrx_signals.StateSource<{
688
+ preset: string;
689
+ primary: string;
690
+ surface: string | undefined | null;
691
+ darkTheme: boolean;
692
+ menuMode: _gravionlabs_helix_shell.MenuMode;
693
+ staticMenuDesktopInactive: boolean;
694
+ overlayMenuActive: boolean;
695
+ configSidebarVisible: boolean;
696
+ mobileMenuActive: boolean;
697
+ menuHoverActive: boolean;
698
+ activePath: string | null;
699
+ sidebarCollapsed: boolean;
700
+ expandedRoot: string | null;
701
+ }>;
702
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HelixDarkModeAction, never>;
703
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HelixDarkModeAction, "helix-dark-mode-action", never, {}, {}, never, never, true, never>;
704
+ }
705
+
706
+ declare class HelixMobileMenuAction {
707
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HelixMobileMenuAction, never>;
708
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HelixMobileMenuAction, "helix-mobile-menu-action", never, {}, {}, never, never, true, never>;
709
+ }
710
+
711
+ declare class HelixTopbar implements OnInit, OnDestroy {
712
+ appTitle: _angular_core.InputSignal<string>;
713
+ topbarActions: _angular_core.InputSignal<HelixTopbarAction[]>;
714
+ breadcrumbs: _angular_core.InputSignal<MenuItem[] | undefined>;
715
+ items: _angular_core.InputSignal<HelixTopbarItem[]>;
716
+ store: {
717
+ preset: _angular_core.Signal<string>;
718
+ primary: _angular_core.Signal<string>;
719
+ surface: _angular_core.Signal<string | null | undefined>;
720
+ darkTheme: _angular_core.Signal<boolean>;
721
+ menuMode: _angular_core.Signal<_gravionlabs_helix_shell.MenuMode>;
722
+ staticMenuDesktopInactive: _angular_core.Signal<boolean>;
723
+ overlayMenuActive: _angular_core.Signal<boolean>;
724
+ configSidebarVisible: _angular_core.Signal<boolean>;
725
+ mobileMenuActive: _angular_core.Signal<boolean>;
726
+ menuHoverActive: _angular_core.Signal<boolean>;
727
+ activePath: _angular_core.Signal<string | null>;
728
+ sidebarCollapsed: _angular_core.Signal<boolean>;
729
+ expandedRoot: _angular_core.Signal<string | null>;
730
+ isDarkTheme: _angular_core.Signal<boolean>;
731
+ isOverlay: _angular_core.Signal<boolean>;
732
+ isStatic: _angular_core.Signal<boolean>;
733
+ isSidebarActive: _angular_core.Signal<boolean>;
734
+ isCollapsed: _angular_core.Signal<boolean>;
735
+ toggleDarkMode: () => void;
736
+ setMenuMode: (menuMode: _gravionlabs_helix_shell.MenuMode) => void;
737
+ showConfigSidebar: () => void;
738
+ hideConfigSidebar: () => void;
739
+ onMenuToggle: () => void;
740
+ closeMobileMenu: () => void;
741
+ setActivePath: (activePath: string | null) => void;
742
+ setExpandedRoot: (key: string | null) => void;
743
+ toggleSidebar: () => void;
744
+ setMenuHoverActive: (menuHoverActive: boolean) => void;
745
+ updateConfig: (config: Partial<_gravionlabs_helix_shell.LayoutConfig>) => void;
746
+ setPreset: (preset: string) => void;
747
+ setPrimary: (primary: string) => void;
748
+ setSurface: (surface: string | null) => void;
749
+ isDesktop: () => boolean;
750
+ reset: () => void;
751
+ } & _ngrx_signals.StateSource<{
752
+ preset: string;
753
+ primary: string;
754
+ surface: string | undefined | null;
755
+ darkTheme: boolean;
756
+ menuMode: _gravionlabs_helix_shell.MenuMode;
757
+ staticMenuDesktopInactive: boolean;
758
+ overlayMenuActive: boolean;
759
+ configSidebarVisible: boolean;
760
+ mobileMenuActive: boolean;
761
+ menuHoverActive: boolean;
762
+ activePath: string | null;
763
+ sidebarCollapsed: boolean;
764
+ expandedRoot: string | null;
765
+ }>;
766
+ private router;
767
+ private route;
768
+ private destroy$;
769
+ private routeChange;
770
+ ngOnInit(): void;
771
+ ngOnDestroy(): void;
772
+ protected effectiveBreadcrumbs: _angular_core.Signal<MenuItem[]>;
773
+ protected showBreadcrumbs: _angular_core.Signal<boolean>;
774
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HelixTopbar, never>;
775
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HelixTopbar, "helix-topbar", never, { "appTitle": { "alias": "appTitle"; "required": false; "isSignal": true; }; "topbarActions": { "alias": "topbarActions"; "required": false; "isSignal": true; }; "breadcrumbs": { "alias": "breadcrumbs"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; }, {}, never, ["[helixTopbarEnd]"], true, never>;
776
+ }
777
+
778
+ type MenuMode = 'static' | 'overlay';
779
+ interface LayoutConfig {
780
+ preset: string;
781
+ primary: string;
782
+ surface: string | undefined | null;
783
+ darkTheme: boolean;
784
+ menuMode: MenuMode;
785
+ }
786
+ interface LayoutState {
787
+ staticMenuDesktopInactive: boolean;
788
+ overlayMenuActive: boolean;
789
+ configSidebarVisible: boolean;
790
+ mobileMenuActive: boolean;
791
+ menuHoverActive: boolean;
792
+ activePath: string | null;
793
+ sidebarCollapsed: boolean;
794
+ expandedRoot: string | null;
795
+ }
796
+
797
+ declare const LayoutStore: _angular_core.Type<{
798
+ preset: _angular_core.Signal<string>;
799
+ primary: _angular_core.Signal<string>;
800
+ surface: _angular_core.Signal<string | null | undefined>;
801
+ darkTheme: _angular_core.Signal<boolean>;
802
+ menuMode: _angular_core.Signal<MenuMode>;
803
+ staticMenuDesktopInactive: _angular_core.Signal<boolean>;
804
+ overlayMenuActive: _angular_core.Signal<boolean>;
805
+ configSidebarVisible: _angular_core.Signal<boolean>;
806
+ mobileMenuActive: _angular_core.Signal<boolean>;
807
+ menuHoverActive: _angular_core.Signal<boolean>;
808
+ activePath: _angular_core.Signal<string | null>;
809
+ sidebarCollapsed: _angular_core.Signal<boolean>;
810
+ expandedRoot: _angular_core.Signal<string | null>;
811
+ isDarkTheme: _angular_core.Signal<boolean>;
812
+ isOverlay: _angular_core.Signal<boolean>;
813
+ isStatic: _angular_core.Signal<boolean>;
814
+ isSidebarActive: _angular_core.Signal<boolean>;
815
+ isCollapsed: _angular_core.Signal<boolean>;
816
+ toggleDarkMode: () => void;
817
+ setMenuMode: (menuMode: MenuMode) => void;
818
+ showConfigSidebar: () => void;
819
+ hideConfigSidebar: () => void;
820
+ onMenuToggle: () => void;
821
+ closeMobileMenu: () => void;
822
+ setActivePath: (activePath: string | null) => void;
823
+ setExpandedRoot: (key: string | null) => void;
824
+ toggleSidebar: () => void;
825
+ setMenuHoverActive: (menuHoverActive: boolean) => void;
826
+ updateConfig: (config: Partial<LayoutConfig>) => void;
827
+ setPreset: (preset: string) => void;
828
+ setPrimary: (primary: string) => void;
829
+ setSurface: (surface: string | null) => void;
830
+ isDesktop: () => boolean;
831
+ reset: () => void;
832
+ } & _ngrx_signals.StateSource<{
833
+ preset: string;
834
+ primary: string;
835
+ surface: string | undefined | null;
836
+ darkTheme: boolean;
837
+ menuMode: MenuMode;
838
+ staticMenuDesktopInactive: boolean;
839
+ overlayMenuActive: boolean;
840
+ configSidebarVisible: boolean;
841
+ mobileMenuActive: boolean;
842
+ menuHoverActive: boolean;
843
+ activePath: string | null;
844
+ sidebarCollapsed: boolean;
845
+ expandedRoot: string | null;
846
+ }>>;
847
+
848
+ declare class HelixAccess {
849
+ title: _angular_core.InputSignal<string>;
850
+ message: _angular_core.InputSignal<string>;
851
+ buttonLabel: _angular_core.InputSignal<string>;
852
+ buttonRoute: _angular_core.InputSignal<string>;
853
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HelixAccess, never>;
854
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HelixAccess, "helix-access", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "buttonLabel": { "alias": "buttonLabel"; "required": false; "isSignal": true; }; "buttonRoute": { "alias": "buttonRoute"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
855
+ }
856
+
857
+ declare const authRoutes: Routes;
858
+
859
+ declare class HelixError {
860
+ title: _angular_core.InputSignal<string>;
861
+ message: _angular_core.InputSignal<string>;
862
+ buttonLabel: _angular_core.InputSignal<string>;
863
+ buttonRoute: _angular_core.InputSignal<string>;
864
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HelixError, never>;
865
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HelixError, "helix-error", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "buttonLabel": { "alias": "buttonLabel"; "required": false; "isSignal": true; }; "buttonRoute": { "alias": "buttonRoute"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
866
+ }
867
+
868
+ interface HelixLoginCredentials {
869
+ email: string;
870
+ password: string;
871
+ rememberMe: boolean;
872
+ }
873
+ declare class HelixLogin {
874
+ title: _angular_core.InputSignal<string>;
875
+ subtitle: _angular_core.InputSignal<string>;
876
+ submitLabel: _angular_core.InputSignal<string>;
877
+ forgotPasswordLabel: _angular_core.InputSignal<string>;
878
+ login: _angular_core.OutputEmitterRef<HelixLoginCredentials>;
879
+ forgotPassword: _angular_core.OutputEmitterRef<void>;
880
+ email: string;
881
+ password: string;
882
+ checked: boolean;
883
+ onSubmit(): void;
884
+ onForgotPassword(): void;
885
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HelixLogin, never>;
886
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HelixLogin, "helix-login", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "submitLabel": { "alias": "submitLabel"; "required": false; "isSignal": true; }; "forgotPasswordLabel": { "alias": "forgotPasswordLabel"; "required": false; "isSignal": true; }; }, { "login": "login"; "forgotPassword": "forgotPassword"; }, never, never, true, never>;
887
+ }
888
+
889
+ declare class HelixEmpty {
890
+ title: _angular_core.InputSignal<string>;
891
+ description: _angular_core.InputSignal<string>;
892
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HelixEmpty, never>;
893
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HelixEmpty, "helix-empty", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
894
+ }
895
+
896
+ interface HelixNavLink {
897
+ label: string;
898
+ route: string;
899
+ fragment: string;
900
+ }
901
+ interface HelixFeature {
902
+ icon: string;
903
+ iconBgClass: string;
904
+ iconColorClass: string;
905
+ title: string;
906
+ description: string;
907
+ cardStyle?: string;
908
+ }
909
+ interface HelixTestimonial {
910
+ name: string;
911
+ company: string;
912
+ text: string;
913
+ logoUrl?: string;
914
+ }
915
+ interface HelixHighlight {
916
+ icon: string;
917
+ iconBgClass: string;
918
+ iconColorClass: string;
919
+ title: string;
920
+ description: string;
921
+ imageUrl: string;
922
+ imageAlt: string;
923
+ imageBgClass: string;
924
+ imageAlign: 'left' | 'right';
925
+ }
926
+ interface HelixPricingPlan {
927
+ title: string;
928
+ price: string;
929
+ pricePeriod: string;
930
+ imageUrl: string;
931
+ imageAlt: string;
932
+ buttonLabel: string;
933
+ features: string[];
934
+ }
935
+
936
+ declare class HelixFeaturesWidget {
937
+ sectionTitle: _angular_core.InputSignal<string>;
938
+ sectionSubtitle: _angular_core.InputSignal<string>;
939
+ features: _angular_core.InputSignal<HelixFeature[]>;
940
+ testimonial: _angular_core.InputSignal<HelixTestimonial | null>;
941
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HelixFeaturesWidget, never>;
942
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HelixFeaturesWidget, "helix-features-widget", never, { "sectionTitle": { "alias": "sectionTitle"; "required": false; "isSignal": true; }; "sectionSubtitle": { "alias": "sectionSubtitle"; "required": false; "isSignal": true; }; "features": { "alias": "features"; "required": false; "isSignal": true; }; "testimonial": { "alias": "testimonial"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
943
+ }
944
+
945
+ declare class HelixFooterWidget {
946
+ columns: _angular_core.InputSignal<HelixFooterColumn[]>;
947
+ homeRoute: _angular_core.InputSignal<string>;
948
+ brandName: _angular_core.InputSignal<string>;
949
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HelixFooterWidget, never>;
950
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HelixFooterWidget, "helix-footer-widget", never, { "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "homeRoute": { "alias": "homeRoute"; "required": false; "isSignal": true; }; "brandName": { "alias": "brandName"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
951
+ }
952
+
953
+ declare class HelixHeroWidget {
954
+ headlineLight: _angular_core.InputSignal<string>;
955
+ headline: _angular_core.InputSignal<string>;
956
+ description: _angular_core.InputSignal<string>;
957
+ buttonLabel: _angular_core.InputSignal<string>;
958
+ imageUrl: _angular_core.InputSignal<string>;
959
+ imageAlt: _angular_core.InputSignal<string>;
960
+ buttonClick: _angular_core.OutputEmitterRef<void>;
961
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HelixHeroWidget, never>;
962
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HelixHeroWidget, "helix-hero-widget", never, { "headlineLight": { "alias": "headlineLight"; "required": false; "isSignal": true; }; "headline": { "alias": "headline"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "buttonLabel": { "alias": "buttonLabel"; "required": false; "isSignal": true; }; "imageUrl": { "alias": "imageUrl"; "required": false; "isSignal": true; }; "imageAlt": { "alias": "imageAlt"; "required": false; "isSignal": true; }; }, { "buttonClick": "buttonClick"; }, never, never, true, never>;
963
+ }
964
+
965
+ declare class HelixHighlightsWidget {
966
+ sectionTitle: _angular_core.InputSignal<string>;
967
+ sectionSubtitle: _angular_core.InputSignal<string>;
968
+ highlights: _angular_core.InputSignal<HelixHighlight[]>;
969
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HelixHighlightsWidget, never>;
970
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HelixHighlightsWidget, "helix-highlights-widget", never, { "sectionTitle": { "alias": "sectionTitle"; "required": false; "isSignal": true; }; "sectionSubtitle": { "alias": "sectionSubtitle"; "required": false; "isSignal": true; }; "highlights": { "alias": "highlights"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
971
+ }
972
+
973
+ declare class HelixPricingWidget {
974
+ sectionTitle: _angular_core.InputSignal<string>;
975
+ sectionSubtitle: _angular_core.InputSignal<string>;
976
+ plans: _angular_core.InputSignal<HelixPricingPlan[]>;
977
+ planSelect: _angular_core.OutputEmitterRef<HelixPricingPlan>;
978
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HelixPricingWidget, never>;
979
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HelixPricingWidget, "helix-pricing-widget", never, { "sectionTitle": { "alias": "sectionTitle"; "required": false; "isSignal": true; }; "sectionSubtitle": { "alias": "sectionSubtitle"; "required": false; "isSignal": true; }; "plans": { "alias": "plans"; "required": false; "isSignal": true; }; }, { "planSelect": "planSelect"; }, never, never, true, never>;
980
+ }
981
+
982
+ declare class HelixTopbarWidget {
983
+ router: Router;
984
+ navLinks: _angular_core.InputSignal<HelixNavLink[]>;
985
+ loginLabel: _angular_core.InputSignal<string>;
986
+ loginRoute: _angular_core.InputSignal<string>;
987
+ registerLabel: _angular_core.InputSignal<string>;
988
+ registerRoute: _angular_core.InputSignal<string>;
989
+ constructor(router: Router);
990
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HelixTopbarWidget, never>;
991
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HelixTopbarWidget, "helix-topbar-widget", never, { "navLinks": { "alias": "navLinks"; "required": false; "isSignal": true; }; "loginLabel": { "alias": "loginLabel"; "required": false; "isSignal": true; }; "loginRoute": { "alias": "loginRoute"; "required": false; "isSignal": true; }; "registerLabel": { "alias": "registerLabel"; "required": false; "isSignal": true; }; "registerRoute": { "alias": "registerRoute"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
992
+ }
993
+
994
+ declare class HelixLanding {
995
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HelixLanding, never>;
996
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HelixLanding, "helix-landing", never, {}, {}, never, never, true, never>;
997
+ }
998
+
999
+ interface HelixNotfoundSuggestion {
1000
+ icon: string;
1001
+ title: string;
1002
+ description: string;
1003
+ route: string;
1004
+ }
1005
+ declare class HelixNotfound {
1006
+ errorCode: _angular_core.InputSignal<string>;
1007
+ title: _angular_core.InputSignal<string>;
1008
+ message: _angular_core.InputSignal<string>;
1009
+ buttonLabel: _angular_core.InputSignal<string>;
1010
+ buttonRoute: _angular_core.InputSignal<string>;
1011
+ suggestions: _angular_core.InputSignal<HelixNotfoundSuggestion[]>;
1012
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HelixNotfound, never>;
1013
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HelixNotfound, "helix-notfound", never, { "errorCode": { "alias": "errorCode"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "buttonLabel": { "alias": "buttonLabel"; "required": false; "isSignal": true; }; "buttonRoute": { "alias": "buttonRoute"; "required": false; "isSignal": true; }; "suggestions": { "alias": "suggestions"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1014
+ }
1015
+
1016
+ export { HELIX_BREADCRUMB, HelixAccess, HelixAlertAction, HelixAppLayout, HelixBadge, HelixConfigurator, HelixConfiguratorAction, HelixDarkModeAction, HelixEmpty, HelixEnvironmentBadge, HelixError, HelixFeaturesWidget, HelixFloatingConfigurator, HelixFooter, HelixFooterWidget, HelixFormField, HelixHeroWidget, HelixHighlightsWidget, HelixLanding, HelixLogin, HelixMobileMenuAction, HelixNavRail, HelixNavRailItem, HelixNotfound, HelixPricingWidget, HelixSelect, HelixStatusBar, HelixTopbar, HelixTopbarWidget, LayoutStore, authRoutes, helixBreadcrumbsFromRoutes, helixMenuLinksFrom, helixNavGroupsFromMenu, helixRoutesFrom };
1017
+ export type { AlertItem, BadgeSeverity, Environment, HelixBreadcrumb, HelixFeature, HelixFooterColumn, HelixFooterLink, HelixHighlight, HelixLoginCredentials, HelixNavGroup, HelixNavLink, HelixNotfoundSuggestion, HelixPricingPlan, HelixRouteMenuItem, HelixStatusBarTone, HelixStatusBarVersion, HelixTestimonial, HelixTopbarAction, HelixTopbarItem, HelixTopbarItemType, LayoutConfig, LayoutState, MenuMode };