@foxeltech/angular-ui 0.0.13 → 0.2.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.
Files changed (114) hide show
  1. package/BeVietnamPro/BeVietnamPro-Bold.woff2 +0 -0
  2. package/BeVietnamPro/BeVietnamPro-ExtraLight.woff2 +0 -0
  3. package/BeVietnamPro/BeVietnamPro-Light.woff2 +0 -0
  4. package/BeVietnamPro/BeVietnamPro-Medium.woff2 +0 -0
  5. package/BeVietnamPro/BeVietnamPro-Regular.woff2 +0 -0
  6. package/BeVietnamPro/BeVietnamPro-SemiBold.woff2 +0 -0
  7. package/BeVietnamPro/BeVietnamPro-Thin.woff2 +0 -0
  8. package/SpaceMono-Regular.woff2 +0 -0
  9. package/components.css +5 -0
  10. package/dm-sans/DMSans-Bold.woff2 +0 -0
  11. package/dm-sans/DMSans-Light.woff2 +0 -0
  12. package/dm-sans/DMSans-Medium.woff2 +0 -0
  13. package/dm-sans/DMSans-Regular.woff2 +0 -0
  14. package/dm-sans/DMSans-SemiBold.woff2 +0 -0
  15. package/dm-sans/DMSans-Thin.woff2 +0 -0
  16. package/fesm2022/foxeltech-angular-ui.mjs +1070 -264
  17. package/fesm2022/foxeltech-angular-ui.mjs.map +1 -1
  18. package/fonts.css +68 -34
  19. package/index.d.ts +536 -139
  20. package/orbitron/Orbitron-Bold.woff2 +0 -0
  21. package/orbitron/Orbitron-Medium.woff2 +0 -0
  22. package/orbitron/Orbitron-Regular.woff2 +0 -0
  23. package/orbitron/Orbitron-SemiBold.woff2 +0 -0
  24. package/package.json +6 -6
  25. package/roboto/Roboto-Black.woff2 +0 -0
  26. package/roboto/Roboto-BlackItalic.woff2 +0 -0
  27. package/roboto/Roboto-Bold.woff2 +0 -0
  28. package/roboto/Roboto-BoldCondensed.woff2 +0 -0
  29. package/roboto/Roboto-BoldCondensedItalic.woff2 +0 -0
  30. package/roboto/Roboto-BoldItalic.woff2 +0 -0
  31. package/roboto/Roboto-Condensed.woff2 +0 -0
  32. package/roboto/Roboto-CondensedItalic.woff2 +0 -0
  33. package/roboto/Roboto-Italic.woff2 +0 -0
  34. package/roboto/Roboto-Light.woff2 +0 -0
  35. package/roboto/Roboto-LightItalic.woff2 +0 -0
  36. package/roboto/Roboto-Medium.woff2 +0 -0
  37. package/roboto/Roboto-MediumItalic.woff2 +0 -0
  38. package/roboto/Roboto-Regular.woff2 +0 -0
  39. package/roboto/Roboto-Thin.woff2 +0 -0
  40. package/roboto/Roboto-ThinItalic.woff2 +0 -0
  41. package/src/lib/styles/components.css +5 -0
  42. package/src/lib/styles/fonts.css +68 -34
  43. package/src/lib/styles/tailwind.css +1 -1
  44. package/src/lib/ui/components/button/button.component.scss +0 -0
  45. package/src/lib/ui/components/chart/chart.component.scss +49 -0
  46. package/src/lib/ui/components/checkbox/checkbox.component.scss +0 -0
  47. package/src/lib/ui/components/circle-progress-bar/circle-progress-bar.component.scss +0 -0
  48. package/src/lib/ui/components/datetime-picker/datetime-picker.component.scss +144 -0
  49. package/src/lib/ui/components/dnd-upload/dnd-upload.component.scss +87 -0
  50. package/src/lib/ui/components/drawer/drawer.component.scss +131 -0
  51. package/src/lib/ui/components/empty-state/empty-state.component.html +9 -0
  52. package/src/lib/ui/components/filter-chips/filter-chips.component.html +12 -0
  53. package/src/lib/ui/components/flow-connection/flow-connection.component.scss +0 -0
  54. package/src/lib/ui/components/hero-icon/hero-icon.component.scss +0 -0
  55. package/src/lib/ui/components/info-field/info-field.component.html +4 -0
  56. package/src/lib/ui/components/kanban-board/kanban-board.component.scss +67 -0
  57. package/src/lib/ui/components/loading-panel/loading-panel.component.scss +0 -0
  58. package/src/lib/ui/components/meter/meter.component.html +15 -0
  59. package/src/lib/ui/components/radio-button-toggle/radio-button-toggle.component.scss +0 -0
  60. package/src/lib/ui/components/rich-text-area/rich-text-area.component.scss +15 -0
  61. package/src/lib/ui/components/search-bar/search-bar.component.scss +0 -0
  62. package/src/lib/ui/components/section-card/section-card.component.html +9 -0
  63. package/src/lib/ui/components/select/select.component.css +38 -3
  64. package/src/lib/ui/components/severity-badges/severity-badges.component.html +10 -0
  65. package/src/lib/ui/components/skeleton-detail/skeleton-detail.component.html +22 -0
  66. package/src/lib/ui/components/skeleton-list/skeleton-list.component.html +12 -0
  67. package/src/lib/ui/components/skeleton-table-loading/skeleton-table-loading.component.scss +0 -0
  68. package/src/lib/ui/components/slider/slider.component.scss +0 -0
  69. package/src/lib/ui/components/stat-cards/stat-cards.component.html +18 -0
  70. package/src/lib/ui/components/switch/switch.component.scss +0 -0
  71. package/src/lib/ui/components/tab-component/tab.component.scss +0 -0
  72. package/src/lib/ui/components/tab-group/tab-group.component.scss +48 -0
  73. package/src/lib/ui/components/table-cell/table-cell.component.scss +0 -0
  74. package/src/lib/ui/components/tag/tag.component.scss +0 -0
  75. package/src/lib/ui/components/toast/toast.component.scss +0 -0
  76. package/src/lib/ui/components/toast-container/toast-container.component.scss +0 -0
  77. package/src/lib/ui/components/tree-diagram/tree-diagram.component.scss +0 -0
  78. package/src/lib/ui/dialogs/confirmation/confirmation.component.scss +0 -0
  79. package/tailwind.config.js +18 -0
  80. package/tailwind.css +1 -1
  81. package/BeVietnamPro/BeVietnamPro-Bold.ttf +0 -0
  82. package/BeVietnamPro/BeVietnamPro-ExtraLight.ttf +0 -0
  83. package/BeVietnamPro/BeVietnamPro-Light.ttf +0 -0
  84. package/BeVietnamPro/BeVietnamPro-Medium.ttf +0 -0
  85. package/BeVietnamPro/BeVietnamPro-Regular.ttf +0 -0
  86. package/BeVietnamPro/BeVietnamPro-SemiBold.ttf +0 -0
  87. package/BeVietnamPro/BeVietnamPro-Thin.ttf +0 -0
  88. package/SpaceMono-Regular.ttf +0 -0
  89. package/dm-sans/DMSans-Bold.ttf +0 -0
  90. package/dm-sans/DMSans-Light.ttf +0 -0
  91. package/dm-sans/DMSans-Medium.ttf +0 -0
  92. package/dm-sans/DMSans-Regular.ttf +0 -0
  93. package/dm-sans/DMSans-SemiBold.ttf +0 -0
  94. package/dm-sans/DMSans-Thin.ttf +0 -0
  95. package/orbitron/Orbitron-Bold.ttf +0 -0
  96. package/orbitron/Orbitron-Medium.ttf +0 -0
  97. package/orbitron/Orbitron-Regular.ttf +0 -0
  98. package/orbitron/Orbitron-SemiBold.ttf +0 -0
  99. package/roboto/Roboto-Black.ttf +0 -0
  100. package/roboto/Roboto-BlackItalic.ttf +0 -0
  101. package/roboto/Roboto-Bold.ttf +0 -0
  102. package/roboto/Roboto-BoldCondensed.ttf +0 -0
  103. package/roboto/Roboto-BoldCondensedItalic.ttf +0 -0
  104. package/roboto/Roboto-BoldItalic.ttf +0 -0
  105. package/roboto/Roboto-Condensed.ttf +0 -0
  106. package/roboto/Roboto-CondensedItalic.ttf +0 -0
  107. package/roboto/Roboto-Italic.ttf +0 -0
  108. package/roboto/Roboto-Light.ttf +0 -0
  109. package/roboto/Roboto-LightItalic.ttf +0 -0
  110. package/roboto/Roboto-Medium.ttf +0 -0
  111. package/roboto/Roboto-MediumItalic.ttf +0 -0
  112. package/roboto/Roboto-Regular.ttf +0 -0
  113. package/roboto/Roboto-Thin.ttf +0 -0
  114. package/roboto/Roboto-ThinItalic.ttf +0 -0
package/index.d.ts CHANGED
@@ -1,50 +1,52 @@
1
1
  import * as i0 from '@angular/core';
2
- import { OnDestroy, Injector, ApplicationRef, OnInit, AfterViewInit, ChangeDetectorRef, Type, EventEmitter, ModuleWithProviders, TemplateRef, ViewContainerRef, ElementRef, RendererFactory2, AfterContentInit, QueryList, Renderer2, OnChanges, NgZone } from '@angular/core';
2
+ import { OnDestroy, Injector, DestroyRef, ApplicationRef, OnInit, AfterViewInit, ChangeDetectorRef, Type, EventEmitter, Provider, ModuleWithProviders, TemplateRef, ViewContainerRef, ElementRef, RendererFactory2, OnChanges, SimpleChanges, AfterContentInit, QueryList, Renderer2, NgZone } from '@angular/core';
3
3
  import * as _foxeltech_angular_ui from '@foxeltech/angular-ui';
4
- import * as i43 from '@angular/material/paginator';
4
+ import * as i52 from '@angular/material/paginator';
5
5
  import { MatPaginator } from '@angular/material/paginator';
6
- import * as i44 from '@angular/material/table';
6
+ import * as i53 from '@angular/material/table';
7
7
  import { MatTableDataSource, MatTable } from '@angular/material/table';
8
8
  import { HttpClient, HttpEvent, HttpErrorResponse, HttpInterceptor, HttpRequest, HttpHandler } from '@angular/common/http';
9
9
  import * as rxjs from 'rxjs';
10
10
  import { Observable, Subject } from 'rxjs';
11
- import * as i30 from '@angular/forms';
11
+ import * as i39 from '@angular/forms';
12
12
  import { NgForm, ValidationErrors, NgControl, ControlValueAccessor } from '@angular/forms';
13
- import * as i46 from '@angular/material/dialog';
13
+ import * as i55 from '@angular/material/dialog';
14
14
  import { MatDialogRef, MatDialog } from '@angular/material/dialog';
15
+ import * as i40 from '@angular/router';
16
+ import { ActivatedRouteSnapshot, RouterStateSnapshot, ResolveFn, CanActivate, Router } from '@angular/router';
15
17
  import { TranslateHttpLoader } from '@ngx-translate/http-loader';
16
18
  import * as i1 from '@ngx-translate/core';
17
19
  import { TranslateService } from '@ngx-translate/core';
18
- import * as i31 from '@angular/router';
19
- import { CanActivate, Router } from '@angular/router';
20
20
  import { EChartsOption, ECharts } from 'echarts';
21
- import * as i37 from 'ngx-vflow';
21
+ import * as i46 from 'ngx-vflow';
22
22
  import { Node, Edge, Connection } from 'ngx-vflow';
23
- import * as i56 from '@angular/cdk/drag-drop';
23
+ import * as i65 from '@angular/cdk/drag-drop';
24
24
  import { CdkDragDrop } from '@angular/cdk/drag-drop';
25
- import * as i29 from '@angular/common';
26
- import * as i32 from '@danielmoncada/angular-datetime-picker';
27
- import * as i33 from '@danielmoncada/angular-datetime-picker-moment-adapter';
28
- import * as i36 from '@dimaslz/ng-heroicons';
29
- import * as i38 from 'ngx-echarts';
30
- import * as i39 from '@angular/material/select';
31
- import * as i40 from '@angular/material/radio';
32
- import * as i41 from '@angular/material/button';
33
- import * as i42 from '@angular/material/icon';
34
- import * as i45 from '@angular/material/snack-bar';
35
- import * as i47 from '@angular/material/checkbox';
36
- import * as i48 from '@angular/material/card';
37
- import * as i49 from '@angular/material/datepicker';
38
- import * as i50 from '@angular/material/timepicker';
39
- import * as i51 from '@angular/material/badge';
40
- import * as i52 from '@angular/material/expansion';
41
- import * as i53 from '@angular/material/form-field';
42
- import * as i54 from '@angular/material/menu';
43
- import * as i55 from '@angular/material/tooltip';
25
+ import * as i38 from '@angular/common';
26
+ import * as i41 from '@danielmoncada/angular-datetime-picker';
27
+ import * as i42 from '@danielmoncada/angular-datetime-picker-moment-adapter';
28
+ import * as i45 from '@dimaslz/ng-heroicons';
29
+ import * as i47 from 'ngx-echarts';
30
+ import * as i48 from '@angular/material/select';
31
+ import * as i49 from '@angular/material/radio';
32
+ import * as i50 from '@angular/material/button';
33
+ import * as i51 from '@angular/material/icon';
34
+ import * as i54 from '@angular/material/snack-bar';
35
+ import * as i56 from '@angular/material/checkbox';
36
+ import * as i57 from '@angular/material/card';
37
+ import * as i58 from '@angular/material/datepicker';
38
+ import * as i59 from '@angular/material/timepicker';
39
+ import * as i60 from '@angular/material/badge';
40
+ import * as i61 from '@angular/material/expansion';
41
+ import * as i62 from '@angular/material/form-field';
42
+ import * as i63 from '@angular/material/menu';
43
+ import * as i64 from '@angular/material/tooltip';
44
44
 
45
45
  declare abstract class BaseComponent implements OnDestroy {
46
46
  protected injector: Injector;
47
- constructor(injector: Injector);
47
+ /** Teardown hook for subscriptions: takeUntilDestroyed(this.destroyRef). */
48
+ protected destroyRef: DestroyRef;
49
+ constructor(injector?: Injector);
48
50
  ngOnDestroy(): void;
49
51
  static ɵfac: i0.ɵɵFactoryDeclaration<BaseComponent, never>;
50
52
  static ɵdir: i0.ɵɵDirectiveDeclaration<BaseComponent, never, never, {}, {}, never, never, true, never>;
@@ -54,6 +56,13 @@ declare class HttpWrapper {
54
56
  http: HttpClient;
55
57
  baseURL: string;
56
58
  constructor(http: HttpClient, baseURL: string);
59
+ /**
60
+ * Hook applied to every resolved response (get/post/put/delete and all verb
61
+ * helpers built on them). Default is identity; override to normalize a
62
+ * backend convention once (e.g. FxUtils.camelizeDeep for snake_case +
63
+ * protobuf-Long payloads) instead of wrapping each method.
64
+ */
65
+ protected transformResponse(res: any): any;
57
66
  private addCredentials;
58
67
  get(url?: string, params?: any): Promise<any>;
59
68
  post(url: string, body?: any, options?: any): Promise<any>;
@@ -158,7 +167,21 @@ declare class BaseTableComponent<T = any> extends BaseComponent implements OnIni
158
167
  init(): void;
159
168
  ngAfterViewInit(): void;
160
169
  refresh(): Promise<void>;
170
+ /**
171
+ * Where the list is fetched from. Default (null) keeps the legacy behavior
172
+ * of calling `api.search()` (GET /search) untouched. Subclasses whose list
173
+ * lives elsewhere override this instead of re-implementing fetch() — and
174
+ * keep the stale-response sequence guard for free.
175
+ */
176
+ protected listRequest(): {
177
+ method: 'get' | 'post';
178
+ url: string;
179
+ } | null;
180
+ /** Result keys the list/total are read from. Override alongside listRequest(). */
181
+ protected listKey: string;
182
+ protected totalKey: string;
161
183
  setDataSource(result: any): void;
184
+ private _fetchSeq;
162
185
  fetch(): Promise<void>;
163
186
  onPageChange(event: any): Promise<void>;
164
187
  resolve(): {};
@@ -225,9 +248,205 @@ declare class BaseResolver {
225
248
  baseResolverInit(): void;
226
249
  }
227
250
 
251
+ interface FxListRequest {
252
+ /** Defaults to 'get'. */
253
+ method?: 'get' | 'post';
254
+ url: string;
255
+ /** Query params (get) — for post they are sent as the body unless `body` is set. */
256
+ params?: any;
257
+ body?: any;
258
+ }
259
+ interface FxListResolverContext {
260
+ /** Page size remembered for this route url (FxStorageService convention), default 10. */
261
+ pageSize: number;
262
+ }
263
+ /**
264
+ * Functional replacement for the copy-pasted list-resolver class:
265
+ * starts the loading overlay, runs one API request, and on failure stops the
266
+ * overlay and shows a parsed error toast — the exact convention every
267
+ * BaseResolver subclass hand-rolls today. BaseResolver stays for existing
268
+ * classes; new routes should use this factory.
269
+ *
270
+ * Usage:
271
+ * resolve: { histories: fxListResolver(ScanManagementApi, (route, state, ctx) =>
272
+ * ({ url: `/${route.paramMap.get('id')}/history`, params: { page: 1, pageSize: ctx.pageSize } })) }
273
+ */
274
+ declare function fxListResolver<A extends HttpWrapper>(apiType: Type<A>, request: (route: ActivatedRouteSnapshot, state: RouterStateSnapshot, ctx: FxListResolverContext) => FxListRequest): ResolveFn<any>;
275
+
276
+ type FxApiClass = Type<HttpWrapper> & {
277
+ provider: Provider;
278
+ };
279
+ /**
280
+ * Factory for the 11-line HttpWrapper subclasses copy-pasted per endpoint.
281
+ * Returns a distinct injectable class per call (so constructor injection by
282
+ * type keeps working) without needing a decorator:
283
+ *
284
+ * export const ScanManagementApi = createApi(() => `${environment.baseService}/scarf/scan`);
285
+ * // module: providers: [ScanManagementApi.provider]
286
+ * // usage: constructor(private api: InstanceType<typeof ScanManagementApi>)
287
+ *
288
+ * `baseURL` accepts a string or a lazy factory (for environment-derived URLs).
289
+ * An optional `transform` plugs into HttpWrapper.transformResponse — e.g.
290
+ * FxUtils.camelizeDeep for snake_case/Long-encoded backends.
291
+ *
292
+ * IMPORTANT — when subclassing (`@Injectable() class X extends createApi(...)`),
293
+ * declare an explicit `constructor(http: HttpClient) { super(http); }`.
294
+ * The generated base carries no Angular factory metadata, so an inherited
295
+ * constructor makes Ivy fall back to `new X()` with NO arguments: the class
296
+ * silently gets `http = undefined` and every call fails at runtime while the
297
+ * build stays green.
298
+ */
299
+ declare function createApi(baseURL: string | (() => string), transform?: (res: any) => any): FxApiClass;
300
+
301
+ type NotificationCallback = (...args: any[]) => void;
302
+ interface NotificationConnectOptions {
303
+ headers?: any;
304
+ accessTokenFactory?: () => string | Promise<string>;
305
+ }
306
+ declare class NotificationService {
307
+ private hubConnection;
308
+ private connectionStatus;
309
+ /**
310
+ * Single source of truth for subscriptions. The hub connection gets exactly
311
+ * one dispatcher per event, so:
312
+ * - off(event, callback) can remove one subscriber without nuking the rest
313
+ * (hubConnection.off(event) removes every handler for the event);
314
+ * - handlers registered before connect() are attached once connected;
315
+ * - handlers survive a re-connect that builds a new HubConnection.
316
+ */
317
+ private handlers;
318
+ private connectPromise;
319
+ private lastHubUrl;
320
+ private lastOptions?;
321
+ private manualDisconnect;
322
+ private restartAttempts;
323
+ private restartTimer;
324
+ /**
325
+ * Connect to SignalR Hub. Overlapping calls share the same in-flight
326
+ * promise instead of building two competing connections.
327
+ */
328
+ connect(hubUrl: string, options?: NotificationConnectOptions): Promise<void>;
329
+ private doConnect;
330
+ private scheduleRestart;
331
+ /**
332
+ * Disconnect from SignalR Hub. Stops any pending auto-restart.
333
+ */
334
+ disconnect(): Promise<void>;
335
+ /**
336
+ * Listen to a specific event from the server. Safe to call before
337
+ * connect(): the handler is attached once the connection is up.
338
+ */
339
+ on(eventName: string, callback: NotificationCallback): void;
340
+ /**
341
+ * Remove listener(s) for an event.
342
+ * Prefer passing the callback (or using on$()): calling off(event) without
343
+ * one removes EVERY handler for the event, including other features'.
344
+ */
345
+ off(eventName: string, callback?: NotificationCallback): void;
346
+ /**
347
+ * Observable stream of an event. Teardown removes exactly this
348
+ * subscriber — the safe replacement for manual on()/off().
349
+ * Emits the event's first argument (SignalR payloads are single-arg here).
350
+ */
351
+ on$<T = any>(eventName: string): Observable<T>;
352
+ private attachDispatcher;
353
+ private dispatch;
354
+ /**
355
+ * Invoke a method on the server
356
+ * @param methodName - Name of the method to invoke
357
+ * @param args - Arguments to pass to the method
358
+ */
359
+ invoke(methodName: string, ...args: any[]): Promise<any>;
360
+ /**
361
+ * Get current connection status
362
+ */
363
+ getConnectionStatus(): 'disconnected' | 'connecting' | 'connected';
364
+ /**
365
+ * Get connection ID
366
+ */
367
+ getConnectionId(): string | null;
368
+ static ɵfac: i0.ɵɵFactoryDeclaration<NotificationService, never>;
369
+ static ɵprov: i0.ɵɵInjectableDeclaration<NotificationService>;
370
+ }
371
+
372
+ interface RealtimeTableEvent<T> {
373
+ /** Value the event is matched to a row with (via `matchKey`). */
374
+ key: any;
375
+ /** Fields to merge onto the matched row. */
376
+ patch: Partial<T>;
377
+ /** Marks a final state (e.g. COMPLETED) — forwarded to `onApplied`. */
378
+ terminal?: boolean;
379
+ }
380
+ interface RealtimeTableSyncOptions<T> {
381
+ /** Hub event name to subscribe to (via NotificationService.on$). */
382
+ event: string;
383
+ /** Parse the raw payload; return null to ignore the event. */
384
+ parse: (raw: any) => RealtimeTableEvent<T> | null;
385
+ /** Current table rows (live reference is fine). */
386
+ getRows: () => T[];
387
+ /** Replace table rows (callers usually also trigger change detection here). */
388
+ setRows: (rows: T[]) => void;
389
+ /** Key events match rows on (e.g. row.analyzeCode). */
390
+ matchKey: (row: T) => any;
391
+ /**
392
+ * Stable identity used when merging a background re-fetch into the current
393
+ * rows (existing row objects are patched in place so the table keeps their
394
+ * identity — no flash).
395
+ */
396
+ identityKey: (row: T) => any;
397
+ /** Background list re-fetch used to pick up rows that don't exist yet. */
398
+ fetchList: () => Promise<{
399
+ rows: T[];
400
+ total?: number;
401
+ } | null>;
402
+ /** Called after a patch lands on a row (change detection, terminal enrich…). */
403
+ onApplied?: (row: T, event: RealtimeTableEvent<T>) => void;
404
+ /** Called when a background re-fetch produced a new total. */
405
+ onTotal?: (total: number) => void;
406
+ /** Debounce for the background sync (default 1200ms). */
407
+ debounceMs?: number;
408
+ /** Consecutive no-op syncs before giving up on buffered keys (default 3). */
409
+ idleCap?: number;
410
+ }
411
+ /**
412
+ * Live-progress plumbing for server-paginated tables fed by hub events:
413
+ * events matching a visible row are merged in place; events for rows that
414
+ * are not in the list yet (a just-created record whose list read lags) are
415
+ * buffered by key and replayed after a debounced, idle-capped background
416
+ * re-fetch that merges by stable identity.
417
+ *
418
+ * The domain contract (event name, payload parsing, terminal semantics) is
419
+ * injected via options — nothing app-specific lives here.
420
+ */
421
+ declare class RealtimeTableSync<T = any> {
422
+ private notifications;
423
+ private options;
424
+ private pending;
425
+ private syncTimer;
426
+ private idleSyncs;
427
+ private stopped;
428
+ private subscription;
429
+ constructor(notifications: NotificationService, options: RealtimeTableSyncOptions<T>);
430
+ /**
431
+ * Subscribe to the hub event. Pass a DestroyRef to tie teardown to a
432
+ * component lifecycle; stop() is still available for manual control.
433
+ */
434
+ start(destroyRef?: DestroyRef): this;
435
+ stop(): void;
436
+ /**
437
+ * Replay buffered events onto the current rows (call from setDataSource so
438
+ * a regular refresh also applies buffered progress). Returns true if
439
+ * anything was applied.
440
+ */
441
+ applyPending(): boolean;
442
+ private handleEvent;
443
+ private scheduleSync;
444
+ private syncFromServer;
445
+ }
446
+
228
447
  declare class FxUtils {
229
448
  private static preresolve;
230
- static resolve(value: Object): Promise<{}>;
449
+ static resolve(value: object): Promise<{}>;
231
450
  static isNotNull(obj: any): boolean;
232
451
  static isNull(obj: any): boolean;
233
452
  static isFunction(obj: any): boolean;
@@ -242,12 +461,86 @@ declare class FxUtils {
242
461
  static isSameCollection(collection: any[], compareCollection: any): boolean;
243
462
  static isSameValue(model: any, compareModel: any): boolean;
244
463
  static parseError(err: HttpErrorResponse): any;
245
- static convertColorFromVariable(name: string, alpha?: number): string;
464
+ /**
465
+ * Resolve a theme channel triple (`--danger: 255 122 0`) to a CSS colour.
466
+ * Pass `legacyCommaSyntax: true` for canvas/ECharts consumers: canvas paints
467
+ * both forms, but zrender's colour parser can't read the CSS4 space syntax
468
+ * and renders slices black on hover when given it.
469
+ */
470
+ static convertColorFromVariable(name: string, alpha?: number, options?: {
471
+ legacyCommaSyntax?: boolean;
472
+ }): string;
246
473
  static getTagClass(key: string, isCriticalExist?: boolean): TagType;
247
474
  static validateEmail(value: string): boolean;
475
+ /** Safe deep accessor with the org-wide empty placeholder. */
476
+ static value(model: any, key: string, defaultValue?: any): any;
477
+ /**
478
+ * Severity weight for ordering — kept next to getTagClass so ordering and
479
+ * colouring can never drift apart.
480
+ */
481
+ static severityWeight(level: string): number;
482
+ /** Org-wide date-time rendering (DD/MM/YYYY HH:mm:ss, local time). */
483
+ static formatDateTime(time: string | Date): string;
484
+ /** Seconds → compact duration ("2d 4h", "3h 12m", "45s"). */
485
+ static formatDuration(totalSeconds: number): string;
486
+ /** Relative time within the last 24h ("3 hours ago"), else DD/MM/YYYY. */
487
+ static formatRelative(time: string | Date): string;
488
+ /**
489
+ * Normalize a snake_case + protobuf-Long API payload for camelCase binding:
490
+ * - genuine snake_case keys -> camelCase (data-as-key entries such as DLL
491
+ * names like "kernel32.dll" are left untouched by the strict regex);
492
+ * - Long-encoded numbers `{ high, low, unsigned }` -> plain number.
493
+ */
494
+ static camelizeDeep(input: any): any;
248
495
  static formatSizeUnits(bytes: number): string;
249
496
  }
250
497
 
498
+ /**
499
+ * Shared value→colour rules for report/metric displays.
500
+ *
501
+ * Every metric that varies in meaning (severity, score, count…) gets ONE rule
502
+ * so the colour is consistent everywhere and callers never hardcode a tone
503
+ * for a value that can be good or bad. Domain-specific rules (EPSS, exploit
504
+ * maturity, license categories…) stay in the consuming app — only the
505
+ * mechanism and the org-wide rules live here.
506
+ *
507
+ * There is intentionally NO `default` text/bg colour in the theme, so rule
508
+ * helpers return `null` for "no meaningful value" and the `toneText` /
509
+ * `toneBg` / `toneBadge` wrappers fall back to a neutral class.
510
+ *
511
+ * The emitted Tailwind utilities are guaranteed by the safelist in the shared
512
+ * tailwind preset (tailwind.config.js) — do not rely on content scanning for
513
+ * these dynamic strings.
514
+ */
515
+ type Tone = 'critical' | 'danger' | 'warning' | 'success' | 'information';
516
+ /** Severity / risk-level string → tone (Critical & High → danger, Medium → warning, Low → success). */
517
+ declare function severityTone(value: any): Tone | null;
518
+ /**
519
+ * CVSS-style 0–10 score → tone, following the CVSS v3 qualitative bands
520
+ * (≥9 Critical, ≥7 High, ≥4 Medium, else Low). Backends occasionally send a
521
+ * 0–100 scale, so values > 10 are normalised down by /10.
522
+ */
523
+ declare function scoreTone(score: any): Tone | null;
524
+ /**
525
+ * Count of "bad" things → tone: 0 is good (success), anything positive is bad.
526
+ * `positiveTone` sets how severe a non-zero count reads (default `danger`;
527
+ * pass `critical` for the worst metrics, `warning` for milder ones).
528
+ * Non-numeric values (e.g. "--") return null → neutral.
529
+ */
530
+ declare function countTone(count: any, positiveTone?: Tone): Tone | null;
531
+ /** Tone → text colour class, with a neutral fallback when there is no value. */
532
+ declare function toneText(tone: Tone | null): string;
533
+ /** Tone → background colour class, with a neutral fallback when there is no value. */
534
+ declare function toneBg(tone: Tone | null): string;
535
+ /** Tone → soft pill/badge classes (tinted bg + matching text), neutral fallback. */
536
+ declare function toneBadge(tone: Tone | null): string;
537
+ /**
538
+ * Tone → resolved CSS colour string for ECharts / canvas where a Tailwind
539
+ * class can't be used (e.g. per-slice pie `itemStyle.color`). Emits the
540
+ * legacy comma syntax — see FxUtils.convertColorFromVariable.
541
+ */
542
+ declare function toneColor(tone: Tone | null, alpha?: number): string;
543
+
251
544
  declare class FxValidators {
252
545
  /**
253
546
  * Name fields: firstName, lastName, groupName, projectName, displayName
@@ -413,7 +706,7 @@ declare class QuillStyleLoaderService {
413
706
  private platformId;
414
707
  private loaded;
415
708
  private loadingPromise;
416
- constructor(platformId: Object);
709
+ constructor(platformId: object);
417
710
  /**
418
711
  * Load Quill CSS (only in browser). Returns a promise that resolves when
419
712
  * the CSS links have been appended.
@@ -439,76 +732,41 @@ declare class ThemeService {
439
732
  static ɵprov: i0.ɵɵInjectableDeclaration<ThemeService>;
440
733
  }
441
734
 
442
- declare class NotificationService {
443
- private hubConnection;
444
- private connectionStatus;
445
- constructor();
446
- /**
447
- * Connect to SignalR Hub
448
- * @param hubUrl - The URL of the SignalR hub
449
- * @returns Promise that resolves when connected
450
- */
451
- connect(hubUrl: string, options?: {
452
- headers?: any;
453
- accessTokenFactory?: () => string | Promise<string>;
454
- }): Promise<void>;
455
- /**
456
- * Disconnect from SignalR Hub
457
- */
458
- disconnect(): Promise<void>;
735
+ type ErrorMessages = Record<string, any>;
736
+ declare abstract class FxComponent<T> implements ControlValueAccessor {
459
737
  /**
460
- * Listen to a specific event from the server
461
- * @param eventName - Name of the event to listen to
462
- * @param callback - Callback function to execute when event is received
738
+ * Injected via inject() rather than a constructor parameter: parameter
739
+ * decorators (@Optional/@Self) are NOT inherited by subclasses, which used
740
+ * to make every control crash when used without a form binding, or silently
741
+ * bind to an ancestor's NgControl.
463
742
  */
464
- on(eventName: string, callback: (...args: any[]) => void): void;
465
- /**
466
- * Remove listener for a specific event
467
- * @param eventName - Name of the event to stop listening to
468
- */
469
- off(eventName: string): void;
470
- /**
471
- * Invoke a method on the server
472
- * @param methodName - Name of the method to invoke
473
- * @param args - Arguments to pass to the method
474
- */
475
- invoke(methodName: string, ...args: any[]): Promise<any>;
476
- /**
477
- * Get current connection status
478
- */
479
- getConnectionStatus(): 'disconnected' | 'connecting' | 'connected';
480
- /**
481
- * Get connection ID
482
- */
483
- getConnectionId(): string | null;
484
- static ɵfac: i0.ɵɵFactoryDeclaration<NotificationService, never>;
485
- static ɵprov: i0.ɵɵInjectableDeclaration<NotificationService>;
486
- }
487
-
488
- type ErrorMessages = {
489
- [key: string]: any;
490
- };
491
- declare class FxComponent<T> implements ControlValueAccessor {
492
- ngControl: NgControl;
743
+ ngControl: NgControl | null;
744
+ disabled: boolean;
493
745
  value: T;
494
746
  onChange: (value: T) => void;
495
747
  onTouched: () => void;
496
- validationError: ErrorMessages;
748
+ validationError?: ErrorMessages;
497
749
  errorMessages?: ErrorMessages;
498
- constructor(ngControl: NgControl);
750
+ constructor();
499
751
  setValue(value: T): void;
500
752
  onEnter(value: T): void;
501
753
  writeValue(value: T): void;
502
754
  registerOnChange(fn: (value: T) => void): void;
503
755
  registerOnTouched(fn: () => void): void;
756
+ setDisabledState(isDisabled: boolean): void;
504
757
  get invalid(): boolean;
505
- get errors(): {
506
- [key: string]: any;
507
- };
508
- validate(validateFn: Function): void;
758
+ get errors(): Record<string, any>;
759
+ validate(validateFn?: (value: T) => ValidationErrors | null | undefined): void;
509
760
  setErrors(error: ValidationErrors): void;
761
+ /**
762
+ * Removes only the errors this component set imperatively via setErrors().
763
+ * Errors owned by the validator pipeline (built-in or custom validators)
764
+ * are left untouched.
765
+ */
510
766
  clearErrors(): void;
511
767
  getErrorMessage(label?: string): string | null;
768
+ static ɵfac: i0.ɵɵFactoryDeclaration<FxComponent<any>, never>;
769
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FxComponent<any>, never, never, { "disabled": { "alias": "disabled"; "required": false; }; }, {}, never, never, true, never>;
512
770
  }
513
771
 
514
772
  declare class InputComponent extends FxComponent<string> implements AfterViewInit {
@@ -517,11 +775,8 @@ declare class InputComponent extends FxComponent<string> implements AfterViewIni
517
775
  tooltip: string;
518
776
  type: string;
519
777
  placeholder: string;
520
- errorMessages: {
521
- [key: string]: string;
522
- };
778
+ errorMessages: Record<string, string>;
523
779
  required: string | boolean;
524
- disabled: boolean;
525
780
  suffixIcon?: string;
526
781
  class?: any;
527
782
  maxlength?: number;
@@ -531,9 +786,9 @@ declare class InputComponent extends FxComponent<string> implements AfterViewIni
531
786
  suffixClick: EventEmitter<void>;
532
787
  showPassword: boolean;
533
788
  validateError: ValidationErrors | null;
534
- constructor(ngControl: NgControl, ref: ChangeDetectorRef);
789
+ constructor(ref: ChangeDetectorRef);
535
790
  ngAfterViewInit(): void;
536
- setDisabledState?(isDisabled: boolean): void;
791
+ writeValue(value: string): void;
537
792
  onInput(event: Event): void;
538
793
  onFocus(): void;
539
794
  onBlur(): void;
@@ -541,10 +796,10 @@ declare class InputComponent extends FxComponent<string> implements AfterViewIni
541
796
  onSuffixClick(): void;
542
797
  get displayType(): string;
543
798
  static ɵfac: i0.ɵɵFactoryDeclaration<InputComponent, never>;
544
- static ɵcmp: i0.ɵɵComponentDeclaration<InputComponent, "fx-ui-input", never, { "label": { "alias": "label"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "type": { "alias": "type"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "errorMessages": { "alias": "errorMessages"; "required": false; }; "required": { "alias": "required"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "suffixIcon": { "alias": "suffixIcon"; "required": false; }; "class": { "alias": "class"; "required": false; }; "maxlength": { "alias": "maxlength"; "required": false; }; "validateFn": { "alias": "validateFn"; "required": false; }; }, { "blurred": "blurred"; "focused": "focused"; "suffixClick": "suffixClick"; }, never, never, false, never>;
799
+ static ɵcmp: i0.ɵɵComponentDeclaration<InputComponent, "fx-ui-input", never, { "label": { "alias": "label"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "type": { "alias": "type"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "errorMessages": { "alias": "errorMessages"; "required": false; }; "required": { "alias": "required"; "required": false; }; "suffixIcon": { "alias": "suffixIcon"; "required": false; }; "class": { "alias": "class"; "required": false; }; "maxlength": { "alias": "maxlength"; "required": false; }; "validateFn": { "alias": "validateFn"; "required": false; }; }, { "blurred": "blurred"; "focused": "focused"; "suffixClick": "suffixClick"; }, never, never, false, never>;
545
800
  }
546
801
 
547
- declare class SelectComponent extends FxComponent<string | string[]> implements AfterViewInit, OnInit {
802
+ declare class SelectComponent extends FxComponent<string | string[]> implements AfterViewInit, OnInit, OnChanges {
548
803
  private ref;
549
804
  label: string;
550
805
  tooltip: string;
@@ -554,10 +809,7 @@ declare class SelectComponent extends FxComponent<string | string[]> implements
554
809
  value: string;
555
810
  }[];
556
811
  multiple: boolean;
557
- disabled: boolean;
558
- errorMessages: {
559
- [key: string]: string;
560
- };
812
+ errorMessages: Record<string, string>;
561
813
  required: boolean;
562
814
  class?: any;
563
815
  enableSearch: boolean;
@@ -573,8 +825,11 @@ declare class SelectComponent extends FxComponent<string | string[]> implements
573
825
  value: string;
574
826
  }[];
575
827
  private search$;
576
- constructor(ngControl: NgControl, ref: ChangeDetectorRef);
828
+ private destroyRef;
829
+ constructor(ref: ChangeDetectorRef);
830
+ writeValue(value: string | string[]): void;
577
831
  ngOnInit(): void;
832
+ ngOnChanges(changes: SimpleChanges): void;
578
833
  ngAfterViewInit(): void;
579
834
  onOpened(open: boolean): void;
580
835
  onSearchChange(value: string): void;
@@ -582,7 +837,7 @@ declare class SelectComponent extends FxComponent<string | string[]> implements
582
837
  onSelectionChange(value: any): void;
583
838
  isSelected(value: string): boolean;
584
839
  static ɵfac: i0.ɵɵFactoryDeclaration<SelectComponent, never>;
585
- static ɵcmp: i0.ɵɵComponentDeclaration<SelectComponent, "fx-ui-select", never, { "label": { "alias": "label"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "options": { "alias": "options"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "errorMessages": { "alias": "errorMessages"; "required": false; }; "required": { "alias": "required"; "required": false; }; "class": { "alias": "class"; "required": false; }; "enableSearch": { "alias": "enableSearch"; "required": false; }; "searchFn": { "alias": "searchFn"; "required": false; }; }, { "closed": "closed"; }, never, never, false, never>;
840
+ static ɵcmp: i0.ɵɵComponentDeclaration<SelectComponent, "fx-ui-select", never, { "label": { "alias": "label"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "options": { "alias": "options"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "errorMessages": { "alias": "errorMessages"; "required": false; }; "required": { "alias": "required"; "required": false; }; "class": { "alias": "class"; "required": false; }; "enableSearch": { "alias": "enableSearch"; "required": false; }; "searchFn": { "alias": "searchFn"; "required": false; }; }, { "closed": "closed"; }, never, never, false, never>;
586
841
  }
587
842
 
588
843
  interface IRadioButton {
@@ -602,40 +857,37 @@ declare class RadioButtonComponent extends FxComponent<IRadioButton> implements
602
857
  icon?: any;
603
858
  tooltip?: string;
604
859
  }[];
605
- disabled: boolean;
606
860
  errorMessages: ErrorMessages;
607
861
  class?: any;
608
- constructor(ngControl: NgControl, ref: ChangeDetectorRef);
862
+ constructor(ref: ChangeDetectorRef);
609
863
  ngAfterViewInit(): void;
610
- setDisabledState?(isDisabled: boolean): void;
611
864
  onSelectValue(value: any): void;
612
865
  static ɵfac: i0.ɵɵFactoryDeclaration<RadioButtonComponent, never>;
613
- static ɵcmp: i0.ɵɵComponentDeclaration<RadioButtonComponent, "fx-ui-radio", never, { "label": { "alias": "label"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "required": { "alias": "required"; "required": false; }; "options": { "alias": "options"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "errorMessages": { "alias": "errorMessages"; "required": false; }; "class": { "alias": "class"; "required": false; }; }, {}, never, never, false, never>;
866
+ static ɵcmp: i0.ɵɵComponentDeclaration<RadioButtonComponent, "fx-ui-radio", never, { "label": { "alias": "label"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "required": { "alias": "required"; "required": false; }; "options": { "alias": "options"; "required": false; }; "errorMessages": { "alias": "errorMessages"; "required": false; }; "class": { "alias": "class"; "required": false; }; }, {}, never, never, false, never>;
614
867
  }
615
868
 
616
869
  declare class CheckboxComponent extends FxComponent<any> implements AfterViewInit {
617
870
  private ref;
618
871
  label: string;
619
- disabled: boolean;
620
872
  rounded: boolean;
621
873
  valueChange: EventEmitter<boolean>;
622
- constructor(ngControl: NgControl, ref: ChangeDetectorRef);
874
+ constructor(ref: ChangeDetectorRef);
623
875
  ngAfterViewInit(): void;
624
- setDisabledState?(isDisabled: boolean): void;
876
+ writeValue(value: any): void;
625
877
  onInputChange(event: Event): void;
626
878
  markTouched(): void;
627
879
  static ɵfac: i0.ɵɵFactoryDeclaration<CheckboxComponent, never>;
628
- static ɵcmp: i0.ɵɵComponentDeclaration<CheckboxComponent, "fx-ui-checkbox", never, { "label": { "alias": "label"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "rounded": { "alias": "rounded"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, false, never>;
880
+ static ɵcmp: i0.ɵɵComponentDeclaration<CheckboxComponent, "fx-ui-checkbox", never, { "label": { "alias": "label"; "required": false; }; "rounded": { "alias": "rounded"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, false, never>;
629
881
  }
630
882
 
631
- type UploadResult = {
883
+ interface UploadResult {
632
884
  files: File[];
633
885
  accepted: File[];
634
886
  rejected: {
635
887
  file: File;
636
888
  reason: string;
637
889
  }[];
638
- };
890
+ }
639
891
  declare class DndUploadComponent {
640
892
  multiple: boolean;
641
893
  accept: string;
@@ -689,38 +941,33 @@ declare class RadioButtonToggleComponent extends FxComponent<any> implements Aft
689
941
  value: any;
690
942
  icon?: any;
691
943
  }[];
692
- disabled: boolean;
693
944
  errorMessages: ErrorMessages;
694
945
  class?: any;
695
- constructor(ngControl: NgControl, ref: ChangeDetectorRef);
946
+ constructor(ref: ChangeDetectorRef);
696
947
  ngAfterViewInit(): void;
697
- setDisabledState?(isDisabled: boolean): void;
698
948
  onSelectValue(value: any): void;
699
949
  static ɵfac: i0.ɵɵFactoryDeclaration<RadioButtonToggleComponent, never>;
700
- static ɵcmp: i0.ɵɵComponentDeclaration<RadioButtonToggleComponent, "fx-ui-radio-toggle, [fx-ui-radio-toggle]", never, { "label": { "alias": "label"; "required": false; }; "required": { "alias": "required"; "required": false; }; "options": { "alias": "options"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "errorMessages": { "alias": "errorMessages"; "required": false; }; "class": { "alias": "class"; "required": false; }; }, {}, never, never, false, never>;
950
+ static ɵcmp: i0.ɵɵComponentDeclaration<RadioButtonToggleComponent, "fx-ui-radio-toggle, [fx-ui-radio-toggle]", never, { "label": { "alias": "label"; "required": false; }; "required": { "alias": "required"; "required": false; }; "options": { "alias": "options"; "required": false; }; "errorMessages": { "alias": "errorMessages"; "required": false; }; "class": { "alias": "class"; "required": false; }; }, {}, never, never, false, never>;
701
951
  }
702
952
 
703
- declare class DatetimePicker extends FxComponent<any> implements AfterViewInit, OnInit {
953
+ declare class DatetimePicker extends FxComponent<any> implements AfterViewInit {
704
954
  private ref;
705
955
  label?: string;
706
956
  placeholder: string;
707
957
  required: boolean;
708
958
  type: any;
709
- disabled: boolean;
710
959
  minDate?: any;
711
960
  maxDate?: any;
712
961
  errorMessages: ErrorMessages;
713
962
  validateFn: (date: string) => ValidationErrors | null;
714
963
  startAt: any;
715
- constructor(ngControl: NgControl, ref: ChangeDetectorRef);
716
- ngOnInit(): void;
964
+ constructor(ref: ChangeDetectorRef);
717
965
  ngAfterViewInit(): void;
718
- setDisabledState?(isDisabled: boolean): void;
719
966
  onBlur(): void;
720
967
  writeValue(value: any): void;
721
968
  onValueChange(date: any): void;
722
969
  static ɵfac: i0.ɵɵFactoryDeclaration<DatetimePicker, never>;
723
- static ɵcmp: i0.ɵɵComponentDeclaration<DatetimePicker, "fx-ui-datetime-picker", never, { "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "type": { "alias": "type"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "errorMessages": { "alias": "errorMessages"; "required": false; }; "validateFn": { "alias": "validateFn"; "required": false; }; }, {}, never, never, false, never>;
970
+ static ɵcmp: i0.ɵɵComponentDeclaration<DatetimePicker, "fx-ui-datetime-picker", never, { "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "type": { "alias": "type"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "errorMessages": { "alias": "errorMessages"; "required": false; }; "validateFn": { "alias": "validateFn"; "required": false; }; }, {}, never, never, false, never>;
724
971
  }
725
972
 
726
973
  declare class LoadingPanel {
@@ -733,16 +980,16 @@ declare class LoadingPanel {
733
980
  declare class SearchBarComponent extends FxComponent<string> implements AfterViewInit {
734
981
  private ref;
735
982
  placeholder: string;
736
- disabled: boolean;
737
983
  search: EventEmitter<string>;
738
984
  valueChange: EventEmitter<string>;
739
- constructor(ngControl: NgControl, ref: ChangeDetectorRef);
985
+ constructor(ref: ChangeDetectorRef);
740
986
  ngAfterViewInit(): void;
987
+ writeValue(value: string): void;
741
988
  onValueChange(value: string): void;
742
989
  onEnterKey(): void;
743
990
  clear(): void;
744
991
  static ɵfac: i0.ɵɵFactoryDeclaration<SearchBarComponent, never>;
745
- static ɵcmp: i0.ɵɵComponentDeclaration<SearchBarComponent, "fx-ui-search-bar", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "search": "search"; "valueChange": "valueChange"; }, never, never, false, never>;
992
+ static ɵcmp: i0.ɵɵComponentDeclaration<SearchBarComponent, "fx-ui-search-bar", never, { "placeholder": { "alias": "placeholder"; "required": false; }; }, { "search": "search"; "valueChange": "valueChange"; }, never, never, false, never>;
746
993
  }
747
994
 
748
995
  declare class TabComponent {
@@ -815,13 +1062,13 @@ declare class TagComponent {
815
1062
  rounded: boolean;
816
1063
  icon?: any;
817
1064
  solid: boolean;
818
- click: EventEmitter<void>;
1065
+ clicked: EventEmitter<void>;
819
1066
  onClick(): void;
820
1067
  static ɵfac: i0.ɵɵFactoryDeclaration<TagComponent, never>;
821
- static ɵcmp: i0.ɵɵComponentDeclaration<TagComponent, "fx-ui-tag", never, { "label": { "alias": "label"; "required": false; }; "type": { "alias": "type"; "required": false; }; "rounded": { "alias": "rounded"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "solid": { "alias": "solid"; "required": false; }; }, { "click": "click"; }, never, never, false, never>;
1068
+ static ɵcmp: i0.ɵɵComponentDeclaration<TagComponent, "fx-ui-tag", never, { "label": { "alias": "label"; "required": false; }; "type": { "alias": "type"; "required": false; }; "rounded": { "alias": "rounded"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "solid": { "alias": "solid"; "required": false; }; }, { "clicked": "clicked"; }, never, never, false, never>;
822
1069
  }
823
1070
 
824
- type IChartType = 'bar' | 'pie' | 'line' | 'sunburst' | 'radar' | 'auto';
1071
+ type IChartType = 'bar' | 'pie' | 'sunburst' | 'auto';
825
1072
  declare class ChartComponent implements OnChanges, AfterViewInit, OnDestroy {
826
1073
  private ref;
827
1074
  private cdr;
@@ -876,12 +1123,11 @@ declare class SliderComponent extends FxComponent<any> implements AfterViewInit
876
1123
  max: number;
877
1124
  step: number;
878
1125
  vertical: boolean;
879
- disabled: boolean;
880
1126
  valueChange: EventEmitter<number>;
881
1127
  dragging: boolean;
882
- constructor(ngControl: NgControl, ref: ChangeDetectorRef);
1128
+ constructor(ref: ChangeDetectorRef);
883
1129
  ngAfterViewInit(): void;
884
- setDisabledState?(isDisabled: boolean): void;
1130
+ setDisabledState(isDisabled: boolean): void;
885
1131
  writeValue(value: number): void;
886
1132
  private _normalizeValue;
887
1133
  private _decimalPlaces;
@@ -905,19 +1151,18 @@ declare class SliderComponent extends FxComponent<any> implements AfterViewInit
905
1151
  bottom?: undefined;
906
1152
  };
907
1153
  static ɵfac: i0.ɵɵFactoryDeclaration<SliderComponent, never>;
908
- static ɵcmp: i0.ɵɵComponentDeclaration<SliderComponent, "fx-ui-slider", never, { "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "step": { "alias": "step"; "required": false; }; "vertical": { "alias": "vertical"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, false, never>;
1154
+ static ɵcmp: i0.ɵɵComponentDeclaration<SliderComponent, "fx-ui-slider", never, { "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "step": { "alias": "step"; "required": false; }; "vertical": { "alias": "vertical"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, false, never>;
909
1155
  }
910
1156
 
911
1157
  declare class SwitchComponent extends FxComponent<any> implements AfterViewInit {
912
1158
  private cdr;
913
- disabled: boolean;
914
1159
  onSwitch: EventEmitter<boolean>;
915
1160
  ngAfterViewInit(): void;
916
- constructor(ngControl: NgControl, cdr: ChangeDetectorRef);
917
- setDisabledState(isDisabled: boolean): void;
1161
+ constructor(cdr: ChangeDetectorRef);
1162
+ writeValue(value: any): void;
918
1163
  toggle(): void;
919
1164
  static ɵfac: i0.ɵɵFactoryDeclaration<SwitchComponent, never>;
920
- static ɵcmp: i0.ɵɵComponentDeclaration<SwitchComponent, "fx-ui-switch", never, { "disabled": { "alias": "disabled"; "required": false; }; }, { "onSwitch": "onSwitch"; }, never, never, false, never>;
1165
+ static ɵcmp: i0.ɵɵComponentDeclaration<SwitchComponent, "fx-ui-switch", never, {}, { "onSwitch": "onSwitch"; }, never, never, false, never>;
921
1166
  }
922
1167
 
923
1168
  declare class RichTextAreaComponent extends FxComponent<any> implements AfterViewInit {
@@ -929,7 +1174,7 @@ declare class RichTextAreaComponent extends FxComponent<any> implements AfterVie
929
1174
  toolbarOptions: any;
930
1175
  contentChange: EventEmitter<string>;
931
1176
  private quillInstance;
932
- constructor(ngControl: NgControl, cdr: ChangeDetectorRef, styleLoader: QuillStyleLoaderService, platformId: Object);
1177
+ constructor(cdr: ChangeDetectorRef, styleLoader: QuillStyleLoaderService, platformId: object);
933
1178
  ngAfterViewInit(): Promise<void>;
934
1179
  writeValue(value: any): void;
935
1180
  setDisabledState(isDisabled: boolean): void;
@@ -1066,6 +1311,158 @@ declare class DrawerComponent implements OnInit, OnDestroy {
1066
1311
  static ɵcmp: i0.ɵɵComponentDeclaration<DrawerComponent, "fx-ui-drawer", never, { "items": { "alias": "items"; "required": false; }; "isExpanded": { "alias": "isExpanded"; "required": false; }; "logo": { "alias": "logo"; "required": false; }; "version": { "alias": "version"; "required": false; }; }, { "toggleExpanded": "toggleExpanded"; "itemClicked": "itemClicked"; }, never, never, false, never>;
1067
1312
  }
1068
1313
 
1314
+ /** Row-card skeleton placeholder for master-detail list panes. */
1315
+ declare class SkeletonListComponent {
1316
+ rows: number;
1317
+ range(n: number): number[];
1318
+ static ɵfac: i0.ɵɵFactoryDeclaration<SkeletonListComponent, never>;
1319
+ static ɵcmp: i0.ɵɵComponentDeclaration<SkeletonListComponent, "fx-ui-skeleton-list", never, { "rows": { "alias": "rows"; "required": false; }; }, {}, never, never, false, never>;
1320
+ }
1321
+
1322
+ /** Card-shaped skeleton placeholder for detail panels. */
1323
+ declare class SkeletonDetailComponent {
1324
+ /** Number of content cards rendered below the header card. */
1325
+ cards: number;
1326
+ /** Rows per content card. */
1327
+ rows: number;
1328
+ range(n: number): number[];
1329
+ rowWidth(i: number): number;
1330
+ static ɵfac: i0.ɵɵFactoryDeclaration<SkeletonDetailComponent, never>;
1331
+ static ɵcmp: i0.ɵɵComponentDeclaration<SkeletonDetailComponent, "fx-ui-skeleton-detail", never, { "cards": { "alias": "cards"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; }, {}, never, never, false, never>;
1332
+ }
1333
+
1334
+ interface FxStatCard {
1335
+ /** Caller-translated caption. */
1336
+ label: string;
1337
+ value: string | number;
1338
+ /** hero-icon name shown in the tinted box. */
1339
+ icon?: any;
1340
+ /** Colours the number and the icon box; null/undefined renders neutral. */
1341
+ tone?: Tone | null;
1342
+ }
1343
+ /** KPI tile row: big number + tinted icon box + caption, in a responsive grid. */
1344
+ declare class StatCardsComponent {
1345
+ cards: FxStatCard[];
1346
+ /** Grid columns; defaults to one column per card. */
1347
+ cols?: number;
1348
+ get gridColumns(): string;
1349
+ numClass(card: FxStatCard): string;
1350
+ boxClass(card: FxStatCard): string;
1351
+ static ɵfac: i0.ɵɵFactoryDeclaration<StatCardsComponent, never>;
1352
+ static ɵcmp: i0.ɵɵComponentDeclaration<StatCardsComponent, "fx-ui-stat-cards", never, { "cards": { "alias": "cards"; "required": false; }; "cols": { "alias": "cols"; "required": false; }; }, {}, never, never, false, never>;
1353
+ }
1354
+
1355
+ /** Centered "no data" block. The message is caller-translated (no i18n in lib). */
1356
+ declare class EmptyStateComponent {
1357
+ message: string;
1358
+ /** Optional icon (hero-icon name). */
1359
+ icon?: any;
1360
+ /** Min height of the block, CSS length. */
1361
+ height: string;
1362
+ static ɵfac: i0.ɵɵFactoryDeclaration<EmptyStateComponent, never>;
1363
+ static ɵcmp: i0.ɵɵComponentDeclaration<EmptyStateComponent, "fx-ui-empty-state", never, { "message": { "alias": "message"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "height": { "alias": "height"; "required": false; }; }, {}, never, never, false, never>;
1364
+ }
1365
+
1366
+ interface FxFilterChipOption {
1367
+ /** Caller-translated label. */
1368
+ label: string;
1369
+ /** '' (empty) renders as the neutral "All" chip. */
1370
+ value: string;
1371
+ }
1372
+ /**
1373
+ * Tone-tinted filter chip row. Replaces the per-tab chipClass() copies —
1374
+ * including their classic bug of comparing a hardcoded filter key: the active
1375
+ * chip here is always derived from [value].
1376
+ */
1377
+ declare class FilterChipsComponent {
1378
+ options: FxFilterChipOption[];
1379
+ value: string;
1380
+ valueChange: EventEmitter<string>;
1381
+ /** Per-value tone overrides (e.g. { Safe: 'information', Protected: 'discovery' as any }). */
1382
+ toneOverrides: Record<string, Tone | null>;
1383
+ select(option: FxFilterChipOption): void;
1384
+ chipClass(option: FxFilterChipOption): string;
1385
+ static ɵfac: i0.ɵɵFactoryDeclaration<FilterChipsComponent, never>;
1386
+ static ɵcmp: i0.ɵɵComponentDeclaration<FilterChipsComponent, "fx-ui-filter-chips", never, { "options": { "alias": "options"; "required": false; }; "value": { "alias": "value"; "required": false; }; "toneOverrides": { "alias": "toneOverrides"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, false, never>;
1387
+ }
1388
+
1389
+ /** Thin tone-coloured progress/score bar with optional label and caption. */
1390
+ declare class MeterComponent {
1391
+ value: number;
1392
+ max: number;
1393
+ tone: Tone | null;
1394
+ /** Caller-translated texts; omitted → bar only. */
1395
+ label?: string;
1396
+ caption?: string;
1397
+ get percent(): number;
1398
+ get fillClass(): string;
1399
+ static ɵfac: i0.ɵɵFactoryDeclaration<MeterComponent, never>;
1400
+ static ɵcmp: i0.ɵɵComponentDeclaration<MeterComponent, "fx-ui-meter", never, { "value": { "alias": "value"; "required": false; }; "max": { "alias": "max"; "required": false; }; "tone": { "alias": "tone"; "required": false; }; "label": { "alias": "label"; "required": false; }; "caption": { "alias": "caption"; "required": false; }; }, {}, never, never, false, never>;
1401
+ }
1402
+
1403
+ /** Detail-panel section: card with an icon + heading header and projected body. */
1404
+ declare class SectionCardComponent {
1405
+ /** Caller-translated heading. */
1406
+ title: string;
1407
+ /** hero-icon name; omitted → text-only header. */
1408
+ icon?: any;
1409
+ iconTone: Tone | null;
1410
+ get iconClass(): string;
1411
+ static ɵfac: i0.ɵɵFactoryDeclaration<SectionCardComponent, never>;
1412
+ static ɵcmp: i0.ɵɵComponentDeclaration<SectionCardComponent, "fx-ui-section-card", never, { "title": { "alias": "title"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "iconTone": { "alias": "iconTone"; "required": false; }; }, {}, never, ["*"], false, never>;
1413
+ }
1414
+
1415
+ /**
1416
+ * Label-over-value field for detail panels. The label uses txt-field-label
1417
+ * with its baked-in margin neutralised (the known mb-1 alignment gotcha) —
1418
+ * spacing is owned by this component.
1419
+ */
1420
+ declare class InfoFieldComponent {
1421
+ /** Caller-translated label. */
1422
+ label: string;
1423
+ value: string | number | null | undefined;
1424
+ /** Colours the value; null/undefined renders the primary text colour. */
1425
+ tone: Tone | null;
1426
+ /** Monospace value (hashes, paths). */
1427
+ mono: boolean;
1428
+ /** Placeholder when value is empty. */
1429
+ placeholder: string;
1430
+ get displayValue(): string;
1431
+ get valueClass(): string;
1432
+ static ɵfac: i0.ɵɵFactoryDeclaration<InfoFieldComponent, never>;
1433
+ static ɵcmp: i0.ɵɵComponentDeclaration<InfoFieldComponent, "fx-ui-info-field", never, { "label": { "alias": "label"; "required": false; }; "value": { "alias": "value"; "required": false; }; "tone": { "alias": "tone"; "required": false; }; "mono": { "alias": "mono"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; }, {}, never, never, false, never>;
1434
+ }
1435
+
1436
+ interface FxSeverityBadge {
1437
+ key: string;
1438
+ label: string | number;
1439
+ tone: Tone | null;
1440
+ }
1441
+ /**
1442
+ * Compact total/critical/high/medium(/low) badge cluster used in table cells.
1443
+ * Pass counts via [stats]; missing fields are skipped. Labels are numbers, so
1444
+ * no i18n is involved; the total badge renders neutral.
1445
+ */
1446
+ declare class SeverityBadgesComponent {
1447
+ stats: {
1448
+ total?: number;
1449
+ critical?: number;
1450
+ high?: number;
1451
+ medium?: number;
1452
+ low?: number;
1453
+ } | null;
1454
+ /** Show zero-count badges (default true, mirrors the table-cell usage). */
1455
+ showZero: boolean;
1456
+ /** Append the severity letter to counts ("3C", "5H", "2M") per the report design. */
1457
+ suffixed: boolean;
1458
+ badgeClick: EventEmitter<string>;
1459
+ private static readonly TONES;
1460
+ get badges(): FxSeverityBadge[];
1461
+ badgeClass(badge: FxSeverityBadge): string;
1462
+ static ɵfac: i0.ɵɵFactoryDeclaration<SeverityBadgesComponent, never>;
1463
+ static ɵcmp: i0.ɵɵComponentDeclaration<SeverityBadgesComponent, "fx-ui-severity-badges", never, { "stats": { "alias": "stats"; "required": false; }; "showZero": { "alias": "showZero"; "required": false; }; "suffixed": { "alias": "suffixed"; "required": false; }; }, { "badgeClick": "badgeClick"; }, never, never, false, never>;
1464
+ }
1465
+
1069
1466
  declare class ConfirmationDialogComponent {
1070
1467
  private ref;
1071
1468
  bindings: any;
@@ -1092,9 +1489,9 @@ declare const MY_MOMENT_FORMATS: {
1092
1489
  };
1093
1490
  declare class UiModule {
1094
1491
  static ɵfac: i0.ɵɵFactoryDeclaration<UiModule, never>;
1095
- static ɵmod: i0.ɵɵNgModuleDeclaration<UiModule, [typeof InputComponent, typeof SelectComponent, typeof RadioButtonComponent, typeof CheckboxComponent, typeof DndUploadComponent, typeof ButtonComponent, typeof RadioButtonToggleComponent, typeof DatetimePicker, typeof LoadingPanel, typeof SearchBarComponent, typeof TabGroupComponent, typeof TabComponent, typeof HeroIconComponent, typeof ToastComponent, typeof ToastContainerComponent, typeof TagComponent, typeof ChartComponent, typeof SliderComponent, typeof SwitchComponent, typeof RichTextAreaComponent, typeof SkeletonTableLoadingComponent, typeof FlowConnection, typeof CircleProgressBar, typeof TreeDiagram, typeof TableCell, typeof KanbanBoardComponent, typeof DrawerComponent, typeof ConfirmationDialogComponent], [typeof i29.CommonModule, typeof i30.FormsModule, typeof i30.ReactiveFormsModule, typeof i31.RouterModule, typeof i32.OwlDateTimeModule, typeof i32.OwlNativeDateTimeModule, typeof i33.OwlMomentDateTimeModule, typeof HasPermissionDirective, typeof TrimOnBlurDirective, typeof i36.NgHeroiconsModule, typeof i37.VflowComponent, typeof i37.HandleComponent, typeof i37.ResizableComponent, typeof i37.SelectableDirective, typeof i37.MiniMapComponent, typeof i37.NodeToolbarComponent, typeof i37.CustomTemplateEdgeComponent, typeof i37.DragHandleDirective, typeof i37.ConnectionControllerDirective, typeof i37.NodeHtmlTemplateDirective, typeof i37.NodeSvgTemplateDirective, typeof i37.GroupNodeTemplateDirective, typeof i37.EdgeLabelHtmlTemplateDirective, typeof i37.EdgeTemplateDirective, typeof i37.ConnectionTemplateDirective, typeof i37.HandleTemplateDirective, typeof i38.NgxEchartsModule, typeof i39.MatSelectModule, typeof i40.MatRadioModule, typeof i41.MatButtonModule, typeof i42.MatIconModule, typeof i43.MatPaginatorModule, typeof i44.MatTableModule, typeof i45.MatSnackBarModule, typeof i46.MatDialogModule, typeof i47.MatCheckboxModule, typeof i48.MatCardModule, typeof i49.MatDatepickerModule, typeof i50.MatTimepickerModule, typeof i51.MatBadgeModule, typeof i52.MatExpansionModule, typeof i53.MatFormFieldModule, typeof i54.MatMenuModule, typeof i55.MatTooltipModule, typeof i56.DragDropModule], [typeof InputComponent, typeof SelectComponent, typeof RadioButtonComponent, typeof CheckboxComponent, typeof DndUploadComponent, typeof ButtonComponent, typeof RadioButtonToggleComponent, typeof DatetimePicker, typeof LoadingPanel, typeof SearchBarComponent, typeof TabGroupComponent, typeof TabComponent, typeof HeroIconComponent, typeof ToastComponent, typeof ToastContainerComponent, typeof TagComponent, typeof ChartComponent, typeof SliderComponent, typeof SwitchComponent, typeof RichTextAreaComponent, typeof SkeletonTableLoadingComponent, typeof FlowConnection, typeof CircleProgressBar, typeof TreeDiagram, typeof TableCell, typeof KanbanBoardComponent, typeof DrawerComponent, typeof ConfirmationDialogComponent, typeof i30.FormsModule, typeof i30.ReactiveFormsModule, typeof i31.RouterModule, typeof i32.OwlDateTimeModule, typeof i32.OwlNativeDateTimeModule, typeof HasPermissionDirective, typeof i36.NgHeroiconsModule, typeof i39.MatSelectModule, typeof i40.MatRadioModule, typeof i41.MatButtonModule, typeof i42.MatIconModule, typeof i43.MatPaginatorModule, typeof i44.MatTableModule, typeof i45.MatSnackBarModule, typeof i46.MatDialogModule, typeof i47.MatCheckboxModule, typeof i48.MatCardModule, typeof i49.MatDatepickerModule, typeof i50.MatTimepickerModule, typeof i51.MatBadgeModule, typeof i52.MatExpansionModule, typeof i53.MatFormFieldModule, typeof i54.MatMenuModule, typeof i55.MatTooltipModule, typeof i56.DragDropModule]>;
1492
+ static ɵmod: i0.ɵɵNgModuleDeclaration<UiModule, [typeof InputComponent, typeof SelectComponent, typeof RadioButtonComponent, typeof CheckboxComponent, typeof DndUploadComponent, typeof ButtonComponent, typeof RadioButtonToggleComponent, typeof DatetimePicker, typeof LoadingPanel, typeof SearchBarComponent, typeof TabGroupComponent, typeof TabComponent, typeof HeroIconComponent, typeof ToastComponent, typeof ToastContainerComponent, typeof TagComponent, typeof ChartComponent, typeof SliderComponent, typeof SwitchComponent, typeof RichTextAreaComponent, typeof SkeletonTableLoadingComponent, typeof FlowConnection, typeof CircleProgressBar, typeof TreeDiagram, typeof TableCell, typeof KanbanBoardComponent, typeof DrawerComponent, typeof SkeletonListComponent, typeof SkeletonDetailComponent, typeof StatCardsComponent, typeof EmptyStateComponent, typeof FilterChipsComponent, typeof MeterComponent, typeof SectionCardComponent, typeof InfoFieldComponent, typeof SeverityBadgesComponent, typeof ConfirmationDialogComponent], [typeof i38.CommonModule, typeof i39.FormsModule, typeof i39.ReactiveFormsModule, typeof i40.RouterModule, typeof i41.OwlDateTimeModule, typeof i41.OwlNativeDateTimeModule, typeof i42.OwlMomentDateTimeModule, typeof HasPermissionDirective, typeof TrimOnBlurDirective, typeof i45.NgHeroiconsModule, typeof i46.VflowComponent, typeof i46.HandleComponent, typeof i46.ResizableComponent, typeof i46.SelectableDirective, typeof i46.MiniMapComponent, typeof i46.NodeToolbarComponent, typeof i46.CustomTemplateEdgeComponent, typeof i46.DragHandleDirective, typeof i46.ConnectionControllerDirective, typeof i46.NodeHtmlTemplateDirective, typeof i46.NodeSvgTemplateDirective, typeof i46.GroupNodeTemplateDirective, typeof i46.EdgeLabelHtmlTemplateDirective, typeof i46.EdgeTemplateDirective, typeof i46.ConnectionTemplateDirective, typeof i46.HandleTemplateDirective, typeof i47.NgxEchartsModule, typeof i48.MatSelectModule, typeof i49.MatRadioModule, typeof i50.MatButtonModule, typeof i51.MatIconModule, typeof i52.MatPaginatorModule, typeof i53.MatTableModule, typeof i54.MatSnackBarModule, typeof i55.MatDialogModule, typeof i56.MatCheckboxModule, typeof i57.MatCardModule, typeof i58.MatDatepickerModule, typeof i59.MatTimepickerModule, typeof i60.MatBadgeModule, typeof i61.MatExpansionModule, typeof i62.MatFormFieldModule, typeof i63.MatMenuModule, typeof i64.MatTooltipModule, typeof i65.DragDropModule], [typeof InputComponent, typeof SelectComponent, typeof RadioButtonComponent, typeof CheckboxComponent, typeof DndUploadComponent, typeof ButtonComponent, typeof RadioButtonToggleComponent, typeof DatetimePicker, typeof LoadingPanel, typeof SearchBarComponent, typeof TabGroupComponent, typeof TabComponent, typeof HeroIconComponent, typeof ToastComponent, typeof ToastContainerComponent, typeof TagComponent, typeof ChartComponent, typeof SliderComponent, typeof SwitchComponent, typeof RichTextAreaComponent, typeof SkeletonTableLoadingComponent, typeof FlowConnection, typeof CircleProgressBar, typeof TreeDiagram, typeof TableCell, typeof KanbanBoardComponent, typeof DrawerComponent, typeof SkeletonListComponent, typeof SkeletonDetailComponent, typeof StatCardsComponent, typeof EmptyStateComponent, typeof FilterChipsComponent, typeof MeterComponent, typeof SectionCardComponent, typeof InfoFieldComponent, typeof SeverityBadgesComponent, typeof ConfirmationDialogComponent, typeof i39.FormsModule, typeof i39.ReactiveFormsModule, typeof i40.RouterModule, typeof i41.OwlDateTimeModule, typeof i41.OwlNativeDateTimeModule, typeof HasPermissionDirective, typeof i45.NgHeroiconsModule, typeof i48.MatSelectModule, typeof i49.MatRadioModule, typeof i50.MatButtonModule, typeof i51.MatIconModule, typeof i52.MatPaginatorModule, typeof i53.MatTableModule, typeof i54.MatSnackBarModule, typeof i55.MatDialogModule, typeof i56.MatCheckboxModule, typeof i57.MatCardModule, typeof i58.MatDatepickerModule, typeof i59.MatTimepickerModule, typeof i60.MatBadgeModule, typeof i61.MatExpansionModule, typeof i62.MatFormFieldModule, typeof i63.MatMenuModule, typeof i64.MatTooltipModule, typeof i65.DragDropModule]>;
1096
1493
  static ɵinj: i0.ɵɵInjectorDeclaration<UiModule>;
1097
1494
  }
1098
1495
 
1099
- export { AuthInterceptor, AuthStateService, BaseComponent, BaseDialogComponent, BaseResolver, BaseTableComponent, BreadcrumbService, ButtonComponent, ChartComponent, CheckboxComponent, CircleProgressBar, ConfirmationDialogComponent, DatetimePicker, DndUploadComponent, DrawerComponent, FlowConnection, FxLoadingService, FxStorageService, FxToastrService, FxUtils, FxValidators, HasPermissionDirective, HeroIconComponent, HttpLoaderFactory, HttpWrapper, InputComponent, KanbanBoardComponent, LoadingPanel, MY_MOMENT_FORMATS, NotificationService, PermissionGuard, PermissionService, QuillStyleLoaderService, RadioButtonComponent, RadioButtonToggleComponent, RichTextAreaComponent, SearchBarComponent, SelectComponent, SkeletonTableLoadingComponent, SliderComponent, SwitchComponent, TabComponent, TabGroupComponent, TableCell, TagComponent, ThemeService, ToastComponent, ToastContainerComponent, TranslationModule, TranslationService, TreeDiagram, TrimOnBlurDirective, UiModule };
1100
- export type { Breadcrumb, ColumnChangedEvent, IChartType, IRadioButton, KanbanColumn, TableResult, TagType, ToastData, TreeNode, UploadResult };
1496
+ export { AuthInterceptor, AuthStateService, BaseComponent, BaseDialogComponent, BaseResolver, BaseTableComponent, BreadcrumbService, ButtonComponent, ChartComponent, CheckboxComponent, CircleProgressBar, ConfirmationDialogComponent, DatetimePicker, DndUploadComponent, DrawerComponent, EmptyStateComponent, FilterChipsComponent, FlowConnection, FxLoadingService, FxStorageService, FxToastrService, FxUtils, FxValidators, HasPermissionDirective, HeroIconComponent, HttpLoaderFactory, HttpWrapper, InfoFieldComponent, InputComponent, KanbanBoardComponent, LoadingPanel, MY_MOMENT_FORMATS, MeterComponent, NotificationService, PermissionGuard, PermissionService, QuillStyleLoaderService, RadioButtonComponent, RadioButtonToggleComponent, RealtimeTableSync, RichTextAreaComponent, SearchBarComponent, SectionCardComponent, SelectComponent, SeverityBadgesComponent, SkeletonDetailComponent, SkeletonListComponent, SkeletonTableLoadingComponent, SliderComponent, StatCardsComponent, SwitchComponent, TabComponent, TabGroupComponent, TableCell, TagComponent, ThemeService, ToastComponent, ToastContainerComponent, TranslationModule, TranslationService, TreeDiagram, TrimOnBlurDirective, UiModule, countTone, createApi, fxListResolver, scoreTone, severityTone, toneBadge, toneBg, toneColor, toneText };
1497
+ export type { Breadcrumb, ColumnChangedEvent, FxApiClass, FxFilterChipOption, FxListRequest, FxListResolverContext, FxSeverityBadge, FxStatCard, IChartType, IRadioButton, KanbanColumn, NotificationCallback, NotificationConnectOptions, RealtimeTableEvent, RealtimeTableSyncOptions, TableResult, TagType, ToastData, Tone, TreeNode, UploadResult };