@nucleus-suite-pe/core 0.7.0 → 1.1.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.
@@ -1,9 +1,10 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { InjectionToken, EnvironmentProviders, Signal, TemplateRef } from '@angular/core';
2
+ import { InjectionToken, EnvironmentProviders, Signal, ElementRef, TemplateRef } from '@angular/core';
3
3
  import { HttpContextToken, HttpInterceptorFn } from '@angular/common/http';
4
4
  import * as _nucleus_suite_pe_core from '@nucleus-suite-pe/core';
5
5
  import * as _primeuix_themes from '@primeuix/themes';
6
6
  import * as _primeuix_themes_types_base from '@primeuix/themes/types/base';
7
+ import { Popover } from 'primeng/popover';
7
8
  import { MenuItem } from 'primeng/api';
8
9
 
9
10
  interface NucleusConfig {
@@ -125,6 +126,11 @@ interface CompanySummary {
125
126
  readonly createdAtUtc: string;
126
127
  readonly myAccess: readonly SiteAccess[];
127
128
  }
129
+ interface GlobalAccess {
130
+ readonly appId: string;
131
+ readonly appName: string;
132
+ readonly roleName: string;
133
+ }
128
134
  interface UserProfile {
129
135
  readonly firstName: string | null;
130
136
  readonly lastName: string | null;
@@ -175,6 +181,7 @@ interface MeResponse {
175
181
  readonly subscription: Subscription;
176
182
  readonly ownedCompanies: readonly CompanySummary[];
177
183
  readonly sharedCompanies: readonly CompanySummary[];
184
+ readonly globalAccess: readonly GlobalAccess[];
178
185
  }
179
186
  type AccessScope = 'site' | 'account';
180
187
  interface AppSummary {
@@ -189,6 +196,19 @@ interface AppSummary {
189
196
  }
190
197
  type LauncherApp = AppSummary;
191
198
 
199
+ declare function nucleusErrorMessage(error: unknown, lang?: string): string;
200
+
201
+ declare class NucleusCache {
202
+ private readonly entries;
203
+ private readonly inFlight;
204
+ read<T>(key: string, loader: () => Promise<T>, ttlMs?: number): Promise<T>;
205
+ prefetch<T>(key: string, loader: () => Promise<T>, ttlMs?: number): void;
206
+ invalidate(...prefixes: readonly string[]): void;
207
+ private load;
208
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NucleusCache, never>;
209
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<NucleusCache>;
210
+ }
211
+
192
212
  interface MenuPermissions {
193
213
  readonly canView: boolean;
194
214
  readonly canInsert: boolean;
@@ -209,8 +229,10 @@ declare class SessionService {
209
229
  private readonly _me;
210
230
  private readonly _menu;
211
231
  private readonly _access;
232
+ private readonly _globalRole;
212
233
  private readonly _scope;
213
234
  private readonly _apps;
235
+ private readonly _catalog;
214
236
  private readonly _siteId;
215
237
  private readonly _loading;
216
238
  private readonly _switching;
@@ -223,6 +245,8 @@ declare class SessionService {
223
245
  readonly access: _angular_core.Signal<SiteAccess | null>;
224
246
  readonly scope: _angular_core.Signal<AccessScope | null>;
225
247
  readonly apps: _angular_core.Signal<readonly AppSummary[]>;
248
+ readonly catalog: _angular_core.Signal<readonly AppSummary[]>;
249
+ readonly currentApp: _angular_core.Signal<AppSummary | null>;
226
250
  readonly siteId: _angular_core.Signal<string | null>;
227
251
  readonly loading: _angular_core.Signal<boolean>;
228
252
  readonly switching: _angular_core.Signal<boolean>;
@@ -234,6 +258,7 @@ declare class SessionService {
234
258
  readonly companyId: _angular_core.Signal<string | null>;
235
259
  readonly companyName: _angular_core.Signal<string | null>;
236
260
  load(language: string, force?: boolean): Promise<void>;
261
+ signOutToLanding(): Promise<void>;
237
262
  permissionsFor(route: string): MenuPermissions;
238
263
  reload(language: string): Promise<void>;
239
264
  sites(companyId: string): Promise<Site[]>;
@@ -249,6 +274,7 @@ declare class SessionService {
249
274
 
250
275
  type NucleusLang = 'es' | 'en';
251
276
  declare const NUCLEUS_LANGS: readonly NucleusLang[];
277
+ declare function nucleusLang(): NucleusLang;
252
278
  declare class NucleusLanguage {
253
279
  private readonly _lang;
254
280
  readonly lang: _angular_core.Signal<NucleusLang>;
@@ -258,6 +284,102 @@ declare class NucleusLanguage {
258
284
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<NucleusLanguage>;
259
285
  }
260
286
 
287
+ interface CommonCopy {
288
+ readonly search: string;
289
+ readonly choose: string;
290
+ readonly noIcon: string;
291
+ readonly noColor: string;
292
+ readonly searchIcon: string;
293
+ readonly noMatches: string;
294
+ readonly sessionExpired: string;
295
+ readonly errorNetwork: string;
296
+ readonly errorTimeout: string;
297
+ readonly errorServer: string;
298
+ readonly errorInvalid: string;
299
+ readonly errorForbidden: string;
300
+ readonly errorNotFound: string;
301
+ readonly errorConflict: string;
302
+ readonly errorUnknown: string;
303
+ }
304
+ interface CommonCopySet {
305
+ readonly es: CommonCopy;
306
+ readonly en: CommonCopy;
307
+ }
308
+ declare const COMMON_COPY: CommonCopySet;
309
+ declare function commonCopyOf(lang: string): CommonCopy;
310
+
311
+ declare function nucleusParseDate(value: string | null | undefined): Date | null;
312
+ declare function money(value: number | null | undefined): string;
313
+ declare function signedMoney(value: number | null | undefined): string;
314
+ declare function qty(value: number | null | undefined): string;
315
+ declare function integer(value: number | null | undefined): string;
316
+ declare function percent(value: number | null | undefined): string;
317
+ declare function day(value: string | null | undefined): string;
318
+ declare function stamp(value: string | null | undefined): string;
319
+ declare function clock(value: string | null | undefined): string;
320
+ declare function minutesAsClock(value: number | null | undefined): string;
321
+ declare function isoDay(value: Date | string | null | undefined): string;
322
+ declare function toNumber(value: unknown): number;
323
+ declare function shiftDay(value: string, days: number): string;
324
+ declare function isToday(value: string | null | undefined): boolean;
325
+ declare function isBeforeToday(value: string | null | undefined): boolean;
326
+ declare function isOnOrBeforeToday(value: string | null | undefined): boolean;
327
+ declare function startOfDayUtc(value: string): string;
328
+ declare function endOfDayUtc(value: string): string;
329
+
330
+ declare const FIELD_TARGETS: string;
331
+ declare function isReachable(element: HTMLElement): boolean;
332
+ declare function fieldsIn(root: HTMLElement): HTMLElement[];
333
+ declare function moveTo(element: HTMLElement): void;
334
+
335
+ interface ShortcutBinding {
336
+ readonly keys: string;
337
+ readonly label: string;
338
+ readonly whileTyping: boolean;
339
+ readonly run: () => void;
340
+ }
341
+ declare function normalizeKeys(keys: string): string;
342
+ declare function comboOf(event: KeyboardEvent): string;
343
+ declare function hasModifier(keys: string): boolean;
344
+ declare function isTypingTarget(target: EventTarget | null): boolean;
345
+ declare function isApplePlatform(): boolean;
346
+ declare function shortcutHint(keys: string): string;
347
+ declare function ariaKeysOf(keys: string): string;
348
+
349
+ declare class NucleusShortcuts {
350
+ private readonly document;
351
+ private readonly _bindings;
352
+ private readonly _enabled;
353
+ readonly bindings: _angular_core.Signal<readonly ShortcutBinding[]>;
354
+ readonly enabled: _angular_core.Signal<boolean>;
355
+ constructor();
356
+ setEnabled(enabled: boolean): void;
357
+ register(binding: ShortcutBinding): () => void;
358
+ private handle;
359
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NucleusShortcuts, never>;
360
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<NucleusShortcuts>;
361
+ }
362
+
363
+ declare class NucleusShortcut {
364
+ private readonly host;
365
+ private readonly shortcuts;
366
+ readonly nucleusShortcut: _angular_core.InputSignal<string>;
367
+ readonly shortcutLabel: _angular_core.InputSignal<string>;
368
+ readonly shortcutWhileTyping: _angular_core.InputSignal<boolean | null>;
369
+ constructor();
370
+ private press;
371
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NucleusShortcut, never>;
372
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NucleusShortcut, "[nucleusShortcut]", never, { "nucleusShortcut": { "alias": "nucleusShortcut"; "required": true; "isSignal": true; }; "shortcutLabel": { "alias": "shortcutLabel"; "required": false; "isSignal": true; }; "shortcutWhileTyping": { "alias": "shortcutWhileTyping"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
373
+ }
374
+
375
+ declare class NucleusEnterAdvance {
376
+ private readonly host;
377
+ onKeyDown(event: KeyboardEvent): void;
378
+ private scope;
379
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NucleusEnterAdvance, never>;
380
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NucleusEnterAdvance, "[nucleusEnterAdvance]", never, {}, {}, never, never, true, never>;
381
+ }
382
+
261
383
  interface GeoCountry {
262
384
  readonly id: string;
263
385
  readonly code: string;
@@ -293,8 +415,6 @@ declare function flagOf(code: string): string;
293
415
 
294
416
  interface GeoCopy {
295
417
  readonly country: string;
296
- readonly choose: string;
297
- readonly search: string;
298
418
  readonly levels: readonly [string, string, string, string];
299
419
  readonly kinds: Readonly<Record<string, string>>;
300
420
  }
@@ -334,6 +454,7 @@ declare class NucleusGeoSelect {
334
454
  protected readonly countries: _angular_core.WritableSignal<GeoCountry[]>;
335
455
  protected readonly steps: _angular_core.WritableSignal<GeoStep[]>;
336
456
  protected readonly labels: _angular_core.Signal<_nucleus_suite_pe_core.GeoCopy>;
457
+ protected readonly words: _angular_core.Signal<_nucleus_suite_pe_core.CommonCopy>;
337
458
  private syncedKey;
338
459
  constructor();
339
460
  protected gridClass(): string;
@@ -342,42 +463,142 @@ declare class NucleusGeoSelect {
342
463
  protected pick(index: number, divisionId: string | null): Promise<void>;
343
464
  private sync;
344
465
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NucleusGeoSelect, never>;
345
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NucleusGeoSelect, "nucleus-geo-select", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
466
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NucleusGeoSelect, "nucleus-geo-select", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, [{ directive: typeof NucleusEnterAdvance; inputs: {}; outputs: {}; }]>;
346
467
  }
347
468
 
348
- type ThemeId = 'nucleus' | 'light' | 'dark' | 'bubblegum' | 'cool-breeze' | 'cool-slate' | 'icy-mint' | 'juicy-plum' | 'mango-paradise' | 'moonlight-glow' | 'mystical-forest' | 'silky-pink' | 'spicy-red' | 'sunny-day';
349
- type ThemePreference = ThemeId | 'system';
350
- interface ThemeTokens {
469
+ declare const TEXT_CONTRAST = 4.5;
470
+ declare const CONTROL_CONTRAST = 3;
471
+ interface ContrastIssue {
472
+ readonly scope: string;
473
+ readonly pair: string;
474
+ readonly ratio: number;
475
+ readonly required: number;
476
+ }
477
+ declare function relativeLuminance(hex: string): number;
478
+ declare function contrastRatio(foreground: string, background: string): number;
479
+ declare function readableOn(background: string): string;
480
+ declare function mixHex(foreground: string, background: string, ratio: number): string;
481
+ declare function meetsContrast(foreground: string, background: string, required: number): boolean;
482
+ declare function contrastIssue(scope: string, pair: string, foreground: string, background: string, required: number): ContrastIssue | null;
483
+
484
+ type FrameId = 'nucleus' | 'ember' | 'forest' | 'plum' | 'midnight' | 'slate' | 'ocean' | 'sand' | 'ink' | 'graphite' | 'paper' | 'mist';
485
+ type CanvasId = 'light' | 'dim' | 'dark';
486
+ type CanvasPreference = CanvasId | 'system';
487
+ type AccentId = 'violet' | 'blue' | 'cyan' | 'green' | 'lime' | 'amber' | 'orange' | 'rose' | 'red';
488
+ type AccentPreference = AccentId | 'auto';
489
+ type DensityId = 'comfortable' | 'compact';
490
+ interface FrameTokens {
491
+ readonly bg: string;
492
+ readonly raised: string;
493
+ readonly ink: string;
494
+ readonly muted: string;
495
+ readonly line: string;
496
+ readonly glow: string;
497
+ }
498
+ interface Frame {
499
+ readonly id: FrameId;
500
+ readonly scheme: CanvasId;
501
+ readonly starfield: boolean;
502
+ readonly accent: AccentId;
503
+ readonly tokens: FrameTokens;
504
+ }
505
+ interface CanvasTokens {
351
506
  readonly bg: string;
352
507
  readonly surface: string;
353
508
  readonly surfaceAlt: string;
354
509
  readonly text: string;
355
510
  readonly textMuted: string;
356
511
  readonly border: string;
357
- readonly accent: string;
358
- readonly onAccent: string;
359
512
  }
360
- interface Theme {
361
- readonly id: ThemeId;
362
- readonly scheme: 'light' | 'dark';
363
- readonly swatch: string;
364
- readonly starfield: boolean;
365
- readonly tokens: ThemeTokens;
513
+ interface CanvasEffects {
514
+ readonly shadowOne: string;
515
+ readonly shadowTwo: string;
516
+ readonly wash: number;
517
+ readonly washStrong: number;
518
+ readonly headerBg: string;
519
+ readonly headerInk: string;
520
+ readonly headerLine: string;
521
+ readonly danger: string;
522
+ readonly success: string;
523
+ readonly warning: string;
524
+ }
525
+ interface Canvas {
526
+ readonly id: CanvasId;
527
+ readonly tokens: CanvasTokens;
528
+ readonly effects: CanvasEffects;
529
+ }
530
+ interface Accent {
531
+ readonly id: AccentId;
532
+ readonly light: string;
533
+ readonly dark: string;
366
534
  }
367
- declare const THEMES: readonly Theme[];
368
- declare const THEME_LABELS: Readonly<Record<ThemeId, string>>;
369
- declare const DEFAULT_THEME: ThemeId;
370
- declare function themeById(id: ThemeId): Theme;
371
- declare function isThemePreference(value: unknown): value is ThemePreference;
535
+ interface Density {
536
+ readonly id: DensityId;
537
+ readonly scale: number;
538
+ }
539
+ interface Appearance {
540
+ readonly frame: FrameId;
541
+ readonly canvas: CanvasPreference;
542
+ readonly accent: AccentPreference;
543
+ readonly density: DensityId;
544
+ }
545
+ declare const FRAMES: readonly Frame[];
546
+ declare const CANVASES: readonly Canvas[];
547
+ declare const ACCENTS: readonly Accent[];
548
+ declare const DENSITIES: readonly Density[];
549
+ declare const DEFAULT_APPEARANCE: Appearance;
550
+ declare const LEGACY_THEMES: Readonly<Record<string, Partial<Appearance>>>;
551
+ declare function frameById(id: string): Frame;
552
+ declare function canvasById(id: CanvasId): Canvas;
553
+ declare function accentById(id: string): Accent;
554
+ declare function densityById(id: string): Density;
555
+ declare function isFrameId(value: unknown): value is FrameId;
556
+ declare function isCanvasPreference(value: unknown): value is CanvasPreference;
557
+ declare function isAccentPreference(value: unknown): value is AccentPreference;
558
+ declare function isDensityId(value: unknown): value is DensityId;
559
+ declare function resolveAccent(frame: Frame, preference: AccentPreference): Accent;
560
+ declare function accentOn(accent: Accent, canvas: CanvasId): string;
561
+ declare function isDarkCanvas(canvas: CanvasId): boolean;
562
+ declare function auditAppearance(): readonly ContrastIssue[];
563
+
564
+ interface ThemeCopy {
565
+ readonly title: string;
566
+ readonly frameTitle: string;
567
+ readonly frameHint: string;
568
+ readonly canvasTitle: string;
569
+ readonly canvasHint: string;
570
+ readonly accentTitle: string;
571
+ readonly accentHint: string;
572
+ readonly densityTitle: string;
573
+ readonly densityHint: string;
574
+ readonly frames: Readonly<Record<FrameId, string>>;
575
+ readonly canvases: Readonly<Record<CanvasPreference, string>>;
576
+ readonly accents: Readonly<Record<AccentPreference, string>>;
577
+ readonly densities: Readonly<Record<DensityId, string>>;
578
+ }
579
+ declare const THEME_COPY: Readonly<Record<NucleusLang, ThemeCopy>>;
580
+ declare function themeCopyOf(lang: NucleusLang): ThemeCopy;
581
+ declare function accentLabelOf(lang: NucleusLang, id: AccentId): string;
372
582
 
373
583
  declare class ThemeService {
374
- private readonly _preference;
584
+ private readonly _appearance;
375
585
  private readonly systemDark;
376
- readonly preference: _angular_core.Signal<ThemePreference>;
377
- readonly theme: _angular_core.Signal<Theme>;
586
+ readonly appearance: _angular_core.Signal<Appearance>;
587
+ readonly frame: _angular_core.Signal<Frame>;
588
+ readonly canvasId: _angular_core.Signal<CanvasId>;
589
+ readonly systemCanvasId: _angular_core.Signal<CanvasId>;
590
+ readonly canvas: _angular_core.Signal<Canvas>;
591
+ readonly accent: _angular_core.Signal<Accent>;
592
+ readonly accentColor: _angular_core.Signal<string>;
593
+ readonly density: _angular_core.Signal<Density>;
378
594
  readonly starfield: _angular_core.Signal<boolean>;
379
595
  constructor();
380
- setPreference(preference: ThemePreference): void;
596
+ setFrame(frame: FrameId): void;
597
+ setCanvas(canvas: CanvasPreference): void;
598
+ setAccent(accent: AccentPreference): void;
599
+ setDensity(density: DensityId): void;
600
+ reset(): void;
601
+ private patch;
381
602
  private applyToDom;
382
603
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThemeService, never>;
383
604
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<ThemeService>;
@@ -415,8 +636,36 @@ declare class NucleusCard {
415
636
  readonly heading: _angular_core.InputSignal<string>;
416
637
  readonly subtitle: _angular_core.InputSignal<string>;
417
638
  readonly size: _angular_core.InputSignal<CardSize>;
639
+ readonly loading: _angular_core.InputSignal<boolean>;
640
+ readonly skeletonRows: _angular_core.InputSignal<number>;
641
+ private static readonly widths;
642
+ protected readonly placeholders: _angular_core.Signal<{
643
+ index: number;
644
+ left: string;
645
+ right: string;
646
+ }[]>;
418
647
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NucleusCard, never>;
419
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NucleusCard, "nucleus-card", never, { "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["*", "[nucleusCardActions]"], true, never>;
648
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NucleusCard, "nucleus-card", never, { "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "skeletonRows": { "alias": "skeletonRows"; "required": false; "isSignal": true; }; }, {}, never, ["*", "[nucleusCardActions]"], true, never>;
649
+ }
650
+
651
+ declare class NucleusMetrics {
652
+ readonly loading: _angular_core.InputSignal<boolean>;
653
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NucleusMetrics, never>;
654
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NucleusMetrics, "nucleus-metrics", never, { "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
655
+ }
656
+
657
+ type MetricTone = 'plain' | 'accent';
658
+ declare class NucleusMetric {
659
+ private readonly group;
660
+ readonly label: _angular_core.InputSignal<string>;
661
+ readonly value: _angular_core.InputSignal<string | number>;
662
+ readonly hint: _angular_core.InputSignal<string>;
663
+ readonly link: _angular_core.InputSignal<string | unknown[]>;
664
+ readonly tone: _angular_core.InputSignal<MetricTone>;
665
+ readonly loading: _angular_core.InputSignal<boolean | null>;
666
+ protected readonly busy: _angular_core.Signal<boolean>;
667
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NucleusMetric, never>;
668
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NucleusMetric, "nucleus-metric", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "link": { "alias": "link"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
420
669
  }
421
670
 
422
671
  interface TabItem {
@@ -464,7 +713,7 @@ declare class NucleusFeedback {
464
713
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<NucleusFeedback>;
465
714
  }
466
715
 
467
- type FieldKind = 'text' | 'email' | 'password' | 'number' | 'textarea' | 'select' | 'checkbox' | 'switch';
716
+ type FieldKind = 'text' | 'email' | 'password' | 'number' | 'textarea' | 'select' | 'checkbox' | 'switch' | 'icon' | 'color';
468
717
  type FieldSpan = 1 | 2 | 3 | 4 | 'full';
469
718
  type FieldSize = 'xs' | 'sm' | 'md' | 'lg' | 'full';
470
719
  interface FieldOption {
@@ -484,27 +733,82 @@ interface FormField {
484
733
  readonly options?: readonly FieldOption[];
485
734
  readonly disabled?: boolean;
486
735
  readonly clearable?: boolean;
736
+ readonly searchable?: boolean;
487
737
  }
488
738
  type FormValue = Record<string, unknown>;
489
739
  declare function resolveFieldSize(field: FormField): FieldSize;
740
+ declare function isFieldSearchable(field: FormField): boolean;
741
+
742
+ declare const NUCLEUS_ICON_CATALOG: readonly string[];
743
+ declare function searchIcons(term: string): readonly string[];
744
+ declare function iconClassOf(name: string | null): string;
745
+ declare function iconNameOf(value: string | null): string | null;
746
+
747
+ declare class NucleusIconPicker {
748
+ private readonly language;
749
+ readonly value: _angular_core.ModelSignal<string | null>;
750
+ readonly disabled: _angular_core.InputSignal<boolean>;
751
+ readonly inputId: _angular_core.InputSignal<string>;
752
+ protected readonly panel: _angular_core.Signal<Popover>;
753
+ protected readonly search: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
754
+ protected readonly term: _angular_core.WritableSignal<string>;
755
+ protected readonly labels: _angular_core.Signal<_nucleus_suite_pe_core.CommonCopy>;
756
+ protected readonly name: _angular_core.Signal<string | null>;
757
+ protected readonly iconClass: _angular_core.Signal<string>;
758
+ protected readonly results: _angular_core.Signal<readonly string[]>;
759
+ protected onShow(): void;
760
+ protected pick(icon: string | null): void;
761
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NucleusIconPicker, never>;
762
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NucleusIconPicker, "nucleus-icon-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
763
+ }
764
+
765
+ interface AccentOption {
766
+ readonly id: AccentId;
767
+ readonly light: string;
768
+ readonly dark: string;
769
+ }
770
+ declare const NUCLEUS_ACCENTS: readonly AccentOption[];
771
+ declare class NucleusColorPicker {
772
+ private readonly language;
773
+ readonly value: _angular_core.ModelSignal<string | null>;
774
+ readonly disabled: _angular_core.InputSignal<boolean>;
775
+ readonly ariaLabel: _angular_core.InputSignal<string>;
776
+ protected readonly labels: _angular_core.Signal<_nucleus_suite_pe_core.CommonCopy>;
777
+ protected readonly options: _angular_core.Signal<{
778
+ color: string;
779
+ label: string;
780
+ }[]>;
781
+ protected pick(color: string | null): void;
782
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NucleusColorPicker, never>;
783
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NucleusColorPicker, "nucleus-color-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
784
+ }
490
785
 
491
786
  declare class NucleusForm {
787
+ private readonly language;
788
+ private readonly host;
789
+ private readonly injector;
492
790
  readonly fields: _angular_core.InputSignal<readonly FormField[]>;
493
791
  readonly value: _angular_core.InputSignal<FormValue>;
494
792
  readonly readonly: _angular_core.InputSignal<boolean>;
495
793
  readonly columns: _angular_core.InputSignal<number | null>;
794
+ readonly autofocus: _angular_core.InputSignal<boolean>;
496
795
  readonly valueChange: _angular_core.OutputEmitterRef<FormValue>;
796
+ protected readonly labels: _angular_core.Signal<_nucleus_suite_pe_core.CommonCopy>;
797
+ private landed;
798
+ constructor();
497
799
  protected read(field: FormField): unknown;
498
800
  protected text(field: FormField): string;
801
+ protected nullableText(field: FormField): string | null;
499
802
  protected checked(field: FormField): boolean;
500
803
  protected write(field: FormField, next: unknown): void;
501
804
  protected isDisabled(field: FormField): boolean;
805
+ protected isSearchable(field: FormField): boolean;
502
806
  protected fieldClass(field: FormField): string;
503
807
  protected gridClass(): string;
504
808
  protected optionsOf(field: FormField): FieldOption[];
505
809
  protected kindOf(field: FormField): string;
506
810
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NucleusForm, never>;
507
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NucleusForm, "nucleus-form", never, { "fields": { "alias": "fields"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
811
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NucleusForm, "nucleus-form", never, { "fields": { "alias": "fields"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "autofocus": { "alias": "autofocus"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, [{ directive: typeof NucleusEnterAdvance; inputs: {}; outputs: {}; }]>;
508
812
  }
509
813
 
510
814
  type ListAlign = 'left' | 'center' | 'right';
@@ -532,6 +836,7 @@ interface ListAction<T = Record<string, unknown>> {
532
836
  readonly label: string;
533
837
  readonly tone?: 'default' | 'danger';
534
838
  readonly visible?: (row: T) => boolean;
839
+ readonly disabled?: (row: T) => boolean;
535
840
  }
536
841
  interface ListActionEvent<T = Record<string, unknown>> {
537
842
  readonly id: string;
@@ -557,6 +862,7 @@ declare class NucleusList<T extends object = Record<string, unknown>> {
557
862
  readonly empty: _angular_core.InputSignal<string>;
558
863
  readonly loading: _angular_core.InputSignal<boolean>;
559
864
  readonly minWidth: _angular_core.InputSignal<string>;
865
+ readonly skeletonRows: _angular_core.InputSignal<number>;
560
866
  readonly rowClass: _angular_core.InputSignal<(row: T) => string>;
561
867
  readonly action: _angular_core.OutputEmitterRef<ListActionEvent<T>>;
562
868
  readonly toggle: _angular_core.OutputEmitterRef<ListToggleEvent<T>>;
@@ -565,18 +871,30 @@ declare class NucleusList<T extends object = Record<string, unknown>> {
565
871
  'min-width': string;
566
872
  }>;
567
873
  protected readonly showEmpty: _angular_core.Signal<boolean>;
874
+ protected readonly placeholders: _angular_core.Signal<object[]>;
875
+ protected readonly data: _angular_core.Signal<object[]>;
876
+ protected skeletonWidth(column: ListColumn<T>): string;
568
877
  protected cellTemplate(key: string): TemplateRef<unknown> | null;
569
878
  protected text(column: ListColumn<T>, row: T): string;
570
879
  protected tagOf(column: ListColumn<T>, row: T): ListTag | null;
571
880
  protected visibleActions(row: T): readonly ListAction<T>[];
881
+ protected isActionLocked(entry: ListAction<T>, row: T): boolean;
572
882
  protected run(entry: ListAction<T>, row: T): void;
573
883
  protected isChecked(column: ListColumn<T>, row: T): boolean;
574
884
  protected isLocked(column: ListColumn<T>, row: T): boolean;
575
885
  protected hintOf(column: ListColumn<T>, row: T): string;
576
886
  protected flip(column: ListColumn<T>, row: T): void;
577
887
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NucleusList<any>, never>;
578
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NucleusList<any>, "nucleus-list", never, { "rows": { "alias": "rows"; "required": true; "isSignal": true; }; "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "actions": { "alias": "actions"; "required": false; "isSignal": true; }; "empty": { "alias": "empty"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "minWidth": { "alias": "minWidth"; "required": false; "isSignal": true; }; "rowClass": { "alias": "rowClass"; "required": false; "isSignal": true; }; }, { "action": "action"; "toggle": "toggle"; }, ["cells"], ["[nucleusListTitle]", "[nucleusListActions]"], true, never>;
888
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NucleusList<any>, "nucleus-list", never, { "rows": { "alias": "rows"; "required": true; "isSignal": true; }; "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "actions": { "alias": "actions"; "required": false; "isSignal": true; }; "empty": { "alias": "empty"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "minWidth": { "alias": "minWidth"; "required": false; "isSignal": true; }; "skeletonRows": { "alias": "skeletonRows"; "required": false; "isSignal": true; }; "rowClass": { "alias": "rowClass"; "required": false; "isSignal": true; }; }, { "action": "action"; "toggle": "toggle"; }, ["cells"], ["[nucleusListTitle]", "[nucleusListActions]"], true, never>;
889
+ }
890
+
891
+ interface TreeRow {
892
+ readonly id: string;
893
+ readonly parentId: string | null;
579
894
  }
895
+ declare function toggleCollapsed(collapsed: ReadonlySet<string>, id: string): ReadonlySet<string>;
896
+ declare function hasChildren(rows: readonly TreeRow[], id: string): boolean;
897
+ declare function visibleTreeRows<T extends TreeRow>(rows: readonly T[], collapsed: ReadonlySet<string>): T[];
580
898
 
581
899
  declare class NucleusMark {
582
900
  readonly accent: _angular_core.InputSignal<string>;
@@ -590,6 +908,119 @@ declare class NucleusMark {
590
908
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<NucleusMark, "nucleus-mark", never, { "accent": { "alias": "accent"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
591
909
  }
592
910
 
911
+ interface FrameChoice {
912
+ readonly id: Frame['id'];
913
+ readonly label: string;
914
+ readonly tokens: Frame['tokens'];
915
+ }
916
+ interface CanvasChoice {
917
+ readonly id: CanvasPreference;
918
+ readonly label: string;
919
+ readonly bg: string;
920
+ readonly surface: string;
921
+ readonly text: string;
922
+ readonly icon: string | null;
923
+ }
924
+ interface AccentChoice {
925
+ readonly id: AccentPreference;
926
+ readonly label: string;
927
+ readonly color: string;
928
+ readonly ink: string;
929
+ }
930
+ interface DensityChoice {
931
+ readonly id: DensityId;
932
+ readonly label: string;
933
+ readonly gap: number;
934
+ }
935
+ declare class NucleusAppearance {
936
+ private readonly theme;
937
+ private readonly language;
938
+ protected readonly copy: _angular_core.Signal<_nucleus_suite_pe_core.ThemeCopy>;
939
+ protected readonly appearance: _angular_core.Signal<_nucleus_suite_pe_core.Appearance>;
940
+ protected readonly canvasId: _angular_core.Signal<_nucleus_suite_pe_core.CanvasId>;
941
+ protected readonly frames: _angular_core.Signal<FrameChoice[]>;
942
+ protected readonly canvases: _angular_core.Signal<CanvasChoice[]>;
943
+ protected readonly accents: _angular_core.Signal<AccentChoice[]>;
944
+ protected readonly densities: _angular_core.Signal<DensityChoice[]>;
945
+ protected pickFrame(id: Frame['id']): void;
946
+ protected pickCanvas(id: CanvasPreference): void;
947
+ protected pickAccent(id: AccentPreference): void;
948
+ protected pickDensity(id: DensityId): void;
949
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NucleusAppearance, never>;
950
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NucleusAppearance, "nucleus-appearance", never, {}, {}, never, never, true, never>;
951
+ }
952
+
953
+ interface MenuTile {
954
+ readonly label: string;
955
+ readonly icon: string | null;
956
+ readonly color: string | null;
957
+ readonly ink: string | null;
958
+ readonly ghost: boolean;
959
+ }
960
+ interface MenuRow {
961
+ readonly id: string;
962
+ readonly name: string;
963
+ readonly meta: string | null;
964
+ readonly tile: MenuTile | null;
965
+ readonly tag: string | null;
966
+ readonly current: boolean;
967
+ readonly disabled: boolean;
968
+ }
969
+ interface MenuSection {
970
+ readonly id: string;
971
+ readonly label: string | null;
972
+ readonly rows: readonly MenuRow[];
973
+ }
974
+ declare function menuTile(label: string, icon: string | null, color: string | null): MenuTile;
975
+ declare function menuGlyph(icon: string): MenuTile;
976
+ declare function foldText(value: string): string;
977
+ declare function matchesRow(row: MenuRow, term: string): boolean;
978
+ declare function selectableRows(sections: readonly MenuSection[]): MenuRow[];
979
+
980
+ declare class NucleusMenu {
981
+ readonly sections: _angular_core.InputSignal<readonly MenuSection[]>;
982
+ readonly heading: _angular_core.InputSignal<string>;
983
+ readonly badge: _angular_core.InputSignal<string | null>;
984
+ readonly searchable: _angular_core.InputSignal<boolean>;
985
+ readonly searchPlaceholder: _angular_core.InputSignal<string>;
986
+ readonly emptyText: _angular_core.InputSignal<string>;
987
+ readonly keyboardHint: _angular_core.InputSignal<string>;
988
+ readonly width: _angular_core.InputSignal<number>;
989
+ readonly select: _angular_core.OutputEmitterRef<MenuRow>;
990
+ readonly dismiss: _angular_core.OutputEmitterRef<void>;
991
+ protected readonly term: _angular_core.WritableSignal<string>;
992
+ private readonly searchBox;
993
+ private readonly root;
994
+ protected readonly visible: _angular_core.Signal<readonly MenuSection[]>;
995
+ protected readonly isEmpty: _angular_core.Signal<boolean>;
996
+ protected readonly showSearch: _angular_core.Signal<boolean>;
997
+ private readonly reachable;
998
+ private readonly activeId;
999
+ private readonly syncActive;
1000
+ constructor();
1001
+ protected isActive(row: MenuRow): boolean;
1002
+ protected onTerm(value: string): void;
1003
+ protected choose(row: MenuRow): void;
1004
+ protected onKeydown(event: KeyboardEvent): void;
1005
+ private step;
1006
+ private scrollIntoView;
1007
+ private focusEntry;
1008
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NucleusMenu, never>;
1009
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NucleusMenu, "nucleus-menu", never, { "sections": { "alias": "sections"; "required": false; "isSignal": true; }; "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "keyboardHint": { "alias": "keyboardHint"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; }, { "select": "select"; "dismiss": "dismiss"; }, never, never, true, never>;
1010
+ }
1011
+
1012
+ declare class NucleusRecentApps {
1013
+ private readonly _ids;
1014
+ readonly ids: _angular_core.Signal<readonly string[]>;
1015
+ remember(appId: string): void;
1016
+ pick<T extends {
1017
+ readonly id: string;
1018
+ }>(source: readonly T[], limit: number): T[];
1019
+ clear(): void;
1020
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NucleusRecentApps, never>;
1021
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<NucleusRecentApps>;
1022
+ }
1023
+
593
1024
  declare class NucleusStarfield {
594
1025
  protected readonly W = 1280;
595
1026
  protected readonly H = 720;
@@ -611,10 +1042,17 @@ interface ShellCopy {
611
1042
  readonly navToggle: string;
612
1043
  readonly appsLauncher: string;
613
1044
  readonly appsEmpty: string;
1045
+ readonly appsSwitch: string;
1046
+ readonly appsSearch: string;
1047
+ readonly appsNoMatch: string;
1048
+ readonly appsRecent: string;
1049
+ readonly appsAll: string;
1050
+ readonly appsAvailable: string;
1051
+ readonly appsHere: string;
1052
+ readonly keyboardHint: string;
1053
+ readonly accountSwitchHint: string;
1054
+ readonly signOutHint: string;
614
1055
  readonly settingsTitle: string;
615
- readonly settingsTheme: string;
616
- readonly settingsThemeHint: string;
617
- readonly themeSystem: string;
618
1056
  readonly signOut: string;
619
1057
  readonly accountManage: string;
620
1058
  readonly accountSwitch: string;
@@ -623,19 +1061,15 @@ interface ShellCopy {
623
1061
  readonly accountScope: string;
624
1062
  readonly hintComingSoon: string;
625
1063
  readonly hintNotDeployed: string;
626
- readonly switchSite: string;
627
- readonly contextTitle: string;
628
- readonly contextHint: string;
1064
+ readonly roleCaption: string;
629
1065
  readonly companyLabel: string;
630
1066
  readonly companyPlaceholder: string;
631
1067
  readonly siteLabel: string;
632
1068
  readonly sitePlaceholder: string;
633
1069
  readonly sitesLoading: string;
634
1070
  readonly sitesEmpty: string;
635
- readonly confirmSwitch: string;
636
1071
  readonly relationOwner: string;
637
1072
  readonly relationCollaborator: string;
638
- readonly noContext: string;
639
1073
  readonly noCompanyTitle: string;
640
1074
  readonly noCompanyHint: string;
641
1075
  }
@@ -646,11 +1080,6 @@ interface ShellNavItem {
646
1080
  readonly icon: string;
647
1081
  readonly label: string;
648
1082
  }
649
- interface ThemeOption {
650
- readonly value: ThemePreference;
651
- readonly label: string;
652
- readonly swatch: string | null;
653
- }
654
1083
  interface CompanyChoice extends CompanyOption {
655
1084
  readonly tag: string;
656
1085
  }
@@ -663,6 +1092,7 @@ declare class NucleusShell {
663
1092
  private readonly session;
664
1093
  private readonly sessionAuth;
665
1094
  private readonly themes;
1095
+ private readonly recents;
666
1096
  private readonly language;
667
1097
  private readonly page;
668
1098
  private readonly config;
@@ -685,45 +1115,60 @@ declare class NucleusShell {
685
1115
  readonly user: "https://cdn.lordicon.com/hrjifpbq.json";
686
1116
  readonly key: "https://cdn.lordicon.com/ossgtprr.json";
687
1117
  };
1118
+ protected readonly menuPlaceholders: string[];
688
1119
  protected readonly title: _angular_core.Signal<string>;
689
1120
  protected readonly subtitle: _angular_core.Signal<string>;
690
1121
  protected readonly home: _angular_core.Signal<MenuItem>;
691
1122
  protected readonly crumbs: _angular_core.Signal<MenuItem[]>;
692
1123
  protected readonly copy: _angular_core.Signal<_nucleus_suite_pe_core.ShellCopy>;
693
1124
  protected readonly starfield: _angular_core.Signal<boolean>;
694
- protected readonly themePreference: _angular_core.Signal<ThemePreference>;
695
1125
  protected readonly menu: _angular_core.Signal<readonly MenuNode[]>;
1126
+ private readonly collapsedIds;
696
1127
  protected readonly menuLoading: _angular_core.Signal<boolean>;
697
1128
  protected readonly menuError: _angular_core.Signal<string | null>;
698
1129
  protected readonly launcherApps: _angular_core.Signal<readonly _nucleus_suite_pe_core.AppSummary[]>;
699
1130
  protected readonly switching: _angular_core.Signal<boolean>;
1131
+ private readonly narrowQuery;
1132
+ protected readonly narrow: _angular_core.WritableSignal<boolean>;
700
1133
  protected readonly sidebarOpen: _angular_core.WritableSignal<boolean>;
701
1134
  protected readonly settingsOpen: _angular_core.WritableSignal<boolean>;
702
- protected readonly contextOpen: _angular_core.WritableSignal<boolean>;
703
1135
  protected readonly companyChoice: _angular_core.WritableSignal<string | null>;
704
1136
  protected readonly siteChoice: _angular_core.WritableSignal<string | null>;
705
1137
  protected readonly siteOptions: _angular_core.WritableSignal<Site[]>;
706
1138
  protected readonly sitesLoading: _angular_core.WritableSignal<boolean>;
707
1139
  private readonly auth;
1140
+ private sitesCompanyId;
708
1141
  protected readonly identity: _angular_core.Signal<ShellIdentity | null>;
709
1142
  protected readonly initials: _angular_core.Signal<string>;
710
1143
  protected readonly canSwitchAccount: _angular_core.Signal<boolean>;
711
1144
  protected readonly hasCompany: _angular_core.Signal<boolean>;
712
1145
  protected readonly companyChoices: _angular_core.Signal<CompanyChoice[]>;
713
- protected readonly contextCaption: _angular_core.Signal<string>;
714
1146
  protected readonly roleName: _angular_core.Signal<string | null>;
715
- protected readonly canConfirm: _angular_core.Signal<boolean>;
716
- protected readonly themeOptions: _angular_core.Signal<ThemeOption[]>;
1147
+ protected readonly words: _angular_core.Signal<_nucleus_suite_pe_core.CommonCopy>;
1148
+ protected readonly hasSiteContext: _angular_core.Signal<boolean>;
1149
+ protected readonly launcherRich: _angular_core.Signal<boolean>;
1150
+ protected readonly launcherCount: _angular_core.Signal<string | null>;
1151
+ protected readonly launcherSections: _angular_core.Signal<MenuSection[]>;
1152
+ protected readonly accountSections: _angular_core.Signal<MenuSection[]>;
1153
+ protected readonly accountContext: _angular_core.Signal<string>;
1154
+ protected readonly sitePlaceholder: _angular_core.Signal<string>;
1155
+ protected readonly topbarHeight: _angular_core.Signal<"100px" | "56px">;
1156
+ private readonly syncContext;
717
1157
  private readonly loadSession;
1158
+ constructor();
718
1159
  protected setLang(lang: NucleusLang): void;
719
1160
  protected toggleSidebar(): void;
720
- protected selectTheme(preference: ThemePreference | null): void;
721
1161
  protected selectNav(id: string): void;
1162
+ protected isGroup(node: MenuNode): boolean;
1163
+ protected isExpanded(node: MenuNode): boolean;
722
1164
  protected selectMenu(node: MenuNode): void;
1165
+ private closeSidebarOnNarrow;
723
1166
  protected isSelected(node: MenuNode): boolean;
724
- protected openContext(): Promise<void>;
725
1167
  protected onCompanyChange(companyId: string | null): Promise<void>;
726
- protected confirmSwitch(): Promise<void>;
1168
+ protected onSiteChange(siteId: string | null): Promise<void>;
1169
+ private appRow;
1170
+ protected onLauncherSelect(row: MenuRow): void;
1171
+ protected onAccountSelect(row: MenuRow): void;
727
1172
  protected canOpen(app: LauncherApp): boolean;
728
1173
  protected launch(app: LauncherApp): void;
729
1174
  protected appInitials(app: LauncherApp): string;
@@ -735,5 +1180,5 @@ declare class NucleusShell {
735
1180
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<NucleusShell, "nucleus-shell", never, { "brand": { "alias": "brand"; "required": false; "isSignal": true; }; "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "lead": { "alias": "lead"; "required": false; "isSignal": true; }; "navItems": { "alias": "navItems"; "required": false; "isSignal": true; }; "activeNavId": { "alias": "activeNavId"; "required": false; "isSignal": true; }; "selectedMenuId": { "alias": "selectedMenuId"; "required": false; "isSignal": true; }; }, { "navSelect": "navSelect"; "menuSelect": "menuSelect"; }, never, ["[nucleusTop]", "*"], true, never>;
736
1181
  }
737
1182
 
738
- export { DEFAULT_THEME, EMPTY_GEO_VALUE, GEO_COPY, NO_PERMISSIONS, NUCLEUS_CONFIG, NUCLEUS_DARK_SELECTOR, NUCLEUS_FORCE_BEARER, NUCLEUS_ICONS, NUCLEUS_LANGS, NUCLEUS_LOGOUT_PARAM, NUCLEUS_SKIP_AUTH, NucleusAuth, NucleusCard, NucleusCell, NucleusFeedback, NucleusForm, NucleusGeo, NucleusGeoSelect, NucleusLanguage, NucleusList, NucleusLordicon, NucleusMark, NucleusPage, NucleusPreset, NucleusSessionAuth, NucleusShell, NucleusStarfield, NucleusTabs, SHELL_COPY, SessionService, THEMES, THEME_LABELS, ThemeService, UserSyncService, consumeNucleusLogout, findMenuByRoute, flagOf, geoCopyOf, isNucleusConfigured, isThemePreference, levelLabel, loadLordicon, loadNucleusConfig, nucleusAuthInterceptor, nucleusLogoutUrl, ownsUrl, permissionsOf, provideNucleus, provideNucleusFeedback, provideNucleusTheme, resolveFieldSize, themeById };
739
- export type { AccessScope, AppSummary, AppUser, AuthSyncRequest, CardSize, CompanyOption, CompanyRelation, CompanySummary, ConfirmRequest, Crumb, FieldKind, FieldOption, FieldSize, FieldSpan, FormField, FormValue, GeoCopy, GeoCopySet, GeoCountry, GeoDivision, GeoLevel, GeoPlace, GeoValue, LauncherApp, ListAction, ListActionEvent, ListAlign, ListColumn, ListColumnKind, ListTag, ListToggleEvent, MeResponse, MenuNode, MenuPermissions, NucleusConfig, NucleusIdentity, NucleusLang, SessionTicket, ShellCopy, ShellNavItem, Site, SiteAccess, Subscription, TabItem, Theme, ThemeId, ThemePreference, ThemeTokens, UserProfile };
1183
+ export { ACCENTS, CANVASES, COMMON_COPY, CONTROL_CONTRAST, DEFAULT_APPEARANCE, DENSITIES, EMPTY_GEO_VALUE, FIELD_TARGETS, FRAMES, GEO_COPY, LEGACY_THEMES, NO_PERMISSIONS, NUCLEUS_ACCENTS, NUCLEUS_CONFIG, NUCLEUS_DARK_SELECTOR, NUCLEUS_FORCE_BEARER, NUCLEUS_ICONS, NUCLEUS_ICON_CATALOG, NUCLEUS_LANGS, NUCLEUS_LOGOUT_PARAM, NUCLEUS_SKIP_AUTH, NucleusAppearance, NucleusAuth, NucleusCache, NucleusCard, NucleusCell, NucleusColorPicker, NucleusEnterAdvance, NucleusFeedback, NucleusForm, NucleusGeo, NucleusGeoSelect, NucleusIconPicker, NucleusLanguage, NucleusList, NucleusLordicon, NucleusMark, NucleusMenu, NucleusMetric, NucleusMetrics, NucleusPage, NucleusPreset, NucleusRecentApps, NucleusSessionAuth, NucleusShell, NucleusShortcut, NucleusShortcuts, NucleusStarfield, NucleusTabs, SHELL_COPY, SessionService, TEXT_CONTRAST, THEME_COPY, ThemeService, UserSyncService, accentById, accentLabelOf, accentOn, ariaKeysOf, auditAppearance, canvasById, clock, comboOf, commonCopyOf, consumeNucleusLogout, contrastIssue, contrastRatio, day, densityById, endOfDayUtc, fieldsIn, findMenuByRoute, flagOf, foldText, frameById, geoCopyOf, hasChildren, hasModifier, iconClassOf, iconNameOf, integer, isAccentPreference, isApplePlatform, isBeforeToday, isCanvasPreference, isDarkCanvas, isDensityId, isFieldSearchable, isFrameId, isNucleusConfigured, isOnOrBeforeToday, isReachable, isToday, isTypingTarget, isoDay, levelLabel, loadLordicon, loadNucleusConfig, matchesRow, meetsContrast, menuGlyph, menuTile, minutesAsClock, mixHex, money, moveTo, normalizeKeys, nucleusAuthInterceptor, nucleusErrorMessage, nucleusLang, nucleusLogoutUrl, nucleusParseDate, ownsUrl, percent, permissionsOf, provideNucleus, provideNucleusFeedback, provideNucleusTheme, qty, readableOn, relativeLuminance, resolveAccent, resolveFieldSize, searchIcons, selectableRows, shiftDay, shortcutHint, signedMoney, stamp, startOfDayUtc, themeCopyOf, toNumber, toggleCollapsed, visibleTreeRows };
1184
+ export type { Accent, AccentId, AccentOption, AccentPreference, AccessScope, AppSummary, AppUser, Appearance, AuthSyncRequest, Canvas, CanvasEffects, CanvasId, CanvasPreference, CanvasTokens, CardSize, CommonCopy, CommonCopySet, CompanyOption, CompanyRelation, CompanySummary, ConfirmRequest, ContrastIssue, Crumb, Density, DensityId, FieldKind, FieldOption, FieldSize, FieldSpan, FormField, FormValue, Frame, FrameId, FrameTokens, GeoCopy, GeoCopySet, GeoCountry, GeoDivision, GeoLevel, GeoPlace, GeoValue, GlobalAccess, LauncherApp, ListAction, ListActionEvent, ListAlign, ListColumn, ListColumnKind, ListTag, ListToggleEvent, MeResponse, MenuNode, MenuPermissions, MenuRow, MenuSection, MenuTile, MetricTone, NucleusConfig, NucleusIdentity, NucleusLang, SessionTicket, ShellCopy, ShellNavItem, ShortcutBinding, Site, SiteAccess, Subscription, TabItem, ThemeCopy, TreeRow, UserProfile };