@flyos/design-system 2.0.0 → 2.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.
package/package.json
CHANGED
package/scss/_tokens.scss
CHANGED
|
@@ -23,17 +23,18 @@
|
|
|
23
23
|
|
|
24
24
|
// ── FlyOS Typography ──
|
|
25
25
|
// Geist is the primary face (self-hosted, see styles/_geist-fonts.scss). Inter and the
|
|
26
|
-
// system stack are the fallbacks
|
|
27
|
-
//
|
|
26
|
+
// system stack are the fallbacks. 'Noto Kufi Arabic' (self-hosted, styles/_kufi-fonts.scss,
|
|
27
|
+
// post-G7) carries the Arabic script for ar/ur: its @font-face is unicode-range-scoped to
|
|
28
|
+
// Arabic blocks, so per-GLYPH fallback gives Kufi to Arabic text and never touches Latin —
|
|
29
|
+
// Geist stays the Latin face in every locale, and no per-locale restatement is needed.
|
|
30
|
+
// In a consumer without that @font-face the name simply skips (pre-Kufi behaviour: system
|
|
31
|
+
// Arabic face) — External Apps declare their own faces per the estate convention.
|
|
28
32
|
// ---
|
|
29
33
|
// 2.0.0 removed 'SF Pro Display' / 'SF Pro' — D8 (no SF fonts, ever, for licensing). The
|
|
30
34
|
// repo had been SHIPPING them: 9 self-hosted woff2 faces, preloaded from index.html.
|
|
31
|
-
// Removing them
|
|
32
|
-
//
|
|
33
|
-
|
|
34
|
-
// no unicode-range, and it supplies no Arabic glyphs at all — the apparent width delta was
|
|
35
|
-
// one SPACE character). Those scripts have always resolved to the system Arabic face.
|
|
36
|
-
--font-family: 'Geist', 'Inter', -apple-system, blinkmacsystemfont, 'Segoe UI', sans-serif;
|
|
35
|
+
// Removing them changed NOTHING for ar/ur: SF Pro carries no unicode-range and no Arabic
|
|
36
|
+
// glyphs, so before Kufi those scripts always resolved to the system Arabic face.
|
|
37
|
+
--font-family: 'Geist', 'Inter', 'Noto Kufi Arabic', -apple-system, blinkmacsystemfont, 'Segoe UI', sans-serif;
|
|
37
38
|
--font-family-mono: 'Geist Mono', ui-monospace, 'SF Mono', menlo, monospace;
|
|
38
39
|
--font-xl-title1: 700 48px/56px var(--font-family);
|
|
39
40
|
--font-xl-title2: 700 38px/46px var(--font-family);
|
|
@@ -1589,17 +1589,27 @@ interface FlyAuthRefreshPayload {
|
|
|
1589
1589
|
* across replicas). The bearer rides as `?access_token=` via the {@link AuthService} token. Idempotent
|
|
1590
1590
|
* `connect()`; safe to call once auth is established.</p>
|
|
1591
1591
|
*
|
|
1592
|
-
* <p>Requires `@microsoft/signalr` (declared a peer dependency of the design system)
|
|
1592
|
+
* <p>Requires `@microsoft/signalr` (declared a peer dependency of the design system). The package is
|
|
1593
|
+
* imported DYNAMICALLY on first `connect()`: this client sits in the core design system, which every
|
|
1594
|
+
* boot loads, and a static import made `@microsoft/signalr` (~14 KB compressed) part of every boot's
|
|
1595
|
+
* shared-module wave even though no bytes are needed until the hub actually connects. Under Native
|
|
1596
|
+
* Federation the dynamic import resolves through the same import map / shared singleton as a static
|
|
1597
|
+
* one — only the WHEN changes.</p>
|
|
1593
1598
|
*/
|
|
1594
1599
|
declare class FlyHubClient {
|
|
1595
1600
|
private readonly auth;
|
|
1596
1601
|
private connection;
|
|
1602
|
+
/** In-flight first connect (module import + build + start). Guards double-connect. */
|
|
1603
|
+
private connecting;
|
|
1604
|
+
/** Set when disconnect() arrives while the first connect is still importing/starting. */
|
|
1605
|
+
private abandonConnect;
|
|
1597
1606
|
readonly connected: _angular_core.WritableSignal<boolean>;
|
|
1598
1607
|
private readonly _authRefresh$;
|
|
1599
1608
|
/** Emits when the server signals this user's authorization shape changed. */
|
|
1600
1609
|
readonly authRefresh$: Observable<FlyAuthRefreshPayload>;
|
|
1601
1610
|
/** Open the hub connection (idempotent). No-op without an access token. */
|
|
1602
1611
|
connect(): void;
|
|
1612
|
+
private doConnect;
|
|
1603
1613
|
disconnect(): Promise<void>;
|
|
1604
1614
|
get isConnected(): boolean;
|
|
1605
1615
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FlyHubClient, never>;
|
|
@@ -2513,6 +2523,44 @@ declare class SourceAppResolver {
|
|
|
2513
2523
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<SourceAppResolver>;
|
|
2514
2524
|
}
|
|
2515
2525
|
|
|
2526
|
+
/**
|
|
2527
|
+
* Host-provided handler that navigates to a resolved in-app entity deep link
|
|
2528
|
+
* when the user clicks a `flyos:` anchor inside an editor surface (the
|
|
2529
|
+
* `fly-markdown-editor` in `@flyos/design-system-editor`, or any consumer that
|
|
2530
|
+
* resolves `flyos:` anchors itself).
|
|
2531
|
+
*
|
|
2532
|
+
* The design system can RESOLVE a `flyos:<appId>.<entity>/<id>` href to a
|
|
2533
|
+
* `{ appId, route }` (via `AgentLookupRegistry`), but it cannot LAUNCH it — the
|
|
2534
|
+
* launcher lives in the host (the desktop shell's `ShellLauncherService`, or a
|
|
2535
|
+
* remote's own router). The host provides this token; when absent, a `flyos:`
|
|
2536
|
+
* click is a no-op (the link is non-routable in a bare browser anyway).
|
|
2537
|
+
*
|
|
2538
|
+
* WHY THIS LIVES IN THE CORE PACKAGE, NOT `@flyos/design-system-editor`
|
|
2539
|
+
* (its original home, moved 2026-08-16):
|
|
2540
|
+
*
|
|
2541
|
+
* 1. Weight — the token is the editor package's HOST-INTEGRATION seam, so
|
|
2542
|
+
* hosts must import it eagerly to provide it (the shell does, from
|
|
2543
|
+
* `app.config.ts`). When it lived in the editor barrel that one value
|
|
2544
|
+
* import dragged the whole Tiptap/KaTeX stack into every boot.
|
|
2545
|
+
* 2. Identity — the core package is the federation-shared singleton with one
|
|
2546
|
+
* instance everywhere, so `provide` and `inject` always see the SAME token
|
|
2547
|
+
* object. The editor package is deliberately NOT a shared singleton
|
|
2548
|
+
* (remotes may bundle their own copy), and an injection token defined
|
|
2549
|
+
* there splits into per-copy identities across the federation boundary —
|
|
2550
|
+
* a provider under one identity is invisible to an `inject` under another.
|
|
2551
|
+
*
|
|
2552
|
+
* `@flyos/design-system-editor` re-exports both names, so existing imports
|
|
2553
|
+
* from the editor barrel keep compiling and — because the re-export aliases
|
|
2554
|
+
* THIS object — share this single identity.
|
|
2555
|
+
*/
|
|
2556
|
+
type EntityLinkLauncher = (target: {
|
|
2557
|
+
readonly appId: string;
|
|
2558
|
+
readonly route: string;
|
|
2559
|
+
readonly kind: string;
|
|
2560
|
+
readonly id: string;
|
|
2561
|
+
}) => void;
|
|
2562
|
+
declare const ENTITY_LINK_LAUNCHER: InjectionToken<EntityLinkLauncher>;
|
|
2563
|
+
|
|
2516
2564
|
/**
|
|
2517
2565
|
* Per-window publisher handle returned by {@link FlyWindowHelpService.forWindow}.
|
|
2518
2566
|
* Bound to a single window id; keep the handle and call {@link setHint} as the
|
|
@@ -2859,6 +2907,39 @@ declare class FlyUserDirectoryService {
|
|
|
2859
2907
|
* single global stylesheet Angular emits. If a remote emits multiple stylesheets,
|
|
2860
2908
|
* only the first is loaded — acceptable for Wave A1.
|
|
2861
2909
|
*/
|
|
2910
|
+
/** Options for {@link loadRemoteStyles}. */
|
|
2911
|
+
interface LoadRemoteStylesOptions {
|
|
2912
|
+
/**
|
|
2913
|
+
* Suppress the "no stylesheet found" warning. For opportunistic warm-up calls
|
|
2914
|
+
* (the shell pre-fetches every registered remote's stylesheet at manifest
|
|
2915
|
+
* load) where an unreachable remote is expected — e.g. a stopped dev server
|
|
2916
|
+
* in mock mode. A real window open retries loudly.
|
|
2917
|
+
*/
|
|
2918
|
+
silent?: boolean;
|
|
2919
|
+
/**
|
|
2920
|
+
* Resolve only after the stylesheet's BYTES have been fetched (capped at
|
|
2921
|
+
* {@link APPLY_CAP_MS}), not merely after the element is injected. Without
|
|
2922
|
+
* this the returned promise settles while the CSS is still in flight, so a
|
|
2923
|
+
* caller that paints immediately afterwards can paint BEFORE the remote's
|
|
2924
|
+
* global rules apply — and any window-chrome override the remote ships then
|
|
2925
|
+
* lands as a visible layout shift (the stg CLS 0.638 finding). The shell's
|
|
2926
|
+
* registration-time warm-up passes this so the boot path can gate a window's
|
|
2927
|
+
* first paint on it. Fail-soft: timeouts and load errors still resolve.
|
|
2928
|
+
*/
|
|
2929
|
+
awaitApplied?: boolean;
|
|
2930
|
+
/**
|
|
2931
|
+
* Short-circuit when this appId's stylesheet element is ALREADY in the
|
|
2932
|
+
* document: honour `awaitApplied` against the existing element and skip
|
|
2933
|
+
* re-discovery entirely. Without this every call re-fetches the remote's
|
|
2934
|
+
* `index.html` (deliberately uncached, so hot-deploys are picked up) even
|
|
2935
|
+
* when the boot warm applied the stylesheet milliseconds earlier — on the
|
|
2936
|
+
* deep-link boot that re-fetch was a measured ~300 ms serialized straight
|
|
2937
|
+
* into the LCP window. The window-open path passes this; long-session
|
|
2938
|
+
* staleness is covered by the chunk-404 reload-once self-heal, which a stale
|
|
2939
|
+
* stylesheet rides too.
|
|
2940
|
+
*/
|
|
2941
|
+
preferApplied?: boolean;
|
|
2942
|
+
}
|
|
2862
2943
|
/**
|
|
2863
2944
|
* Injects the remote's stylesheet into `document.head`.
|
|
2864
2945
|
*
|
|
@@ -2884,7 +2965,35 @@ declare class FlyUserDirectoryService {
|
|
|
2884
2965
|
* The `data-fly-href` attribute stores the discovered href separately from the
|
|
2885
2966
|
* element content so idempotency checks can compare the URL without parsing CSS.
|
|
2886
2967
|
*/
|
|
2887
|
-
declare function loadRemoteStyles(appId: string, remoteBaseUrl: string): Promise<void>;
|
|
2968
|
+
declare function loadRemoteStyles(appId: string, remoteBaseUrl: string, opts?: LoadRemoteStylesOptions): Promise<void>;
|
|
2969
|
+
/**
|
|
2970
|
+
* Warms a remote's stylesheet into the HTTP cache WITHOUT applying it.
|
|
2971
|
+
*
|
|
2972
|
+
* Discovery is identical to {@link loadRemoteStyles} (fetch the remote's
|
|
2973
|
+
* `index.html`, scan for the hashed stylesheet, validate the href), but the
|
|
2974
|
+
* CSS is then fetched with a plain `fetch()` and the body discarded — nothing
|
|
2975
|
+
* is injected into `document.head`.
|
|
2976
|
+
*
|
|
2977
|
+
* Why this exists: applying a stylesheet registers its `@font-face` rules
|
|
2978
|
+
* document-wide, and the browser then downloads every face some text in the
|
|
2979
|
+
* document matches. The shell's deferred warm-up used to APPLY every
|
|
2980
|
+
* registered-but-unopened remote's stylesheet, which on a Circles deep link
|
|
2981
|
+
* pulled Thoughts' self-hosted Inter + Noto Kufi woff2 (~71 KB) into the LCP
|
|
2982
|
+
* window — for an app with no open window (stg trace, 2026-08-15). A cache
|
|
2983
|
+
* prefetch keeps the later real apply (window open, `loadRemoteStyles` with
|
|
2984
|
+
* `awaitApplied`) near-instant while deferring the font cost to the first
|
|
2985
|
+
* open, where the faces are actually about to be used.
|
|
2986
|
+
*
|
|
2987
|
+
* The fetch uses `mode: 'cors'` + `credentials: 'omit'` so its cache entry
|
|
2988
|
+
* matches the apply path's `<link crossorigin="anonymous">` request. (The
|
|
2989
|
+
* legacy `<style>@import` fallback path is no-cors and would not hit this
|
|
2990
|
+
* entry — modern browsers all take the `link[layer]` path, so the fallback
|
|
2991
|
+
* merely re-fetches, same as before.)
|
|
2992
|
+
*
|
|
2993
|
+
* Fail-soft and idempotent: errors are swallowed (the open path retries
|
|
2994
|
+
* loudly), and an already-applied appId is a no-op.
|
|
2995
|
+
*/
|
|
2996
|
+
declare function prefetchRemoteStyles(appId: string, remoteBaseUrl: string): Promise<void>;
|
|
2888
2997
|
/**
|
|
2889
2998
|
* Removes the injected stylesheet element (either `<link>` or `<style>`) for
|
|
2890
2999
|
* `appId` from `document.head` and clears all internal state for this appId.
|
|
@@ -3059,6 +3168,8 @@ declare class MockAuthService {
|
|
|
3059
3168
|
hasAnyRole(required: readonly string[]): boolean;
|
|
3060
3169
|
/** Parity with the real AuthService — patch profile fields on the mock session. */
|
|
3061
3170
|
patchProfile(patch: Partial<User>): void;
|
|
3171
|
+
/** A fresh 24h mock session from the app-supplied config — used at construction and by {@link startLogin}. */
|
|
3172
|
+
private createSession;
|
|
3062
3173
|
/** Override in subclass to supply app-specific mock data. */
|
|
3063
3174
|
protected getConfig(): MockAuthConfig;
|
|
3064
3175
|
init(): Promise<void>;
|
|
@@ -5212,7 +5323,7 @@ declare class FlyDrawerComponent {
|
|
|
5212
5323
|
* downstream (the panel class, the sheet's own geometry) reads THIS, never the raw
|
|
5213
5324
|
* input, so `auto` is resolved in exactly one place.
|
|
5214
5325
|
*/
|
|
5215
|
-
readonly resolvedVariant: _angular_core.Signal<"
|
|
5326
|
+
readonly resolvedVariant: _angular_core.Signal<"sheet" | "side">;
|
|
5216
5327
|
/** Size/side classes as an ngClass map (kept off the `[class]` string binding,
|
|
5217
5328
|
* which can race the leaving toggle and stutter the animation). */
|
|
5218
5329
|
readonly panelClass: _angular_core.Signal<{
|
|
@@ -9335,6 +9446,21 @@ type FlyCurrencySelectorValue = string | readonly string[] | null;
|
|
|
9335
9446
|
* i18n is self-sufficient through the `currency_selector.*` keys in `DS_BASELINE_LOCALES`
|
|
9336
9447
|
* (en/ar/fr/ur); RTL works via logical CSS.
|
|
9337
9448
|
*
|
|
9449
|
+
* ## `locked`, vs `disabled`
|
|
9450
|
+
* `disabled` is UI convention for "not applicable right now" — greyed out, no explanation,
|
|
9451
|
+
* because none is owed (a form section that only exists once a prior step completes, say).
|
|
9452
|
+
* `locked` is a different claim entirely: **the value is fixed on purpose**, because
|
|
9453
|
+
* something downstream now depends on it (PPM freezes a project's currency the moment any
|
|
9454
|
+
* financial row exists — changing it would silently re-denominate every stored amount).
|
|
9455
|
+
* A dimmed control with no explanation is exactly the failure `skills/magic-bar-actions.md`
|
|
9456
|
+
* §3.6 names for actions ("a vanishing action teaches the user nothing"); the same argument
|
|
9457
|
+
* applies to a frozen field. So `locked` renders differently on purpose: full-opacity (never
|
|
9458
|
+
* dimmed — the value is not "unavailable", it is authoritative), no dropdown affordance at
|
|
9459
|
+
* all, and an always-visible reason caption instead of a hover-only tooltip, so the "why" is
|
|
9460
|
+
* legible to a screen reader without requiring focus and to a sighted user without hovering.
|
|
9461
|
+
* `locked` takes precedence when both are set — it is the more specific state and the
|
|
9462
|
+
* `disabled` trigger markup (with its dropdown affordances) never renders underneath it.
|
|
9463
|
+
*
|
|
9338
9464
|
* @example
|
|
9339
9465
|
* ```html
|
|
9340
9466
|
* <!-- Loads /api/currencies/brief itself: -->
|
|
@@ -9345,6 +9471,12 @@ type FlyCurrencySelectorValue = string | readonly string[] | null;
|
|
|
9345
9471
|
* mode="multi"
|
|
9346
9472
|
* [allowedCodes]="tenantCurrencies()"
|
|
9347
9473
|
* (selectionDetailChange)="onCurrenciesPicked($event)" />
|
|
9474
|
+
*
|
|
9475
|
+
* <!-- Frozen once the project has financial rows — reason is an i18n KEY, never text: -->
|
|
9476
|
+
* <fly-currency-selector
|
|
9477
|
+
* [(ngModel)]="project.currency"
|
|
9478
|
+
* [locked]="project.hasFinancialRows"
|
|
9479
|
+
* lockedReasonKey="projects.currency_locked_reason" />
|
|
9348
9480
|
* ```
|
|
9349
9481
|
*/
|
|
9350
9482
|
declare class FlyCurrencySelectorComponent implements ControlValueAccessor {
|
|
@@ -9366,6 +9498,24 @@ declare class FlyCurrencySelectorComponent implements ControlValueAccessor {
|
|
|
9366
9498
|
readonly pinnedCodes: _angular_core.InputSignal<readonly string[]>;
|
|
9367
9499
|
/** Disable the whole control (also driven by reactive-forms `setDisabledState`). */
|
|
9368
9500
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
9501
|
+
/**
|
|
9502
|
+
* Freeze the current selection because something downstream now depends on it — a
|
|
9503
|
+
* DIFFERENT claim than `disabled`. See the class doc's "`locked`, vs `disabled`"
|
|
9504
|
+
* section. Renders the current pick as a plain, non-interactive readout (no dropdown
|
|
9505
|
+
* affordance at all) plus an always-visible reason caption — never a dimmed clickable-
|
|
9506
|
+
* looking control. Takes precedence over `disabled` when both are set.
|
|
9507
|
+
*/
|
|
9508
|
+
readonly locked: _angular_core.InputSignal<boolean>;
|
|
9509
|
+
/**
|
|
9510
|
+
* i18n KEY (never resolved text — see `skills/magic-bar-actions.md` §3.4) explaining
|
|
9511
|
+
* WHY the control is locked. Omit to use the localized `currency_selector.locked_default_reason`
|
|
9512
|
+
* baseline key; supply your own only when that default reason is wrong for your case
|
|
9513
|
+
* (mirrors `MagicBarActionSpec.disabledTipKey`'s "supply only when the default is wrong"
|
|
9514
|
+
* contract). Ignored while `locked` is `false`.
|
|
9515
|
+
*/
|
|
9516
|
+
readonly lockedReasonKey: _angular_core.InputSignal<string | null>;
|
|
9517
|
+
/** `I18nService.t()` params for `lockedReasonKey`, e.g. `{ date: frozenOn }`. */
|
|
9518
|
+
readonly lockedReasonParams: _angular_core.InputSignal<Record<string, string | number> | undefined>;
|
|
9369
9519
|
/** Show the trigger clear (✕) affordance when there is a selection. */
|
|
9370
9520
|
readonly clearable: _angular_core.InputSignal<boolean>;
|
|
9371
9521
|
/** Trigger text when nothing is picked. Omit for the localized default. */
|
|
@@ -9383,6 +9533,8 @@ declare class FlyCurrencySelectorComponent implements ControlValueAccessor {
|
|
|
9383
9533
|
private readonly _uid;
|
|
9384
9534
|
readonly listboxId: string;
|
|
9385
9535
|
readonly triggerId: string;
|
|
9536
|
+
/** id of the always-rendered locked-reason caption; `aria-describedby` target of the locked readout. */
|
|
9537
|
+
readonly lockedReasonId: string;
|
|
9386
9538
|
readonly isOpen: _angular_core.WritableSignal<boolean>;
|
|
9387
9539
|
readonly searchTerm: _angular_core.WritableSignal<string>;
|
|
9388
9540
|
readonly activeIndex: _angular_core.WritableSignal<number>;
|
|
@@ -9410,6 +9562,8 @@ declare class FlyCurrencySelectorComponent implements ControlValueAccessor {
|
|
|
9410
9562
|
readonly clearText: _angular_core.Signal<string>;
|
|
9411
9563
|
readonly pinnedGroupText: _angular_core.Signal<string>;
|
|
9412
9564
|
readonly allGroupText: _angular_core.Signal<string>;
|
|
9565
|
+
/** Resolved locked-reason text — the default baseline key, or the host's `lockedReasonKey`. */
|
|
9566
|
+
readonly lockedReasonText: _angular_core.Signal<string>;
|
|
9413
9567
|
/** Every offered row, after the `allowedCodes` restriction. */
|
|
9414
9568
|
readonly available: _angular_core.Signal<readonly FlyCurrency[]>;
|
|
9415
9569
|
private readonly _byCode;
|
|
@@ -9461,7 +9615,105 @@ declare class FlyCurrencySelectorComponent implements ControlValueAccessor {
|
|
|
9461
9615
|
private _commit;
|
|
9462
9616
|
private _touch;
|
|
9463
9617
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FlyCurrencySelectorComponent, never>;
|
|
9464
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FlyCurrencySelectorComponent, "fly-currency-selector", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "currencies": { "alias": "currencies"; "required": false; "isSignal": true; }; "fetchFn": { "alias": "fetchFn"; "required": false; "isSignal": true; }; "allowedCodes": { "alias": "allowedCodes"; "required": false; "isSignal": true; }; "pinnedCodes": { "alias": "pinnedCodes"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; "selectionDetailChange": "selectionDetailChange"; "openedChange": "openedChange"; }, never, never, true, never>;
|
|
9618
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FlyCurrencySelectorComponent, "fly-currency-selector", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "currencies": { "alias": "currencies"; "required": false; "isSignal": true; }; "fetchFn": { "alias": "fetchFn"; "required": false; "isSignal": true; }; "allowedCodes": { "alias": "allowedCodes"; "required": false; "isSignal": true; }; "pinnedCodes": { "alias": "pinnedCodes"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "locked": { "alias": "locked"; "required": false; "isSignal": true; }; "lockedReasonKey": { "alias": "lockedReasonKey"; "required": false; "isSignal": true; }; "lockedReasonParams": { "alias": "lockedReasonParams"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; "selectionDetailChange": "selectionDetailChange"; "openedChange": "openedChange"; }, never, never, true, never>;
|
|
9619
|
+
}
|
|
9620
|
+
|
|
9621
|
+
/**
|
|
9622
|
+
* Locale-aware money formatting — the primitive `fly-currency-selector` never shipped
|
|
9623
|
+
* (see D-B7-2 in `FlyOS.PPM/.workflow/design/DECISIONS.md`).
|
|
9624
|
+
*
|
|
9625
|
+
* `FlyCurrency.decimalDigits` exists precisely so a consumer "doesn't have to assume 2
|
|
9626
|
+
* and misprice a dinar" — and yet nothing in the design system read it. Every consuming
|
|
9627
|
+
* app hand-rolled its own money string, and the ones that hardcoded `.toFixed(2)` are
|
|
9628
|
+
* wrong for seven real ISO 4217 currencies (BHD, IQD, JOD, KWD, LYD, OMR, TND — all
|
|
9629
|
+
* 3-decimal, all Gulf/MENA, on a platform whose reference tenant is a UAE government
|
|
9630
|
+
* entity).
|
|
9631
|
+
*
|
|
9632
|
+
* ## Why `formatToParts`, not a hand-rolled `${symbol}${number}` template
|
|
9633
|
+
* Currency placement is not "symbol then number" everywhere: `en` prefixes (`$1,234.50`),
|
|
9634
|
+
* `fr` and `ar` suffix it (`1 234,50 €`, with `ar` additionally wrapping the whole
|
|
9635
|
+
* expression in RTL marks). Building the string manually would mean re-deriving that
|
|
9636
|
+
* placement table ourselves and getting it wrong for a locale nobody tested. Instead
|
|
9637
|
+
* this asks `Intl.NumberFormat` to lay out a real `style: 'currency'` string for the
|
|
9638
|
+
* given locale, then walks the parts and swaps only the `currency` token for our own
|
|
9639
|
+
* text (the platform's `symbol` field, the code, or nothing) — every digit, the sign,
|
|
9640
|
+
* the decimal/group separators and the placement itself stay exactly what `Intl` (and
|
|
9641
|
+
* therefore the platform's existing number-formatting surface, `format.ts`) already
|
|
9642
|
+
* gets right for that locale.
|
|
9643
|
+
*
|
|
9644
|
+
* ## Why the Intl template is always built with `currencyDisplay: 'code'`
|
|
9645
|
+
* The formatter that produces the parts to substitute into is ALWAYS built with
|
|
9646
|
+
* `currencyDisplay: 'code'`, never `'symbol'` — even when `display: 'symbol'` is what
|
|
9647
|
+
* the caller asked for. `'code'` is the one `currencyDisplay` value ICU renders with a
|
|
9648
|
+
* stable separator (a literal space) between the currency token and the number, in
|
|
9649
|
+
* every locale tested (`en`, `fr`, `ar`, `ar-EG`). `'symbol'` does NOT: whether ICU
|
|
9650
|
+
* inserts a space depends on whether ITS OWN symbol for that specific currency happens
|
|
9651
|
+
* to be a single glyph (`$`, no space) or a multi-letter fallback (`KWD`, WITH a space)
|
|
9652
|
+
* — a per-currency accident of ICU's data, not something this function controls. Using
|
|
9653
|
+
* `'symbol'` as the template would make `display: 'symbol'` output space-inconsistent
|
|
9654
|
+
* currency-to-currency for reasons that have nothing to do with what this function
|
|
9655
|
+
* actually renders (the platform's OWN `symbol` field, substituted in afterward).
|
|
9656
|
+
*
|
|
9657
|
+
* ## `decimalDigits` always wins over Intl's own idea of the currency
|
|
9658
|
+
* `minimumFractionDigits`/`maximumFractionDigits` are pinned to the caller's
|
|
9659
|
+
* `decimalDigits`, not left to Intl's built-in per-currency table. Intl's table is
|
|
9660
|
+
* usually right, but the platform's own `/api/currencies/brief` catalogue is the
|
|
9661
|
+
* authoritative source on this platform — pinning the digits is what makes this
|
|
9662
|
+
* function agree with the picker regardless of whether the two ever disagree.
|
|
9663
|
+
*/
|
|
9664
|
+
/** `'symbol'` (default): the row's own symbol (`$`, `د.إ`) — falls back to the ISO code
|
|
9665
|
+
* when no symbol is available (see the bare-code fallback below). `'code'`: always the
|
|
9666
|
+
* unambiguous ISO 4217 code — the right choice for a table column mixing currencies.
|
|
9667
|
+
* `'none'`: the bare number, for a headline figure whose currency is already named
|
|
9668
|
+
* elsewhere on screen (a currency selector next to it, a report title). */
|
|
9669
|
+
type FlyMoneyDisplay = 'symbol' | 'code' | 'none';
|
|
9670
|
+
interface FlyFormatMoneyOptions {
|
|
9671
|
+
/** @default 'symbol' */
|
|
9672
|
+
display?: FlyMoneyDisplay;
|
|
9673
|
+
/** BCP-47 locale tag. @default 'en' */
|
|
9674
|
+
locale?: string;
|
|
9675
|
+
}
|
|
9676
|
+
/**
|
|
9677
|
+
* Formats `amount` in `currency`, localized to `options.locale`.
|
|
9678
|
+
*
|
|
9679
|
+
* ```ts
|
|
9680
|
+
* flyFormatMoney(1234.5, kwdRow) // "د.ك 1,234.500" (KWD is 3-decimal)
|
|
9681
|
+
* flyFormatMoney(1234, 'JPY') // "JPY 1,234" (bare code, no symbol to read — degrades to the code)
|
|
9682
|
+
* flyFormatMoney(-42, usdRow, { display: 'code' }) // "-USD 42.00"
|
|
9683
|
+
* flyFormatMoney(99.9, eurRow, { display: 'none' }) // "99.90" (currency named elsewhere on screen)
|
|
9684
|
+
* flyFormatMoney(null, usdRow) // "—" (never "NaN")
|
|
9685
|
+
* ```
|
|
9686
|
+
*
|
|
9687
|
+
* `amount == null` or non-finite (`NaN`, `Infinity`), or an unresolvable `currency`,
|
|
9688
|
+
* renders {@link FLY_EMPTY_VALUE} — the same placeholder every other `format.ts`
|
|
9689
|
+
* primitive uses, so a money cell in a mixed table degrades exactly like its neighbours
|
|
9690
|
+
* instead of introducing a second "no value" convention.
|
|
9691
|
+
*/
|
|
9692
|
+
declare function flyFormatMoney(amount: number | null | undefined, currency: FlyCurrency | string | null | undefined, options?: FlyFormatMoneyOptions): string;
|
|
9693
|
+
|
|
9694
|
+
/**
|
|
9695
|
+
* `{{ amount | flyMoney: currencyRow }}` → `"$1,234.50"` / `{{ amount | flyMoney: 'KWD' }}`
|
|
9696
|
+
* → `"KD 1,234.500"`.
|
|
9697
|
+
*
|
|
9698
|
+
* Template wrapper over {@link flyFormatMoney}, defaulting the locale to the active
|
|
9699
|
+
* {@link I18nService} language the same way every other `Fly*Pipe` in `format.pipes.ts`
|
|
9700
|
+
* does — see that file's doc comment for the "pass the locale signal explicitly in a
|
|
9701
|
+
* view that must react live to the language switcher" caveat, which applies here too.
|
|
9702
|
+
*
|
|
9703
|
+
* A separate file from `format.pipes.ts` on purpose: this pipe's `currency` argument
|
|
9704
|
+
* depends on `FlyCurrency` (the currency-selector's data contract), a domain type the
|
|
9705
|
+
* pure number/byte/date formatters in `format.pipes.ts` have no reason to import.
|
|
9706
|
+
*
|
|
9707
|
+
* ```html
|
|
9708
|
+
* {{ invoice.total | flyMoney: invoice.currency }}
|
|
9709
|
+
* {{ invoice.total | flyMoney: invoice.currency : { display: 'code' } }}
|
|
9710
|
+
* ```
|
|
9711
|
+
*/
|
|
9712
|
+
declare class FlyMoneyPipe implements PipeTransform {
|
|
9713
|
+
private readonly i18n;
|
|
9714
|
+
transform(amount: number | null | undefined, currency: FlyCurrency | string | null | undefined, options?: FlyFormatMoneyOptions): string;
|
|
9715
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FlyMoneyPipe, never>;
|
|
9716
|
+
static ɵpipe: _angular_core.ɵɵPipeDeclaration<FlyMoneyPipe, "flyMoney", true>;
|
|
9465
9717
|
}
|
|
9466
9718
|
|
|
9467
9719
|
/**
|
|
@@ -11517,6 +11769,7 @@ declare class FlyAppTopbarComponent {
|
|
|
11517
11769
|
protected readonly activeModule: _angular_core.Signal<FlyAppModule | null>;
|
|
11518
11770
|
protected readonly brandAriaLabel: _angular_core.Signal<string>;
|
|
11519
11771
|
protected readonly switchAriaLabel: _angular_core.Signal<string>;
|
|
11772
|
+
protected readonly triggerAriaLabel: _angular_core.Signal<string>;
|
|
11520
11773
|
constructor();
|
|
11521
11774
|
protected iconFor(key: string): TemplateRef<unknown> | null;
|
|
11522
11775
|
protected indexOf(mod: FlyAppModule): number;
|
|
@@ -12342,6 +12595,6 @@ declare const AUDIENCE_ERROR_CODES: {
|
|
|
12342
12595
|
};
|
|
12343
12596
|
type AudienceErrorCode = (typeof AUDIENCE_ERROR_CODES)[keyof typeof AUDIENCE_ERROR_CODES];
|
|
12344
12597
|
|
|
12345
|
-
export { AGENT_DRAG_MIME, AGENT_PAYLOAD_VERSION, APP_LOOKUP, AUDIENCE_ERROR_CODES, AUDIENCE_LIMITS, AUDIENCE_PRESETS, AUDIENCE_TERM_KINDS, AgentActionBus, AgentActionUnsupportedDispatchError, AgentCommandRegistry, AgentDropRegistry, AgentFlightAnimator, AgentLookupRegistry, AgentPayloadOversizeError, AudienceBuilderComponent, AuthService, BilingualFieldComponent, CRON_MODES, CRON_WEEKDAYS, ContextMenuComponent, DEFAULT_AGENT_PAYLOAD_LIMITS, DEFAULT_FLY_THEME_MODE, DS_BASELINE_LOCALES, DashboardKpiComponent, DialogResult, EntityLookupComponent, FLYOS_LAUNCH_EVENT, FLYOS_LAUNCH_REQUEST_EVENT, FLYOS_REMOTE_ROUTE_EVENT, FLY_ACCENT_PROPERTY, FLY_ADMIN_ROLES, FLY_CHUNK_RELOAD_FLAG, FLY_COMPACT_THRESHOLD, FLY_COUNTRIES, FLY_EMOJI_BY_ID, FLY_EMOJI_CATEGORIES, FLY_EMOJI_CATEGORY_BY_ID, FLY_EMOJI_DEFAULT_CATEGORIES, FLY_EMOJI_PACK, FLY_EMOJI_PACK_MISSING_MESSAGE, FLY_EMOJI_PREVIEW_COUNT, FLY_EMPTY_VALUE, FLY_LOCALE_CATALOG, FLY_MAGIC_BAR_EVENT, FLY_MAGIC_BAR_ICONS, FLY_MAGIC_BAR_STORE_KEY, FLY_NF_CACHE_HEAL_FLAG, FLY_RELOAD_DEBOUNCE_MS, FLY_RELOAD_REARM_MS, FLY_REMOTE_BASE_PATH, FLY_REMOTE_CONTEXT_EVENT, FLY_REMOTE_CONTEXT_STORE_KEY, FLY_REMOTE_ROUTES, FLY_SCAN_PENDING_DEFAULT_DELAY_MS, FLY_SCAN_PENDING_MAX_RETRIES, FLY_SCAN_PENDING_STATUS, FLY_SEARCH_DEBOUNCE_MS, FLY_SKIN_TONES, FLY_STANDALONE_AUTH_CONFIG, FLY_THEME_MODE_IDS, FLY_VIEWPORT_IS_MOBILE, FLY_WINDOW_HELP_HINT_EVENT, FLY_WINDOW_PAGE_TITLE_EVENT, FlyAchievementProgressComponent, FlyActionMenuComponent, FlyActionStackComponent, FlyAgentDraggableDirective, FlyAnimatedEmojiComponent, FlyAppHomeComponent, FlyAppTopbarComponent, FlyAuthLiveRefresh, FlyBadgeWallComponent, FlyBlockUiComponent, FlyBreadcrumbComponent, FlyButtonComponent, FlyBytesPipe, FlyCaptchaComponent, FlyCardActionsComponent, FlyCardBodyComponent, FlyCardComponent, FlyCardFooterComponent, FlyCardGridComponent, FlyCardMediaComponent, FlyCardMetaComponent, FlyCardStatusComponent, FlyCardTitleComponent, FlyCellDirective, FlyCheckboxComponent, FlyChipComponent, FlyChunkReloadErrorHandler, FlyClickOutsideDirective, FlyCollapsibleComponent, FlyCommentThreadComponent, FlyCompactNumberPipe, FlyConfirmDialogComponent, FlyControlDirective, FlyCronBuilderComponent, FlyCurrencySelectorComponent, FlyDataTableComponent, FlyDatePipe, FlyDateTimePipe, FlyDebouncer, FlyDecimalNumberPipe, FlyDetailCardComponent, FlyDetailShellComponent, FlyDrawerComponent, FlyDurationPipe, FlyDynamicFormComponent, FlyEmojiPickerComponent, FlyFieldComponent, FlyFileDownloadService, FlyFileUploadComponent, FlyFilterPanelComponent, FlyFormBannerComponent, FlyFormFooterComponent, FlyFormGridComponent, FlyFormSectionComponent, FlyFullNumberPipe, FlyGanttComponent, FlyHubClient, FlyIconButtonComponent, FlyIfAdminDirective, FlyIfRoleDirective, FlyImageUploadComponent, FlyLeaderboardComponent, FlyMagicActionsComponent, FlyMetaListComponent, FlyModalComponent, FlyModerationQueueComponent, FlyModuleIconDirective, FlyPaginationComponent, FlyPeoplePickerComponent, FlyPointsTierComponent, FlyProgressComponent, FlyRelativeTimePipe, FlyRemoteContextService, FlyRemoteRouter, FlyRemoteRouterOutletComponent, FlySearchInputComponent, FlySectionHeaderComponent, FlySecureSrcDirective, FlySegmentedComponent, FlySelectComponent, FlySkeletonComponent, FlySliderComponent, FlySparklineComponent, FlySpinnerComponent, FlyStandaloneAuthCallbackComponent, FlyStandaloneAuthService, FlyStateMessageComponent, FlyDynamicFormComponent as FlySurveyFormComponent, FlyTabComponent, FlyTabsComponent, FlyTagsInputComponent, FlyThemeService, FlyTimePipe, FlyToastService, FlyToggleComponent, FlyTooltipDirective, FlyTreeNavComponent, FlyTypeaheadComponent, FlyUserDirectoryService, FlyWindowHelpService, FlyWindowTitleService, FlyosPendingLaunchesGlobalKey, FlyosShellHandlesLaunchRequestsGlobalKey, FlyosShellOwnsHistoryGlobalKey, GANTT_ZOOMS, I18nService, LAUNCH_CONTEXT, MAGIC_BAR_SEARCH_WIDTH_DEFAULT, MAGIC_BAR_SEARCH_WIDTH_MAX, MAGIC_BAR_SEARCH_WIDTH_MIN, MagicBarRegistry, MessageBoxButtons, MessageBoxComponent, MessageBoxIcon, MessageBoxService, MockAuthService, NOVA_PRIORITY_TONE, NOVA_STATUS_TONE, NOVA_TONE_FALLBACK, OverlayStack, PRESENCE_COLORS, PageHeaderComponent, RTL_LOCALE_SET, SHARE_ORG_CHART_SYSTEM_KEY_APPS, SHARE_ORG_CHART_SYSTEM_KEY_DEFAULT, SHARE_PANEL_DEFAULT_FILE_LEVELS, STATE_DEFAULT_ICONS, STATE_DEFAULT_MESSAGE_KEYS, STEP_UP_CODE, STEP_UP_REAUTH_HANDLER, STEP_UP_RETURN_KEY, SUPPORTED_AGENT_PAYLOAD_VERSIONS, SharePanelComponent, SourceAppResolver, StandaloneWindowManagerService, StatusBadgeComponent, StepUpService, ToastHostComponent, TranslatePipe, WINDOW_DATA, WINDOW_HELP_HINT, WindowManagerService, applySkinTone, applySuggestion, ariaSort, buildCron, canConfirm, canGoNext, canGoPrev, captureFocus, clampMagicBarSearchWidth, clampPage, clampSliderValue, connectRemoteLaunch, enterActivatesNatively, filterGroup, filterSuggestions, findLocaleByDialect, findLocaleByPrefix, firstEnabledIndex, firstModuleIndex, flattenModules, flyAdminGuard, flyApiErrorMessage, flyCaptchaBase64Utf8, flyCaptchaBuildToken, flyCaptchaSha256Hex, flyCompactNumber, flyDebounced, flyDecimalNumber, flyDownloadBlob, flyDuration, flyEmojiFor, flyEmojiIsTonable, flyEmojiPackUrl, flyExportFileName, flyFirstEnabledIndex, flyFormatBytes, flyFormatDate, flyFormatDateTime, flyFormatTime, flyFullNumber, flyNextEnabledIndex, flyNextSegmentIndex, flyRelativeTime, flyResolveActiveTab, flyRoleGuard, flyScanPendingDelayMs, flyScanRetry, flySignedCompact, flySkinToneLabelKey, flyStandaloneAuthGuard, flyStandaloneAuthInterceptor, flyToDateOnly, flyToPage, flyUnwrap, flyUnwrapLenient, hasAnyRoleIn, healNativeFederationCacheOnce, initialExpanded, isAccentColor, isChunkLoadError, isFlyAuthStorePopulated, isNativeFederationCacheError, isRtlLocale, isRtlLocaleEntry, isValidCron, isValidSingleField, loadRemoteStyles, magicBarOwnerKey, magicBarSearchText, matchFlyRoutePattern, nextEnabledIndex, nextModuleIndex, nextSegmentIndex, nextSort, normalizeFlyTheme, normalizeRoles, novaPriorityToneVar, novaStatusToneVar, overlayStack, parseCron, parseStepUpChallenge, parseTags, presenceColorFor, printConsoleSecurityWarning, provideFlyChunkReloadRecovery, provideFlyEmojiPack, provideFlyStandaloneAuth, reloadOnceForChunkError, requestAppLaunch, resolveActiveModule, resolveActiveSection, resolveActiveTab, resolveCellValue, resolveStateIcon, resolveStateMessageKey, restoreFocus, sameTags, sectionHintKey, sectionLayout, sliderTrackGradient, sparklinePath, sparklinePoints, stepUpInterceptor, stepUpReturnKey, trimAgentPayload, trimAgentString, unloadRemoteStyles, utf8ByteLength, validateAgentPayload, warnIfEmbeddedSessionMissing };
|
|
12346
|
-
export type { ActionMenuItem, AgentAction, AgentActionDispatch, AgentActionVerb, AgentChipHostInputs, AgentCommand, AgentCommandContextBinding, AgentCommandHandle, AgentCommandRegistration, AgentCommandScope, AgentCommandSlashSpec, AgentDragPayload, AgentDraggableItem, AgentDropChipMode, AgentDropRendererRegistration, AgentEnvelopeAttachment, AgentMcpScope, AgentMessageEnvelope, AgentPayloadLimits, AgentPayloadValidationResult, AppEveryonePrincipal, AppEveryoneTerm, AppLookup, AppLookupEntry, AudienceEditTarget, AudienceErrorCode, AudienceFilter, AudienceOptions, AudiencePresetKind, AudienceTerm, AudienceTermKind, BreadcrumbItem, ButtonSize, ButtonVariant, CardDensity, CardLayout, ChartTerm, ChildWindowData, ChipTone, ConfirmKind, ConnectRemoteLaunchOptions, ContextMenuAlign, ContextMenuItem, ContextMenuSection, CronAdvancedFieldDef, CronMode, CronParts, CronWeekday, DesktopApp, DesktopAppCategory, DesktopAppKind, DetailSection, DialogResultWithAcknowledgement, EmbeddedSessionProbe, EntityLinkSelection, FilterGroup, FlyAchievementRow, FlyApiError, FlyApiResponse, FlyAppHomeLayout, FlyAppModule, FlyAppModuleSection, FlyAuthRefreshPayload, FlyAuthStoreReadable, FlyBadgeTile, FlyBreadcrumbItem, FlyCaptchaChallenge, FlyCaptchaSolution, FlyCaptchaState, FlyCellContext, FlyColumn, FlyColumnKind, FlyComment, FlyCommentDeleteRequest, FlyCommentEditRequest, FlyCommentLoadMoreRequest, FlyCommentLoadRepliesRequest, FlyCommentLockToggleRequest, FlyCommentPage, FlyCommentReportReason, FlyCommentReportRequest, FlyCommentReportStatus, FlyCommentSubmitRequest, FlyCountry, FlyCurrency, FlyCurrencyFetchFn, FlyCurrencySelectorMode, FlyCurrencySelectorValue, FlyDrawerBodyPadding, FlyDrawerPosition, FlyDrawerSide, FlyDrawerSize, FlyDrawerVariant, FlyEmojiCategory, FlyEmojiCell, FlyEmojiEntry, FlyEmojiPack, FlyEmojiPackEntry, FlyEmojiPackManifest, FlyEmojiPickerSize, FlyEmojiPickerTab, FlyEmojiSection, FlyFileInfo, FlyFileSelection, FlyFormAnswer, FlyFormAnswerValue, FlyFormDefinition, FlyFormFieldOptions, FlyFormOption, FlyFormQuestion, FlyFormQuestionType, FlyFormScoreDisplay, FlyLaunchEventDetail, FlyLaunchRequestDetail, FlyLeaderboardRow, FlyLiveRefreshOptions, FlyLocaleEntry, FlyMagicBarIconName, FlyMetaItem, FlyModerationLoadPageRequest, FlyModerationLockThreadRequest, FlyModerationOpenSubjectRequest, FlyModerationReport, FlyModerationReportPage, FlyModerationResolutionStatus, FlyModerationResolveRequest, FlyNavigableItem, FlyPageMeta, FlyPageResult, FlyPaged, FlyPeoplePickerMode, FlyPeoplePickerOption, FlyPeopleSearchFn, FlyPointsSummary, FlyRemoteContext, FlyRemoteEagerRoute, FlyRemoteLazyRoute, FlyRemoteLoadedComponent, FlyRemoteMatch, FlyRemoteRoute, FlyRemoteRouteEventDetail, FlySearchExpandTrigger, FlySearchInputSize, FlySecureSrcState, FlySelectOption, FlySelectValue, FlySkeletonAnimation, FlySkeletonLayout, FlySkeletonShape, FlySkinTone, FlySort, FlyStandaloneAuthConfig, FlyFileSelection as FlySurveyFileSelection, FlyFormAnswer as FlySurveyFormAnswer, FlyFormAnswerValue as FlySurveyFormAnswerValue, FlyFormDefinition as FlySurveyFormDefinition, FlyFormFieldOptions as FlySurveyFormFieldOptions, FlyFormOption as FlySurveyFormOption, FlyFormQuestion as FlySurveyFormQuestion, FlyFormQuestionType as FlySurveyQuestionType, FlyThemeMode, FlyTooltipPlacement, FlyTreeNavNode, FlyTypeaheadOption, FlyWindowHelpHintEventDetail, FlyWindowHelpPublisher, FlyWindowPageTitleEventDetail, FlyWindowTitlePublisher, FlyosPendingLaunches, FocusRestore, FormBannerKind, GanttDependency, GanttDependencyCreate, GanttRow, GanttRowDatesChange, GanttRowKind, GanttZoom, IconButtonVariant, LaunchContext, LoadBundleOptions, LookupDescriptor, LookupHandle, LookupRegistration, LookupResult, LookupSearch, MagicBarAction, MagicBarActionKind, MagicBarActionSpec, MagicBarActionView, MagicBarContribution, MagicBarGroup, MagicBarGroupSpec, MagicBarGroupView, MagicBarOwnerRef, MagicBarPublisher, MagicBarRadioMenu, MagicBarRadioMenuSpec, MagicBarRadioMenuView, MagicBarRadioOption, MagicBarSearch, MagicBarSearchSeed, MagicBarSearchSpec, MagicBarSearchView, MagicBarTextParams, MagicBarTone, MagicBarView, MessageBoxButton, MessageBoxDontAskAgainConfig, MessageBoxOptions, MessageBoxOptionsWithAcknowledgement, MockAuthConfig, OpenWindowOptions, OuPrincipal, OuTerm, OverlayHandle, PageHeaderVariant, PresetTerm, ProgressTone, RemoteAppDef, RequestAppLaunchOptions, RoleOuLookupRow, RolePrincipal, RolesTerm, SegmentedOption, ShareOrgChartOption, ShareOuNode, SharePanelLevelOption, SharePermissionEntry, SharePrincipal, SharePrincipalKind, ShareUserResult, StateMessageKind, StepUpChallenge, StepUpReauthHandler, StepUpReauthRequest, TabsVariant, ToastAction, ToastEntry, ToastOptions, ToastVariant, User, UserPrincipal, UsersTerm, WindowHelpHint, WindowInstance, WindowState };
|
|
12598
|
+
export { AGENT_DRAG_MIME, AGENT_PAYLOAD_VERSION, APP_LOOKUP, AUDIENCE_ERROR_CODES, AUDIENCE_LIMITS, AUDIENCE_PRESETS, AUDIENCE_TERM_KINDS, AgentActionBus, AgentActionUnsupportedDispatchError, AgentCommandRegistry, AgentDropRegistry, AgentFlightAnimator, AgentLookupRegistry, AgentPayloadOversizeError, AudienceBuilderComponent, AuthService, BilingualFieldComponent, CRON_MODES, CRON_WEEKDAYS, ContextMenuComponent, DEFAULT_AGENT_PAYLOAD_LIMITS, DEFAULT_FLY_THEME_MODE, DS_BASELINE_LOCALES, DashboardKpiComponent, DialogResult, ENTITY_LINK_LAUNCHER, EntityLookupComponent, FLYOS_LAUNCH_EVENT, FLYOS_LAUNCH_REQUEST_EVENT, FLYOS_REMOTE_ROUTE_EVENT, FLY_ACCENT_PROPERTY, FLY_ADMIN_ROLES, FLY_CHUNK_RELOAD_FLAG, FLY_COMPACT_THRESHOLD, FLY_COUNTRIES, FLY_EMOJI_BY_ID, FLY_EMOJI_CATEGORIES, FLY_EMOJI_CATEGORY_BY_ID, FLY_EMOJI_DEFAULT_CATEGORIES, FLY_EMOJI_PACK, FLY_EMOJI_PACK_MISSING_MESSAGE, FLY_EMOJI_PREVIEW_COUNT, FLY_EMPTY_VALUE, FLY_LOCALE_CATALOG, FLY_MAGIC_BAR_EVENT, FLY_MAGIC_BAR_ICONS, FLY_MAGIC_BAR_STORE_KEY, FLY_NF_CACHE_HEAL_FLAG, FLY_RELOAD_DEBOUNCE_MS, FLY_RELOAD_REARM_MS, FLY_REMOTE_BASE_PATH, FLY_REMOTE_CONTEXT_EVENT, FLY_REMOTE_CONTEXT_STORE_KEY, FLY_REMOTE_ROUTES, FLY_SCAN_PENDING_DEFAULT_DELAY_MS, FLY_SCAN_PENDING_MAX_RETRIES, FLY_SCAN_PENDING_STATUS, FLY_SEARCH_DEBOUNCE_MS, FLY_SKIN_TONES, FLY_STANDALONE_AUTH_CONFIG, FLY_THEME_MODE_IDS, FLY_VIEWPORT_IS_MOBILE, FLY_WINDOW_HELP_HINT_EVENT, FLY_WINDOW_PAGE_TITLE_EVENT, FlyAchievementProgressComponent, FlyActionMenuComponent, FlyActionStackComponent, FlyAgentDraggableDirective, FlyAnimatedEmojiComponent, FlyAppHomeComponent, FlyAppTopbarComponent, FlyAuthLiveRefresh, FlyBadgeWallComponent, FlyBlockUiComponent, FlyBreadcrumbComponent, FlyButtonComponent, FlyBytesPipe, FlyCaptchaComponent, FlyCardActionsComponent, FlyCardBodyComponent, FlyCardComponent, FlyCardFooterComponent, FlyCardGridComponent, FlyCardMediaComponent, FlyCardMetaComponent, FlyCardStatusComponent, FlyCardTitleComponent, FlyCellDirective, FlyCheckboxComponent, FlyChipComponent, FlyChunkReloadErrorHandler, FlyClickOutsideDirective, FlyCollapsibleComponent, FlyCommentThreadComponent, FlyCompactNumberPipe, FlyConfirmDialogComponent, FlyControlDirective, FlyCronBuilderComponent, FlyCurrencySelectorComponent, FlyDataTableComponent, FlyDatePipe, FlyDateTimePipe, FlyDebouncer, FlyDecimalNumberPipe, FlyDetailCardComponent, FlyDetailShellComponent, FlyDrawerComponent, FlyDurationPipe, FlyDynamicFormComponent, FlyEmojiPickerComponent, FlyFieldComponent, FlyFileDownloadService, FlyFileUploadComponent, FlyFilterPanelComponent, FlyFormBannerComponent, FlyFormFooterComponent, FlyFormGridComponent, FlyFormSectionComponent, FlyFullNumberPipe, FlyGanttComponent, FlyHubClient, FlyIconButtonComponent, FlyIfAdminDirective, FlyIfRoleDirective, FlyImageUploadComponent, FlyLeaderboardComponent, FlyMagicActionsComponent, FlyMetaListComponent, FlyModalComponent, FlyModerationQueueComponent, FlyModuleIconDirective, FlyMoneyPipe, FlyPaginationComponent, FlyPeoplePickerComponent, FlyPointsTierComponent, FlyProgressComponent, FlyRelativeTimePipe, FlyRemoteContextService, FlyRemoteRouter, FlyRemoteRouterOutletComponent, FlySearchInputComponent, FlySectionHeaderComponent, FlySecureSrcDirective, FlySegmentedComponent, FlySelectComponent, FlySkeletonComponent, FlySliderComponent, FlySparklineComponent, FlySpinnerComponent, FlyStandaloneAuthCallbackComponent, FlyStandaloneAuthService, FlyStateMessageComponent, FlyDynamicFormComponent as FlySurveyFormComponent, FlyTabComponent, FlyTabsComponent, FlyTagsInputComponent, FlyThemeService, FlyTimePipe, FlyToastService, FlyToggleComponent, FlyTooltipDirective, FlyTreeNavComponent, FlyTypeaheadComponent, FlyUserDirectoryService, FlyWindowHelpService, FlyWindowTitleService, FlyosPendingLaunchesGlobalKey, FlyosShellHandlesLaunchRequestsGlobalKey, FlyosShellOwnsHistoryGlobalKey, GANTT_ZOOMS, I18nService, LAUNCH_CONTEXT, MAGIC_BAR_SEARCH_WIDTH_DEFAULT, MAGIC_BAR_SEARCH_WIDTH_MAX, MAGIC_BAR_SEARCH_WIDTH_MIN, MagicBarRegistry, MessageBoxButtons, MessageBoxComponent, MessageBoxIcon, MessageBoxService, MockAuthService, NOVA_PRIORITY_TONE, NOVA_STATUS_TONE, NOVA_TONE_FALLBACK, OverlayStack, PRESENCE_COLORS, PageHeaderComponent, RTL_LOCALE_SET, SHARE_ORG_CHART_SYSTEM_KEY_APPS, SHARE_ORG_CHART_SYSTEM_KEY_DEFAULT, SHARE_PANEL_DEFAULT_FILE_LEVELS, STATE_DEFAULT_ICONS, STATE_DEFAULT_MESSAGE_KEYS, STEP_UP_CODE, STEP_UP_REAUTH_HANDLER, STEP_UP_RETURN_KEY, SUPPORTED_AGENT_PAYLOAD_VERSIONS, SharePanelComponent, SourceAppResolver, StandaloneWindowManagerService, StatusBadgeComponent, StepUpService, ToastHostComponent, TranslatePipe, WINDOW_DATA, WINDOW_HELP_HINT, WindowManagerService, applySkinTone, applySuggestion, ariaSort, buildCron, canConfirm, canGoNext, canGoPrev, captureFocus, clampMagicBarSearchWidth, clampPage, clampSliderValue, connectRemoteLaunch, enterActivatesNatively, filterGroup, filterSuggestions, findLocaleByDialect, findLocaleByPrefix, firstEnabledIndex, firstModuleIndex, flattenModules, flyAdminGuard, flyApiErrorMessage, flyCaptchaBase64Utf8, flyCaptchaBuildToken, flyCaptchaSha256Hex, flyCompactNumber, flyDebounced, flyDecimalNumber, flyDownloadBlob, flyDuration, flyEmojiFor, flyEmojiIsTonable, flyEmojiPackUrl, flyExportFileName, flyFirstEnabledIndex, flyFormatBytes, flyFormatDate, flyFormatDateTime, flyFormatMoney, flyFormatTime, flyFullNumber, flyNextEnabledIndex, flyNextSegmentIndex, flyRelativeTime, flyResolveActiveTab, flyRoleGuard, flyScanPendingDelayMs, flyScanRetry, flySignedCompact, flySkinToneLabelKey, flyStandaloneAuthGuard, flyStandaloneAuthInterceptor, flyToDateOnly, flyToPage, flyUnwrap, flyUnwrapLenient, hasAnyRoleIn, healNativeFederationCacheOnce, initialExpanded, isAccentColor, isChunkLoadError, isFlyAuthStorePopulated, isNativeFederationCacheError, isRtlLocale, isRtlLocaleEntry, isValidCron, isValidSingleField, loadRemoteStyles, magicBarOwnerKey, magicBarSearchText, matchFlyRoutePattern, nextEnabledIndex, nextModuleIndex, nextSegmentIndex, nextSort, normalizeFlyTheme, normalizeRoles, novaPriorityToneVar, novaStatusToneVar, overlayStack, parseCron, parseStepUpChallenge, parseTags, prefetchRemoteStyles, presenceColorFor, printConsoleSecurityWarning, provideFlyChunkReloadRecovery, provideFlyEmojiPack, provideFlyStandaloneAuth, reloadOnceForChunkError, requestAppLaunch, resolveActiveModule, resolveActiveSection, resolveActiveTab, resolveCellValue, resolveStateIcon, resolveStateMessageKey, restoreFocus, sameTags, sectionHintKey, sectionLayout, sliderTrackGradient, sparklinePath, sparklinePoints, stepUpInterceptor, stepUpReturnKey, trimAgentPayload, trimAgentString, unloadRemoteStyles, utf8ByteLength, validateAgentPayload, warnIfEmbeddedSessionMissing };
|
|
12599
|
+
export type { ActionMenuItem, AgentAction, AgentActionDispatch, AgentActionVerb, AgentChipHostInputs, AgentCommand, AgentCommandContextBinding, AgentCommandHandle, AgentCommandRegistration, AgentCommandScope, AgentCommandSlashSpec, AgentDragPayload, AgentDraggableItem, AgentDropChipMode, AgentDropRendererRegistration, AgentEnvelopeAttachment, AgentMcpScope, AgentMessageEnvelope, AgentPayloadLimits, AgentPayloadValidationResult, AppEveryonePrincipal, AppEveryoneTerm, AppLookup, AppLookupEntry, AudienceEditTarget, AudienceErrorCode, AudienceFilter, AudienceOptions, AudiencePresetKind, AudienceTerm, AudienceTermKind, BreadcrumbItem, ButtonSize, ButtonVariant, CardDensity, CardLayout, ChartTerm, ChildWindowData, ChipTone, ConfirmKind, ConnectRemoteLaunchOptions, ContextMenuAlign, ContextMenuItem, ContextMenuSection, CronAdvancedFieldDef, CronMode, CronParts, CronWeekday, DesktopApp, DesktopAppCategory, DesktopAppKind, DetailSection, DialogResultWithAcknowledgement, EmbeddedSessionProbe, EntityLinkLauncher, EntityLinkSelection, FilterGroup, FlyAchievementRow, FlyApiError, FlyApiResponse, FlyAppHomeLayout, FlyAppModule, FlyAppModuleSection, FlyAuthRefreshPayload, FlyAuthStoreReadable, FlyBadgeTile, FlyBreadcrumbItem, FlyCaptchaChallenge, FlyCaptchaSolution, FlyCaptchaState, FlyCellContext, FlyColumn, FlyColumnKind, FlyComment, FlyCommentDeleteRequest, FlyCommentEditRequest, FlyCommentLoadMoreRequest, FlyCommentLoadRepliesRequest, FlyCommentLockToggleRequest, FlyCommentPage, FlyCommentReportReason, FlyCommentReportRequest, FlyCommentReportStatus, FlyCommentSubmitRequest, FlyCountry, FlyCurrency, FlyCurrencyFetchFn, FlyCurrencySelectorMode, FlyCurrencySelectorValue, FlyDrawerBodyPadding, FlyDrawerPosition, FlyDrawerSide, FlyDrawerSize, FlyDrawerVariant, FlyEmojiCategory, FlyEmojiCell, FlyEmojiEntry, FlyEmojiPack, FlyEmojiPackEntry, FlyEmojiPackManifest, FlyEmojiPickerSize, FlyEmojiPickerTab, FlyEmojiSection, FlyFileInfo, FlyFileSelection, FlyFormAnswer, FlyFormAnswerValue, FlyFormDefinition, FlyFormFieldOptions, FlyFormOption, FlyFormQuestion, FlyFormQuestionType, FlyFormScoreDisplay, FlyFormatMoneyOptions, FlyLaunchEventDetail, FlyLaunchRequestDetail, FlyLeaderboardRow, FlyLiveRefreshOptions, FlyLocaleEntry, FlyMagicBarIconName, FlyMetaItem, FlyModerationLoadPageRequest, FlyModerationLockThreadRequest, FlyModerationOpenSubjectRequest, FlyModerationReport, FlyModerationReportPage, FlyModerationResolutionStatus, FlyModerationResolveRequest, FlyMoneyDisplay, FlyNavigableItem, FlyPageMeta, FlyPageResult, FlyPaged, FlyPeoplePickerMode, FlyPeoplePickerOption, FlyPeopleSearchFn, FlyPointsSummary, FlyRemoteContext, FlyRemoteEagerRoute, FlyRemoteLazyRoute, FlyRemoteLoadedComponent, FlyRemoteMatch, FlyRemoteRoute, FlyRemoteRouteEventDetail, FlySearchExpandTrigger, FlySearchInputSize, FlySecureSrcState, FlySelectOption, FlySelectValue, FlySkeletonAnimation, FlySkeletonLayout, FlySkeletonShape, FlySkinTone, FlySort, FlyStandaloneAuthConfig, FlyFileSelection as FlySurveyFileSelection, FlyFormAnswer as FlySurveyFormAnswer, FlyFormAnswerValue as FlySurveyFormAnswerValue, FlyFormDefinition as FlySurveyFormDefinition, FlyFormFieldOptions as FlySurveyFormFieldOptions, FlyFormOption as FlySurveyFormOption, FlyFormQuestion as FlySurveyFormQuestion, FlyFormQuestionType as FlySurveyQuestionType, FlyThemeMode, FlyTooltipPlacement, FlyTreeNavNode, FlyTypeaheadOption, FlyWindowHelpHintEventDetail, FlyWindowHelpPublisher, FlyWindowPageTitleEventDetail, FlyWindowTitlePublisher, FlyosPendingLaunches, FocusRestore, FormBannerKind, GanttDependency, GanttDependencyCreate, GanttRow, GanttRowDatesChange, GanttRowKind, GanttZoom, IconButtonVariant, LaunchContext, LoadBundleOptions, LoadRemoteStylesOptions, LookupDescriptor, LookupHandle, LookupRegistration, LookupResult, LookupSearch, MagicBarAction, MagicBarActionKind, MagicBarActionSpec, MagicBarActionView, MagicBarContribution, MagicBarGroup, MagicBarGroupSpec, MagicBarGroupView, MagicBarOwnerRef, MagicBarPublisher, MagicBarRadioMenu, MagicBarRadioMenuSpec, MagicBarRadioMenuView, MagicBarRadioOption, MagicBarSearch, MagicBarSearchSeed, MagicBarSearchSpec, MagicBarSearchView, MagicBarTextParams, MagicBarTone, MagicBarView, MessageBoxButton, MessageBoxDontAskAgainConfig, MessageBoxOptions, MessageBoxOptionsWithAcknowledgement, MockAuthConfig, OpenWindowOptions, OuPrincipal, OuTerm, OverlayHandle, PageHeaderVariant, PresetTerm, ProgressTone, RemoteAppDef, RequestAppLaunchOptions, RoleOuLookupRow, RolePrincipal, RolesTerm, SegmentedOption, ShareOrgChartOption, ShareOuNode, SharePanelLevelOption, SharePermissionEntry, SharePrincipal, SharePrincipalKind, ShareUserResult, StateMessageKind, StepUpChallenge, StepUpReauthHandler, StepUpReauthRequest, TabsVariant, ToastAction, ToastEntry, ToastOptions, ToastVariant, User, UserPrincipal, UsersTerm, WindowHelpHint, WindowInstance, WindowState };
|
|
12347
12600
|
//# sourceMappingURL=flyos-design-system.d.ts.map
|