@flyos/design-system 1.4.0 → 1.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/fesm2022/flyos-design-system.mjs +314 -160
- package/fesm2022/flyos-design-system.mjs.map +1 -1
- package/package.json +1 -1
- package/scss/_ink-baseline.scss +29 -29
- package/scss/_shell-embed-bridge.scss +81 -81
- package/scss/_vos-button-mixins.scss +28 -28
- package/types/flyos-design-system.d.ts +202 -9
- package/types/flyos-design-system.d.ts.map +1 -1
package/package.json
CHANGED
package/scss/_ink-baseline.scss
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
// ─── Inherited-ink baseline ──────────────────────────────────────────────────
|
|
2
|
-
//
|
|
3
|
-
// Establishes the document's inherited `color`. Until this existed, NOTHING in
|
|
4
|
-
// the shell ever set `color` on `html` or `body` — `_theme-light.scss` and
|
|
5
|
-
// `_theme-dark.scss` declare custom properties only. So the inherited colour was
|
|
6
|
-
// the user-agent default, **black**, and every component that says
|
|
7
|
-
// `color: inherit` (fly-tree-nav rows, fly-breadcrumb's current crumb,
|
|
8
|
-
// fly-search-input's typed text, fly-card's meta slot, and any consumer markup
|
|
9
|
-
// that simply doesn't mention colour) rendered black ink on the smoked glass.
|
|
10
|
-
//
|
|
11
|
-
// That is why the "text is invisible in light theme" bug kept coming back app
|
|
12
|
-
// after app: it was never really an app's mistake. There was no baseline to
|
|
13
|
-
// inherit, so *forgetting* to set a colour was the failure mode, and the fix
|
|
14
|
-
// kept being applied one component at a time. `--text-color` is white in BOTH
|
|
15
|
-
// themes since the Liquid-Glass flip, so one declaration settles it everywhere.
|
|
16
|
-
//
|
|
17
|
-
// Scoped to the two theme classes on purpose — NOT `:root`. A business app
|
|
18
|
-
// running STANDALONE renders on its own opaque paper (`--bg`, near-black
|
|
19
|
-
// `--ink`) and does not load `fly-theme` at all; keying on the class means a
|
|
20
|
-
// surface that never opted into a shell theme is never repainted white.
|
|
21
|
-
//
|
|
22
|
-
// A deliberate paper surface inside the shell (the documents editor) still
|
|
23
|
-
// brings its own dark ink locally — a component rule beats this baseline, which
|
|
24
|
-
// is exactly the intended precedence.
|
|
25
|
-
|
|
26
|
-
html.light-theme,
|
|
27
|
-
html.dark-theme {
|
|
28
|
-
color: var(--text-color);
|
|
29
|
-
}
|
|
1
|
+
// ─── Inherited-ink baseline ──────────────────────────────────────────────────
|
|
2
|
+
//
|
|
3
|
+
// Establishes the document's inherited `color`. Until this existed, NOTHING in
|
|
4
|
+
// the shell ever set `color` on `html` or `body` — `_theme-light.scss` and
|
|
5
|
+
// `_theme-dark.scss` declare custom properties only. So the inherited colour was
|
|
6
|
+
// the user-agent default, **black**, and every component that says
|
|
7
|
+
// `color: inherit` (fly-tree-nav rows, fly-breadcrumb's current crumb,
|
|
8
|
+
// fly-search-input's typed text, fly-card's meta slot, and any consumer markup
|
|
9
|
+
// that simply doesn't mention colour) rendered black ink on the smoked glass.
|
|
10
|
+
//
|
|
11
|
+
// That is why the "text is invisible in light theme" bug kept coming back app
|
|
12
|
+
// after app: it was never really an app's mistake. There was no baseline to
|
|
13
|
+
// inherit, so *forgetting* to set a colour was the failure mode, and the fix
|
|
14
|
+
// kept being applied one component at a time. `--text-color` is white in BOTH
|
|
15
|
+
// themes since the Liquid-Glass flip, so one declaration settles it everywhere.
|
|
16
|
+
//
|
|
17
|
+
// Scoped to the two theme classes on purpose — NOT `:root`. A business app
|
|
18
|
+
// running STANDALONE renders on its own opaque paper (`--bg`, near-black
|
|
19
|
+
// `--ink`) and does not load `fly-theme` at all; keying on the class means a
|
|
20
|
+
// surface that never opted into a shell theme is never repainted white.
|
|
21
|
+
//
|
|
22
|
+
// A deliberate paper surface inside the shell (the documents editor) still
|
|
23
|
+
// brings its own dark ink locally — a component rule beats this baseline, which
|
|
24
|
+
// is exactly the intended precedence.
|
|
25
|
+
|
|
26
|
+
html.light-theme,
|
|
27
|
+
html.dark-theme {
|
|
28
|
+
color: var(--text-color);
|
|
29
|
+
}
|
|
@@ -1,81 +1,81 @@
|
|
|
1
|
-
// ─── Shell-embed bridge — app-surface tokens re-tinted onto shell glass ──────
|
|
2
|
-
// MIXIN ONLY. This partial emits no CSS on import; it exists so the mapping
|
|
3
|
-
// below lives in ONE place instead of being retyped per feature app.
|
|
4
|
-
//
|
|
5
|
-
// WHY IT IS NEEDED
|
|
6
|
-
// The DS carries two token families on purpose (see `_app-surface-tokens.scss`'s
|
|
7
|
-
// header). `--ink-*`/`--bg-*`/`--line-*` dress BUSINESS-APP CONTENT: an opaque
|
|
8
|
-
// reading surface, dark ink on white in light mode. `--label-*`/`--surface-*`
|
|
9
|
-
// dress SHELL CHROME: white ink on translucent glass over the user's wallpaper.
|
|
10
|
-
//
|
|
11
|
-
// A desktop-shell feature app renders inside a glass window, so its chrome is
|
|
12
|
-
// necessarily the second family — but the moment it mounts a component from the
|
|
13
|
-
// `fly-*` app-surface kit (or `@flyos/design-system-board`), that component
|
|
14
|
-
// themes itself from the FIRST family and paints an opaque white slab with
|
|
15
|
-
// near-black ink. One region, two families: the app's own header ink is white,
|
|
16
|
-
// the slab beneath it is white, and the header goes invisible.
|
|
17
|
-
//
|
|
18
|
-
// That is not hypothetical. It shipped in canvas-boards and was measured live:
|
|
19
|
-
// `.cbe__export-btn` computed `color: rgb(255,255,255)` sitting on a board whose
|
|
20
|
-
// `--_surface` resolved to `oklch(100% 0 0deg)`. `core/theme/feature-app-surface-tokens.ts`
|
|
21
|
-
// documents the same class of trap ("a dark-mode-only review passes while light
|
|
22
|
-
// mode renders a white slab") — and note the failure is LIGHT-mode-only, because
|
|
23
|
-
// in dark mode both families happen to agree on light-ink-on-dark.
|
|
24
|
-
//
|
|
25
|
-
// THE FIX is the seam the tokens file already names: an app that embeds in the
|
|
26
|
-
// shell re-tints the content family onto glass. help-center (`.hc-shell`) and
|
|
27
|
-
// dashboard-app hand-rolled identical copies of this map before it lived here.
|
|
28
|
-
//
|
|
29
|
-
// ALIASES ONLY — every value is another token, never a literal, so the whole map
|
|
30
|
-
// follows the shell's theme automatically. The ONE exception is `--on-ink`, and
|
|
31
|
-
// its reason is written at the declaration.
|
|
32
|
-
@mixin app-surface-on-glass {
|
|
33
|
-
// Surfaces: the window chrome supplies the material, so the app's own page
|
|
34
|
-
// background is nothing at all; cards/tracks are lifts ON that plate.
|
|
35
|
-
--bg: transparent;
|
|
36
|
-
--bg-2: var(--surface-card);
|
|
37
|
-
--bg-3: var(--fill-tertiary);
|
|
38
|
-
--bg-hover: var(--surface-active);
|
|
39
|
-
|
|
40
|
-
// Hairlines.
|
|
41
|
-
--line: var(--separator);
|
|
42
|
-
--line-2: var(--surface-border);
|
|
43
|
-
--line-3: var(--separator);
|
|
44
|
-
|
|
45
|
-
// Ink — opaque label tokens, never a surface token. Aliasing a translucent
|
|
46
|
-
// surface onto an ink slot is what turns a control into an empty coloured
|
|
47
|
-
// square (see the note in help-center.component.scss).
|
|
48
|
-
--ink: var(--label-primary);
|
|
49
|
-
--ink-2: var(--label-secondary);
|
|
50
|
-
--ink-3: var(--label-secondary);
|
|
51
|
-
--ink-4: var(--label-tertiary);
|
|
52
|
-
|
|
53
|
-
// CONTRACT (`_app-surface-tokens.scss`): anything that redefines `--ink` MUST
|
|
54
|
-
// redefine `--on-ink`, and it must be OPAQUE. `--on-ink` labels a fill of
|
|
55
|
-
// `--ink` itself — the primary button. Above we pin `--ink` to the shell's
|
|
56
|
-
// white label ink in BOTH themes, so its counter-ink is a fixed DARK value in
|
|
57
|
-
// both. It cannot alias a shell token: the shell is glass and owns no
|
|
58
|
-
// dark-opaque ink. This literal is the same value `--ink` carries in the
|
|
59
|
-
// app-surface light theme, i.e. the colour a white pill is designed to label.
|
|
60
|
-
//
|
|
61
|
-
// `app-surface-conventions.spec.ts` can only police the DS token file itself;
|
|
62
|
-
// its doc says consumers that remap `--ink` "carry the same obligation".
|
|
63
|
-
// Routing every consumer through this mixin is how that obligation is met.
|
|
64
|
-
--on-ink: oklch(18% 0.005 250deg);
|
|
65
|
-
|
|
66
|
-
// `--ink-inverse` carries the SAME obligation as `--on-ink` and was missed.
|
|
67
|
-
//
|
|
68
|
-
// The app-surface family defines it once, as "text on dark / gradient fills" — near-white, which
|
|
69
|
-
// is correct while `--ink` is near-black. This mixin flips `--ink` to the shell's WHITE label ink
|
|
70
|
-
// and updated `--on-ink` accordingly, but left `--ink-inverse` at its near-white resting value.
|
|
71
|
-
// Every `background: var(--ink); color: var(--ink-inverse)` pair inside an embedded app therefore
|
|
72
|
-
// became WHITE ON WHITE at a contrast ratio of about 1:1.
|
|
73
|
-
//
|
|
74
|
-
// That is not hypothetical: it is what made `[data-tooltip]` (the CSS tooltip behind every
|
|
75
|
-
// `fly-icon-button`'s `tooltipKey`) invisible across the board editor — measured live at
|
|
76
|
-
// background rgb(255,255,255) with colour oklch(0.99 0 0). The same pair is used by the button,
|
|
77
|
-
// icon-button, checkbox and card components, so this was never a Boards-only bug.
|
|
78
|
-
//
|
|
79
|
-
// Pinned to `--on-ink` rather than restated, so the two counter-inks cannot drift apart again.
|
|
80
|
-
--ink-inverse: var(--on-ink);
|
|
81
|
-
}
|
|
1
|
+
// ─── Shell-embed bridge — app-surface tokens re-tinted onto shell glass ──────
|
|
2
|
+
// MIXIN ONLY. This partial emits no CSS on import; it exists so the mapping
|
|
3
|
+
// below lives in ONE place instead of being retyped per feature app.
|
|
4
|
+
//
|
|
5
|
+
// WHY IT IS NEEDED
|
|
6
|
+
// The DS carries two token families on purpose (see `_app-surface-tokens.scss`'s
|
|
7
|
+
// header). `--ink-*`/`--bg-*`/`--line-*` dress BUSINESS-APP CONTENT: an opaque
|
|
8
|
+
// reading surface, dark ink on white in light mode. `--label-*`/`--surface-*`
|
|
9
|
+
// dress SHELL CHROME: white ink on translucent glass over the user's wallpaper.
|
|
10
|
+
//
|
|
11
|
+
// A desktop-shell feature app renders inside a glass window, so its chrome is
|
|
12
|
+
// necessarily the second family — but the moment it mounts a component from the
|
|
13
|
+
// `fly-*` app-surface kit (or `@flyos/design-system-board`), that component
|
|
14
|
+
// themes itself from the FIRST family and paints an opaque white slab with
|
|
15
|
+
// near-black ink. One region, two families: the app's own header ink is white,
|
|
16
|
+
// the slab beneath it is white, and the header goes invisible.
|
|
17
|
+
//
|
|
18
|
+
// That is not hypothetical. It shipped in canvas-boards and was measured live:
|
|
19
|
+
// `.cbe__export-btn` computed `color: rgb(255,255,255)` sitting on a board whose
|
|
20
|
+
// `--_surface` resolved to `oklch(100% 0 0deg)`. `core/theme/feature-app-surface-tokens.ts`
|
|
21
|
+
// documents the same class of trap ("a dark-mode-only review passes while light
|
|
22
|
+
// mode renders a white slab") — and note the failure is LIGHT-mode-only, because
|
|
23
|
+
// in dark mode both families happen to agree on light-ink-on-dark.
|
|
24
|
+
//
|
|
25
|
+
// THE FIX is the seam the tokens file already names: an app that embeds in the
|
|
26
|
+
// shell re-tints the content family onto glass. help-center (`.hc-shell`) and
|
|
27
|
+
// dashboard-app hand-rolled identical copies of this map before it lived here.
|
|
28
|
+
//
|
|
29
|
+
// ALIASES ONLY — every value is another token, never a literal, so the whole map
|
|
30
|
+
// follows the shell's theme automatically. The ONE exception is `--on-ink`, and
|
|
31
|
+
// its reason is written at the declaration.
|
|
32
|
+
@mixin app-surface-on-glass {
|
|
33
|
+
// Surfaces: the window chrome supplies the material, so the app's own page
|
|
34
|
+
// background is nothing at all; cards/tracks are lifts ON that plate.
|
|
35
|
+
--bg: transparent;
|
|
36
|
+
--bg-2: var(--surface-card);
|
|
37
|
+
--bg-3: var(--fill-tertiary);
|
|
38
|
+
--bg-hover: var(--surface-active);
|
|
39
|
+
|
|
40
|
+
// Hairlines.
|
|
41
|
+
--line: var(--separator);
|
|
42
|
+
--line-2: var(--surface-border);
|
|
43
|
+
--line-3: var(--separator);
|
|
44
|
+
|
|
45
|
+
// Ink — opaque label tokens, never a surface token. Aliasing a translucent
|
|
46
|
+
// surface onto an ink slot is what turns a control into an empty coloured
|
|
47
|
+
// square (see the note in help-center.component.scss).
|
|
48
|
+
--ink: var(--label-primary);
|
|
49
|
+
--ink-2: var(--label-secondary);
|
|
50
|
+
--ink-3: var(--label-secondary);
|
|
51
|
+
--ink-4: var(--label-tertiary);
|
|
52
|
+
|
|
53
|
+
// CONTRACT (`_app-surface-tokens.scss`): anything that redefines `--ink` MUST
|
|
54
|
+
// redefine `--on-ink`, and it must be OPAQUE. `--on-ink` labels a fill of
|
|
55
|
+
// `--ink` itself — the primary button. Above we pin `--ink` to the shell's
|
|
56
|
+
// white label ink in BOTH themes, so its counter-ink is a fixed DARK value in
|
|
57
|
+
// both. It cannot alias a shell token: the shell is glass and owns no
|
|
58
|
+
// dark-opaque ink. This literal is the same value `--ink` carries in the
|
|
59
|
+
// app-surface light theme, i.e. the colour a white pill is designed to label.
|
|
60
|
+
//
|
|
61
|
+
// `app-surface-conventions.spec.ts` can only police the DS token file itself;
|
|
62
|
+
// its doc says consumers that remap `--ink` "carry the same obligation".
|
|
63
|
+
// Routing every consumer through this mixin is how that obligation is met.
|
|
64
|
+
--on-ink: oklch(18% 0.005 250deg);
|
|
65
|
+
|
|
66
|
+
// `--ink-inverse` carries the SAME obligation as `--on-ink` and was missed.
|
|
67
|
+
//
|
|
68
|
+
// The app-surface family defines it once, as "text on dark / gradient fills" — near-white, which
|
|
69
|
+
// is correct while `--ink` is near-black. This mixin flips `--ink` to the shell's WHITE label ink
|
|
70
|
+
// and updated `--on-ink` accordingly, but left `--ink-inverse` at its near-white resting value.
|
|
71
|
+
// Every `background: var(--ink); color: var(--ink-inverse)` pair inside an embedded app therefore
|
|
72
|
+
// became WHITE ON WHITE at a contrast ratio of about 1:1.
|
|
73
|
+
//
|
|
74
|
+
// That is not hypothetical: it is what made `[data-tooltip]` (the CSS tooltip behind every
|
|
75
|
+
// `fly-icon-button`'s `tooltipKey`) invisible across the board editor — measured live at
|
|
76
|
+
// background rgb(255,255,255) with colour oklch(0.99 0 0). The same pair is used by the button,
|
|
77
|
+
// icon-button, checkbox and card components, so this was never a Boards-only bug.
|
|
78
|
+
//
|
|
79
|
+
// Pinned to `--on-ink` rather than restated, so the two counter-inks cannot drift apart again.
|
|
80
|
+
--ink-inverse: var(--on-ink);
|
|
81
|
+
}
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
// visionOS button pseudo-element layers (used by _business-app-buttons.scss).
|
|
2
|
-
// Kept separate from desktop-app glass mixins so Business Apps only pull button-related SCSS.
|
|
3
|
-
|
|
4
|
-
@mixin vos-platter-layers($radius) {
|
|
5
|
-
content: '';
|
|
6
|
-
position: absolute;
|
|
7
|
-
inset: 0;
|
|
8
|
-
border-radius: $radius;
|
|
9
|
-
pointer-events: none;
|
|
10
|
-
background:
|
|
11
|
-
linear-gradient(var(--btn-platter-lighten), var(--btn-platter-lighten)),
|
|
12
|
-
linear-gradient(var(--btn-platter-dodge), var(--btn-platter-dodge));
|
|
13
|
-
background-blend-mode: lighten, color-dodge;
|
|
14
|
-
mix-blend-mode: screen;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
@mixin vos-disabled-layers($radius) {
|
|
18
|
-
content: '';
|
|
19
|
-
position: absolute;
|
|
20
|
-
inset: 0;
|
|
21
|
-
border-radius: $radius;
|
|
22
|
-
pointer-events: none;
|
|
23
|
-
background:
|
|
24
|
-
linear-gradient(var(--btn-disabled-lighten), var(--btn-disabled-lighten)),
|
|
25
|
-
linear-gradient(var(--btn-disabled-dodge), var(--btn-disabled-dodge));
|
|
26
|
-
background-blend-mode: lighten, color-dodge;
|
|
27
|
-
mix-blend-mode: screen;
|
|
28
|
-
}
|
|
1
|
+
// visionOS button pseudo-element layers (used by _business-app-buttons.scss).
|
|
2
|
+
// Kept separate from desktop-app glass mixins so Business Apps only pull button-related SCSS.
|
|
3
|
+
|
|
4
|
+
@mixin vos-platter-layers($radius) {
|
|
5
|
+
content: '';
|
|
6
|
+
position: absolute;
|
|
7
|
+
inset: 0;
|
|
8
|
+
border-radius: $radius;
|
|
9
|
+
pointer-events: none;
|
|
10
|
+
background:
|
|
11
|
+
linear-gradient(var(--btn-platter-lighten), var(--btn-platter-lighten)),
|
|
12
|
+
linear-gradient(var(--btn-platter-dodge), var(--btn-platter-dodge));
|
|
13
|
+
background-blend-mode: lighten, color-dodge;
|
|
14
|
+
mix-blend-mode: screen;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
@mixin vos-disabled-layers($radius) {
|
|
18
|
+
content: '';
|
|
19
|
+
position: absolute;
|
|
20
|
+
inset: 0;
|
|
21
|
+
border-radius: $radius;
|
|
22
|
+
pointer-events: none;
|
|
23
|
+
background:
|
|
24
|
+
linear-gradient(var(--btn-disabled-lighten), var(--btn-disabled-lighten)),
|
|
25
|
+
linear-gradient(var(--btn-disabled-dodge), var(--btn-disabled-dodge));
|
|
26
|
+
background-blend-mode: lighten, color-dodge;
|
|
27
|
+
mix-blend-mode: screen;
|
|
28
|
+
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
import { Type, InjectionToken, Signal, WritableSignal, OnInit, EventEmitter, OnChanges, OnDestroy, SimpleChanges, EnvironmentProviders, PipeTransform, signal, AfterViewInit, ElementRef, AfterViewChecked, ErrorHandler, Provider, TemplateRef } from '@angular/core';
|
|
3
3
|
import * as rxjs from 'rxjs';
|
|
4
|
-
import { Observable } from 'rxjs';
|
|
4
|
+
import { Observable, MonoTypeOperatorFunction } from 'rxjs';
|
|
5
5
|
import { ControlValueAccessor, Validator, AbstractControl, ValidationErrors } from '@angular/forms';
|
|
6
|
+
import * as _angular_common_http from '@angular/common/http';
|
|
7
|
+
import { HttpRequest, HttpHandlerFn, HttpErrorResponse } from '@angular/common/http';
|
|
6
8
|
import { ConnectedPosition } from '@angular/cdk/overlay';
|
|
7
9
|
import * as _flyos_design_system from '@flyos/design-system';
|
|
8
10
|
import { CanActivateFn, NavigationExtras } from '@angular/router';
|
|
9
|
-
import * as _angular_common_http from '@angular/common/http';
|
|
10
|
-
import { HttpRequest, HttpHandlerFn } from '@angular/common/http';
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* FlyOS architectural app category — see repo `docs/01-ecosystem-overview.md`.
|
|
@@ -1344,6 +1344,24 @@ interface FlyStandaloneAuthConfig {
|
|
|
1344
1344
|
* does not (yet) return.
|
|
1345
1345
|
*/
|
|
1346
1346
|
readonly scope?: string;
|
|
1347
|
+
/**
|
|
1348
|
+
* Extra same-origin path fragments that are reachable **anonymously**, matched as substrings of
|
|
1349
|
+
* the request pathname (e.g. `['/api/thoughts/public/']`).
|
|
1350
|
+
*
|
|
1351
|
+
* A request to one of these is treated exactly like the built-in pre-auth paths: no bearer is
|
|
1352
|
+
* attached, and — critically — a `401` from it never triggers `startLogin()`.
|
|
1353
|
+
*
|
|
1354
|
+
* **Why an app must be able to declare these.** The interceptor kicks off PKCE login on any `401`
|
|
1355
|
+
* received while no session exists, which is right for a gated app but wrong for an app that also
|
|
1356
|
+
* serves an anonymous surface: Thoughts' public idea portal is `[AllowAnonymous]` and reached
|
|
1357
|
+
* shell-less with no session, so a stray `401` there would bounce a member of the public into a
|
|
1358
|
+
* login they neither need nor can complete. The app cannot fix this on its own — Angular's
|
|
1359
|
+
* interceptor chain is fixed, so a local interceptor can neither skip this one nor suppress its
|
|
1360
|
+
* side effect — which is why the exemption has to be declarable here.
|
|
1361
|
+
*
|
|
1362
|
+
* Defaults to none, so existing consumers are unaffected.
|
|
1363
|
+
*/
|
|
1364
|
+
readonly anonymousPaths?: readonly string[];
|
|
1347
1365
|
}
|
|
1348
1366
|
/**
|
|
1349
1367
|
* DI token carrying the {@link FlyStandaloneAuthConfig}. Provided by {@link provideFlyStandaloneAuth};
|
|
@@ -1481,9 +1499,14 @@ declare const flyStandaloneAuthGuard: CanActivateFn;
|
|
|
1481
1499
|
* token — attaching it would exfiltrate the token to whatever host the app happens to call.
|
|
1482
1500
|
*
|
|
1483
1501
|
* Requests that MUST NOT carry the bearer even same-origin: the STS token endpoint (its own client
|
|
1484
|
-
* auth)
|
|
1485
|
-
* cookie)
|
|
1486
|
-
*
|
|
1502
|
+
* auth), the pre-auth BFF endpoints under `/api/{appId}/auth/` (they authenticate via the HttpOnly
|
|
1503
|
+
* cookie), and any path the app declared in `anonymousPaths` (an `[AllowAnonymous]` surface such as
|
|
1504
|
+
* a public portal). The exclusion runs on the origin-NORMALIZED pathname, so an absolute same-origin
|
|
1505
|
+
* URL to the BFF is excluded exactly like its relative spelling.
|
|
1506
|
+
*
|
|
1507
|
+
* The same exclusion governs the 401 handling: a `401` from an excluded path never starts a login.
|
|
1508
|
+
* That matters most for `anonymousPaths` — without it, a stray 401 on a public surface would bounce
|
|
1509
|
+
* an anonymous visitor into a PKCE login they cannot complete.
|
|
1487
1510
|
*
|
|
1488
1511
|
* Ordering: register this AFTER any offline/sample-data interceptor and BEFORE `stepUpInterceptor`
|
|
1489
1512
|
* (a `401 step_up_required` arrives while the session is valid, so this interceptor passes it through
|
|
@@ -7146,7 +7169,7 @@ type FlySecureSrcState = 'idle' | 'loading' | 'ready' | 'error';
|
|
|
7146
7169
|
* few seconds of its life; the Files Manager download endpoint answers
|
|
7147
7170
|
* `423 Locked` / `SCAN_PENDING` (with an advisory `Retry-After` header) until
|
|
7148
7171
|
* the scan clears. Rather than treating that like a permission error, the
|
|
7149
|
-
* directive retries the fetch — up to {@link
|
|
7172
|
+
* directive retries the fetch — up to {@link FLY_SCAN_PENDING_MAX_RETRIES} times,
|
|
7150
7173
|
* honoring `Retry-After` when present (falling back to a flat 2s) — and swaps
|
|
7151
7174
|
* in the image automatically once the scan reports Clean. This mirrors the
|
|
7152
7175
|
* hand-rolled `retry({ count: 6, delay: … })` policy already used by the
|
|
@@ -8547,6 +8570,176 @@ declare function flyDownloadBlob(blob: Blob, fileName: string, mimeFallback?: st
|
|
|
8547
8570
|
*/
|
|
8548
8571
|
declare function flyExportFileName(contentDisposition: string | null | undefined, fallback: string): string;
|
|
8549
8572
|
|
|
8573
|
+
/**
|
|
8574
|
+
* Downloads a Files-Manager file through the authenticated `HttpClient` and hands it to the
|
|
8575
|
+
* browser's save dialog.
|
|
8576
|
+
*
|
|
8577
|
+
* **Why this exists rather than an `<a href>`.** `/api/files/{id}/download` is bearer-gated and
|
|
8578
|
+
* Files-Manager exposes no signed or public URL, so a browser-native navigation carries no
|
|
8579
|
+
* `Authorization` header and answers **401**. That is not a hypothetical: three Circles templates
|
|
8580
|
+
* shipped plain `<a href>` download links that were simply broken, Thoughts hit the same 401 on
|
|
8581
|
+
* its story attachments, and in both apps other screens had already hand-rolled the correct blob
|
|
8582
|
+
* fetch inline. The design system shipped the *save* half (`flyDownloadBlob`) and the image-side
|
|
8583
|
+
* *fetch* half (`img[flySecureSrc]`) but nothing for a plain authenticated download, so every app
|
|
8584
|
+
* rediscovered the same 401 and wrote the same fix.
|
|
8585
|
+
*
|
|
8586
|
+
* It also rides out the `423 SCAN_PENDING` window via {@link flyScanRetry}: a freshly-produced
|
|
8587
|
+
* export or upload is still being virus-scanned for the first seconds of its life, which is
|
|
8588
|
+
* exactly when a user clicks.
|
|
8589
|
+
*
|
|
8590
|
+
* @example
|
|
8591
|
+
* private readonly downloads = inject(FlyFileDownloadService);
|
|
8592
|
+
* this.downloads.download(attachment.fileId, attachment.fileName);
|
|
8593
|
+
*/
|
|
8594
|
+
declare class FlyFileDownloadService {
|
|
8595
|
+
private readonly http;
|
|
8596
|
+
/**
|
|
8597
|
+
* Fetches a file and saves it, subscribing internally — the fire-and-forget form for a click
|
|
8598
|
+
* handler that has no state to drive.
|
|
8599
|
+
*
|
|
8600
|
+
* Errors are left to the app's global `HttpClient` error handling. Use {@link fetch} instead
|
|
8601
|
+
* when the caller needs to show a spinner or a per-row failure state.
|
|
8602
|
+
*
|
|
8603
|
+
* @param fileIdOrUrl A bare Files-Manager file id, or a path starting with `/` used verbatim.
|
|
8604
|
+
* @param fileName Name offered to the OS save dialog, extension included.
|
|
8605
|
+
*/
|
|
8606
|
+
download(fileIdOrUrl: string, fileName: string): void;
|
|
8607
|
+
/**
|
|
8608
|
+
* The observable form: emits the blob after saving it, so a caller can drive its own loading
|
|
8609
|
+
* and error state. The save happens on emission — subscribing is what triggers the download.
|
|
8610
|
+
*
|
|
8611
|
+
* @param fileIdOrUrl A bare Files-Manager file id, or a path starting with `/` used verbatim.
|
|
8612
|
+
* @param fileName Name offered to the OS save dialog, extension included.
|
|
8613
|
+
*/
|
|
8614
|
+
fetch(fileIdOrUrl: string, fileName: string): Observable<Blob>;
|
|
8615
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FlyFileDownloadService, never>;
|
|
8616
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<FlyFileDownloadService>;
|
|
8617
|
+
}
|
|
8618
|
+
|
|
8619
|
+
/**
|
|
8620
|
+
* Files-Manager answers a fresh (still-scanning) upload with `423 Locked` / `SCAN_PENDING` until
|
|
8621
|
+
* the background virus scan clears it.
|
|
8622
|
+
*/
|
|
8623
|
+
declare const FLY_SCAN_PENDING_STATUS = 423;
|
|
8624
|
+
/**
|
|
8625
|
+
* Retry budget. The scan usually clears within a few seconds, so six attempts comfortably covers
|
|
8626
|
+
* the common case without hammering the endpoint indefinitely on a stuck scan.
|
|
8627
|
+
*/
|
|
8628
|
+
declare const FLY_SCAN_PENDING_MAX_RETRIES = 6;
|
|
8629
|
+
/** Fallback delay when the response carries no (or an unparsable) `Retry-After` header. */
|
|
8630
|
+
declare const FLY_SCAN_PENDING_DEFAULT_DELAY_MS = 2000;
|
|
8631
|
+
/**
|
|
8632
|
+
* Resolves a `423 Locked` / `SCAN_PENDING` error's `Retry-After` header to a delay in
|
|
8633
|
+
* milliseconds. The header is advisory and, per RFC 9110, either a number of seconds or an
|
|
8634
|
+
* HTTP-date — both are handled. Falls back to {@link FLY_SCAN_PENDING_DEFAULT_DELAY_MS} when the
|
|
8635
|
+
* header is missing, unparsable, or already in the past.
|
|
8636
|
+
*/
|
|
8637
|
+
declare function flyScanPendingDelayMs(err: HttpErrorResponse): number;
|
|
8638
|
+
/**
|
|
8639
|
+
* Rides out the `423 SCAN_PENDING` window on any authenticated Files-Manager request.
|
|
8640
|
+
*
|
|
8641
|
+
* A file is not readable for the first seconds of its life — Files-Manager holds it at `423` until
|
|
8642
|
+
* the virus scan clears. Without this, the first read after an upload or an export completes just
|
|
8643
|
+
* fails, which is exactly when a user is most likely to click.
|
|
8644
|
+
*
|
|
8645
|
+
* **This honours `Retry-After`.** Every hand-rolled copy of this policy across the platform used a
|
|
8646
|
+
* flat `timer(2000)`, which is both slower than necessary when the server says "200ms" and a
|
|
8647
|
+
* hammer when it says "30s". The header is advisory, so the flat fallback remains for responses
|
|
8648
|
+
* that omit it.
|
|
8649
|
+
*
|
|
8650
|
+
* Only `423` is retried. A terminal outcome — `403 SCAN_INFECTED`, `422 SCAN_FAILED`, `401`, or
|
|
8651
|
+
* anything else — re-throws immediately: the `delay` notifier erroring stops `retry` at once
|
|
8652
|
+
* rather than waiting out the budget.
|
|
8653
|
+
*
|
|
8654
|
+
* @example
|
|
8655
|
+
* this.http.get(url, { responseType: 'blob' }).pipe(flyScanRetry())
|
|
8656
|
+
*/
|
|
8657
|
+
declare function flyScanRetry<T>(options?: {
|
|
8658
|
+
readonly count?: number;
|
|
8659
|
+
}): MonoTypeOperatorFunction<T>;
|
|
8660
|
+
|
|
8661
|
+
/**
|
|
8662
|
+
* The `ApiResponse<T>` envelope every FlyOS endpoint returns, as it serializes over the wire
|
|
8663
|
+
* (the backend's `Success` is camel-cased to `success` in production JSON).
|
|
8664
|
+
*
|
|
8665
|
+
* `errors` is the business-rule failure list some endpoints return instead of a single `error`;
|
|
8666
|
+
* both shapes are live, which is why {@link flyApiErrorMessage} probes for both.
|
|
8667
|
+
*/
|
|
8668
|
+
interface FlyApiResponse<T = void> {
|
|
8669
|
+
success: boolean;
|
|
8670
|
+
data?: T;
|
|
8671
|
+
error?: FlyApiError;
|
|
8672
|
+
errors?: string[];
|
|
8673
|
+
meta?: FlyPageMeta;
|
|
8674
|
+
}
|
|
8675
|
+
/** The structured error an endpoint returns alongside `success: false`. */
|
|
8676
|
+
interface FlyApiError {
|
|
8677
|
+
code: string;
|
|
8678
|
+
message: string;
|
|
8679
|
+
}
|
|
8680
|
+
/** Paging counters an endpoint may return in `meta` rather than inside the payload. */
|
|
8681
|
+
interface FlyPageMeta {
|
|
8682
|
+
page: number;
|
|
8683
|
+
pageSize: number;
|
|
8684
|
+
total: number;
|
|
8685
|
+
totalPages: number;
|
|
8686
|
+
}
|
|
8687
|
+
/** A paged payload as the backend `PagedResult<T>` serializes it. */
|
|
8688
|
+
interface FlyPaged<T> {
|
|
8689
|
+
items: T[];
|
|
8690
|
+
total: number;
|
|
8691
|
+
page: number;
|
|
8692
|
+
pageSize: number;
|
|
8693
|
+
}
|
|
8694
|
+
/**
|
|
8695
|
+
* A page of results normalized for the UI. Deliberately narrower than {@link FlyPaged}: a list
|
|
8696
|
+
* component needs the rows and the total, and carrying `page`/`pageSize` back out invites a
|
|
8697
|
+
* component to trust the server's echo of a request parameter it already owns.
|
|
8698
|
+
*/
|
|
8699
|
+
interface FlyPageResult<T> {
|
|
8700
|
+
items: T[];
|
|
8701
|
+
total: number;
|
|
8702
|
+
}
|
|
8703
|
+
/**
|
|
8704
|
+
* Unwraps `FlyApiResponse<T>` to its payload, or `null` when the call did not succeed.
|
|
8705
|
+
*
|
|
8706
|
+
* This is the STRICT reading: `success: false` yields `null` even if a partial `data` came with
|
|
8707
|
+
* it. Prefer it. Use {@link flyUnwrapLenient} only against an endpoint that is known to answer
|
|
8708
|
+
* unwrapped.
|
|
8709
|
+
*/
|
|
8710
|
+
declare function flyUnwrap<T>(res: FlyApiResponse<T>): T | null;
|
|
8711
|
+
/**
|
|
8712
|
+
* Unwraps `FlyApiResponse<T>`, tolerating an endpoint that answered UNWRAPPED — i.e. returned the
|
|
8713
|
+
* payload as the whole body with no envelope around it.
|
|
8714
|
+
*
|
|
8715
|
+
* **This is a workaround for a backend that is inconsistent, not a preference.** Every endpoint is
|
|
8716
|
+
* supposed to wrap its payload; a handful do not, and call sites carried a defensive
|
|
8717
|
+
* `res.data ?? res` for them. That expression forced the surrounding chain to `any`, which
|
|
8718
|
+
* silenced the mismatch rather than naming it. This keeps the identical runtime behaviour while
|
|
8719
|
+
* staying typed — but a call site reaching for it is evidence of an endpoint worth fixing, and it
|
|
8720
|
+
* cannot distinguish "unwrapped payload" from "envelope with `success: false`".
|
|
8721
|
+
*/
|
|
8722
|
+
declare function flyUnwrapLenient<T>(res: FlyApiResponse<T>): T;
|
|
8723
|
+
/**
|
|
8724
|
+
* Normalizes the `FlyApiResponse<FlyPaged<T>>` envelope to the flat `{ items, total }` a list UI
|
|
8725
|
+
* reads. An absent `total` falls back to the row count, so a server that omits it still renders a
|
|
8726
|
+
* correct count for the page in hand rather than `0`.
|
|
8727
|
+
*/
|
|
8728
|
+
declare function flyToPage<T>(res: FlyApiResponse<FlyPaged<T>>): FlyPageResult<T>;
|
|
8729
|
+
/**
|
|
8730
|
+
* Best-effort extraction of the message (usually an i18n key) out of an
|
|
8731
|
+
* `HttpErrorResponse.error` body returned by a FlyOS endpoint.
|
|
8732
|
+
*
|
|
8733
|
+
* The wire format is inconsistent by design: business-rule failures arrive as `{ errors: [key] }`,
|
|
8734
|
+
* the structured envelope as `{ error: { code, message } }`, framework failures as `{ message }`,
|
|
8735
|
+
* and some proxies hand back a bare string. Call sites used to inline this probe behind
|
|
8736
|
+
* `err?.error as any`, typing the whole chain as `any` and duplicating the logic verbatim.
|
|
8737
|
+
*
|
|
8738
|
+
* @returns the first `errors[]` entry, else `error.message`, else `message`, else the raw string
|
|
8739
|
+
* body — or `undefined` when none of those is present.
|
|
8740
|
+
*/
|
|
8741
|
+
declare function flyApiErrorMessage(err: unknown): string | undefined;
|
|
8742
|
+
|
|
8550
8743
|
/**
|
|
8551
8744
|
* Shared presence-colour utility — one deterministic seed → colour mapping so
|
|
8552
8745
|
* every co-authoring surface (mind-maps, canvas-boards, and future Documents/
|
|
@@ -10473,6 +10666,6 @@ declare const AUDIENCE_ERROR_CODES: {
|
|
|
10473
10666
|
};
|
|
10474
10667
|
type AudienceErrorCode = (typeof AUDIENCE_ERROR_CODES)[keyof typeof AUDIENCE_ERROR_CODES];
|
|
10475
10668
|
|
|
10476
|
-
export { AGENT_DRAG_MIME, AGENT_PAYLOAD_VERSION, APP_LOOKUP, AUDIENCE_ERROR_CODES, AUDIENCE_LIMITS, AUDIENCE_PRESETS, AUDIENCE_TERM_KINDS, AgentActionBus, AgentActionUnsupportedDispatchError, AgentCommandRegistry, AgentDropRegistry, AgentFlightAnimator, AgentLookupRegistry, AgentPayloadOversizeError, AudienceBuilderComponent, AuthService, BilingualFieldComponent, CRON_MODES, CRON_WEEKDAYS, ContextMenuComponent, DEFAULT_AGENT_PAYLOAD_LIMITS, DEFAULT_FLY_THEME_MODE, DS_BASELINE_LOCALES, DashboardKpiComponent, DialogResult, EntityLookupComponent, FLYOS_LAUNCH_EVENT, FLYOS_LAUNCH_REQUEST_EVENT, FLYOS_REMOTE_ROUTE_EVENT, FLY_ACCENT_PROPERTY, FLY_ADMIN_ROLES, FLY_CHUNK_RELOAD_FLAG, FLY_COMPACT_THRESHOLD, FLY_COUNTRIES, FLY_EMOJI_BY_ID, FLY_EMOJI_CATEGORIES, FLY_EMOJI_CATEGORY_BY_ID, FLY_EMOJI_DEFAULT_CATEGORIES, FLY_EMOJI_PACK, FLY_EMOJI_PACK_MISSING_MESSAGE, FLY_EMOJI_PREVIEW_COUNT, FLY_EMPTY_VALUE, FLY_LOCALE_CATALOG, FLY_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_SEARCH_DEBOUNCE_MS, FLY_SKIN_TONES, FLY_STANDALONE_AUTH_CONFIG, FLY_THEME_MODE_IDS, 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, FlyDataTableComponent, FlyDatePipe, FlyDateTimePipe, FlyDebouncer, FlyDecimalNumberPipe, FlyDetailCardComponent, FlyDetailShellComponent, FlyDrawerComponent, FlyDurationPipe, FlyDynamicFormComponent, FlyEmojiPickerComponent, FlyFieldComponent, FlyFileUploadComponent, FlyFilterPanelComponent, FlyFormBannerComponent, FlyFormFooterComponent, FlyFormGridComponent, FlyFormSectionComponent, FlyFullNumberPipe, FlyGanttComponent, FlyHubClient, FlyIconButtonComponent, FlyIfAdminDirective, FlyIfRoleDirective, FlyImageUploadComponent, FlyLeaderboardComponent, FlyMetaListComponent, FlyModalComponent, FlyModerationQueueComponent, FlyModuleIconDirective, FlyPaginationComponent, FlyPeoplePickerComponent, FlyPointsTierComponent, FlyProgressComponent, FlyRelativeTimePipe, FlyRemoteContextService, FlyRemoteRouter, FlyRemoteRouterOutletComponent, FlySearchInputComponent, FlySectionHeaderComponent, FlySecureSrcDirective, FlySegmentedComponent, FlySelectComponent, FlySkeletonComponent, FlySliderComponent, FlySparklineComponent, FlySpinnerComponent, FlyStandaloneAuthCallbackComponent, FlyStandaloneAuthService, FlyStateMessageComponent, FlyDynamicFormComponent as FlySurveyFormComponent, FlyTabComponent, FlyTabsComponent, FlyTagsInputComponent, FlyThemeService, FlyTimePipe, FlyToastService, FlyToggleComponent, FlyTooltipDirective, FlyTreeNavComponent, FlyTypeaheadComponent, FlyUserDirectoryService, FlyWindowHelpService, FlyWindowTitleService, FlyosPendingLaunchesGlobalKey, FlyosShellHandlesLaunchRequestsGlobalKey, FlyosShellOwnsHistoryGlobalKey, GANTT_ZOOMS, I18nService, LAUNCH_CONTEXT, MessageBoxButtons, MessageBoxComponent, MessageBoxIcon, MessageBoxService, MockAuthService, 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, clampPage, clampSliderValue, connectRemoteLaunch, enterActivatesNatively, filterGroup, filterSuggestions, findLocaleByDialect, findLocaleByPrefix, firstEnabledIndex, firstModuleIndex, flattenModules, flyAdminGuard, flyCaptchaBase64Utf8, flyCaptchaBuildToken, flyCaptchaSha256Hex, flyCompactNumber, flyDebounced, flyDecimalNumber, flyDownloadBlob, flyDuration, flyEmojiFor, flyEmojiIsTonable, flyEmojiPackUrl, flyExportFileName, flyFirstEnabledIndex, flyFormatBytes, flyFormatDate, flyFormatDateTime, flyFormatTime, flyFullNumber, flyNextEnabledIndex, flyNextSegmentIndex, flyRelativeTime, flyResolveActiveTab, flyRoleGuard, flySignedCompact, flySkinToneLabelKey, flyStandaloneAuthGuard, flyStandaloneAuthInterceptor, flyToDateOnly, hasAnyRoleIn, healNativeFederationCacheOnce, initialExpanded, isAccentColor, isChunkLoadError, isFlyAuthStorePopulated, isNativeFederationCacheError, isRtlLocale, isRtlLocaleEntry, isValidCron, isValidSingleField, loadRemoteStyles, matchFlyRoutePattern, nextEnabledIndex, nextModuleIndex, nextSegmentIndex, nextSort, normalizeFlyTheme, normalizeRoles, overlayStack, parseCron, parseStepUpChallenge, parseTags, presenceColorFor, printConsoleSecurityWarning, provideFlyChunkReloadRecovery, provideFlyEmojiPack, provideFlyStandaloneAuth, reloadOnceForChunkError, requestAppLaunch, resolveActiveModule, resolveActiveSection, resolveActiveTab, resolveCellValue, resolveStateIcon, resolveStateMessageKey, restoreFocus, sameTags, sectionHintKey, sectionLayout, sliderTrackGradient, sparklinePath, sparklinePoints, stepUpInterceptor, stepUpReturnKey, trimAgentPayload, trimAgentString, unloadRemoteStyles, utf8ByteLength, validateAgentPayload, warnIfEmbeddedSessionMissing };
|
|
10477
|
-
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, CardLayout, ChartTerm, ChildWindowData, ChipTone, ConfirmKind, ConnectRemoteLaunchOptions, ContextMenuAlign, ContextMenuItem, ContextMenuSection, CronAdvancedFieldDef, CronMode, CronParts, CronWeekday, DesktopApp, DesktopAppCategory, DesktopAppKind, DetailSection, DialogResultWithAcknowledgement, EmbeddedSessionProbe, EntityLinkSelection, FilterGroup, FlyAchievementRow, 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, FlyDrawerSide, FlyDrawerSize, FlyEmojiCategory, FlyEmojiCell, FlyEmojiEntry, FlyEmojiPack, FlyEmojiPackEntry, FlyEmojiPackManifest, FlyEmojiPickerSize, FlyEmojiPickerTab, FlyEmojiSection, FlyFileInfo, FlyFileSelection, FlyFormAnswer, FlyFormAnswerValue, FlyFormDefinition, FlyFormFieldOptions, FlyFormOption, FlyFormQuestion, FlyFormQuestionType, FlyFormScoreDisplay, FlyLaunchEventDetail, FlyLaunchRequestDetail, FlyLeaderboardRow, FlyLiveRefreshOptions, FlyLocaleEntry, FlyMetaItem, FlyModerationLoadPageRequest, FlyModerationLockThreadRequest, FlyModerationOpenSubjectRequest, FlyModerationReport, FlyModerationReportPage, FlyModerationResolutionStatus, FlyModerationResolveRequest, FlyNavigableItem, FlyPeoplePickerMode, FlyPeoplePickerOption, FlyPeopleSearchFn, FlyPointsSummary, FlyRemoteContext, FlyRemoteMatch, FlyRemoteRoute, FlyRemoteRouteEventDetail, FlySearchExpandTrigger, FlySearchInputSize, FlySecureSrcState, FlySelectOption, FlySelectValue, FlySkeletonAnimation, FlySkeletonLayout, FlySkeletonShape, FlySkinTone, FlySort, FlyStandaloneAuthConfig, FlyFileSelection as FlySurveyFileSelection, FlyFormAnswer as FlySurveyFormAnswer, FlyFormAnswerValue as FlySurveyFormAnswerValue, FlyFormDefinition as FlySurveyFormDefinition, FlyFormFieldOptions as FlySurveyFormFieldOptions, FlyFormOption as FlySurveyFormOption, FlyFormQuestion as FlySurveyFormQuestion, FlyFormQuestionType as FlySurveyQuestionType, FlyThemeMode, FlyTooltipPlacement, FlyTreeNavNode, FlyTypeaheadOption, FlyWindowHelpHintEventDetail, FlyWindowHelpPublisher, FlyWindowPageTitleEventDetail, FlyWindowTitlePublisher, FlyosPendingLaunches, FocusRestore, FormBannerKind, GanttDependency, GanttDependencyCreate, GanttRow, GanttRowDatesChange, GanttRowKind, GanttZoom, IconButtonVariant, LaunchContext, LoadBundleOptions, LookupDescriptor, LookupHandle, LookupRegistration, LookupResult, LookupSearch, 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, ToastAction, ToastEntry, ToastOptions, ToastVariant, User, UserPrincipal, UsersTerm, WindowHelpHint, WindowInstance, WindowState };
|
|
10669
|
+
export { AGENT_DRAG_MIME, AGENT_PAYLOAD_VERSION, APP_LOOKUP, AUDIENCE_ERROR_CODES, AUDIENCE_LIMITS, AUDIENCE_PRESETS, AUDIENCE_TERM_KINDS, AgentActionBus, AgentActionUnsupportedDispatchError, AgentCommandRegistry, AgentDropRegistry, AgentFlightAnimator, AgentLookupRegistry, AgentPayloadOversizeError, AudienceBuilderComponent, AuthService, BilingualFieldComponent, CRON_MODES, CRON_WEEKDAYS, ContextMenuComponent, DEFAULT_AGENT_PAYLOAD_LIMITS, DEFAULT_FLY_THEME_MODE, DS_BASELINE_LOCALES, DashboardKpiComponent, DialogResult, EntityLookupComponent, FLYOS_LAUNCH_EVENT, FLYOS_LAUNCH_REQUEST_EVENT, FLYOS_REMOTE_ROUTE_EVENT, FLY_ACCENT_PROPERTY, FLY_ADMIN_ROLES, FLY_CHUNK_RELOAD_FLAG, FLY_COMPACT_THRESHOLD, FLY_COUNTRIES, FLY_EMOJI_BY_ID, FLY_EMOJI_CATEGORIES, FLY_EMOJI_CATEGORY_BY_ID, FLY_EMOJI_DEFAULT_CATEGORIES, FLY_EMOJI_PACK, FLY_EMOJI_PACK_MISSING_MESSAGE, FLY_EMOJI_PREVIEW_COUNT, FLY_EMPTY_VALUE, FLY_LOCALE_CATALOG, FLY_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_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, FlyDataTableComponent, FlyDatePipe, FlyDateTimePipe, FlyDebouncer, FlyDecimalNumberPipe, FlyDetailCardComponent, FlyDetailShellComponent, FlyDrawerComponent, FlyDurationPipe, FlyDynamicFormComponent, FlyEmojiPickerComponent, FlyFieldComponent, FlyFileDownloadService, FlyFileUploadComponent, FlyFilterPanelComponent, FlyFormBannerComponent, FlyFormFooterComponent, FlyFormGridComponent, FlyFormSectionComponent, FlyFullNumberPipe, FlyGanttComponent, FlyHubClient, FlyIconButtonComponent, FlyIfAdminDirective, FlyIfRoleDirective, FlyImageUploadComponent, FlyLeaderboardComponent, FlyMetaListComponent, FlyModalComponent, FlyModerationQueueComponent, FlyModuleIconDirective, FlyPaginationComponent, FlyPeoplePickerComponent, FlyPointsTierComponent, FlyProgressComponent, FlyRelativeTimePipe, FlyRemoteContextService, FlyRemoteRouter, FlyRemoteRouterOutletComponent, FlySearchInputComponent, FlySectionHeaderComponent, FlySecureSrcDirective, FlySegmentedComponent, FlySelectComponent, FlySkeletonComponent, FlySliderComponent, FlySparklineComponent, FlySpinnerComponent, FlyStandaloneAuthCallbackComponent, FlyStandaloneAuthService, FlyStateMessageComponent, FlyDynamicFormComponent as FlySurveyFormComponent, FlyTabComponent, FlyTabsComponent, FlyTagsInputComponent, FlyThemeService, FlyTimePipe, FlyToastService, FlyToggleComponent, FlyTooltipDirective, FlyTreeNavComponent, FlyTypeaheadComponent, FlyUserDirectoryService, FlyWindowHelpService, FlyWindowTitleService, FlyosPendingLaunchesGlobalKey, FlyosShellHandlesLaunchRequestsGlobalKey, FlyosShellOwnsHistoryGlobalKey, GANTT_ZOOMS, I18nService, LAUNCH_CONTEXT, MessageBoxButtons, MessageBoxComponent, MessageBoxIcon, MessageBoxService, MockAuthService, 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, clampPage, clampSliderValue, connectRemoteLaunch, enterActivatesNatively, filterGroup, filterSuggestions, findLocaleByDialect, findLocaleByPrefix, firstEnabledIndex, firstModuleIndex, flattenModules, flyAdminGuard, flyApiErrorMessage, flyCaptchaBase64Utf8, flyCaptchaBuildToken, flyCaptchaSha256Hex, flyCompactNumber, flyDebounced, flyDecimalNumber, flyDownloadBlob, flyDuration, flyEmojiFor, flyEmojiIsTonable, flyEmojiPackUrl, flyExportFileName, flyFirstEnabledIndex, flyFormatBytes, flyFormatDate, flyFormatDateTime, flyFormatTime, flyFullNumber, flyNextEnabledIndex, flyNextSegmentIndex, flyRelativeTime, flyResolveActiveTab, flyRoleGuard, flyScanPendingDelayMs, flyScanRetry, flySignedCompact, flySkinToneLabelKey, flyStandaloneAuthGuard, flyStandaloneAuthInterceptor, flyToDateOnly, flyToPage, flyUnwrap, flyUnwrapLenient, hasAnyRoleIn, healNativeFederationCacheOnce, initialExpanded, isAccentColor, isChunkLoadError, isFlyAuthStorePopulated, isNativeFederationCacheError, isRtlLocale, isRtlLocaleEntry, isValidCron, isValidSingleField, loadRemoteStyles, matchFlyRoutePattern, nextEnabledIndex, nextModuleIndex, nextSegmentIndex, nextSort, normalizeFlyTheme, normalizeRoles, overlayStack, parseCron, parseStepUpChallenge, parseTags, presenceColorFor, printConsoleSecurityWarning, provideFlyChunkReloadRecovery, provideFlyEmojiPack, provideFlyStandaloneAuth, reloadOnceForChunkError, requestAppLaunch, resolveActiveModule, resolveActiveSection, resolveActiveTab, resolveCellValue, resolveStateIcon, resolveStateMessageKey, restoreFocus, sameTags, sectionHintKey, sectionLayout, sliderTrackGradient, sparklinePath, sparklinePoints, stepUpInterceptor, stepUpReturnKey, trimAgentPayload, trimAgentString, unloadRemoteStyles, utf8ByteLength, validateAgentPayload, warnIfEmbeddedSessionMissing };
|
|
10670
|
+
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, CardLayout, ChartTerm, ChildWindowData, ChipTone, ConfirmKind, ConnectRemoteLaunchOptions, ContextMenuAlign, ContextMenuItem, ContextMenuSection, CronAdvancedFieldDef, CronMode, CronParts, CronWeekday, DesktopApp, DesktopAppCategory, DesktopAppKind, DetailSection, DialogResultWithAcknowledgement, EmbeddedSessionProbe, EntityLinkSelection, FilterGroup, FlyAchievementRow, FlyApiError, FlyApiResponse, FlyAppHomeLayout, FlyAppModule, FlyAppModuleSection, FlyAuthRefreshPayload, FlyAuthStoreReadable, FlyBadgeTile, FlyBreadcrumbItem, FlyCaptchaChallenge, FlyCaptchaSolution, FlyCaptchaState, FlyCellContext, FlyColumn, FlyColumnKind, FlyComment, FlyCommentDeleteRequest, FlyCommentEditRequest, FlyCommentLoadMoreRequest, FlyCommentLoadRepliesRequest, FlyCommentLockToggleRequest, FlyCommentPage, FlyCommentReportReason, FlyCommentReportRequest, FlyCommentReportStatus, FlyCommentSubmitRequest, FlyCountry, FlyDrawerSide, FlyDrawerSize, FlyEmojiCategory, FlyEmojiCell, FlyEmojiEntry, FlyEmojiPack, FlyEmojiPackEntry, FlyEmojiPackManifest, FlyEmojiPickerSize, FlyEmojiPickerTab, FlyEmojiSection, FlyFileInfo, FlyFileSelection, FlyFormAnswer, FlyFormAnswerValue, FlyFormDefinition, FlyFormFieldOptions, FlyFormOption, FlyFormQuestion, FlyFormQuestionType, FlyFormScoreDisplay, FlyLaunchEventDetail, FlyLaunchRequestDetail, FlyLeaderboardRow, FlyLiveRefreshOptions, FlyLocaleEntry, FlyMetaItem, FlyModerationLoadPageRequest, FlyModerationLockThreadRequest, FlyModerationOpenSubjectRequest, FlyModerationReport, FlyModerationReportPage, FlyModerationResolutionStatus, FlyModerationResolveRequest, FlyNavigableItem, FlyPageMeta, FlyPageResult, FlyPaged, FlyPeoplePickerMode, FlyPeoplePickerOption, FlyPeopleSearchFn, FlyPointsSummary, FlyRemoteContext, FlyRemoteMatch, FlyRemoteRoute, FlyRemoteRouteEventDetail, FlySearchExpandTrigger, FlySearchInputSize, FlySecureSrcState, FlySelectOption, FlySelectValue, FlySkeletonAnimation, FlySkeletonLayout, FlySkeletonShape, FlySkinTone, FlySort, FlyStandaloneAuthConfig, FlyFileSelection as FlySurveyFileSelection, FlyFormAnswer as FlySurveyFormAnswer, FlyFormAnswerValue as FlySurveyFormAnswerValue, FlyFormDefinition as FlySurveyFormDefinition, FlyFormFieldOptions as FlySurveyFormFieldOptions, FlyFormOption as FlySurveyFormOption, FlyFormQuestion as FlySurveyFormQuestion, FlyFormQuestionType as FlySurveyQuestionType, FlyThemeMode, FlyTooltipPlacement, FlyTreeNavNode, FlyTypeaheadOption, FlyWindowHelpHintEventDetail, FlyWindowHelpPublisher, FlyWindowPageTitleEventDetail, FlyWindowTitlePublisher, FlyosPendingLaunches, FocusRestore, FormBannerKind, GanttDependency, GanttDependencyCreate, GanttRow, GanttRowDatesChange, GanttRowKind, GanttZoom, IconButtonVariant, LaunchContext, LoadBundleOptions, LookupDescriptor, LookupHandle, LookupRegistration, LookupResult, LookupSearch, 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, ToastAction, ToastEntry, ToastOptions, ToastVariant, User, UserPrincipal, UsersTerm, WindowHelpHint, WindowInstance, WindowState };
|
|
10478
10671
|
//# sourceMappingURL=flyos-design-system.d.ts.map
|