@flyos/design-system 3.10.0 → 3.12.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.
@@ -1578,6 +1578,59 @@ declare class FlyStandaloneAuthCallbackComponent implements OnInit {
1578
1578
  */
1579
1579
  declare function provideFlyStandaloneAuth(config: FlyStandaloneAuthConfig): EnvironmentProviders;
1580
1580
 
1581
+ /** What {@link provideFlyOfflineAuth} needs to stand in for a real sign-in. */
1582
+ interface FlyOfflineAuthConfig {
1583
+ /**
1584
+ * The SAME {@link FlyStandaloneAuthConfig} the app's online build provides. Not optional — see
1585
+ * the provider's remarks for why omitting it fails at runtime rather than degrading.
1586
+ */
1587
+ readonly auth: FlyStandaloneAuthConfig;
1588
+ /** The representative tenant user the offline build signs in as. */
1589
+ readonly user: User;
1590
+ /**
1591
+ * Bearer the offline build presents. For a pure no-backend build any string does; for a
1592
+ * mock-auth build hitting a REAL backend it must match that backend's dev bearer exactly — the
1593
+ * two are a matched pair, and the backend handler is gated on the presence of this value.
1594
+ */
1595
+ readonly accessToken: string;
1596
+ /**
1597
+ * How long the session claims to be valid. Default 24h. Offline sessions never actually expire;
1598
+ * this only has to be far enough out that no expiry check trips mid-review.
1599
+ */
1600
+ readonly sessionTtlMs?: number;
1601
+ }
1602
+ /**
1603
+ * Auth wiring for a UI-developer build: sign in as a representative tenant user so the app runs
1604
+ * with **no STS**, and present a fixed bearer to whatever backend (real or mocked) it talks to.
1605
+ *
1606
+ * <p>The offline counterpart of `provideFlyStandaloneAuth`, and it deliberately provides the SAME
1607
+ * {@link FLY_STANDALONE_AUTH_CONFIG}. Two reasons, both learned the hard way:</p>
1608
+ * <ul>
1609
+ * <li>`flyStandaloneAuthInterceptor` injects that token unconditionally. Omitting it here does
1610
+ * not degrade gracefully — every HTTP call in the offline build throws a DI error at runtime,
1611
+ * which no typecheck or unit test catches.</li>
1612
+ * <li>The interceptor's path rules then hold identically in all build modes instead of being
1613
+ * re-stated per mode.</li>
1614
+ * </ul>
1615
+ *
1616
+ * <p>Seeding the shared {@link AuthService} store is the whole implementation, because that store
1617
+ * is the single source of truth for identity: `FlyStandaloneAuthService.isAuthenticated()` delegates
1618
+ * to it, so `flyStandaloneAuthGuard` passes and never reaches `startLogin()`, and the interceptor
1619
+ * reads the same token. No PKCE code path is entered offline.</p>
1620
+ *
1621
+ * <p><b>`STEP_UP_REAUTH_HANDLER` is intentionally NOT provided.</b> A step-up challenge cannot
1622
+ * arise offline, and a handler that redirected to a real STS would be actively wrong in a build
1623
+ * that has none.</p>
1624
+ *
1625
+ * @example
1626
+ * providers: [
1627
+ * offlineDataEnabled
1628
+ * ? provideFlyOfflineAuth({ auth: PPM_AUTH_CONFIG, user: OFFLINE_USER, accessToken: DEV_BEARER })
1629
+ * : provideFlyStandaloneAuth(PPM_AUTH_CONFIG),
1630
+ * ]
1631
+ */
1632
+ declare function provideFlyOfflineAuth(config: FlyOfflineAuthConfig): EnvironmentProviders;
1633
+
1581
1634
  /** Payload of the platform `AuthRefresh` push — the reason is advisory (logging only). */
1582
1635
  interface FlyAuthRefreshPayload {
1583
1636
  reason?: string;
@@ -1940,6 +1993,41 @@ interface FlyRemoteRouteCommon {
1940
1993
  readonly path: string;
1941
1994
  /** Opaque bag the consumer can read from `router.matchedRoute()?.route.data`. */
1942
1995
  readonly data?: Readonly<Record<string, unknown>>;
1996
+ /**
1997
+ * Child routes rendered into a **nested** `<fly-remote-router-outlet>` inside
1998
+ * this route's own component — the layout-route shape, mirroring Angular's
1999
+ * `Route.children`.
2000
+ *
2001
+ * This row's `path` becomes a PREFIX rather than the whole URL: it consumes its
2002
+ * own segments, and the remainder is matched against `children`. The component
2003
+ * on this row is the layout, and it stays MOUNTED while the child changes —
2004
+ * which is the entire point. Shared chrome (an entity header, a tab strip, a
2005
+ * pinned toolbar) renders once and survives navigation between siblings, so it
2006
+ * neither re-fetches nor re-animates when the user switches tabs.
2007
+ *
2008
+ * ```ts
2009
+ * {
2010
+ * path: 'projects/:id',
2011
+ * loadComponent: () => import('./workspace').then(m => m.WorkspaceLayoutComponent),
2012
+ * children: [
2013
+ * { path: '', loadComponent: () => import('./overview').then(m => m.OverviewComponent) },
2014
+ * { path: 'plan', loadComponent: () => import('./plan').then(m => m.PlanComponent) },
2015
+ * { path: 'gates', loadComponent: () => import('./gates').then(m => m.GatesComponent) },
2016
+ * ],
2017
+ * }
2018
+ * ```
2019
+ *
2020
+ * Params captured by an ancestor are merged into every descendant's params, so
2021
+ * a child reads `router.params()['id']` without redeclaring `:id`.
2022
+ *
2023
+ * A parent whose children ALL miss is not itself a match — matching falls
2024
+ * through to the next sibling row. Rendering a layout around an empty outlet
2025
+ * would turn a routing miss into a half-drawn page, and first-match-wins stays
2026
+ * the table's one rule.
2027
+ *
2028
+ * Available since design-system **3.12.0**.
2029
+ */
2030
+ readonly children?: readonly FlyRemoteRoute[];
1943
2031
  }
1944
2032
  /** A route whose component class is already in the bundle. */
1945
2033
  interface FlyRemoteEagerRoute extends FlyRemoteRouteCommon {
@@ -1954,7 +2042,8 @@ interface FlyRemoteLazyRoute extends FlyRemoteRouteCommon {
1954
2042
  /**
1955
2043
  * One row in a remote's route table. Mirrors Angular's `Route` interface but
1956
2044
  * pared down to what the FlyOS-embedded router actually supports — no
1957
- * `loadChildren`, no resolvers, no guards.
2045
+ * `loadChildren`, no resolvers, no guards. `children` IS supported (3.12.0) —
2046
+ * see `FlyRemoteRouteCommon.children` for the layout-route shape.
1958
2047
  *
1959
2048
  * Patterns:
1960
2049
  * '' — matches an empty URL ("/")
@@ -1981,11 +2070,21 @@ type FlyRemoteRoute = FlyRemoteEagerRoute | FlyRemoteLazyRoute;
1981
2070
  /**
1982
2071
  * Result of matching the current `segments` against a remote's route table.
1983
2072
  * `params` contains captured `:foo` segments — empty object for paths with no
1984
- * captures.
2073
+ * captures — MERGED with everything its ancestors captured, so a child never
2074
+ * has to redeclare a `:id` its layout already owns.
2075
+ *
2076
+ * `child` is the next link in a nested match, `null` at the leaf. A flat table
2077
+ * (no `children` anywhere) always produces `child: null`, which is why every
2078
+ * pre-3.12.0 consumer of `matchedRoute()` keeps behaving identically.
2079
+ *
2080
+ * OPTIONAL on purpose. The router always populates it, but declaring it required
2081
+ * would break every consumer that hand-builds a `FlyRemoteMatch` — test doubles,
2082
+ * mostly — turning an additive feature into a MAJOR for no gain.
1985
2083
  */
1986
2084
  interface FlyRemoteMatch {
1987
2085
  readonly route: FlyRemoteRoute;
1988
2086
  readonly params: Readonly<Record<string, string>>;
2087
+ readonly child?: FlyRemoteMatch | null;
1989
2088
  }
1990
2089
  /**
1991
2090
  * Optional injection token a remote provides at its root to declare which routes
@@ -2050,6 +2149,51 @@ declare const FLY_REMOTE_BASE_PATH: InjectionToken<string>;
2050
2149
  * `FlyRemoteRouter.matchedRoute()`.
2051
2150
  */
2052
2151
  declare function matchFlyRoutePattern(pattern: string, segments: readonly string[]): Record<string, string> | null;
2152
+ /**
2153
+ * Match a pattern against the FRONT of `segments`, returning what it captured
2154
+ * plus the segments it did not consume. `null` when the pattern cannot match.
2155
+ *
2156
+ * This is the prefix half of {@link matchFlyRoutePattern}, which is now simply
2157
+ * "prefix-match, and insist nothing is left over". A parent route stops at the
2158
+ * prefix and hands `rest` to its `children`.
2159
+ *
2160
+ * Exported for unit testing — consumers should rely on
2161
+ * `FlyRemoteRouter.matchedRoute()`.
2162
+ */
2163
+ declare function matchFlyRoutePrefix(pattern: string, segments: readonly string[]): {
2164
+ params: Record<string, string>;
2165
+ rest: readonly string[];
2166
+ } | null;
2167
+ /**
2168
+ * Resolve `segments` against a route table, descending into `children`.
2169
+ *
2170
+ * First-match-wins in declaration order, at every level. A row WITHOUT children
2171
+ * must consume the URL exactly — the flat-table rule, unchanged. A row WITH
2172
+ * children consumes its own prefix and must then find a matching descendant;
2173
+ * if none matches, the row is skipped and its later siblings still get a turn,
2174
+ * so a routing miss never renders a layout wrapped around an empty outlet.
2175
+ *
2176
+ * `inherited` carries ancestor params down, which is what lets a child read a
2177
+ * `:id` captured by its layout.
2178
+ *
2179
+ * Exported for unit testing — consumers should rely on
2180
+ * `FlyRemoteRouter.matchedRoute()`.
2181
+ */
2182
+ declare function matchFlyRouteTable(routes: readonly FlyRemoteRoute[], segments: readonly string[], inherited?: Readonly<Record<string, string>>): FlyRemoteMatch | null;
2183
+ /** Walk a match chain to its leaf — the row that actually consumed the URL. */
2184
+ declare function deepestFlyMatch(match: FlyRemoteMatch): FlyRemoteMatch;
2185
+ /**
2186
+ * Nesting depth of a `<fly-remote-router-outlet>`, so an outlet knows which link
2187
+ * of the match chain it is responsible for. Each outlet provides its own depth
2188
+ * for its subtree, so the outlet a layout renders resolves to depth + 1 with no
2189
+ * wiring on the consumer's part — the same way Angular's own `RouterOutlet`
2190
+ * derives its level from the injector rather than an input.
2191
+ *
2192
+ * Consumers never provide this themselves.
2193
+ *
2194
+ * Available since design-system **3.12.0**.
2195
+ */
2196
+ declare const FLY_REMOTE_OUTLET_DEPTH: InjectionToken<number>;
2053
2197
 
2054
2198
  /**
2055
2199
  * FlyOS standard navigation surface for Business / Supporting App remotes.
@@ -2170,6 +2314,10 @@ declare class FlyRemoteRouter {
2170
2314
  *
2171
2315
  * Match order: routes are tried in declaration order. Put more specific
2172
2316
  * patterns (e.g. `'signals/:id'`) before catch-alls.
2317
+ *
2318
+ * On a table using `children` this is the ROOT of the match chain — follow
2319
+ * `.child` for the nested links, which is what the nested outlets do. A flat
2320
+ * table always yields `child: null`, so this reads exactly as it always did.
2173
2321
  */
2174
2322
  readonly matchedRoute: _angular_core.Signal<FlyRemoteMatch | null>;
2175
2323
  /**
@@ -3111,6 +3259,27 @@ declare class FlyDeepLinkPrefetchService {
3111
3259
  * - No query-param / hash handling — only path segments.
3112
3260
  * - No `RouterLink` directive — use `(click)="router.navigate(...)"`.
3113
3261
  *
3262
+ * ## Layout routes (3.12.0)
3263
+ *
3264
+ * A route with `children` renders its own component as a LAYOUT and resolves the
3265
+ * rest of the URL into a nested outlet placed in that layout's template:
3266
+ *
3267
+ * ```html
3268
+ * <!-- workspace-layout.component.html -->
3269
+ * <fly-entity-header [entity]="project()" />
3270
+ * <fly-tab-strip [projectId]="id()" />
3271
+ * <fly-remote-router-outlet /> <!-- the tab body, and only the tab body -->
3272
+ * ```
3273
+ *
3274
+ * The layout instance survives navigation between its children, because only the
3275
+ * nested outlet's component changes. That is what stops shared chrome from
3276
+ * re-fetching, re-animating and flashing empty on every tab switch — the failure
3277
+ * this feature exists to remove.
3278
+ *
3279
+ * Nesting is derived from the injector, not declared: each outlet publishes its
3280
+ * own depth to its subtree, so a nested outlet needs no input and no consumer
3281
+ * wiring. Depth beyond the end of the match chain renders nothing.
3282
+ *
3114
3283
  * Components rendered by this outlet read route params via `FlyRemoteRouter.params`:
3115
3284
  * ```ts
3116
3285
  * private readonly router = inject(FlyRemoteRouter);
@@ -3145,11 +3314,17 @@ declare class FlyDeepLinkPrefetchService {
3145
3314
  declare class FlyRemoteRouterOutletComponent {
3146
3315
  private readonly router;
3147
3316
  private readonly errorHandler;
3317
+ /** This outlet's link in the match chain — 0 at the root, +1 per nesting. */
3318
+ private readonly depth;
3148
3319
  /**
3149
- * Read directly from FlyRemoteRouter so the outlet re-renders whenever the
3150
- * URL changes (signal-based, OnPush-friendly).
3320
+ * The match this outlet is responsible for: `matchedRoute()` walked down
3321
+ * `depth` links. Read directly from FlyRemoteRouter so the outlet re-renders
3322
+ * whenever the URL changes (signal-based, OnPush-friendly).
3323
+ *
3324
+ * `null` past the end of the chain — a nested outlet in a layout whose match
3325
+ * has no child renders nothing rather than repeating its parent.
3151
3326
  */
3152
- readonly matched: _angular_core.Signal<_flyos_design_system.FlyRemoteMatch | null>;
3327
+ readonly matched: _angular_core.Signal<FlyRemoteMatch | null>;
3153
3328
  /** Loaders that have resolved — consulted synchronously, so a revisit never flashes. */
3154
3329
  private readonly loaded;
3155
3330
  /** Loaders currently in flight, so a param change mid-load doesn't start a second fetch. */
@@ -12081,6 +12256,197 @@ declare class FlyMetaListComponent {
12081
12256
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<FlyMetaListComponent, "fly-meta", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; }, {}, never, ["*"], true, never>;
12082
12257
  }
12083
12258
 
12259
+ /**
12260
+ * Generic Overview-section content surface — the `--w03`/`--w06` tinted
12261
+ * plate a non-card section body (Description text, a chips tray, a members
12262
+ * tray, an activity tray) sits on inside a {@link FlyOverviewSectionComponent}.
12263
+ * Deliberately presentation-only: no shadow, gradient, hover, or cursor —
12264
+ * this is quiet inner paper, not a clickable surface.
12265
+ *
12266
+ * Content is left to projection so each Overview variant keeps its own real
12267
+ * markup (and, for Members/Chips/Activity, its own live Angular bindings and
12268
+ * interactions) — this component only paints the box.
12269
+ *
12270
+ * `[proseText]` additionally applies the Description-section body-copy
12271
+ * typography directly on the host, for the common case of one bound string
12272
+ * with nothing else inside. Leave it off for any other content (chips,
12273
+ * member rows, a nested `fly-overview-rows`) — those bring their own type.
12274
+ *
12275
+ * ```html
12276
+ * <fly-overview-surface [proseText]="true">{{ project().description }}</fly-overview-surface>
12277
+ *
12278
+ * <fly-overview-surface>
12279
+ * @for (m of project().members; track m.id) { <fly-chip>{{ m.name }}</fly-chip> }
12280
+ * </fly-overview-surface>
12281
+ * ```
12282
+ */
12283
+ declare class FlyOverviewSurfaceComponent {
12284
+ /** Apply the Description-section body-copy typography on the host. */
12285
+ readonly proseText: _angular_core.InputSignal<boolean>;
12286
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FlyOverviewSurfaceComponent, never>;
12287
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FlyOverviewSurfaceComponent, "fly-overview-surface", never, { "proseText": { "alias": "proseText"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
12288
+ }
12289
+
12290
+ /**
12291
+ * Icon tone for one {@link OverviewKpiItem}. Mapped in CSS to the nearest
12292
+ * existing `--sys-*` semantic hue rather than a bespoke literal per position
12293
+ * — `blue`/`orange`/`red`/`teal` land on `--sys-blue`/`--sys-orange`/
12294
+ * `--sys-red`/`--sys-teal`, whose DARK-theme values already equal the
12295
+ * reference design's positional literals exactly (see `_nova-tokens.scss`'s
12296
+ * dark block for the four matching values). `purple` is the one
12297
+ * approximation: the reference design's Apple-system-indigo literal has no
12298
+ * matching platform token, so it resolves to `--sys-purple` instead — the
12299
+ * closest existing hue — rather than minting a new indigo token, per the
12300
+ * "reuse existing tokens, no arbitrary colors" rule this component ships
12301
+ * under.
12302
+ */
12303
+ type OverviewKpiTone = 'blue' | 'purple' | 'orange' | 'red' | 'teal';
12304
+ /** One KPI card of a {@link FlyOverviewKpiRowComponent}. */
12305
+ interface OverviewKpiItem {
12306
+ /** PrimeIcons class, e.g. `'pi-chart-line'` (no leading `pi `). */
12307
+ icon: string;
12308
+ /** Already-formatted value text, rendered verbatim. */
12309
+ value: string;
12310
+ /** i18n key for the label under the value. */
12311
+ labelKey: string;
12312
+ tone: OverviewKpiTone;
12313
+ }
12314
+
12315
+ /**
12316
+ * Overview "Summary" KPI row — a wrapping row of flat stat cards, each with
12317
+ * the value/label stack at inline-start and the icon on a solid tone tile at
12318
+ * inline-end (the KPI-tile treatment, 2026-08-20 fidelity pass).
12319
+ * `order: 1`/`order: 2` (not `flex-direction: row-reverse`) drive that split
12320
+ * so the layout auto-mirrors under `dir="rtl"`: inline-start/-end follow
12321
+ * direction, a fixed left/right would not.
12322
+ *
12323
+ * Default layout is a wrapping flex row (any item count degrades gracefully);
12324
+ * a design that pins an exact no-reflow column count (the Project-Details
12325
+ * Overview pins five) passes `columns` instead.
12326
+ *
12327
+ * ```html
12328
+ * <fly-overview-kpi-row [columns]="5" [items]="[
12329
+ * { icon: 'pi-chart-line', value: '64%', labelKey: 'ppm.projects.overview.progress', tone: 'blue' },
12330
+ * { icon: 'pi-flag', value: '3/8', labelKey: 'ppm.projects.overview.milestones', tone: 'purple' },
12331
+ * ]" />
12332
+ * ```
12333
+ */
12334
+ declare class FlyOverviewKpiRowComponent {
12335
+ readonly items: _angular_core.InputSignal<readonly OverviewKpiItem[]>;
12336
+ /** Exact equal-width column count (no reflow). Omit for the default wrapping flex row. */
12337
+ readonly columns: _angular_core.InputSignal<number | undefined>;
12338
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FlyOverviewKpiRowComponent, never>;
12339
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FlyOverviewKpiRowComponent, "fly-overview-kpi-row", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
12340
+ }
12341
+
12342
+ /** One label/value row of a {@link FlyOverviewRowsComponent}. */
12343
+ interface OverviewRow {
12344
+ /** i18n key for the row label. */
12345
+ labelKey: string;
12346
+ /** Already-formatted value text, rendered verbatim. */
12347
+ value: string;
12348
+ }
12349
+ /**
12350
+ * Overview "Details" body — a self-contained `--w03`/`--w06` surface holding
12351
+ * label/value rows. Distinct from {@link FlyMetaListComponent} (`fly-meta`):
12352
+ * that component is the compact sidecard metalist (96px label column,
12353
+ * uppercase eyebrow labels, no surrounding surface — it expects to sit
12354
+ * inside a `fly-detail-card`), while this one is the wider Overview-page
12355
+ * "Details" block (132px label column, sentence-case labels, and the surface
12356
+ * built in) — the two visual specs don't share numbers, so this stays its
12357
+ * own component rather than a variant of the sidecard one.
12358
+ *
12359
+ * Simple rows come from `rows`; a richer value (a link, a chip, a user
12360
+ * label) projects through the default slot — reuse the `ovr__row` /
12361
+ * `ovr__label` / `ovr__value` classes on the projected markup to pick up the
12362
+ * same layout.
12363
+ *
12364
+ * ```html
12365
+ * <fly-overview-rows [rows]="[
12366
+ * { labelKey: 'ppm.projects.overview.owner', value: project().ownerName },
12367
+ * { labelKey: 'ppm.projects.overview.dueDate', value: project().dueDateLabel },
12368
+ * ]">
12369
+ * <div class="ovr__row">
12370
+ * <span class="ovr__label">{{ 'ppm.projects.overview.strategy' | translate }}</span>
12371
+ * <a class="ovr__value" [routerLink]="['/strategies', project().strategyId]">{{ project().strategyName }}</a>
12372
+ * </div>
12373
+ * </fly-overview-rows>
12374
+ * ```
12375
+ */
12376
+ declare class FlyOverviewRowsComponent {
12377
+ readonly rows: _angular_core.InputSignal<readonly OverviewRow[]>;
12378
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FlyOverviewRowsComponent, never>;
12379
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FlyOverviewRowsComponent, "fly-overview-rows", never, { "rows": { "alias": "rows"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
12380
+ }
12381
+
12382
+ /**
12383
+ * One phase/gate of a {@link FlyLifecyclePipelineComponent}. Reuses
12384
+ * `fly-chip`'s `tone` vocabulary directly (rather than a bespoke enum) so the
12385
+ * step's index badge and its trailing chip always share one color — the
12386
+ * caller resolves domain status (approved/in-progress/not-started, …) into a
12387
+ * single `tone`, same discipline as `OverviewKpiItem`/`OverviewRow`.
12388
+ */
12389
+ interface LifecycleStep {
12390
+ /** i18n key for the step name. Provide this OR `label` — real lifecycles mix both
12391
+ * (a phase-gate's name is server data, a fallback step name is a locale key). */
12392
+ labelKey?: string;
12393
+ /** Verbatim step name, rendered untranslated (e.g. a gate's stored name). Wins over
12394
+ * `labelKey` when both are set. */
12395
+ label?: string;
12396
+ /** i18n key for the trailing status chip text. */
12397
+ statusLabelKey: string;
12398
+ tone: ChipTone;
12399
+ /** Already-formatted "n / n" progress (e.g. deliverables done within the gate). Renders only when present. */
12400
+ progress?: string;
12401
+ /** Marks the active step — emphasis ring + `aria-current="step"`. */
12402
+ current?: boolean;
12403
+ }
12404
+ /** One tally of a {@link FlyLifecyclePipelineComponent}'s rollup strip. */
12405
+ interface LifecycleRollupItem {
12406
+ /** i18n key for the tally label. */
12407
+ labelKey: string;
12408
+ /** Already-formatted count, rendered verbatim. */
12409
+ value: number | string;
12410
+ }
12411
+
12412
+ /**
12413
+ * Project-lifecycle phase-gate stepper — the Overview-section kit's fourth
12414
+ * body variant. Summary/Description/Details are `fly-overview-kpi-row` /
12415
+ * `-surface` / `-rows`; this is the "Lifecycle" section's own body, per
12416
+ * `fly-overview-section`'s own doc comment ("Lifecycle's 'Move to' actions").
12417
+ * A caller resolves the gate vocabulary (approved/in-progress/not-started, …)
12418
+ * into an already-formatted `tone` per step — this component stays
12419
+ * domain-agnostic, same discipline as `OverviewKpiItem`/`OverviewRow`. Step
12420
+ * names accept either an i18n `labelKey` or a verbatim `label`, because real
12421
+ * lifecycles carry server-provided gate names that are data, not locale keys.
12422
+ *
12423
+ * The index badge and the trailing `fly-chip` always share one color, driven
12424
+ * by the SAME `tone` field, so the two never drift out of sync. A
12425
+ * `success`-toned step swaps its numeral for a check mark. The optional
12426
+ * rollup strip is a flat tally legend, not another `fly-overview-rows` (that
12427
+ * component's 132px label column is built for a vertical "Details" block,
12428
+ * not an inline summary strip).
12429
+ *
12430
+ * ```html
12431
+ * <fly-lifecycle-pipeline ariaLabelKey="ppm.projects.lifecycle.stagesLabel" [steps]="[
12432
+ * { labelKey: 'ppm.projects.lifecycle.phase1Gate', statusLabelKey: 'common.status.approved', tone: 'success', progress: '1 / 1' },
12433
+ * { labelKey: 'ppm.projects.lifecycle.phase2Gate', statusLabelKey: 'ppm.projects.lifecycle.status.inProgress', tone: 'accent', current: true },
12434
+ * { labelKey: 'ppm.projects.lifecycle.closureGate', statusLabelKey: 'ppm.projects.lifecycle.status.notStarted', tone: 'neutral' },
12435
+ * ]" [rollup]="[
12436
+ * { labelKey: 'ppm.projects.lifecycle.rollup.planned', value: 2 },
12437
+ * { labelKey: 'ppm.projects.lifecycle.rollup.inProgress', value: 2 },
12438
+ * ]" />
12439
+ * ```
12440
+ */
12441
+ declare class FlyLifecyclePipelineComponent {
12442
+ readonly steps: _angular_core.InputSignal<readonly LifecycleStep[]>;
12443
+ readonly rollup: _angular_core.InputSignal<readonly LifecycleRollupItem[]>;
12444
+ /** i18n key for the `role="list"` accessible name. */
12445
+ readonly ariaLabelKey: _angular_core.InputSignal<string>;
12446
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FlyLifecyclePipelineComponent, never>;
12447
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FlyLifecyclePipelineComponent, "fly-lifecycle-pipeline", never, { "steps": { "alias": "steps"; "required": true; "isSignal": true; }; "rollup": { "alias": "rollup"; "required": false; "isSignal": true; }; "ariaLabelKey": { "alias": "ariaLabelKey"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
12448
+ }
12449
+
12084
12450
  /**
12085
12451
  * Previous / «page / total» / next pager (markup and styles extracted from the
12086
12452
  * reference listing pagination), with optional first/last edge buttons behind
@@ -12714,6 +13080,45 @@ declare class FlySectionHeaderComponent {
12714
13080
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<FlySectionHeaderComponent, "fly-section-header", never, { "titleKey": { "alias": "titleKey"; "required": false; "isSignal": true; }; }, {}, never, ["[section-title]", "[section-actions]"], true, never>;
12715
13081
  }
12716
13082
 
13083
+ /**
13084
+ * Shared shell for a Project-Details-style "Overview" page: a flat stack of
13085
+ * sections separated by hairlines — deliberately NOT a stack of cards. Every
13086
+ * section gets the same quiet eyebrow label; the body (stats / text / rows /
13087
+ * chips / members / …) is left to content projection, so a section that
13088
+ * carries real interaction (Members' add/remove, Lifecycle's "Move to"
13089
+ * actions) keeps its own live markup untouched. This component owns only the
13090
+ * shell + eyebrow + divider rhythm, never the variant bodies.
13091
+ *
13092
+ * First/last spacing resolves from DOM position (`:first-of-type` /
13093
+ * `:last-of-type` on the host tag), not an input — sections render from a
13094
+ * list, and a caller reordering or filtering that list should never also
13095
+ * have to recompute an explicit "am I first" flag.
13096
+ *
13097
+ * ```html
13098
+ * <fly-overview-section titleKey="ppm.projects.overview.summary">
13099
+ * <fly-overview-kpi-row [items]="kpis()" />
13100
+ * </fly-overview-section>
13101
+ *
13102
+ * <fly-overview-section titleKey="ppm.projects.overview.description">
13103
+ * <fly-overview-surface [proseText]="true">{{ project().description }}</fly-overview-surface>
13104
+ * </fly-overview-section>
13105
+ *
13106
+ * <!-- Sections with their own live interaction just project their existing
13107
+ * markup — the shell never dictates what a Members/Lifecycle body renders. -->
13108
+ * <fly-overview-section titleKey="ppm.projects.overview.members">
13109
+ * <fly-overview-surface>
13110
+ * <app-project-members-list [members]="members()" (removed)="onRemove($event)" />
13111
+ * </fly-overview-surface>
13112
+ * </fly-overview-section>
13113
+ * ```
13114
+ */
13115
+ declare class FlyOverviewSectionComponent {
13116
+ /** i18n key for the eyebrow label; alternatively project `[section-title]`. */
13117
+ readonly titleKey: _angular_core.InputSignal<string | undefined>;
13118
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FlyOverviewSectionComponent, never>;
13119
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FlyOverviewSectionComponent, "fly-overview-section", never, { "titleKey": { "alias": "titleKey"; "required": false; "isSignal": true; }; }, {}, never, ["[section-title]", "*"], true, never>;
13120
+ }
13121
+
12717
13122
  /**
12718
13123
  * Detail-page content card — the surface every panel and sidebar block on a detail
12719
13124
  * screen sits on: `card-surface` fill/hairline/radius/shadow, an optional
@@ -13079,6 +13484,15 @@ declare function firstModuleIndex(modules: readonly FlyAppModule[]): number;
13079
13484
  * Icons reuse `flyModuleIcon` — the SAME directive the topbar takes — so an app that
13080
13485
  * renders both declares its icon templates once per surface, in the same syntax.
13081
13486
  *
13487
+ * ## App colour (3.12.0)
13488
+ *
13489
+ * The launch-card family (feature tile, hover wash, hover ring) follows the app's
13490
+ * authored brand colour, received by CSS CASCADE rather than input: the shell window
13491
+ * publishes the app's derived palette (`--app-color`, `--app-color-deep`, `--app-ink`)
13492
+ * on `.window`, so a federated landing is branded with zero wiring; a standalone host
13493
+ * brands itself by setting the same custom properties on any ancestor element. Where
13494
+ * nothing cascades, the fixed `--module-teal` family renders exactly as before.
13495
+ *
13082
13496
  * a11y: cards are real `<button>`s in a labelled group; a collapsible section is a
13083
13497
  * disclosure (`aria-expanded` + `aria-controls`), and the region carries the section
13084
13498
  * heading. Layout is logical-property only, so it mirrors under `dir="rtl"` on its own —
@@ -13900,6 +14314,6 @@ declare const AUDIENCE_ERROR_CODES: {
13900
14314
  };
13901
14315
  type AudienceErrorCode = (typeof AUDIENCE_ERROR_CODES)[keyof typeof AUDIENCE_ERROR_CODES];
13902
14316
 
13903
- 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_CURRENCY_DEFAULT_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_STRATEGY_OBJECTIVES_LOOKUP_ENDPOINT, FLY_THEME_MODE_IDS, FLY_VIEWPORT_IS_MOBILE, FLY_WINDOW_BREADCRUMBS_EVENT, FLY_WINDOW_BREADCRUMBS_STORE_KEY, FLY_WINDOW_HELP_HINT_EVENT, FLY_WINDOW_PAGE_TITLE_EVENT, FlyAchievementProgressComponent, FlyActionMenuComponent, FlyActionStackComponent, FlyAgentDraggableDirective, FlyAnimatedEmojiComponent, FlyAppHomeComponent, FlyAppTopbarComponent, FlyAppUnavailableComponent, 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, FlyPagerComponent, FlyPaginationComponent, FlyPeoplePickerComponent, FlyPointsTierComponent, FlyProgressComponent, FlyRelativeTimePipe, FlyRemoteContextService, FlyRemoteRouter, FlyRemoteRouterOutletComponent, FlySearchInputComponent, FlySectionHeaderComponent, FlySecureSrcDirective, FlySegmentedComponent, FlySelectComponent, FlySkeletonComponent, FlySliderComponent, FlySparklineComponent, FlySpinnerComponent, FlyStandaloneAuthCallbackComponent, FlyStandaloneAuthService, FlyStandaloneMagicActionsComponent, FlyStateMessageComponent, FlyStrategySelectorComponent, FlyDynamicFormComponent as FlySurveyFormComponent, FlyTabComponent, FlyTabsComponent, FlyTagsInputComponent, FlyThemeService, FlyTimePipe, FlyToastService, FlyToggleComponent, FlyTooltipDirective, FlyTreeNavComponent, FlyTypeaheadComponent, FlyUserDirectoryService, FlyWindowHelpService, FlyWindowTitleService, FlyosPendingLaunchesGlobalKey, FlyosShellHandlesLaunchRequestsGlobalKey, FlyosShellOwnsHistoryGlobalKey, GANTT_DEPENDENCY_TYPES, GANTT_ROW_TINT_ALPHA, 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, WindowBreadcrumbsRegistry, WindowManagerService, applySkinTone, applySuggestion, ariaSort, buildCron, canConfirm, canGoNext$1 as canGoNext, canGoPrev$1 as canGoPrev, captureFocus, clampMagicBarSearchWidth, clampPage$1 as 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, flyUnwrapCurrency, flyUnwrapLenient, flyUnwrapObjectiveLookup, hasAnyRoleIn, healNativeFederationCacheOnce, initialExpanded, isAccentColor, isChunkLoadError, isFlyAuthStorePopulated, isNativeFederationCacheError, isRtlLocale, isRtlLocaleEntry, isValidCron, isValidSingleField, loadRemoteStyles, magicBarOwnerKey, magicBarSearchText, matchFlyRoutePattern, nextEnabledIndex, nextModuleIndex, nextSegmentIndex, nextSort, normalizeFlyTheme, normalizeRoles, novaPriorityToneVar, novaStatusToneVar, overlayStack, canGoNext as pagerCanGoNext, canGoPrev as pagerCanGoPrev, clampPage as pagerClampPage, 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 };
13904
- 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, FlyAppUnavailableState, 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, FlyStrategyObjectiveRef, FlyStrategyObjectiveSearchFn, FlyFileSelection as FlySurveyFileSelection, FlyFormAnswer as FlySurveyFormAnswer, FlyFormAnswerValue as FlySurveyFormAnswerValue, FlyFormDefinition as FlySurveyFormDefinition, FlyFormFieldOptions as FlySurveyFormFieldOptions, FlyFormOption as FlySurveyFormOption, FlyFormQuestion as FlySurveyFormQuestion, FlyFormQuestionType as FlySurveyQuestionType, FlyTenantDefaultCurrencyFetchFn, FlyThemeMode, FlyTooltipPlacement, FlyTreeNavNode, FlyTypeaheadOption, FlyWindowHelpHintEventDetail, FlyWindowHelpPublisher, FlyWindowPageTitleEventDetail, FlyWindowTitlePublisher, FlyosPendingLaunches, FocusRestore, FormBannerKind, GanttDependency, GanttDependencyCreate, GanttDependencyDelete, GanttDependencyType, 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, SegmentedVariant, ShareOrgChartOption, ShareOuNode, SharePanelLevelOption, SharePermissionEntry, SharePrincipal, SharePrincipalKind, ShareUserResult, StateMessageKind, StepUpChallenge, StepUpReauthHandler, StepUpReauthRequest, TabsVariant, ToastAction, ToastEntry, ToastOptions, ToastVariant, User, UserPrincipal, UsersTerm, WindowBreadcrumb, WindowHelpHint, WindowInstance, WindowState };
14317
+ 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_CURRENCY_DEFAULT_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_OUTLET_DEPTH, 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_STRATEGY_OBJECTIVES_LOOKUP_ENDPOINT, FLY_THEME_MODE_IDS, FLY_VIEWPORT_IS_MOBILE, FLY_WINDOW_BREADCRUMBS_EVENT, FLY_WINDOW_BREADCRUMBS_STORE_KEY, FLY_WINDOW_HELP_HINT_EVENT, FLY_WINDOW_PAGE_TITLE_EVENT, FlyAchievementProgressComponent, FlyActionMenuComponent, FlyActionStackComponent, FlyAgentDraggableDirective, FlyAnimatedEmojiComponent, FlyAppHomeComponent, FlyAppTopbarComponent, FlyAppUnavailableComponent, 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, FlyLifecyclePipelineComponent, FlyMagicActionsComponent, FlyMetaListComponent, FlyModalComponent, FlyModerationQueueComponent, FlyModuleIconDirective, FlyMoneyPipe, FlyOverviewKpiRowComponent, FlyOverviewRowsComponent, FlyOverviewSectionComponent, FlyOverviewSurfaceComponent, FlyPagerComponent, FlyPaginationComponent, FlyPeoplePickerComponent, FlyPointsTierComponent, FlyProgressComponent, FlyRelativeTimePipe, FlyRemoteContextService, FlyRemoteRouter, FlyRemoteRouterOutletComponent, FlySearchInputComponent, FlySectionHeaderComponent, FlySecureSrcDirective, FlySegmentedComponent, FlySelectComponent, FlySkeletonComponent, FlySliderComponent, FlySparklineComponent, FlySpinnerComponent, FlyStandaloneAuthCallbackComponent, FlyStandaloneAuthService, FlyStandaloneMagicActionsComponent, FlyStateMessageComponent, FlyStrategySelectorComponent, FlyDynamicFormComponent as FlySurveyFormComponent, FlyTabComponent, FlyTabsComponent, FlyTagsInputComponent, FlyThemeService, FlyTimePipe, FlyToastService, FlyToggleComponent, FlyTooltipDirective, FlyTreeNavComponent, FlyTypeaheadComponent, FlyUserDirectoryService, FlyWindowHelpService, FlyWindowTitleService, FlyosPendingLaunchesGlobalKey, FlyosShellHandlesLaunchRequestsGlobalKey, FlyosShellOwnsHistoryGlobalKey, GANTT_DEPENDENCY_TYPES, GANTT_ROW_TINT_ALPHA, 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, WindowBreadcrumbsRegistry, WindowManagerService, applySkinTone, applySuggestion, ariaSort, buildCron, canConfirm, canGoNext$1 as canGoNext, canGoPrev$1 as canGoPrev, captureFocus, clampMagicBarSearchWidth, clampPage$1 as clampPage, clampSliderValue, connectRemoteLaunch, deepestFlyMatch, 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, flyUnwrapCurrency, flyUnwrapLenient, flyUnwrapObjectiveLookup, hasAnyRoleIn, healNativeFederationCacheOnce, initialExpanded, isAccentColor, isChunkLoadError, isFlyAuthStorePopulated, isNativeFederationCacheError, isRtlLocale, isRtlLocaleEntry, isValidCron, isValidSingleField, loadRemoteStyles, magicBarOwnerKey, magicBarSearchText, matchFlyRoutePattern, matchFlyRoutePrefix, matchFlyRouteTable, nextEnabledIndex, nextModuleIndex, nextSegmentIndex, nextSort, normalizeFlyTheme, normalizeRoles, novaPriorityToneVar, novaStatusToneVar, overlayStack, canGoNext as pagerCanGoNext, canGoPrev as pagerCanGoPrev, clampPage as pagerClampPage, parseCron, parseStepUpChallenge, parseTags, prefetchRemoteStyles, presenceColorFor, printConsoleSecurityWarning, provideFlyChunkReloadRecovery, provideFlyEmojiPack, provideFlyOfflineAuth, provideFlyStandaloneAuth, reloadOnceForChunkError, requestAppLaunch, resolveActiveModule, resolveActiveSection, resolveActiveTab, resolveCellValue, resolveStateIcon, resolveStateMessageKey, restoreFocus, sameTags, sectionHintKey, sectionLayout, sliderTrackGradient, sparklinePath, sparklinePoints, stepUpInterceptor, stepUpReturnKey, trimAgentPayload, trimAgentString, unloadRemoteStyles, utf8ByteLength, validateAgentPayload, warnIfEmbeddedSessionMissing };
14318
+ 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, FlyAppUnavailableState, 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, FlyOfflineAuthConfig, 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, FlyStrategyObjectiveRef, FlyStrategyObjectiveSearchFn, FlyFileSelection as FlySurveyFileSelection, FlyFormAnswer as FlySurveyFormAnswer, FlyFormAnswerValue as FlySurveyFormAnswerValue, FlyFormDefinition as FlySurveyFormDefinition, FlyFormFieldOptions as FlySurveyFormFieldOptions, FlyFormOption as FlySurveyFormOption, FlyFormQuestion as FlySurveyFormQuestion, FlyFormQuestionType as FlySurveyQuestionType, FlyTenantDefaultCurrencyFetchFn, FlyThemeMode, FlyTooltipPlacement, FlyTreeNavNode, FlyTypeaheadOption, FlyWindowHelpHintEventDetail, FlyWindowHelpPublisher, FlyWindowPageTitleEventDetail, FlyWindowTitlePublisher, FlyosPendingLaunches, FocusRestore, FormBannerKind, GanttDependency, GanttDependencyCreate, GanttDependencyDelete, GanttDependencyType, GanttRow, GanttRowDatesChange, GanttRowKind, GanttZoom, IconButtonVariant, LaunchContext, LifecycleRollupItem, LifecycleStep, 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, OverviewKpiItem, OverviewKpiTone, OverviewRow, PageHeaderVariant, PresetTerm, ProgressTone, RemoteAppDef, RequestAppLaunchOptions, RoleOuLookupRow, RolePrincipal, RolesTerm, SegmentedOption, SegmentedVariant, ShareOrgChartOption, ShareOuNode, SharePanelLevelOption, SharePermissionEntry, SharePrincipal, SharePrincipalKind, ShareUserResult, StateMessageKind, StepUpChallenge, StepUpReauthHandler, StepUpReauthRequest, TabsVariant, ToastAction, ToastEntry, ToastOptions, ToastVariant, User, UserPrincipal, UsersTerm, WindowBreadcrumb, WindowHelpHint, WindowInstance, WindowState };
13905
14319
  //# sourceMappingURL=flyos-design-system.d.ts.map