@openfin/core 44.100.48 → 44.100.50

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/out/stub.d.ts CHANGED
@@ -94,6 +94,34 @@ declare type AnalyticsProtocolMap = {
94
94
  [k in AnalyticsOnlyCalls]: VoidCall;
95
95
  };
96
96
 
97
+ /**
98
+ * Represents an anchor configuration consisting of a bounding rectangle
99
+ * and an anchor point describing which part of that rectangle should be
100
+ * used as the reference for positioning the download bubble.
101
+ * @interface
102
+ */
103
+ declare type Anchor = {
104
+ /**
105
+ * The DOM or screen-space rectangle that defines the anchor area.
106
+ */
107
+ bounds: Rectangle;
108
+ /**
109
+ * The location within the rectangle that should act as the anchor
110
+ * (e.g., `topRight`, `bottomLeft`, `center`, etc.).
111
+ * For example, `topRight` means the rectangle's top-right corner is used
112
+ * as the anchoring reference point.
113
+ */
114
+ location: AnchorLocation;
115
+ };
116
+
117
+ /**
118
+ * Defines the point within the rectangle that should be used as the anchor
119
+ * when positioning UI elements relative to another surface.
120
+ *
121
+ * @interface
122
+ */
123
+ declare type AnchorLocation = 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight' | 'leftTop' | 'rightTop' | 'leftBottom' | 'rightBottom' | 'topCenter' | 'bottomCenter' | 'leftCenter' | 'rightCenter' | 'none' | 'float';
124
+
97
125
  declare type AnchorType = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
98
126
 
99
127
  declare type AnyStrategy = ChannelStrategy<any>;
@@ -3926,6 +3954,10 @@ declare type ConstWindowOptions = {
3926
3954
  * Controls whether frameless window should have rounded corners. Default is false for Windows and true for MacOS. Setting this property to false will prevent the window from being fullscreenable on macOS. On Windows versions older than Windows 11 Build 22000 this property has no effect, and frameless windows will not have rounded corners.
3927
3955
  */
3928
3956
  roundedCorners: boolean;
3957
+ /**
3958
+ * Configuration for download bubble UI.
3959
+ */
3960
+ downloadBubble?: DownloadBubbleOptions;
3929
3961
  };
3930
3962
 
3931
3963
  /**
@@ -4678,6 +4710,50 @@ declare type DomainSettingsRule = {
4678
4710
  matchOptions?: RuleMatchOptions;
4679
4711
  };
4680
4712
 
4713
+ /**
4714
+ * Configuration options for enabling and positioning the download bubble UI.
4715
+ * @interface
4716
+ */
4717
+ declare type DownloadBubbleOptions = {
4718
+ /**
4719
+ * Whether the download bubble feature is enabled.
4720
+ */
4721
+ enabled: boolean;
4722
+ /**
4723
+ * Anchor configuration describing where the download bubble should attach.
4724
+ */
4725
+ anchor: Anchor;
4726
+ };
4727
+
4728
+ /**
4729
+ * Generated when the download button icon needs to be updated. Only raised if the download bubble feature is enabled.
4730
+ *
4731
+ * @interface
4732
+ */
4733
+ declare type DownloadButtonIconUpdatedEvent = BaseEvent_5 & {
4734
+ type: 'download-button-icon-updated';
4735
+ disabled: boolean;
4736
+ active: boolean;
4737
+ touchMode: boolean;
4738
+ progressIndicatorState: 'idle' | 'scanning' | 'downloading' | 'dormant';
4739
+ progressDownloadCount: number;
4740
+ progressPercentage: number;
4741
+ buttonTooltip: string;
4742
+ };
4743
+
4744
+ /**
4745
+ * Generated when the visibility of the window's download button changes. Only raised if the download bubble feature is enabled.
4746
+ *
4747
+ * @interface
4748
+ */
4749
+ declare type DownloadButtonVisibilityChangedEvent = BaseEvent_5 & {
4750
+ type: 'download-button-visibility-changed';
4751
+ /**
4752
+ * True if the download button should be displayed, false if it should be hidden.
4753
+ */
4754
+ visible: boolean;
4755
+ };
4756
+
4681
4757
  /**
4682
4758
  * Metadata returned from a preload script download request.
4683
4759
  *
@@ -4737,6 +4813,7 @@ declare type DownloadRule = {
4737
4813
  *
4738
4814
  * @remarks This will control the styling for the download shelf regardless of whether its display was
4739
4815
  * triggered by the window itself, or a view targeting the window.
4816
+ * @deprecated Use the DownloadBubble API instead.
4740
4817
  */
4741
4818
  declare type DownloadShelfOptions = {
4742
4819
  /**
@@ -4772,6 +4849,7 @@ declare type DownloadShelfOptions = {
4772
4849
  * Generated when the visibility of the window's download shelf changes.
4773
4850
  *
4774
4851
  * @interface
4852
+ * @deprecated use DownloadBubble API instead
4775
4853
  */
4776
4854
  declare type DownloadShelfVisibilityChangedEvent = BaseEvent_5 & {
4777
4855
  type: 'download-shelf-visibility-changed';
@@ -5043,7 +5121,7 @@ declare type Event_10 = ApplicationEvents.Event | ApiReadyEvent | SnapshotApplie
5043
5121
  * under the {@link OpenFin.SystemEvents} namespace (payloads inherited from propagated events are defined in the namespace
5044
5122
  * from which they propagate).
5045
5123
  */
5046
- declare type Event_11 = ExcludeRequested<WindowEvents.PropagatedEvent<'system'>> | ExcludeRequested<ViewEvents.PropagatedEvent<'system'>> | ExcludeRequested<ApplicationEvents.PropagatedEvent<'system'>> | ApplicationCreatedEvent | DesktopIconClickedEvent | IdleStateChangedEvent | MonitorInfoChangedEvent | SessionChangedEvent | AppVersionEventWithId | SystemShutdownEvent | ExtensionsEnabledEvent | ExtensionsDisabledEvent | ExtensionsExcludedEvent | ExtensionsInstalledEvent | ExtensionInstalledEvent | ExtensionsInstallFailedEvent | ExtensionInstallFailedEvent | ExtensionsInitializationFailedEvent;
5124
+ declare type Event_11 = ExcludeRequested<WindowEvents.PropagatedEvent<'system'>> | ExcludeRequested<ViewEvents.PropagatedEvent<'system'>> | ExcludeRequested<ApplicationEvents.PropagatedEvent<'system'>> | ApplicationCreatedEvent | DesktopIconClickedEvent | IdleStateChangedEvent | MonitorInfoChangedEvent | SessionChangedEvent | AppVersionEventWithId | SystemShutdownEvent | ExtensionsEnabledEvent | ExtensionsDisabledEvent | ExtensionsExcludedEvent | ExtensionsInstalledEvent | ExtensionInstalledEvent | ExtensionsInstallFailedEvent | ExtensionInstallFailedEvent | ExtensionsInitializationFailedEvent | ThemePaletteChangedEvent | NativeThemeUpdatedEvent;
5047
5125
 
5048
5126
  /**
5049
5127
  * [Union](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#union-types) containing every possible event that can be emitted by the HTMLElement Layout container.
@@ -8724,7 +8802,7 @@ declare abstract class LayoutNode {
8724
8802
  * Known Issue: If the number of views to add overflows the tab-container, the added views will be set as active
8725
8803
  * during each render, and then placed at the front of the tab-stack, while the underlying order of tabs will remain unchanged.
8726
8804
  * This means the views you pass to createAdjacentStack() may not render in the order given by the array.
8727
- * Until fixed, this problem can be avoided only if your window is wide enough to fit creating all the views in the tabstack.
8805
+ * Note: This issue does not occur when using `tabOverflowBehavior: 'scroll'` in the layout configuration.
8728
8806
  *
8729
8807
  * @param views The views that will populate the new TabStack.
8730
8808
  * @param options Additional options that control new TabStack creation.
@@ -8899,6 +8977,42 @@ declare type LayoutOptions = {
8899
8977
  * @defaultValue false
8900
8978
  */
8901
8979
  disableTabOverflowDropdown?: boolean;
8980
+ /**
8981
+ * When set to 'scroll', enables horizontal scrolling of tabs when they overflow the stack width.
8982
+ * When set to 'dropdown', the default behavior occurs, in which excess tabs appear in a menu.
8983
+ *
8984
+ * Setting this to `scroll` might break styles written for the default dropdown behavior, as it significantly changes the DOM structure and CSS of tabs.
8985
+ *
8986
+ * The DOM structure is modified in this way:
8987
+ * - `lm_tabs` is wrapped in a div with class `lm_scroll_shadow`. This div is revealed by a mask on the tabs when they are overflowing.
8988
+ * - the `.newTabButton` (if enabled) is a direct child of `.lm_header`
8989
+ *
8990
+ * **The following CSS variables are available to customize tab appearance:**
8991
+ *
8992
+ * - `--layout-tab-width`: The default (max) width of the tabs. Using this enables using `lm_tab` as a queryable CSS container (must be an absolute value to use container queries). Default: `fit-content`
8993
+ * - `--layout-tab-min-width`: The minimum width of the tabs before they start overflowing. Set this to enable tab shrinking. Defaults to the same value as `--layout-tab-width` (no shrinking).
8994
+ * - `--layout-tab-overflow-fade-size`: The width of the scroll shadows when tabs are overflowing. Default: `20px`
8995
+ * - `--layout-tab-overflow-shadow-color`: The color of the scroll shadows when tabs are overflowing. Enabling a contrasting shadow color may require setting the background color on `.lm_tabs` if it was not previously set via `--tabs-background-color`. Default is transparent so overlowing tabs fade into the background.
8996
+ *
8997
+ * **CSS Variables for advanced customization (dynamically updated and set on `lm_tabs`):**
8998
+ *
8999
+ * - `--layout-tab-overflow-fade-left`: The strength of the left fade when tabs are overflowing. This is a number between 0 and 1 where 0 means no fade and 1 means a full fade.
9000
+ * - `--layout-tab-overflow-fade-right`: The strength of the right fade when tabs are overflowing. This is a number between 0 and 1 where 0 means no fade and 1 means a full fade.
9001
+ * - `--layout-tabs-overflowing`: A [CSS space toggle](https://css-tricks.com/the-css-custom-property-toggle-trick/) that is empty when tabs are overflowing and `initial` otherwise. If you are targeting only Chrome 137 or greater, you might want to use the `if()` function with left/right fade instead of this toggle.
9002
+ *
9003
+ * @example
9004
+ * ```css
9005
+ * .lm_tabs {
9006
+ * --layout-tab-width: 200px;
9007
+ * --layout-tab-min-width: 100px;
9008
+ * --layout-tab-overflow-fade-size: 20px;
9009
+ * --layout-tab-overflow-shadow-color: rgba(0, 0, 0, 0.3);
9010
+ * }
9011
+ * ```
9012
+ *
9013
+ * @defaultValue 'dropdown'
9014
+ */
9015
+ tabOverflowBehavior?: 'dropdown' | 'scroll';
8902
9016
  };
8903
9017
  /**
8904
9018
  * Content of the layout. There can only be one top-level LayoutItem in the content array.
@@ -9151,6 +9265,7 @@ declare type Manifest = {
9151
9265
  policies?: {
9152
9266
  CloudAPAuthEnabled?: 'enabled' | 'disabled';
9153
9267
  };
9268
+ themePalette?: Array<ThemePalette>;
9154
9269
  };
9155
9270
  services?: string[];
9156
9271
  shortcut?: {
@@ -9528,6 +9643,11 @@ declare type MutableViewOptions = {
9528
9643
  * {@inheritDoc ChromiumPolicies}
9529
9644
  */
9530
9645
  chromiumPolicies: ChromiumPolicies;
9646
+ /**
9647
+ * When set to `false`, disables sending application logs to RVM for this view.
9648
+ * When omitted, inherits from the parent application.
9649
+ */
9650
+ enableAppLogging?: boolean;
9531
9651
  };
9532
9652
 
9533
9653
  /**
@@ -9810,6 +9930,12 @@ declare type MutableWindowOptions = {
9810
9930
  * {@inheritDoc ChromiumPolicies}
9811
9931
  */
9812
9932
  chromiumPolicies: ChromiumPolicies;
9933
+ /**
9934
+ * When set to `false`, disables sending application logs to RVM for this window.
9935
+ * When omitted, inherits from the parent application.
9936
+ *
9937
+ */
9938
+ enableAppLogging?: boolean;
9813
9939
  };
9814
9940
 
9815
9941
  declare type NackHandler = (payloadOrMessage: RuntimeErrorPayload | string) => void;
@@ -9822,6 +9948,78 @@ declare type NamedEvent = IdentityEvent & {
9822
9948
  name: string;
9823
9949
  };
9824
9950
 
9951
+ /**
9952
+ * @interface
9953
+ *
9954
+ * Represents the native theme of the operating system.
9955
+ * This is used to determine how the application should render its UI based on the system's theme settings.
9956
+ * Defer to CSS properties whenever possible.
9957
+ *
9958
+ * Re-exported from Electron's `NativeTheme` type.
9959
+ */
9960
+ declare type NativeTheme = {
9961
+ /**
9962
+ * A `boolean` indicating whether Chromium is in forced colors mode, controlled by
9963
+ * system accessibility settings. Currently, Windows high contrast is the only
9964
+ * system setting that triggers forced colors mode.
9965
+ *
9966
+ * @platform win32
9967
+ */
9968
+ inForcedColorsMode: boolean;
9969
+ /**
9970
+ * A `boolean` that indicates the whether the user has chosen via system
9971
+ * accessibility settings to reduce transparency at the OS level.
9972
+ *
9973
+ */
9974
+ prefersReducedTransparency: boolean;
9975
+ /**
9976
+ * A `boolean` for if the OS / Chromium currently has a dark mode enabled or is
9977
+ * being instructed to show a dark-style UI. If you want to modify this value you
9978
+ * should use `themeSource` below.
9979
+ *
9980
+ */
9981
+ shouldUseDarkColors: boolean;
9982
+ /**
9983
+ * A `boolean` property indicating whether or not the system theme has been set to
9984
+ * dark or light.
9985
+ *
9986
+ * On Windows this property distinguishes between system and app light/dark theme,
9987
+ * returning `true` if the system theme is set to dark theme and `false` otherwise.
9988
+ * On macOS the return value will be the same as `nativeTheme.shouldUseDarkColors`.
9989
+ *
9990
+ * @platform darwin,win32
9991
+ */
9992
+ shouldUseDarkColorsForSystemIntegratedUI: boolean;
9993
+ /**
9994
+ * A `boolean` for if the OS / Chromium currently has high-contrast mode enabled or
9995
+ * is being instructed to show a high-contrast UI.
9996
+ *
9997
+ * @platform darwin,win32
9998
+ */
9999
+ shouldUseHighContrastColors: boolean;
10000
+ /**
10001
+ * A `boolean` for if the OS / Chromium currently has an inverted color scheme or
10002
+ * is being instructed to use an inverted color scheme.
10003
+ *
10004
+ * @platform darwin,win32
10005
+ */
10006
+ shouldUseInvertedColorScheme: boolean;
10007
+ /**
10008
+ * A `string` property that can be `system`, `light` or `dark`. It is used (via `setTheme) to
10009
+ * override and supersede the value that Chromium has chosen to use internally.
10010
+ */
10011
+ themeSource: 'system' | 'light' | 'dark';
10012
+ };
10013
+
10014
+ /**
10015
+ * Generated when the operating system's theme preferences change.
10016
+ * Occurs when dark mode, high contrast mode, or inverted color scheme settings are modified.
10017
+ */
10018
+ declare type NativeThemeUpdatedEvent = BaseEvent_9 & {
10019
+ type: 'native-theme-updated';
10020
+ theme: OpenFin_2.NativeTheme;
10021
+ };
10022
+
9825
10023
  /**
9826
10024
  * @interface
9827
10025
  */
@@ -10120,6 +10318,9 @@ declare namespace OpenFin_2 {
10120
10318
  CustomProtocolOptions,
10121
10319
  InteropBrokerOptions,
10122
10320
  ContextGroupInfo,
10321
+ AnchorLocation,
10322
+ Anchor,
10323
+ DownloadBubbleOptions,
10123
10324
  DisplayMetadata,
10124
10325
  LegacyWinOptionsInAppOptions,
10125
10326
  Snapshot,
@@ -10223,9 +10424,14 @@ declare namespace OpenFin_2 {
10223
10424
  LogUploaderUIOptions,
10224
10425
  LogTypes,
10225
10426
  LogUploadOptions,
10427
+ ThemeColorsMap,
10428
+ ThemeColorId,
10429
+ ThemePalette,
10226
10430
  Manifest,
10227
10431
  LayoutContent,
10228
10432
  LayoutItemConfig,
10433
+ ThemePreferences,
10434
+ NativeTheme,
10229
10435
  LayoutRow,
10230
10436
  LayoutColumn,
10231
10437
  LayoutComponent,
@@ -10722,6 +10928,11 @@ declare type PerDomainSettings = {
10722
10928
  */
10723
10929
  drag?: 'allow' | 'block';
10724
10930
  };
10931
+ /**
10932
+ * When set to `false`, disables sending application logs to RVM for this window.
10933
+ * When omitted, inherits from the parent application.
10934
+ */
10935
+ enableAppLogging?: boolean;
10725
10936
  };
10726
10937
 
10727
10938
  /**
@@ -13140,6 +13351,12 @@ declare type ProtocolMap = ExternalAdapterOnlyCallsMap & AnalyticsProtocolMap &
13140
13351
  'create-window': VoidCall;
13141
13352
  'get-current-window': VoidCall;
13142
13353
  'get-current-window-sync': VoidCall;
13354
+ 'show-download-bubble': IdentityCall<{
13355
+ options: OpenFin_2.Anchor;
13356
+ }, void>;
13357
+ 'update-download-bubble-anchor': IdentityCall<{
13358
+ options: OpenFin_2.Anchor;
13359
+ }, void>;
13143
13360
  'get-external-application-info': ApiCall<OpenFin_2.ApplicationIdentity, OpenFin_2.ExternalApplicationInfo>;
13144
13361
  'external-application-wrap': VoidCall;
13145
13362
  'external-application-wrap-sync': VoidCall;
@@ -13236,6 +13453,10 @@ declare type ProtocolMap = ExternalAdapterOnlyCallsMap & AnalyticsProtocolMap &
13236
13453
  request: any;
13237
13454
  response: any;
13238
13455
  };
13456
+ 'set-theme-preferences': ApiCall<{
13457
+ preferences: OpenFin_2.ThemePreferences;
13458
+ }, OpenFin_2.NativeTheme>;
13459
+ 'get-theme-preferences': GetterCall<OpenFin_2.NativeTheme>;
13239
13460
  'get-version': GetterCall<string>;
13240
13461
  'clear-cache': ApiCall<OpenFin_2.ClearCacheOption, void>;
13241
13462
  'delete-cache-request': VoidCall;
@@ -13323,6 +13544,9 @@ declare type ProtocolMap = ExternalAdapterOnlyCallsMap & AnalyticsProtocolMap &
13323
13544
  'write-to-log': ApiCall<{
13324
13545
  level: string;
13325
13546
  message: string;
13547
+ target?: {
13548
+ type?: 'app.log' | 'debug.log';
13549
+ };
13326
13550
  }, void>;
13327
13551
  'open-url-with-browser': ApiCall<{
13328
13552
  url: string;
@@ -13486,6 +13710,15 @@ declare type ProtocolMap = ExternalAdapterOnlyCallsMap & AnalyticsProtocolMap &
13486
13710
  request: void;
13487
13711
  response: OpenFin_2.ExtensionInfo[];
13488
13712
  };
13713
+ 'set-theme-palette': ApiCall<{
13714
+ themePalette: Array<OpenFin_2.ThemePalette>;
13715
+ }, void> & {
13716
+ themePalette: Array<OpenFin_2.ThemePalette>;
13717
+ };
13718
+ 'get-theme-palette': ApiCall<void, Array<OpenFin_2.ThemePalette>> & {
13719
+ request: void;
13720
+ response: Array<OpenFin_2.ThemePalette>;
13721
+ };
13489
13722
  'fdc3-add-context-listener': VoidCall;
13490
13723
  'fdc3-add-intent-listener': VoidCall;
13491
13724
  'fdc3-raise-intent': VoidCall;
@@ -15543,13 +15776,16 @@ declare class System extends EmitterBase<OpenFin_2.SystemEvent> {
15543
15776
  * Writes the passed message into both the log file and the console.
15544
15777
  * @param level The log level for the entry. Can be either "info", "warning" or "error"
15545
15778
  * @param message The log message text
15779
+ * @param target.type Optional. The the log stream this message will be sent to, defaults to 'debug.log'. Specify 'app.log' to log to the app log of the sending View / Window. Note, when using `app.log`, it will always log to app.log irrespective of the `enableAppLogging` setting for the sender. This is particularly useful if you wish to log certain things from a View / Window but ignore generic console logs.
15546
15780
  *
15547
15781
  * @example
15548
15782
  * ```js
15549
- * fin.System.log("info", "An example log message").then(() => console.log('Log info message')).catch(err => console.log(err));
15783
+ * fin.System.log("info", "An example log message", { type: 'debug.log' }).then(() => console.log('Log info message')).catch(err => console.log(err));
15550
15784
  * ```
15551
15785
  */
15552
- log(level: string, message: string): Promise<void>;
15786
+ log(level: string, message: string, { type }?: {
15787
+ type?: 'app.log' | 'debug.log';
15788
+ }): Promise<void>;
15553
15789
  /**
15554
15790
  * Opens the passed URL in the default web browser.
15555
15791
  *
@@ -16288,11 +16524,99 @@ declare class System extends EmitterBase<OpenFin_2.SystemEvent> {
16288
16524
  * Not indended for general use, will be used by the `@openfin/workspace-platform` package.
16289
16525
  */
16290
16526
  serveAsset(options: OpenFin_2.ServeAssetOptions): Promise<OpenFin_2.ServedAssetInfo>;
16527
+ /**
16528
+ * Get's the native theme preferences for the current runtime.
16529
+ * Prefer css media-queries wherever possible, but this can be useful to see if the system setting has been overridden.
16530
+ * See @link OpenFin.NativeTheme for more information.
16531
+ * @example Theme selector menu
16532
+ * ```ts
16533
+ async function handleThemeMenu(e: React.MouseEvent<HTMLDivElement>) {
16534
+ const currentTheme = await fin.System.getThemePreferences();
16535
+ const result = await (fin.me as OpenFin.Window).showPopupMenu({
16536
+ x: e.clientX,
16537
+ y: e.clientY,
16538
+ template: [
16539
+ {
16540
+ label: 'Light',
16541
+ type: 'checkbox',
16542
+ checked: currentTheme.themeSource === 'light',
16543
+ data: { themeSource: 'light' } as const
16544
+ },
16545
+ {
16546
+ label: 'Dark',
16547
+ type: 'checkbox',
16548
+ checked: currentTheme.themeSource === 'dark',
16549
+ data: { themeSource: 'dark' } as const
16550
+ },
16551
+ {
16552
+ label: 'System',
16553
+ type: 'checkbox',
16554
+ checked: currentTheme.themeSource === 'system',
16555
+ data: { themeSource: 'system' } as const
16556
+ }
16557
+ ]
16558
+ });
16559
+ if (result.result === 'clicked') {
16560
+ await fin.System.setThemePreferences(result.data);
16561
+ }
16562
+ }
16563
+ ```
16564
+ */
16565
+ getThemePreferences(): Promise<OpenFin_2.NativeTheme>;
16566
+ /**
16567
+ * Sets the native theme preferences for the current runtime.
16568
+ * Can be used to force runtime-wide light or dark mode.
16569
+ * @important Due to this impacting all applications on a runtime, this method is only usable if a security realm has been set.
16570
+ * @example Theme selector menu
16571
+ * ```ts
16572
+ async function handleThemeMenu(e: React.MouseEvent<HTMLDivElement>) {
16573
+ const currentTheme = await fin.System.getThemePreferences();
16574
+ const result = await (fin.me as OpenFin.Window).showPopupMenu({
16575
+ x: e.clientX,
16576
+ y: e.clientY,
16577
+ template: [
16578
+ {
16579
+ label: 'Light',
16580
+ type: 'checkbox',
16581
+ checked: currentTheme.themeSource === 'light',
16582
+ data: { themeSource: 'light' } as const
16583
+ },
16584
+ {
16585
+ label: 'Dark',
16586
+ type: 'checkbox',
16587
+ checked: currentTheme.themeSource === 'dark',
16588
+ data: { themeSource: 'dark' } as const
16589
+ },
16590
+ {
16591
+ label: 'System',
16592
+ type: 'checkbox',
16593
+ checked: currentTheme.themeSource === 'system',
16594
+ data: { themeSource: 'system' } as const
16595
+ }
16596
+ ]
16597
+ });
16598
+ if (result.result === 'clicked') {
16599
+ await fin.System.setThemePreferences(result.data);
16600
+ }
16601
+ }
16602
+ ```
16603
+ */
16604
+ setThemePreferences(preferences: OpenFin_2.ThemePreferences): Promise<OpenFin_2.ThemePreferences>;
16291
16605
  /**
16292
16606
  * Launches the Log Uploader. Full documentation can be found [here](https://resources.here.io/docs/core/develop/debug/log-uploader/).
16293
16607
  * @experimental
16294
16608
  */
16295
16609
  launchLogUploader(options: OpenFin_2.LogUploaderOptions): Promise<void>;
16610
+ /**
16611
+ * Overrides original Chromium theme color providers matching key (currently except high contrast ones). Only colors passed in the map will be overridden.
16612
+ * @param overrides - Array of ColorProviderOverrides objects
16613
+ */
16614
+ setThemePalette(themePalette: Array<OpenFin_2.ThemePalette>): Promise<void>;
16615
+ /**
16616
+ * Retrieves currently used color overrides
16617
+ * @returns Array of ColorProviderOverrides objects
16618
+ */
16619
+ getThemePalette(): Promise<Array<OpenFin_2.ThemePalette>>;
16296
16620
  }
16297
16621
 
16298
16622
  /**
@@ -16331,6 +16655,8 @@ declare namespace SystemEvents {
16331
16655
  ExtensionsInstallFailedEvent,
16332
16656
  ExtensionInstallFailedEvent,
16333
16657
  ExtensionsInitializationFailedEvent,
16658
+ ThemePaletteChangedEvent,
16659
+ NativeThemeUpdatedEvent,
16334
16660
  Event_11 as Event,
16335
16661
  SystemEvent,
16336
16662
  EventType_8 as EventType,
@@ -16461,6 +16787,7 @@ declare class TabStack extends LayoutNode {
16461
16787
  * and rendered at the front of the tab-stack, while the underlying order of tabs will remain unchanged.
16462
16788
  * If that happens and then getViews() is called, it will return the identities in a different order than
16463
16789
  * than the currently rendered tab order.
16790
+ * Note: This issue does not occur when using `tabOverflowBehavior: 'scroll'` in the layout configuration.
16464
16791
  *
16465
16792
  *
16466
16793
  * @throws If the {@link TabStack} has been destroyed.
@@ -16485,6 +16812,7 @@ declare class TabStack extends LayoutNode {
16485
16812
  *
16486
16813
  * @remarks Known Issue: If adding a view overflows the tab-container, the added view will be set as active
16487
16814
  * and rendered at the front of the tab-stack, while the underlying order of tabs will remain unchanged.
16815
+ * Note: This issue does not occur when using `tabOverflowBehavior: 'scroll'` in the layout configuration.
16488
16816
  *
16489
16817
  * @param view The identity of an existing view to add, or options to create a view.
16490
16818
  * @param options Optional view options: index number used to insert the view into the stack at that index. Defaults to 0 (front of the stack)
@@ -16606,6 +16934,109 @@ declare type TerminateExternalRequestType = {
16606
16934
  killTree: boolean;
16607
16935
  };
16608
16936
 
16937
+ /**
16938
+ * String literal type of all supported theme color IDs.
16939
+ * Useful wherever you need to refer to a color slot by name.
16940
+ * @interface
16941
+ */
16942
+ declare type ThemeColorId = keyof ThemeColorsMap;
16943
+
16944
+ /**
16945
+ * All supported color slots for the Download Bubble and related UI.
16946
+ * @interface
16947
+ */
16948
+ declare interface ThemeColorsMap {
16949
+ /**
16950
+ * Enterprise/Window/Background – bubble header and footer background.
16951
+ */
16952
+ kColorBubbleBackground?: number;
16953
+ /**
16954
+ * Windows only – Enterprise/Window/Border.
16955
+ */
16956
+ kColorBubbleBorder?: number;
16957
+ /**
16958
+ * Windows only – Enterprise/Window/Border (large shadow).
16959
+ */
16960
+ kColorBubbleBorderShadowLarge?: number;
16961
+ /**
16962
+ * Windows only – Enterprise/Window/Border (small shadow).
16963
+ */
16964
+ kColorBubbleBorderShadowSmall?: number;
16965
+ /**
16966
+ * Enterprise/Window/Background – downloaded item row background.
16967
+ */
16968
+ kColorDialogBackground?: number;
16969
+ /**
16970
+ * Enterprise/Search Result/Background/Hover – download item row hover.
16971
+ */
16972
+ kColorDownloadBubbleRowHover?: number;
16973
+ /**
16974
+ * Enterprise/Window/Icon – “Show all downloads” icon color.
16975
+ */
16976
+ kColorDownloadBubbleShowAllDownloadsIcon?: number;
16977
+ /**
16978
+ * Enterprise/Search Result/Background/Hover – full download history
16979
+ * button (full row) hover background.
16980
+ */
16981
+ kColorHoverButtonBackgroundHovered?: number;
16982
+ /**
16983
+ * Shared/Icon Button/Subtle/Icon/Default – SVG icon color
16984
+ * (except full download history button).
16985
+ */
16986
+ kColorIcon?: number;
16987
+ /**
16988
+ * Enterprise/Window/Text/Base – main label text color.
16989
+ * May be post-processed to increase readability on kColorDialogBackground
16990
+ * (can be disabled via transparent kColorLabelBackground).
16991
+ */
16992
+ kColorLabelForeground?: number;
16993
+ /**
16994
+ * Label background used for readability adjustment.
16995
+ * Set to transparent (0) to disable Chromium’s readability alignment logic.
16996
+ */
16997
+ kColorLabelBackground?: number;
16998
+ /**
16999
+ * Enterprise/Window/Text/Soft – secondary text color.
17000
+ * May be post-processed to increase readability on kColorDialogBackground
17001
+ * (can be disabled via transparent kColorLabelBackground).
17002
+ */
17003
+ kColorSecondaryForeground?: number;
17004
+ }
17005
+
17006
+ /**
17007
+ * Defines a set of color overrides for Chromium UI surfaces based on a theme
17008
+ * provider (e.g., light or dark mode).
17009
+ * @interface
17010
+ */
17011
+ declare type ThemePalette = {
17012
+ /**
17013
+ * Identifies the color provider mode that the palette applies to.
17014
+ */
17015
+ colorProviderKey: {
17016
+ /**
17017
+ * The UI color mode that this palette is intended to style.
17018
+ */
17019
+ colorMode: 'light' | 'dark';
17020
+ };
17021
+ /**
17022
+ * A mapping of known Chromium color IDs to ARGB values (0xAARRGGBB).
17023
+ */
17024
+ colorsMap: ThemeColorsMap;
17025
+ };
17026
+
17027
+ /**
17028
+ * An event that fires when the system theme palette is changed.
17029
+ */
17030
+ declare type ThemePaletteChangedEvent = BaseEvent_9 & {
17031
+ type: 'theme-palette-changed';
17032
+ themePalette: OpenFin_2.ThemePalette;
17033
+ };
17034
+
17035
+ /**
17036
+ * Settable options for the native theme of the operating system.
17037
+ */
17038
+ declare type ThemePreferences = Pick<NativeTheme, 'themeSource'>;
17039
+
16609
17040
  /**
16610
17041
  * @interface
16611
17042
  */
@@ -19833,6 +20264,32 @@ declare class _Window extends WebContents<OpenFin_2.WindowEvent> {
19833
20264
  * To print the views embedded in their page context, set `content` to `screenshot`.
19834
20265
  */
19835
20266
  print(options?: OpenFin_2.WindowPrintOptions): Promise<void>;
20267
+ /**
20268
+ * Displays the download bubble UI. If an anchor is provided, the bubble
20269
+ * will be positioned according to the specified rectangle and anchor point.
20270
+ *
20271
+ * @param {OpenFin.Anchor} options
20272
+ * Anchor configuration used to position the download bubble. This includes
20273
+ * the bounding rectangle and the anchor location within that rectangle.
20274
+ *
20275
+ * @returns {Promise<void>}
20276
+ * A promise that resolves once the request to show the download bubble
20277
+ * has been processed.
20278
+ */
20279
+ showDownloadBubble(options: OpenFin_2.Anchor): Promise<void>;
20280
+ /**
20281
+ * Updates the anchor used for positioning the download bubble. This allows
20282
+ * moving the bubble reactively—for example, in response to window resizes,
20283
+ * layout changes, or DOM element repositioning.
20284
+ *
20285
+ * @param {OpenFin.Anchor} options
20286
+ * New anchor configuration describing the updated position and anchor
20287
+ * location for the download bubble.
20288
+ *
20289
+ * @returns {Promise<void>}
20290
+ * A promise that resolves once the anchor update has been applied.
20291
+ */
20292
+ updateDownloadBubbleAnchor(options: OpenFin_2.Anchor): Promise<void>;
19836
20293
  }
19837
20294
 
19838
20295
  /**
@@ -20028,6 +20485,8 @@ declare namespace WindowEvents {
20028
20485
  NonPropagatedWindowEvent,
20029
20486
  ShowAllDownloadsEvent,
20030
20487
  DownloadShelfVisibilityChangedEvent,
20488
+ DownloadButtonVisibilityChangedEvent,
20489
+ DownloadButtonIconUpdatedEvent,
20031
20490
  WindowSourcedEvent,
20032
20491
  WillPropagateWindowEvent,
20033
20492
  Event_6 as Event,
@@ -20231,7 +20690,7 @@ declare type WindowShowRequestedEvent = ShowRequestedEvent;
20231
20690
  * A union of all events that emit natively on the `Window` topic, i.e. excluding those that propagate
20232
20691
  * from {@link OpenFin.ViewEvents}.
20233
20692
  */
20234
- declare type WindowSourcedEvent = WebContentsEvents.Event<'window'> | WindowViewEvent | AuthRequestedEvent | BeginUserBoundsChangingEvent | BoundsChangedEvent | BoundsChangingEvent | ContextChangedEvent | CloseRequestedEvent | ClosedEvent_2 | ClosingEvent | DisabledMovementBoundsChangedEvent | DisabledMovementBoundsChangingEvent | EmbeddedEvent | EndUserBoundsChangingEvent | ExternalProcessExitedEvent | ExternalProcessStartedEvent | HiddenEvent_2 | HotkeyEvent_2 | InitializedEvent_2 | LayoutInitializedEvent | LayoutReadyEvent | LayoutCreatedEvent | LayoutDestroyedEvent | LayoutSnapshotAppliedEvent | MaximizedEvent | MinimizedEvent | OptionsChangedEvent | PerformanceReportEvent | PreloadScriptsStateChangedEvent | PreloadScriptsStateChangingEvent | ReloadedEvent | RestoredEvent | ShowRequestedEvent | ShownEvent_2 | UserMovementDisabledEvent | UserMovementEnabledEvent | WillMoveEvent | WillResizeEvent | ShowAllDownloadsEvent | DownloadShelfVisibilityChangedEvent | SnappedEvent | SnapZoneChangedEvent;
20693
+ declare type WindowSourcedEvent = WebContentsEvents.Event<'window'> | WindowViewEvent | AuthRequestedEvent | BeginUserBoundsChangingEvent | BoundsChangedEvent | BoundsChangingEvent | ContextChangedEvent | CloseRequestedEvent | ClosedEvent_2 | ClosingEvent | DisabledMovementBoundsChangedEvent | DisabledMovementBoundsChangingEvent | EmbeddedEvent | EndUserBoundsChangingEvent | ExternalProcessExitedEvent | ExternalProcessStartedEvent | HiddenEvent_2 | HotkeyEvent_2 | InitializedEvent_2 | LayoutInitializedEvent | LayoutReadyEvent | LayoutCreatedEvent | LayoutDestroyedEvent | LayoutSnapshotAppliedEvent | MaximizedEvent | MinimizedEvent | OptionsChangedEvent | PerformanceReportEvent | PreloadScriptsStateChangedEvent | PreloadScriptsStateChangingEvent | ReloadedEvent | RestoredEvent | ShowRequestedEvent | ShownEvent_2 | UserMovementDisabledEvent | UserMovementEnabledEvent | WillMoveEvent | WillResizeEvent | ShowAllDownloadsEvent | DownloadShelfVisibilityChangedEvent | DownloadButtonVisibilityChangedEvent | DownloadButtonIconUpdatedEvent | SnappedEvent | SnapZoneChangedEvent;
20235
20694
 
20236
20695
  /**
20237
20696
  * Generated when a child window starts loading.