@mohamedatia/fly-design-system 1.5.0 → 1.9.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/mohamedatia-fly-design-system.mjs +705 -16
- package/fesm2022/mohamedatia-fly-design-system.mjs.map +1 -1
- package/package.json +6 -5
- package/scss/_fly-theme.scss +2 -2
- package/scss/_theme-auto.scss +4 -3
- package/scss/_theme-dark.scss +77 -4
- package/scss/_theme-light.scss +11 -3
- package/scss/_theme-spatial-vars.scss +66 -0
- package/scss/_theme-spatial.scss +22 -0
- package/types/mohamedatia-fly-design-system.d.ts +201 -8
- package/types/mohamedatia-fly-design-system.d.ts.map +1 -1
- package/scss/_theme-dark-vars.scss +0 -57
- package/scss/_theme-transparent.scss +0 -41
package/scss/_theme-dark.scss
CHANGED
|
@@ -1,6 +1,79 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
//
|
|
1
|
+
// ─── Dark theme (`html.dark-theme`, persisted `dark`) ────────────────────────
|
|
2
|
+
// Shell Appearance label "Dark" / i18n `settings.theme.dark`.
|
|
3
|
+
// **Opaque** dark UI (no acrylic): solid surfaces + zero blur tokens.
|
|
4
4
|
html.dark-theme {
|
|
5
|
-
|
|
5
|
+
/* Native selects / scrollbars follow OS form appearance; keep in sync with light-on-glass labels. */
|
|
6
|
+
color-scheme: dark;
|
|
7
|
+
--primary-light: rgba(232, 115, 42, 0.2);
|
|
8
|
+
|
|
9
|
+
--material-glass: #1c1c1f;
|
|
10
|
+
--material-glass-blur: 0px;
|
|
11
|
+
--material-glass-stroke: rgba(255, 255, 255, 0.14);
|
|
12
|
+
|
|
13
|
+
--app-content-plate: #121214;
|
|
14
|
+
|
|
15
|
+
--surface-ground: #0e0e10;
|
|
16
|
+
--surface-section: #161618;
|
|
17
|
+
--surface-card: #1c1c1f;
|
|
18
|
+
--surface-border: rgba(255, 255, 255, 0.1);
|
|
19
|
+
--surface-hover: rgba(255, 255, 255, 0.08);
|
|
20
|
+
|
|
21
|
+
/* `:root` / `html.light-theme` set dark `--label-*`; dark shell must force light-on-dark. */
|
|
22
|
+
--label-primary: rgba(255, 255, 255, 0.96);
|
|
23
|
+
--label-secondary: rgba(255, 255, 255, 0.65);
|
|
24
|
+
--label-tertiary: rgba(255, 255, 255, 0.42);
|
|
25
|
+
--separator-primary: rgba(255, 255, 255, 0.14);
|
|
26
|
+
--separator: var(--separator-primary);
|
|
27
|
+
--fill-secondary: rgba(255, 255, 255, 0.1);
|
|
28
|
+
--fill-tertiary: rgba(255, 255, 255, 0.06);
|
|
29
|
+
|
|
30
|
+
--text-color: var(--label-primary);
|
|
31
|
+
--text-color-secondary: var(--label-secondary);
|
|
32
|
+
|
|
33
|
+
--fly-color-surface: #1c1c1f;
|
|
34
|
+
--fly-color-surface-alt: #242428;
|
|
35
|
+
--fly-color-border: rgba(255, 255, 255, 0.14);
|
|
36
|
+
--fly-color-text-muted: var(--text-color-secondary);
|
|
37
|
+
--fly-color-primary: var(--primary-color);
|
|
38
|
+
--fly-color-primary-hover: var(--primary-hover);
|
|
39
|
+
--fly-color-danger: var(--system-red);
|
|
40
|
+
--fly-shadow-md: 0 4px 16px rgba(0, 0, 0, 0.35);
|
|
41
|
+
|
|
42
|
+
--glass-bg: #161618;
|
|
43
|
+
--glass-bg-elevated: #1e1e22;
|
|
44
|
+
--glass-blur: 0px;
|
|
45
|
+
--glass-border: var(--material-glass-stroke);
|
|
46
|
+
--glass-shadow: 0 12px 48px rgba(0, 0, 0, 0.38);
|
|
47
|
+
--glass-inner-glow: var(--material-glass-specular);
|
|
48
|
+
|
|
49
|
+
--window-bg: #141416;
|
|
50
|
+
--window-radius: 24px;
|
|
51
|
+
--window-blur: 0px;
|
|
52
|
+
--window-backdrop-saturate: 100%;
|
|
53
|
+
--window-shadow: 0 36px 120px rgba(0, 0, 0, 0.38);
|
|
54
|
+
--window-border: var(--material-glass-stroke);
|
|
55
|
+
--window-content-scrim: transparent;
|
|
56
|
+
|
|
57
|
+
--titlebar-bg: transparent;
|
|
58
|
+
|
|
59
|
+
--dock-bg: #121214;
|
|
60
|
+
--dock-border: var(--material-glass-stroke);
|
|
61
|
+
--dock-blur: 0px;
|
|
62
|
+
|
|
63
|
+
--menubar-bg: #0e0e10;
|
|
64
|
+
--menubar-border: var(--material-glass-stroke);
|
|
65
|
+
--menubar-text: var(--label-primary);
|
|
66
|
+
--menubar-blur: 0px;
|
|
67
|
+
|
|
68
|
+
--sidebar-bg: #121214;
|
|
69
|
+
--sidebar-border: var(--material-glass-stroke);
|
|
70
|
+
|
|
71
|
+
--focus-ring: rgba(232, 115, 42, 0.6);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
@media (prefers-reduced-transparency: reduce) {
|
|
75
|
+
html.dark-theme {
|
|
76
|
+
/* Already opaque / no backdrop blur; keep tokens stable for OS setting. */
|
|
77
|
+
--window-backdrop-saturate: 100%;
|
|
78
|
+
}
|
|
6
79
|
}
|
package/scss/_theme-light.scss
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// ─── Light Theme (default) ───────────────────────────────────────────────────
|
|
2
2
|
:root,
|
|
3
3
|
html.light-theme {
|
|
4
|
+
color-scheme: light;
|
|
4
5
|
--primary-color: #E8732A;
|
|
5
6
|
--primary-hover: #D4631E;
|
|
6
7
|
--primary-light: rgba(232, 115, 42, 0.12);
|
|
@@ -31,15 +32,18 @@ html.light-theme {
|
|
|
31
32
|
--card-gap: 14px;
|
|
32
33
|
|
|
33
34
|
--window-bg: var(--material-glass);
|
|
34
|
-
--window-radius:
|
|
35
|
+
--window-radius: 24px;
|
|
35
36
|
--window-blur: var(--material-glass-blur);
|
|
37
|
+
--window-backdrop-saturate: 125%;
|
|
36
38
|
--window-shadow: 0 24px 80px rgba(0, 0, 0, 0.12);
|
|
37
39
|
--window-border: var(--material-glass-stroke);
|
|
38
40
|
--window-specular: var(--material-glass-specular);
|
|
41
|
+
--window-content-scrim: transparent;
|
|
42
|
+
--app-content-plate: transparent;
|
|
39
43
|
|
|
40
44
|
--titlebar-bg: transparent;
|
|
41
|
-
--titlebar-height:
|
|
42
|
-
--titlebar-padding: 0
|
|
45
|
+
--titlebar-height: 44px;
|
|
46
|
+
--titlebar-padding: 0 14px;
|
|
43
47
|
|
|
44
48
|
--dock-bg: rgba(255, 255, 255, 0.15);
|
|
45
49
|
--dock-border: rgba(255, 255, 255, 0.3);
|
|
@@ -59,6 +63,10 @@ html.light-theme {
|
|
|
59
63
|
|
|
60
64
|
--focus-ring: rgba(232, 115, 42, 0.5);
|
|
61
65
|
|
|
66
|
+
// Segmented `.vos-btn.selected` / `.active` (Settings theme row, clock, weather, etc.): dark pill on light UI.
|
|
67
|
+
--btn-selected-bg: #111827;
|
|
68
|
+
--btn-selected-text: #ffffff;
|
|
69
|
+
|
|
62
70
|
// Business Apps / opaque content: :root visionOS tokens use white labels; override for light surfaces.
|
|
63
71
|
--label-primary: #111827;
|
|
64
72
|
--label-secondary: rgba(17, 24, 39, 0.65);
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
// ─── Spatial Theme Variables (shared mixin to avoid duplication) ─────────────
|
|
2
|
+
// Used by `html.spatial-theme` (Settings label **Spatial**, persisted `spatial`):
|
|
3
|
+
// **silver frosted glass** — cool translucent plates + blur over the wallpaper.
|
|
4
|
+
@mixin spatial-theme-vars {
|
|
5
|
+
--primary-light: rgba(232, 115, 42, 0.18);
|
|
6
|
+
|
|
7
|
+
--surface-ground: rgba(12, 14, 20, 0.52);
|
|
8
|
+
--surface-section: rgba(218, 226, 238, 0.12);
|
|
9
|
+
--surface-card: rgba(208, 218, 234, 0.14);
|
|
10
|
+
--surface-border: rgba(255, 255, 255, 0.16);
|
|
11
|
+
--surface-hover: rgba(255, 255, 255, 0.1);
|
|
12
|
+
--text-color: #f2f2f7;
|
|
13
|
+
--text-color-secondary: rgba(242, 242, 247, 0.65);
|
|
14
|
+
|
|
15
|
+
--glass-bg: rgba(200, 212, 228, 0.28);
|
|
16
|
+
--glass-bg-elevated: rgba(225, 232, 245, 0.24);
|
|
17
|
+
--glass-border: rgba(255, 255, 255, 0.2);
|
|
18
|
+
--glass-blur: 52px;
|
|
19
|
+
--glass-shadow: 0 12px 48px rgba(0, 0, 0, 0.32);
|
|
20
|
+
--glass-inner-glow: inset 0 1px 0 rgba(255, 255, 255, 0.22);
|
|
21
|
+
|
|
22
|
+
--window-bg: rgba(210, 220, 236, 0.48);
|
|
23
|
+
--window-radius: 24px;
|
|
24
|
+
--window-blur: 56px;
|
|
25
|
+
--window-backdrop-saturate: 175%;
|
|
26
|
+
--window-shadow: 0 28px 90px rgba(0, 0, 0, 0.38);
|
|
27
|
+
--window-border: rgba(255, 255, 255, 0.22);
|
|
28
|
+
--window-content-scrim: rgba(6, 8, 12, 0.50);
|
|
29
|
+
--app-content-plate: rgba(14, 16, 22, 0.58);
|
|
30
|
+
|
|
31
|
+
--titlebar-bg: transparent;
|
|
32
|
+
--titlebar-height: 44px;
|
|
33
|
+
--titlebar-padding: 0 14px;
|
|
34
|
+
|
|
35
|
+
--dock-bg: rgba(198, 210, 226, 0.15);
|
|
36
|
+
--dock-border: rgba(255, 255, 255, 0.18);
|
|
37
|
+
--dock-blur: 48px;
|
|
38
|
+
|
|
39
|
+
--menubar-bg: rgba(190, 204, 222, 0.14);
|
|
40
|
+
--menubar-border: rgba(255, 255, 255, 0.14);
|
|
41
|
+
--menubar-blur: 44px;
|
|
42
|
+
--menubar-text: rgba(242, 242, 247, 1);
|
|
43
|
+
|
|
44
|
+
--sidebar-bg: rgba(205, 216, 232, 0.24);
|
|
45
|
+
--sidebar-border: rgba(255, 255, 255, 0.16);
|
|
46
|
+
|
|
47
|
+
--focus-ring: rgba(232, 115, 42, 0.6);
|
|
48
|
+
|
|
49
|
+
--label-primary: var(--text-color);
|
|
50
|
+
--label-secondary: var(--text-color-secondary);
|
|
51
|
+
--label-tertiary: rgba(242, 242, 247, 0.42);
|
|
52
|
+
--separator-primary: rgba(255, 255, 255, 0.16);
|
|
53
|
+
--separator: var(--separator-primary);
|
|
54
|
+
--fill-secondary: rgba(255, 255, 255, 0.12);
|
|
55
|
+
--fill-tertiary: rgba(255, 255, 255, 0.07);
|
|
56
|
+
--material-glass: rgba(212, 222, 236, 0.30);
|
|
57
|
+
|
|
58
|
+
--fly-color-surface: rgba(26, 30, 40, 0.45);
|
|
59
|
+
--fly-color-surface-alt: rgba(34, 40, 52, 0.5);
|
|
60
|
+
--fly-color-border: rgba(255, 255, 255, 0.14);
|
|
61
|
+
--fly-color-text-muted: var(--text-color-secondary);
|
|
62
|
+
--fly-color-primary: var(--primary-color);
|
|
63
|
+
--fly-color-primary-hover: var(--primary-hover);
|
|
64
|
+
--fly-color-danger: var(--system-red);
|
|
65
|
+
--fly-shadow-md: 0 4px 20px rgba(0, 0, 0, 0.35);
|
|
66
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
@use 'theme-spatial-vars' as *;
|
|
2
|
+
|
|
3
|
+
// ─── Spatial Theme — applied to <html> via FlyThemeService (shell or standalone) ─
|
|
4
|
+
// Settings label **Spatial**: silver frosted glass (`spatial-theme-vars`).
|
|
5
|
+
html.spatial-theme {
|
|
6
|
+
color-scheme: dark;
|
|
7
|
+
@include spatial-theme-vars;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
@media (prefers-reduced-transparency: reduce) {
|
|
11
|
+
html.spatial-theme {
|
|
12
|
+
--material-glass: rgba(212, 222, 236, 0.40);
|
|
13
|
+
--window-bg: rgba(210, 220, 236, 0.62);
|
|
14
|
+
--window-blur: 22px;
|
|
15
|
+
--window-backdrop-saturate: 125%;
|
|
16
|
+
--window-content-scrim: rgba(6, 8, 12, 0.65);
|
|
17
|
+
--glass-blur: 22px;
|
|
18
|
+
--dock-blur: 20px;
|
|
19
|
+
--menubar-blur: 20px;
|
|
20
|
+
--app-content-plate: rgba(14, 16, 22, 0.78);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { Type, InjectionToken, PipeTransform, signal, Signal, AfterViewInit, OnDestroy, OnInit, EventEmitter } from '@angular/core';
|
|
2
|
+
import { Type, InjectionToken, PipeTransform, signal, Signal, AfterViewInit, OnDestroy, OnInit, EventEmitter, ElementRef } from '@angular/core';
|
|
3
3
|
import { Observable } from 'rxjs';
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -60,6 +60,10 @@ interface WindowInstance {
|
|
|
60
60
|
childData?: ChildWindowData;
|
|
61
61
|
/** Populated when remote `loadComponent()` fails (e.g. federation). */
|
|
62
62
|
remoteLoadError?: string;
|
|
63
|
+
/** When true, the shell draws a block overlay over `.window-content` (see `FlyBlockUiComponent`). */
|
|
64
|
+
contentUiBlocked?: boolean;
|
|
65
|
+
/** i18n key for block overlay label; shell defaults to `common.loading` when unset. */
|
|
66
|
+
contentUiBlockMessageKey?: string;
|
|
63
67
|
}
|
|
64
68
|
declare const WINDOW_DATA: InjectionToken<WindowInstance>;
|
|
65
69
|
|
|
@@ -104,6 +108,13 @@ interface ShareUserResult {
|
|
|
104
108
|
interface ShareOuNode {
|
|
105
109
|
id: string;
|
|
106
110
|
displayName: string;
|
|
111
|
+
/** 0 = root. When set, share panel indents rows for hierarchy. */
|
|
112
|
+
depth?: number;
|
|
113
|
+
}
|
|
114
|
+
/** Option for OU tree source: `id` null = default/official org chart. */
|
|
115
|
+
interface ShareOrgChartOption {
|
|
116
|
+
id: string | null;
|
|
117
|
+
name: string;
|
|
107
118
|
}
|
|
108
119
|
interface SharePanelLevelOption {
|
|
109
120
|
value: string;
|
|
@@ -239,13 +250,20 @@ declare class I18nService {
|
|
|
239
250
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<I18nService>;
|
|
240
251
|
}
|
|
241
252
|
|
|
242
|
-
|
|
253
|
+
/** Single source of truth for persisted / API theme strings. */
|
|
254
|
+
declare const FLY_THEME_MODE_IDS: readonly ["light", "spatial", "dark"];
|
|
255
|
+
type FlyThemeMode = (typeof FLY_THEME_MODE_IDS)[number];
|
|
256
|
+
/** Factory default: `dark` (opaque dark / `html.dark-theme`); shell i18n `settings.theme.dark`. Keep in sync with `UserSettings` defaults. */
|
|
257
|
+
declare const DEFAULT_FLY_THEME_MODE: FlyThemeMode;
|
|
258
|
+
/** Coerce unknown values (localStorage, API) to a valid theme mode. */
|
|
259
|
+
declare function normalizeFlyTheme(value: unknown): FlyThemeMode;
|
|
243
260
|
/**
|
|
244
|
-
* Applies `html.light-theme` / `html.
|
|
261
|
+
* Applies `html.light-theme` / `html.spatial-theme` / `html.dark-theme` for DS SCSS.
|
|
245
262
|
* Shell and standalone Business Apps use the same service (federation singleton when shared).
|
|
246
263
|
*/
|
|
247
264
|
declare class FlyThemeService {
|
|
248
|
-
readonly
|
|
265
|
+
private readonly platformId;
|
|
266
|
+
readonly theme: _angular_core.WritableSignal<"light" | "spatial" | "dark">;
|
|
249
267
|
applyTheme(mode: FlyThemeMode): void;
|
|
250
268
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FlyThemeService, never>;
|
|
251
269
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<FlyThemeService>;
|
|
@@ -280,6 +298,13 @@ declare abstract class WindowManagerService {
|
|
|
280
298
|
abstract openChildWindow(options: OpenWindowOptions): void;
|
|
281
299
|
abstract closeWindow(windowId: string): void;
|
|
282
300
|
abstract focusWindow(windowId: string): void;
|
|
301
|
+
/**
|
|
302
|
+
* Shell: increments per-window depth and shows content block UI.
|
|
303
|
+
* Standalone / no host: no-op.
|
|
304
|
+
*/
|
|
305
|
+
beginContentUiBlock(_windowId: string, _messageKey?: string): void;
|
|
306
|
+
/** Shell: decrements depth; clears block when depth reaches 0. Standalone: no-op. */
|
|
307
|
+
endContentUiBlock(_windowId: string): void;
|
|
283
308
|
}
|
|
284
309
|
/**
|
|
285
310
|
* No-op fallback implementation used when running a Business App in
|
|
@@ -358,6 +383,11 @@ declare class MockAuthService {
|
|
|
358
383
|
readonly hasPendingTwoFactor: Signal<boolean>;
|
|
359
384
|
/** Always false in mock mode — auth is pre-populated synchronously. */
|
|
360
385
|
readonly initializing: Signal<boolean>;
|
|
386
|
+
/**
|
|
387
|
+
* Shell and guards may read this flag; real auth uses `localStorage` `fly_had_session`.
|
|
388
|
+
* Default false — override in the app’s `auth.service.mock.ts` if needed.
|
|
389
|
+
*/
|
|
390
|
+
get hadPriorSession(): boolean;
|
|
361
391
|
constructor();
|
|
362
392
|
/** Override in subclass to supply app-specific mock data. */
|
|
363
393
|
protected getConfig(): MockAuthConfig;
|
|
@@ -491,7 +521,18 @@ declare class SharePanelComponent implements OnInit {
|
|
|
491
521
|
/** Load current shares / permissions (host resolves display names when possible). */
|
|
492
522
|
loadPermissions: () => Observable<SharePermissionEntry[]>;
|
|
493
523
|
searchUsers: (query: string) => Observable<ShareUserResult[]>;
|
|
494
|
-
|
|
524
|
+
/**
|
|
525
|
+
* Load OU hierarchy for sharing. `chartId` is null for the default/official tree;
|
|
526
|
+
* non-null for an alternative chart.
|
|
527
|
+
*/
|
|
528
|
+
loadOuTree: (chartId: string | null) => Observable<ShareOuNode[]>;
|
|
529
|
+
/** Chart selector options; first entry should be the default chart (`id: null`). */
|
|
530
|
+
loadChartOptions: () => Observable<ShareOrgChartOption[]>;
|
|
531
|
+
/**
|
|
532
|
+
* Labels from the default (official) OU tree for stable display names on OU grants
|
|
533
|
+
* when the picker shows an alternative chart.
|
|
534
|
+
*/
|
|
535
|
+
loadOuLabelMap: () => Observable<Record<string, string>>;
|
|
495
536
|
grantToUser: (userId: string, level: string, applyToChildren: boolean) => Observable<void>;
|
|
496
537
|
grantToOu: (ouId: string, level: string, applyToChildren: boolean) => Observable<void>;
|
|
497
538
|
updatePermission: (id: string, level: string) => Observable<void>;
|
|
@@ -513,8 +554,15 @@ declare class SharePanelComponent implements OnInit {
|
|
|
513
554
|
searchResults: _angular_core.WritableSignal<ShareUserResult[]>;
|
|
514
555
|
ouTree: _angular_core.WritableSignal<ShareOuNode[]>;
|
|
515
556
|
showOuPicker: _angular_core.WritableSignal<boolean>;
|
|
557
|
+
chartOptions: _angular_core.WritableSignal<ShareOrgChartOption[]>;
|
|
558
|
+
selectedOrgChartId: _angular_core.WritableSignal<string | null>;
|
|
559
|
+
/** Default-tree id → display name for permission rows (OU grants). */
|
|
560
|
+
private readonly ouLabelById;
|
|
516
561
|
private searchTimeout;
|
|
562
|
+
/** Emits after chart options load; further emissions on user chart changes (no initial null). */
|
|
563
|
+
private readonly selectedChartId$;
|
|
517
564
|
ngOnInit(): void;
|
|
565
|
+
onOrgChartSelectChange(chartId: string | null): void;
|
|
518
566
|
get levelOptions(): SharePanelLevelOption[];
|
|
519
567
|
refreshPermissions(): void;
|
|
520
568
|
onSearchInput(): void;
|
|
@@ -523,11 +571,156 @@ declare class SharePanelComponent implements OnInit {
|
|
|
523
571
|
onUpdateLevel(perm: SharePermissionEntry, level: string): void;
|
|
524
572
|
onRevokePermission(perm: SharePermissionEntry): void;
|
|
525
573
|
getPermIcon(perm: SharePermissionEntry): string;
|
|
574
|
+
/** Logical start padding for OU hierarchy (roots align with section padding). */
|
|
575
|
+
ouIndentStartPx(ou: ShareOuNode): number;
|
|
526
576
|
getPermLabel(perm: SharePermissionEntry): string;
|
|
527
577
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SharePanelComponent, never>;
|
|
528
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SharePanelComponent, "fly-share-panel", never, { "targetName": { "alias": "targetName"; "required": false; }; "titleKey": { "alias": "titleKey"; "required": false; }; "loadPermissions": { "alias": "loadPermissions"; "required": true; }; "searchUsers": { "alias": "searchUsers"; "required": true; }; "loadOuTree": { "alias": "loadOuTree"; "required": true; }; "grantToUser": { "alias": "grantToUser"; "required": true; }; "grantToOu": { "alias": "grantToOu"; "required": true; }; "updatePermission": { "alias": "updatePermission"; "required": true; }; "revokePermission": { "alias": "revokePermission"; "required": true; }; "showApplyToChildren": { "alias": "showApplyToChildren"; "required": false; }; "permissionLevels": { "alias": "permissionLevels"; "required": false; }; "everyoneLabelKey": { "alias": "everyoneLabelKey"; "required": false; }; }, { "close": "close"; }, never, never, true, never>;
|
|
578
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SharePanelComponent, "fly-share-panel", never, { "targetName": { "alias": "targetName"; "required": false; }; "titleKey": { "alias": "titleKey"; "required": false; }; "loadPermissions": { "alias": "loadPermissions"; "required": true; }; "searchUsers": { "alias": "searchUsers"; "required": true; }; "loadOuTree": { "alias": "loadOuTree"; "required": true; }; "loadChartOptions": { "alias": "loadChartOptions"; "required": true; }; "loadOuLabelMap": { "alias": "loadOuLabelMap"; "required": true; }; "grantToUser": { "alias": "grantToUser"; "required": true; }; "grantToOu": { "alias": "grantToOu"; "required": true; }; "updatePermission": { "alias": "updatePermission"; "required": true; }; "revokePermission": { "alias": "revokePermission"; "required": true; }; "showApplyToChildren": { "alias": "showApplyToChildren"; "required": false; }; "permissionLevels": { "alias": "permissionLevels"; "required": false; }; "everyoneLabelKey": { "alias": "everyoneLabelKey"; "required": false; }; }, { "close": "close"; }, never, never, true, never>;
|
|
579
|
+
}
|
|
580
|
+
|
|
581
|
+
/** Full-bleed loading overlay for window content (shell) or embedded hosts. */
|
|
582
|
+
declare class FlyBlockUiComponent {
|
|
583
|
+
/** When false, the overlay is not rendered (host may use @if instead). */
|
|
584
|
+
active: _angular_core.InputSignal<boolean>;
|
|
585
|
+
/** i18n key for status text; empty uses `common.loading`. */
|
|
586
|
+
messageKey: _angular_core.InputSignal<string>;
|
|
587
|
+
readonly resolvedMessageKey: _angular_core.Signal<string>;
|
|
588
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FlyBlockUiComponent, never>;
|
|
589
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FlyBlockUiComponent, "fly-block-ui", never, { "active": { "alias": "active"; "required": true; "isSignal": true; }; "messageKey": { "alias": "messageKey"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
/**
|
|
593
|
+
* Metadata returned by Files Manager after a successful upload or metadata query.
|
|
594
|
+
* Mirrors the `FileMetadataDto` shape from `GET /api/files/{id}` and `POST /api/files/upload`.
|
|
595
|
+
*/
|
|
596
|
+
interface FlyFileInfo {
|
|
597
|
+
id: string;
|
|
598
|
+
fileName: string;
|
|
599
|
+
contentType: string;
|
|
600
|
+
sizeBytes: number;
|
|
601
|
+
sourceApp: string;
|
|
602
|
+
sourceEntityType?: string;
|
|
603
|
+
sourceEntityId?: string;
|
|
604
|
+
uploadedByUserId?: string;
|
|
605
|
+
correlationId?: string;
|
|
606
|
+
isConfirmed: boolean;
|
|
607
|
+
version: number;
|
|
608
|
+
scanStatus: string;
|
|
609
|
+
createdAt: string;
|
|
610
|
+
folderId?: string;
|
|
611
|
+
hasErrors: boolean;
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
/**
|
|
615
|
+
* Image upload component with built-in cropperjs cropping modal.
|
|
616
|
+
*
|
|
617
|
+
* Usage:
|
|
618
|
+
* ```html
|
|
619
|
+
* <fly-image-upload
|
|
620
|
+
* [aspectRatio]="16/9"
|
|
621
|
+
* [currentImageId]="trend.coverImageId"
|
|
622
|
+
* sourceApp="circles"
|
|
623
|
+
* sourceEntityType="trend"
|
|
624
|
+
* (uploaded)="onImageUploaded($event)"
|
|
625
|
+
* (removed)="onImageRemoved()"
|
|
626
|
+
* />
|
|
627
|
+
* ```
|
|
628
|
+
*/
|
|
629
|
+
declare class FlyImageUploadComponent {
|
|
630
|
+
private http;
|
|
631
|
+
aspectRatio: _angular_core.InputSignal<number>;
|
|
632
|
+
maxSizeBytes: _angular_core.InputSignal<number>;
|
|
633
|
+
currentImageId: _angular_core.InputSignal<string | null>;
|
|
634
|
+
sourceApp: _angular_core.InputSignal<string>;
|
|
635
|
+
sourceEntityType: _angular_core.InputSignal<string | null>;
|
|
636
|
+
sourceEntityId: _angular_core.InputSignal<string | null>;
|
|
637
|
+
uploaded: _angular_core.OutputEmitterRef<FlyFileInfo>;
|
|
638
|
+
removed: _angular_core.OutputEmitterRef<void>;
|
|
639
|
+
uploading: _angular_core.WritableSignal<boolean>;
|
|
640
|
+
error: _angular_core.WritableSignal<string | null>;
|
|
641
|
+
showCropper: _angular_core.WritableSignal<boolean>;
|
|
642
|
+
rawImageUrl: _angular_core.WritableSignal<string>;
|
|
643
|
+
localBlob: _angular_core.WritableSignal<string | null>;
|
|
644
|
+
fileInput: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
|
|
645
|
+
cropImage: _angular_core.Signal<ElementRef<HTMLImageElement> | undefined>;
|
|
646
|
+
private cropper;
|
|
647
|
+
private selectedFile;
|
|
648
|
+
previewUrl: _angular_core.Signal<string | null>;
|
|
649
|
+
sizeHint: _angular_core.Signal<string>;
|
|
650
|
+
triggerFileInput(): void;
|
|
651
|
+
onDragOver(e: DragEvent): void;
|
|
652
|
+
onDrop(e: DragEvent): void;
|
|
653
|
+
onFileSelected(e: Event): void;
|
|
654
|
+
removeImage(): void;
|
|
655
|
+
cancelCrop(): void;
|
|
656
|
+
applyCrop(): void;
|
|
657
|
+
private processFile;
|
|
658
|
+
private initCropper;
|
|
659
|
+
private destroyCropper;
|
|
660
|
+
private uploadFile;
|
|
661
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FlyImageUploadComponent, never>;
|
|
662
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FlyImageUploadComponent, "fly-image-upload", never, { "aspectRatio": { "alias": "aspectRatio"; "required": false; "isSignal": true; }; "maxSizeBytes": { "alias": "maxSizeBytes"; "required": false; "isSignal": true; }; "currentImageId": { "alias": "currentImageId"; "required": false; "isSignal": true; }; "sourceApp": { "alias": "sourceApp"; "required": false; "isSignal": true; }; "sourceEntityType": { "alias": "sourceEntityType"; "required": false; "isSignal": true; }; "sourceEntityId": { "alias": "sourceEntityId"; "required": false; "isSignal": true; }; }, { "uploaded": "uploaded"; "removed": "removed"; }, never, never, true, never>;
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
interface UploadSlot {
|
|
666
|
+
file: File;
|
|
667
|
+
progress: number;
|
|
668
|
+
status: 'uploading' | 'done' | 'error';
|
|
669
|
+
info?: FlyFileInfo;
|
|
670
|
+
error?: string;
|
|
671
|
+
}
|
|
672
|
+
/**
|
|
673
|
+
* Multi-file upload with drag-drop, progress, and validation.
|
|
674
|
+
*
|
|
675
|
+
* Usage:
|
|
676
|
+
* ```html
|
|
677
|
+
* <fly-file-upload
|
|
678
|
+
* [maxFiles]="5"
|
|
679
|
+
* [maxFileSizeBytes]="5242880"
|
|
680
|
+
* accept=".pdf,.docx,.xlsx"
|
|
681
|
+
* [(files)]="trend.attachments"
|
|
682
|
+
* sourceApp="circles"
|
|
683
|
+
* sourceEntityType="trend"
|
|
684
|
+
* (filesChanged)="onAttachmentsChanged($event)"
|
|
685
|
+
* />
|
|
686
|
+
* ```
|
|
687
|
+
*/
|
|
688
|
+
declare class FlyFileUploadComponent {
|
|
689
|
+
private http;
|
|
690
|
+
maxFiles: _angular_core.InputSignal<number>;
|
|
691
|
+
maxFileSizeBytes: _angular_core.InputSignal<number>;
|
|
692
|
+
accept: _angular_core.InputSignal<string>;
|
|
693
|
+
sourceApp: _angular_core.InputSignal<string>;
|
|
694
|
+
sourceEntityType: _angular_core.InputSignal<string | null>;
|
|
695
|
+
sourceEntityId: _angular_core.InputSignal<string | null>;
|
|
696
|
+
/** Two-way model for completed file metadata. */
|
|
697
|
+
files: _angular_core.ModelSignal<FlyFileInfo[]>;
|
|
698
|
+
filesChanged: _angular_core.OutputEmitterRef<FlyFileInfo[]>;
|
|
699
|
+
error: _angular_core.WritableSignal<string | null>;
|
|
700
|
+
dragging: _angular_core.WritableSignal<boolean>;
|
|
701
|
+
slots: _angular_core.WritableSignal<UploadSlot[]>;
|
|
702
|
+
/** Pre-existing files loaded from the entity (before any new uploads this session). */
|
|
703
|
+
existingFiles: _angular_core.WritableSignal<FlyFileInfo[]>;
|
|
704
|
+
fileInput: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
|
|
705
|
+
allSlots: _angular_core.Signal<UploadSlot[]>;
|
|
706
|
+
canAddMore: _angular_core.Signal<boolean>;
|
|
707
|
+
limitHint: _angular_core.Signal<string>;
|
|
708
|
+
triggerFileInput(): void;
|
|
709
|
+
onDragOver(e: DragEvent): void;
|
|
710
|
+
onDragLeave(e: DragEvent): void;
|
|
711
|
+
onDrop(e: DragEvent): void;
|
|
712
|
+
onFilesSelected(e: Event): void;
|
|
713
|
+
removeSlot(slot: UploadSlot): void;
|
|
714
|
+
removeExisting(f: FlyFileInfo): void;
|
|
715
|
+
iconFor(slot: UploadSlot): string;
|
|
716
|
+
iconForInfo(f: FlyFileInfo): string;
|
|
717
|
+
formatFileSize(bytes: number): string;
|
|
718
|
+
private processFiles;
|
|
719
|
+
private uploadFile;
|
|
720
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FlyFileUploadComponent, never>;
|
|
721
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FlyFileUploadComponent, "fly-file-upload", never, { "maxFiles": { "alias": "maxFiles"; "required": false; "isSignal": true; }; "maxFileSizeBytes": { "alias": "maxFileSizeBytes"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "sourceApp": { "alias": "sourceApp"; "required": false; "isSignal": true; }; "sourceEntityType": { "alias": "sourceEntityType"; "required": false; "isSignal": true; }; "sourceEntityId": { "alias": "sourceEntityId"; "required": false; "isSignal": true; }; "files": { "alias": "files"; "required": false; "isSignal": true; }; }, { "files": "filesChange"; "filesChanged": "filesChanged"; }, never, never, true, never>;
|
|
529
722
|
}
|
|
530
723
|
|
|
531
|
-
export { AuthService, ContextMenuComponent, DialogResult, FlyThemeService, I18nService, MessageBoxButtons, MessageBoxComponent, MessageBoxIcon, MessageBoxService, MockAuthService, RTL_LOCALE_SET, SHARE_PANEL_DEFAULT_FILE_LEVELS, SharePanelComponent, StandaloneWindowManagerService, TranslatePipe, WINDOW_DATA, WindowManagerService, isRtlLocale };
|
|
532
|
-
export type { ChildWindowData, ContextMenuItem, ContextMenuSection, DesktopApp, DesktopAppKind, FlyThemeMode, LoadBundleOptions, MessageBoxButton, MessageBoxOptions, MockAuthConfig, OpenWindowOptions, RemoteAppDef, ShareOuNode, SharePanelLevelOption, SharePermissionEntry, ShareUserResult, User, WindowInstance, WindowState };
|
|
724
|
+
export { AuthService, ContextMenuComponent, DEFAULT_FLY_THEME_MODE, DialogResult, FLY_THEME_MODE_IDS, FlyBlockUiComponent, FlyFileUploadComponent, FlyImageUploadComponent, FlyThemeService, I18nService, MessageBoxButtons, MessageBoxComponent, MessageBoxIcon, MessageBoxService, MockAuthService, RTL_LOCALE_SET, SHARE_PANEL_DEFAULT_FILE_LEVELS, SharePanelComponent, StandaloneWindowManagerService, TranslatePipe, WINDOW_DATA, WindowManagerService, isRtlLocale, normalizeFlyTheme };
|
|
725
|
+
export type { ChildWindowData, ContextMenuItem, ContextMenuSection, DesktopApp, DesktopAppKind, FlyFileInfo, FlyThemeMode, LoadBundleOptions, MessageBoxButton, MessageBoxOptions, MockAuthConfig, OpenWindowOptions, RemoteAppDef, ShareOrgChartOption, ShareOuNode, SharePanelLevelOption, SharePermissionEntry, ShareUserResult, User, WindowInstance, WindowState };
|
|
533
726
|
//# sourceMappingURL=mohamedatia-fly-design-system.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mohamedatia-fly-design-system.d.ts","sources":["../../../projects/design-system/src/lib/models/app.model.ts","../../../projects/design-system/src/lib/models/window.model.ts","../../../projects/design-system/src/lib/models/user.model.ts","../../../projects/design-system/src/lib/models/share-panel.model.ts","../../../projects/design-system/src/lib/models/remote-app.model.ts","../../../projects/design-system/src/lib/services/auth.service.ts","../../../projects/design-system/src/lib/services/i18n.service.ts","../../../projects/design-system/src/lib/services/fly-theme.service.ts","../../../projects/design-system/src/lib/services/window-manager.service.ts","../../../projects/design-system/src/lib/pipes/translate.pipe.ts","../../../projects/design-system/src/lib/services/auth.service.mock.ts","../../../projects/design-system/src/lib/components/context-menu/context-menu.component.ts","../../../projects/design-system/src/lib/components/message-box/message-box.service.ts","../../../projects/design-system/src/lib/components/message-box/message-box.component.ts","../../../projects/design-system/src/lib/components/share-panel/share-panel.component.ts"],"mappings":";;;;AAEA;;;AAGG;AACG,KAAM,cAAc;UAET,UAAU;;;;;;yBAMJ,OAAO,CAAC,IAAI;AACjC;;;;AACA;;;;;;;WAIO,cAAc;;AAEtB;;ACpBK,KAAM,WAAW;UAEN,eAAe;AAC9B,oBAAgB,IAAI;AACpB;AACD;UAEgB,cAAc;;;;;;WAMtB,WAAW;AAClB;;;;AACA;;;;;;;;;;;;gBASY,eAAe
|
|
1
|
+
{"version":3,"file":"mohamedatia-fly-design-system.d.ts","sources":["../../../projects/design-system/src/lib/models/app.model.ts","../../../projects/design-system/src/lib/models/window.model.ts","../../../projects/design-system/src/lib/models/user.model.ts","../../../projects/design-system/src/lib/models/share-panel.model.ts","../../../projects/design-system/src/lib/models/remote-app.model.ts","../../../projects/design-system/src/lib/services/auth.service.ts","../../../projects/design-system/src/lib/services/i18n.service.ts","../../../projects/design-system/src/lib/services/fly-theme.service.ts","../../../projects/design-system/src/lib/services/window-manager.service.ts","../../../projects/design-system/src/lib/pipes/translate.pipe.ts","../../../projects/design-system/src/lib/services/auth.service.mock.ts","../../../projects/design-system/src/lib/components/context-menu/context-menu.component.ts","../../../projects/design-system/src/lib/components/message-box/message-box.service.ts","../../../projects/design-system/src/lib/components/message-box/message-box.component.ts","../../../projects/design-system/src/lib/components/share-panel/share-panel.component.ts","../../../projects/design-system/src/lib/components/block-ui/block-ui.component.ts","../../../projects/design-system/src/lib/models/file.model.ts","../../../projects/design-system/src/lib/components/image-upload/fly-image-upload.component.ts","../../../projects/design-system/src/lib/components/file-upload/fly-file-upload.component.ts"],"mappings":"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","names":[]}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
// ─── Dark Theme Variables (shared mixin to avoid duplication) ────────────────
|
|
2
|
-
@mixin dark-theme-vars {
|
|
3
|
-
--primary-light: rgba(232, 115, 42, 0.18);
|
|
4
|
-
|
|
5
|
-
--surface-ground: #0e0e10;
|
|
6
|
-
--surface-section: rgba(28, 28, 30, 0.85);
|
|
7
|
-
--surface-card: rgba(28, 28, 30, 0.7);
|
|
8
|
-
--surface-border: rgba(255, 255, 255, 0.1);
|
|
9
|
-
--surface-hover: rgba(255, 255, 255, 0.08);
|
|
10
|
-
--text-color: #f2f2f7;
|
|
11
|
-
--text-color-secondary: rgba(242, 242, 247, 0.65);
|
|
12
|
-
|
|
13
|
-
--glass-bg: rgba(25, 25, 28, 0.72);
|
|
14
|
-
--glass-bg-elevated: rgba(38, 38, 42, 0.82);
|
|
15
|
-
--glass-border: rgba(255, 255, 255, 0.12);
|
|
16
|
-
--glass-shadow: 0 8px 40px rgba(0, 0, 0, 0.35);
|
|
17
|
-
--glass-inner-glow: inset 0 1px 0 rgba(255, 255, 255, 0.08);
|
|
18
|
-
|
|
19
|
-
--window-bg: rgba(22, 22, 24, 0.55);
|
|
20
|
-
--window-radius: 46px;
|
|
21
|
-
--window-shadow: 0 24px 80px rgba(0, 0, 0, 0.4);
|
|
22
|
-
--window-border: rgba(255, 255, 255, 0.12);
|
|
23
|
-
|
|
24
|
-
--titlebar-bg: transparent;
|
|
25
|
-
|
|
26
|
-
--dock-bg: rgba(20, 20, 22, 0.55);
|
|
27
|
-
--dock-border: rgba(255, 255, 255, 0.12);
|
|
28
|
-
--dock-blur: 50px;
|
|
29
|
-
|
|
30
|
-
--menubar-bg: rgba(14, 14, 16, 0.6);
|
|
31
|
-
--menubar-border: rgba(255, 255, 255, 0.06);
|
|
32
|
-
--menubar-text: rgba(242, 242, 247, 1);
|
|
33
|
-
|
|
34
|
-
--sidebar-bg: rgba(20, 20, 22, 0.6);
|
|
35
|
-
--sidebar-border: rgba(255, 255, 255, 0.08);
|
|
36
|
-
|
|
37
|
-
--focus-ring: rgba(232, 115, 42, 0.6);
|
|
38
|
-
|
|
39
|
-
// Opaque Business App surfaces (mirror light-theme semantic set for embeds).
|
|
40
|
-
--label-primary: var(--text-color);
|
|
41
|
-
--label-secondary: var(--text-color-secondary);
|
|
42
|
-
--label-tertiary: rgba(242, 242, 247, 0.42);
|
|
43
|
-
--separator-primary: rgba(255, 255, 255, 0.14);
|
|
44
|
-
--separator: var(--separator-primary);
|
|
45
|
-
--fill-secondary: rgba(255, 255, 255, 0.1);
|
|
46
|
-
--fill-tertiary: rgba(255, 255, 255, 0.06);
|
|
47
|
-
--material-glass: rgba(28, 28, 30, 0.92);
|
|
48
|
-
|
|
49
|
-
--fly-color-surface: rgba(28, 28, 30, 0.95);
|
|
50
|
-
--fly-color-surface-alt: rgba(38, 38, 42, 0.9);
|
|
51
|
-
--fly-color-border: rgba(255, 255, 255, 0.12);
|
|
52
|
-
--fly-color-text-muted: var(--text-color-secondary);
|
|
53
|
-
--fly-color-primary: var(--primary-color);
|
|
54
|
-
--fly-color-primary-hover: var(--primary-hover);
|
|
55
|
-
--fly-color-danger: var(--system-red);
|
|
56
|
-
--fly-shadow-md: 0 4px 16px rgba(0, 0, 0, 0.35);
|
|
57
|
-
}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
// ─── Transparent / Spatial Theme (visionOS-style) ───────────────────────────
|
|
2
|
-
html.transparent-theme {
|
|
3
|
-
--primary-light: rgba(232, 115, 42, 0.2);
|
|
4
|
-
|
|
5
|
-
--surface-ground: transparent;
|
|
6
|
-
--surface-section: rgba(255, 255, 255, 0.18);
|
|
7
|
-
--surface-card: rgba(255, 255, 255, 0.22);
|
|
8
|
-
--surface-border: rgba(255, 255, 255, 0.16);
|
|
9
|
-
--surface-hover: rgba(0, 0, 0, 0.04);
|
|
10
|
-
--text-color: var(--label-primary);
|
|
11
|
-
--text-color-secondary: var(--label-secondary);
|
|
12
|
-
|
|
13
|
-
--glass-bg: var(--material-glass);
|
|
14
|
-
--glass-bg-elevated: rgba(128, 128, 128, 0.45);
|
|
15
|
-
--glass-blur: var(--material-glass-blur);
|
|
16
|
-
--glass-border: var(--material-glass-stroke);
|
|
17
|
-
--glass-shadow: 0 12px 48px rgba(0, 0, 0, 0.15);
|
|
18
|
-
--glass-inner-glow: var(--material-glass-specular);
|
|
19
|
-
|
|
20
|
-
--window-bg: var(--material-glass);
|
|
21
|
-
--window-radius: 46px;
|
|
22
|
-
--window-blur: var(--material-glass-blur);
|
|
23
|
-
--window-shadow: 0 24px 80px rgba(0, 0, 0, 0.15);
|
|
24
|
-
--window-border: var(--material-glass-stroke);
|
|
25
|
-
|
|
26
|
-
--titlebar-bg: transparent;
|
|
27
|
-
|
|
28
|
-
--dock-bg: rgba(128, 128, 128, 0.2);
|
|
29
|
-
--dock-border: var(--material-glass-stroke);
|
|
30
|
-
--dock-blur: var(--material-glass-blur);
|
|
31
|
-
|
|
32
|
-
--menubar-bg: rgba(128, 128, 128, 0.25);
|
|
33
|
-
--menubar-border: var(--material-glass-stroke);
|
|
34
|
-
--menubar-text: var(--label-primary);
|
|
35
|
-
--menubar-blur: var(--material-glass-blur);
|
|
36
|
-
|
|
37
|
-
--sidebar-bg: rgba(128, 128, 128, 0.2);
|
|
38
|
-
--sidebar-border: var(--material-glass-stroke);
|
|
39
|
-
|
|
40
|
-
--focus-ring: rgba(232, 115, 42, 0.6);
|
|
41
|
-
}
|