@flyos/design-system 2.5.0 → 2.6.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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flyos/design-system",
3
- "version": "2.5.0",
3
+ "version": "2.6.0",
4
4
  "description": "FlyOS design system — shared components, directives, pipes, services, and models for Business App developers.",
5
5
  "keywords": [
6
6
  "flyos",
@@ -480,8 +480,9 @@ html.dark-theme {
480
480
  // active tab, `badge()`'s default, `fly-pagination`'s current-page pill.
481
481
 
482
482
  // THE FAILURE IS THE EXTERNAL-APP ACCENT, NOT THE EMBED. A fixed near-white is
483
- // right for the platform violet (5.25:1) and for the 2.0 `--accent-hi`
484
- // (8.33:1), and catastrophic for an External App that remaps `--accent` to a
483
+ // right for the platform violet (5.25:1) and for its `--accent-hi` partner
484
+ // (≈6.9:1 since the 2026-08-17 accent-family re-value; `plate-ink.spec.ts`
485
+ // recomputes it live), and catastrophic for an External App that remaps `--accent` to a
485
486
  // light brand colour: white on a pale gold #F5C542 measures 1.58:1, on a cyan
486
487
  // #22D3EE 1.76:1. Three tokens are deliberately absent from this file precisely
487
488
  // because the accent is the consuming app's to choose (see the header), so this
@@ -9,8 +9,9 @@
9
9
 
10
10
  // ── Canonical import ─────────────────────────────────────────────────────────
11
11
  // @use 'nova-glass' as glass;
12
- // .fly-menu { @include glass.popover; }
13
- // .fly-drawer { @include glass.popover($shadow: drawer, $surface: panel); }
12
+ // .fly-menu { @include glass.popover($surface: menu); } // portaled to <body>
13
+ // .in-win-menu { @include glass.popover($surface: menu, $nested: true); } // inside a window
14
+ // .fly-drawer { @include glass.popover($shadow: drawer, $surface: chrome, $nested: true); }
14
15
  // .app-panel { @include glass.panel; }
15
16
  // .shell-header { @include glass.chrome; }
16
17
  // Note the argumentless form has no parentheses — stylelint's
@@ -81,27 +82,26 @@
81
82
  }
82
83
  }
83
84
 
84
- // The surface-context seam (skill §2 ⚠, §10).
85
- // The ratified light `--glass2-bg` carries the DARK near-opaque fill, so a light
86
- // popover anchored in the header renders as dark glass. In the mock only ONE
87
- // region escaped that, via a `#dc-root > div > div > div:nth-child(2) > section`
88
- // structural selector which is exactly the fragile thing this argument
89
- // replaces: a caller DECLARES which surface it is and gets the right fill.
90
- // This is the seam the open UX ruling lands on. If UX rules the light fill is a
91
- // bug, the fix is one value in `_nova-tokens.scss` and `chrome` inherits it with
92
- // no change here. Nothing in this file second-guesses the ratified token.
93
-
94
- // READ THIS BEFORE PICKING `chrome`. As of the S1 review fixes NO shipping
95
- // component passes it: `fly-context-menu`, `fly-action-menu` and the
96
- // `fly-select` listbox moved to `menu`, and `fly-drawer` / `fly-modal` /
97
- // `fly-confirm-dialog` were already on `panel`. Only `/design-lab`'s Glass
98
- // Recipes preview and `nova-glass.spec.ts` still compile it. It is kept as the
99
- // DEFAULT on purpose it is the canon's popover fill (skill §4) and the branch
100
- // the light-`--glass2-bg` ruling lands on so the next genuine chrome-anchored
101
- // popover is the first caller that will feel that ruling, and it should. What it
102
- // must NOT be used for again is a floating menu in light theme: that pairing put
103
- // 95 % black ink on a near-opaque #38363C plate at 1.66–1.99:1.
104
- @function _fill($surface) {
85
+ // The surface-context seam (skill §2, §10).
86
+ // A caller DECLARES which surface it is and gets the right fill this replaced
87
+ // the mock's fragile `#dc-root > > section` structural override. The seam did
88
+ // its job on 2026-08-17: UX ruled the light `--glass2-bg` carrying the dark
89
+ // near-opaque fill was a canon-export BUG, and the one-value fix landed in
90
+ // `_nova-tokens.scss` (light fill = the light popover hue at 95%). `chrome`
91
+ // inherited it with no change here, exactly as designed.
92
+
93
+ // `chrome` is the canon's popover fill (skill §4) and — since the ruling — is
94
+ // legible in both themes, so panel-class floating surfaces (`fly-filter-panel`,
95
+ // `fly-drawer`, `fly-modal`, `fly-confirm-dialog`) sit on it, paired with
96
+ // `$nested: true` because they render INSIDE a window (a backdrop root — hazard
97
+ // 3 above where a translucent fill + blur reads as flat mud; the dark-mode
98
+ // drift review of 2026-08-17 was exactly that mud being reported). The S1-era
99
+ // warning about `chrome` under a light floating MENU (95% black ink on a dark
100
+ // #38363C plate at 1.66–1.99:1) described the pre-ruling value and is history;
101
+ // menus stay on `menu` its dark stops are the AA-measured alpha-1 pair, and
102
+ // IN-WINDOW menus add `$nested: true`, which swaps to the solid twin pair so
103
+ // light keeps its opacity where the blur is gone (the branch below).
104
+ @function _fill($surface, $nested: false) {
105
105
  @if $surface == chrome {
106
106
  @return var(--glass2-bg);
107
107
  }
@@ -132,6 +132,17 @@
132
132
  // so this fill does not vary with the wallpaper there at all (14.85:1), and
133
133
  // light lands at 17.44:1. Measured table:
134
134
  // `.workflow/plans/ux-refresh/notes/S1-review-fixes-surfaces.md`.
135
+
136
+ // Nested (in-window) menus take the SOLID twin pair: light's 58/64% stops
137
+ // lean on the thin blur for separation, and a nested surface has none (the
138
+ // window is a backdrop root), so the translucent pair inside a window read
139
+ // washed over the app's own content — the light half of the hazard the
140
+ // 2026-08-17 review fixed for dark. Alpha-1 in both themes; dark's twins are
141
+ // byte-identical to the base pair, so this changes nothing there.
142
+ @if $nested {
143
+ @return $glow, $sheen, linear-gradient(180deg, var(--mat-menu-solid-a), var(--mat-menu-solid-b));
144
+ }
145
+
135
146
  @return $glow, $sheen, linear-gradient(180deg, var(--mat-menu-a), var(--mat-menu-b));
136
147
  } @else if $surface == agent {
137
148
  // The agent aside's own fill — the panel hue on a slightly wider alpha ramp,
@@ -217,16 +228,18 @@
217
228
  // $nested `true` when this surface sits INSIDE another glass surface. Drops
218
229
  // `backdrop-filter` entirely, because a nested backdrop root samples
219
230
  // its parent instead of the wallpaper and reads as flat mud (hazard 3
220
- // in the header). The near-opaque `chrome` fill then carries the
221
- // surface on its own which is why `$nested` and a translucent
222
- // `$surface` are refused rather than silently rendered see-through.
231
+ // in the header). The fill must then carry the surface on its own:
232
+ // `chrome` is near-opaque already, and `menu` swaps to its solid
233
+ // alpha-1 twins (`--mat-menu-solid-a/-b`) which is why `$nested`
234
+ // with the genuinely translucent `panel`/`agent` fills is refused
235
+ // rather than silently rendered see-through.
223
236
  @mixin popover($shadow: menu, $surface: chrome, $nested: false) {
224
- @if $nested and $surface != chrome {
225
- @error 'nova-glass: popover($nested: true) needs the near-opaque `chrome` fill — a nested surface has no backdrop-filter to separate it from the glass beneath, so a translucent `#{$surface}` fill renders see-through. Drop $surface, or drop $nested and accept the muddy double-blur.';
237
+ @if $nested and $surface != chrome and $surface != menu {
238
+ @error 'nova-glass: popover($nested: true) needs a near-opaque fill — a nested surface has no backdrop-filter to separate it from the glass beneath, so the translucent `#{$surface}` fill renders see-through. Nestable surfaces are `chrome` (the 95% quartet plate) and `menu` (swaps to the solid --mat-menu-solid-a/-b twins). Drop $surface, or drop $nested and accept the muddy double-blur.';
226
239
  }
227
240
 
228
241
  border: 1px solid var(--glass2-border);
229
- background-image: _fill($surface);
242
+ background-image: _fill($surface, $nested);
230
243
 
231
244
  @if $shadow == menu {
232
245
  box-shadow:
@@ -19,11 +19,17 @@
19
19
  // · The design's `--ink` gets NO token at all. It folds into the existing
20
20
  // `--text-color` / `--label-primary` semantics at the 2.0 flip.
21
21
  // · `--accent` is NOT declared here. It is the existing runtime knob
22
- // (`#9333EA`, re-skinnable via `FlyThemeService.applyAccent`) and is
23
- // re-valued only at the DS 2.0 flip. `--accent-hi` IS new vocabulary and
24
- // ships now, pinned to its 2.0 partner so in 1.x it is deliberately
25
- // consumed by nothing. `/design-lab` "Tokens & Ramp" previews the pair
26
- // together by scoping both to the panel.
22
+ // (`#9333EA`, re-skinnable via `FlyThemeService.applyAccent`), and the
23
+ // deferred "re-value at the 2.0 flip" question was RULED 2026-08-17 in the
24
+ // knob's favour: `--accent` KEEPS `#9333EA`, and the canon's own purple
25
+ // family (the `#836ACA`/`#6A3FC0` selection washes below) now DERIVES from
26
+ // it via `color-mix(… var(--accent) …)`, so one purple rules a frame and a
27
+ // tenant re-skin carries the rail selection with it. `--accent-hi` is that
28
+ // accent's hover/pressed partner (a literal — `plate-ink.spec.ts` extracts
29
+ // a hex). `--sys-purple` deliberately does NOT derive: it is a STATUS hue
30
+ // (like `--sys-red`), not the brand, and must not follow a re-skin.
31
+ // `/design-lab` → "Tokens & Ramp" previews the accent pair together by
32
+ // scoping both to the panel.
27
33
 
28
34
  // ── Notation ─────────────────────────────────────────────────────────────────
29
35
  // The ratified table is written in the design files' legacy `rgba(r,g,b,.a)`
@@ -44,18 +50,27 @@ html.light-theme {
44
50
  --chrome-ink-hover: #000;
45
51
  --rail-ink: #353537;
46
52
  --rail-stroke: rgb(0 0 0 / 7%);
47
- --rail-on-bg: rgb(133 88 224 / 16%);
48
- --rail-on-ink: #6A3FC0;
49
- --rail-on-stroke: rgb(133 88 224 / 26%);
50
- --rail-on-shadow: 0 2px 6px rgb(106 63 192 / 12%);
53
+
54
+ // Selection family — accent-DERIVED (the 2026-08-17 two-purples ruling; see
55
+ // the header). The ratified alphas are unchanged; only the hue now follows
56
+ // `var(--accent)`, so a tenant re-skin carries the rail. Mixing toward
57
+ // `transparent` is this file's own tint doctrine: the hue at that alpha.
58
+ // The ink is the accent itself, exactly the canon's shape (its light ink WAS
59
+ // its light accent).
60
+ --rail-on-bg: color-mix(in srgb, var(--accent) 16%, transparent);
61
+ --rail-on-ink: var(--accent);
62
+ --rail-on-stroke: color-mix(in srgb, var(--accent) 26%, transparent);
63
+ --rail-on-shadow: 0 2px 6px color-mix(in srgb, var(--accent) 12%, transparent);
51
64
 
52
65
  // Hover/selection are a TINT, never an inversion (skill §9 rule 11).
53
- --tint-hover: rgb(133 88 224 / 10%);
54
- --tint-sel: rgb(133 88 224 / 15%);
66
+ --tint-hover: color-mix(in srgb, var(--accent) 10%, transparent);
67
+ --tint-sel: color-mix(in srgb, var(--accent) 15%, transparent);
55
68
 
56
- // The 2.0 accent's hover/pressed partner. Its `--accent` sibling stays the
57
- // shipped runtime knob until the flip see the header.
58
- --accent-hi: #5A32A8;
69
+ // The accent's hover/pressed partner `#9333EA` mixed 85% toward black,
70
+ // shipped as a LITERAL because `plate-ink.spec.ts` extracts a hex to run its
71
+ // on-accent ink math against (that table is built to follow re-values).
72
+ // Recompute if `--accent` ever moves: color-mix(in srgb, #9333EA 85%, #000).
73
+ --accent-hi: #7d2bc7;
59
74
 
60
75
  // ── System semantics ───────────────────────────────────────────────────────
61
76
  // `--sys-red-txt` exists because `--sys-red` fails AA as dark-theme text
@@ -220,6 +235,18 @@ html.light-theme {
220
235
  --mat-menu-b-alpha: 0.64;
221
236
  --mat-menu-b: rgb(222 229 238 / calc(var(--mat-menu-b-alpha) * 100%));
222
237
 
238
+ // The menu pair at ALPHA-1 — what `popover($surface: menu, $nested: true)`
239
+ // paints where no backdrop-filter can separate a menu from the glass beneath
240
+ // (inside a window, a backdrop root — `_nova-glass.scss` hazard 3). Dark's
241
+ // base pair is already opaque, so its solid twin is byte-identical; light's
242
+ // restores the opacity in-window menus had before the 2026-08-17 review moved
243
+ // them onto the menu material (58/64% + a nested blur sampled the app's own
244
+ // content and washed out). Deliberately NOT a knob+colour pair: alpha-1 IS the
245
+ // contract, so there is no number to adapt — `nova-tokens.spec.ts` pins
246
+ // hue-parity with the base pair instead of registering it as an 8th material.
247
+ --mat-menu-solid-a: rgb(238 242 247);
248
+ --mat-menu-solid-b: rgb(222 229 238);
249
+
223
250
  // The agent aside — the PANEL hue on its own alpha ramp, top-to-bottom. It was a
224
251
  // hardcoded literal inside `_nova-glass.scss`'s `agent` branch, and that literal
225
252
  // was `rgb(56 54 60)` — byte-identical to the DARK `--mat-panel`, so the aside
@@ -248,18 +275,19 @@ html.light-theme {
248
275
  --check-ink: #fff;
249
276
 
250
277
  // ── Glass quartet (design `--glass-*`, renamed per D1) ─────────────────────
251
- // The light `--glass2-bg` carries the DARK near-opaque fill
252
- // (`rgb(56 54 60 / 95%)`) reproduced verbatim from the canon. In the mock,
253
- // header/rail-anchored popovers therefore render dark glass even in light
254
- // mode, and the carefully-picked light `--mat-menu-*` values go unused.
255
- // Intent-vs-bug is an OPEN question with UX (S0.2 memo; skill §2 and §10).
256
- // Do NOT silently "fix" it here the ruling changes this one value, and the
257
- // port replaces the mock's fragile `nth-child` fill override with an explicit
258
- // surface-context class.
278
+ // RULED (2026-08-17, closing the S0.2 memo's open question): the light
279
+ // `--glass2-bg` carrying the DARK near-opaque fill verbatim was a BUG in the
280
+ // canon export, not intent — UX's dark-mode drift review re-anchored every
281
+ // floating surface on the quartet, which is only possible if the light fill
282
+ // is a light plate. The value below mirrors the dark quartet's shape exactly
283
+ // (glow + sheen + near-opaque fill at 95%) on the light popover hue the
284
+ // `--mat-menu-a` material was picked for. This is the one-value fix the
285
+ // `_nova-glass.scss` surface seam was built to receive: `chrome` inherits it
286
+ // and becomes legible in both themes with no mixin change.
259
287
  --glass2-bg:
260
288
  radial-gradient(70% 60% at 50% 100%, var(--w07), transparent 70%),
261
289
  linear-gradient(180deg, var(--w08), transparent 20%),
262
- linear-gradient(rgb(56 54 60 / 95%), rgb(56 54 60 / 95%));
290
+ linear-gradient(rgb(238 242 247 / 95%), rgb(238 242 247 / 95%));
263
291
  --glass2-border: var(--w18);
264
292
  --glass2-inset: inset 0 0.5px 0 var(--w22);
265
293
  --glass2-blur: blur(16px) saturate(180%) brightness(.95);
@@ -273,13 +301,20 @@ html.dark-theme {
273
301
  --chrome-ink-hover: #fff;
274
302
  --rail-ink: rgb(255 255 255 / 65%);
275
303
  --rail-stroke: rgb(255 255 255 / 12%);
276
- --rail-on-bg: #836aca;
304
+
305
+ // Selection family — accent-derived (the 2026-08-17 two-purples ruling, the
306
+ // light block carries the full story). The filled pill takes the accent
307
+ // itself; its white ink measures 5.4:1 on `#9333EA`. Stroke stays the white
308
+ // ramp — it was never purple here.
309
+ --rail-on-bg: var(--accent);
277
310
  --rail-on-ink: #fff;
278
311
  --rail-on-stroke: rgb(255 255 255 / 28%);
279
- --rail-on-shadow: 0 8px 22px rgb(131 106 202 / 45%);
280
- --tint-hover: rgb(131 106 202 / 26%);
281
- --tint-sel: rgb(131 106 202 / 30%);
282
- --accent-hi: #7259bd;
312
+ --rail-on-shadow: 0 8px 22px color-mix(in srgb, var(--accent) 45%, transparent);
313
+ --tint-hover: color-mix(in srgb, var(--accent) 26%, transparent);
314
+ --tint-sel: color-mix(in srgb, var(--accent) 30%, transparent);
315
+
316
+ // `#9333EA` mixed 87% toward black (a literal — see the light block).
317
+ --accent-hi: #802ccc;
283
318
 
284
319
  // ── System semantics ───────────────────────────────────────────────────────
285
320
  --sys-red: #FF453A;
@@ -374,6 +409,11 @@ html.dark-theme {
374
409
  --mat-menu-b-alpha: 1;
375
410
  --mat-menu-b: rgb(26 25 30 / calc(var(--mat-menu-b-alpha) * 100%));
376
411
 
412
+ // The solid twins of the pair above (the light block carries the full story) —
413
+ // byte-identical to it here, where the menu material is already alpha-1.
414
+ --mat-menu-solid-a: rgb(32 31 37);
415
+ --mat-menu-solid-b: rgb(26 25 30);
416
+
377
417
  // Translucent again (2026-08-16), on S6W's COOL hues — half of that ruling reversed, half
378
418
  // kept, and the split is deliberate. S6W found the aside compositing muddy brown over warm
379
419
  // wallpapers and went alpha-1 on the menu pair's stops. Two facts have changed since:
@@ -9691,6 +9691,93 @@ declare class FlyCurrencySelectorComponent implements ControlValueAccessor {
9691
9691
  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>;
9692
9692
  }
9693
9693
 
9694
+ /** The platform endpoint the catalogue reads. Relative — the host's gateway + auth interceptors apply. */
9695
+ declare const FLY_CURRENCIES_BRIEF_ENDPOINT = "/api/currencies/brief";
9696
+ /**
9697
+ * Accepts either the platform's `ApiResponse<T>` envelope or a bare array.
9698
+ *
9699
+ * A host proxying the same reference rows through its own route may not wrap them, and making
9700
+ * the envelope a hidden requirement of consuming the design system would be a needless coupling.
9701
+ * Written as an explicit guard rather than an inline `Array.isArray` ternary because
9702
+ * `Array.isArray` does not narrow a `readonly T[]` union member — that compiles under the spec
9703
+ * transform and fails the real AOT build.
9704
+ *
9705
+ * Lives here rather than in `fly-currency-selector` because the wire contract is now read by two
9706
+ * surfaces (the picker and this catalogue); one copy means they cannot drift apart on what
9707
+ * `GET /api/currencies/brief` is allowed to return.
9708
+ */
9709
+ declare function flyUnwrapCurrencies(res: unknown): readonly FlyCurrency[];
9710
+ /**
9711
+ * **`FlyCurrencyCatalogService`** — the one ISO-code → {@link FlyCurrency} adapter for the
9712
+ * platform currency catalogue (`GET /api/currencies/brief`).
9713
+ *
9714
+ * {@link flyFormatMoney} needs a `FlyCurrency` row to do its job properly: the row carries the
9715
+ * `symbol` a user expects to read (`$`, `د.إ`) and the `decimalDigits` that keep a dinar from
9716
+ * being mispriced as a dollar. Until now the only way to obtain a row was to mount
9717
+ * `fly-currency-selector` — so every surface that merely *displays* money (a KPI tile, a report
9718
+ * table, a budget column) had to pass a bare ISO code and accept the code as its label. This is
9719
+ * that lookup, once, next to the formatter that needs it.
9720
+ *
9721
+ * The HTTP call rides the **host's** `HttpClient`, so the host's gateway routing, auth
9722
+ * interceptor and correlation headers all apply — the same arrangement `fly-currency-selector`
9723
+ * and `FlyUserDirectoryService` use. The DS never configures a base URL of its own.
9724
+ *
9725
+ * ## `row()` is read-through — hosts do not prime
9726
+ *
9727
+ * {@link row} is a *signal-backed* accessor: on a miss it schedules the one-time catalogue load
9728
+ * and returns `null`, and because the read happens inside Angular's reactive context a
9729
+ * `computed` (or template) calling it recomputes by itself when the rows land. Callers stay
9730
+ * synchronous and need no `prime()` at each render site — the shape
9731
+ * {@link FlyUserDirectoryService} established for the user directory, minus the batching: this
9732
+ * catalogue is a bounded ~170-row reference list, so it is fetched whole in ONE request rather
9733
+ * than resolved code by code.
9734
+ *
9735
+ * ## Degrading is the point, not an edge case
9736
+ *
9737
+ * `null` means "no row available" — not loaded yet, load failed, endpoint unreachable (a
9738
+ * standalone External App), or a code the catalogue simply does not carry. Callers render their
9739
+ * own fallback; {@link flyFormatMoney} accepts the bare code string and labels with it. A
9740
+ * surface therefore shows `USD 620,000` for the moment before the rows arrive and `$ 620,000`
9741
+ * after — never a blank, and never a symbol the platform catalogue did not vouch for.
9742
+ *
9743
+ * The load is attempted **once** per session. A render-driven read must not hammer a broken
9744
+ * endpoint on every change-detection pass, so a failure leaves the catalogue empty for the
9745
+ * session; {@link reload} is the explicit retry hook for a host that surfaces one.
9746
+ *
9747
+ * @example Formatting money you only display
9748
+ * ```ts
9749
+ * private readonly currencies = inject(FlyCurrencyCatalogService);
9750
+ *
9751
+ * protected readonly amount = computed(() =>
9752
+ * flyFormatMoney(this.value(), this.currencies.row('AED') ?? 'AED', { locale: this.i18n.locale() }));
9753
+ * ```
9754
+ */
9755
+ declare class FlyCurrencyCatalogService {
9756
+ private readonly http;
9757
+ /** Upper-cased ISO code → row. Signal-backed so {@link row} is reactive. */
9758
+ private readonly entries;
9759
+ /** Guards the once-per-session rule; see the class doc on why a failure is not retried. */
9760
+ private attempted;
9761
+ private loadScheduled;
9762
+ /** True once the catalogue has landed with at least one row. */
9763
+ readonly loaded: _angular_core.Signal<boolean>;
9764
+ /**
9765
+ * The `FlyCurrency` row for an ISO 4217 code, or `null` when none is available — on a miss the
9766
+ * one-time catalogue load is scheduled.
9767
+ *
9768
+ * An arrow property rather than a method so it can be bound as a value
9769
+ * (`[resolveCurrency]="currencies.row"`) without the host wrapping it in a closure.
9770
+ */
9771
+ readonly row: (code: string | null | undefined) => FlyCurrency | null;
9772
+ /** Drops the cached rows and re-attempts the load — the retry hook behind a host's "couldn't
9773
+ * load currencies" affordance. Explicit callers are not subject to the once-only rule. */
9774
+ reload(): void;
9775
+ private scheduleLoad;
9776
+ private load;
9777
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FlyCurrencyCatalogService, never>;
9778
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<FlyCurrencyCatalogService>;
9779
+ }
9780
+
9694
9781
  /**
9695
9782
  * Locale-aware money formatting — the primitive `fly-currency-selector` never shipped
9696
9783
  * (see D-B7-2 in `FlyOS.PPM/.workflow/design/DECISIONS.md`).
@@ -11323,6 +11410,18 @@ declare class FlyFilterPanelComponent {
11323
11410
  readonly searched: _angular_core.OutputEmitterRef<void>;
11324
11411
  /** Whether the `[filter-more]` advanced fields are revealed. */
11325
11412
  protected readonly showMore: _angular_core.WritableSignal<boolean>;
11413
+ private readonly _host;
11414
+ private readonly _destroyRef;
11415
+ private _clipObserver;
11416
+ private _placeRaf;
11417
+ constructor();
11418
+ private _place;
11419
+ /** Nearest ancestor that clips/scrolls horizontally — the shell window's
11420
+ * content area when hosted, a page scroller when standalone, else null
11421
+ * (viewport fallback). */
11422
+ private _clipAncestor;
11423
+ private _observeClipAncestor;
11424
+ private _teardownPlacement;
11326
11425
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FlyFilterPanelComponent, never>;
11327
11426
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<FlyFilterPanelComponent, "fly-filter-panel", never, { "open": { "alias": "open"; "required": true; "isSignal": true; }; "titleKey": { "alias": "titleKey"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "hasMore": { "alias": "hasMore"; "required": false; "isSignal": true; }; "showSearchButton": { "alias": "showSearchButton"; "required": false; "isSignal": true; }; "anchored": { "alias": "anchored"; "required": false; "isSignal": true; }; }, { "cleared": "cleared"; "closed": "closed"; "searched": "searched"; }, never, ["[filter-status]", "*", "[filter-more]"], true, never>;
11328
11427
  }
@@ -12669,6 +12768,6 @@ declare const AUDIENCE_ERROR_CODES: {
12669
12768
  };
12670
12769
  type AudienceErrorCode = (typeof AUDIENCE_ERROR_CODES)[keyof typeof AUDIENCE_ERROR_CODES];
12671
12770
 
12672
- 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, FlyDeepLinkPrefetchService, 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 };
12771
+ 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_CURRENCIES_BRIEF_ENDPOINT, 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, FlyCurrencyCatalogService, FlyCurrencySelectorComponent, FlyDataTableComponent, FlyDatePipe, FlyDateTimePipe, FlyDebouncer, FlyDecimalNumberPipe, FlyDeepLinkPrefetchService, 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, flyUnwrapCurrencies, 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 };
12673
12772
  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, FlyDeepLinkPrefetchRoute, 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 };
12674
12773
  //# sourceMappingURL=flyos-design-system.d.ts.map