electron-liquid-glass
Version:
macOS glass / vibrancy wrapper for Electron BrowserWindow
67 lines (66 loc) • 2.1 kB
TypeScript
import { EventEmitter } from "events";
//#region js/variants.d.ts
type GlassMaterialVariant = number;
declare const GlassMaterialVariant: {
readonly regular: 0;
readonly clear: 1;
readonly dock: 2;
readonly appIcons: 3;
readonly widgets: 4;
readonly text: 5;
readonly avplayer: 6;
readonly facetime: 7;
readonly controlCenter: 8;
readonly notificationCenter: 9;
readonly monogram: 10;
readonly bubbles: 11;
readonly identity: 12;
readonly focusBorder: 13;
readonly focusPlatter: 14;
readonly keyboard: 15;
readonly sidebar: 16;
readonly abuttedSidebar: 17;
readonly inspector: 18;
readonly control: 19;
readonly loupe: 20;
readonly slider: 21;
readonly camera: 22;
readonly cartouchePopover: 23;
};
//#endregion
//#region js/index.d.ts
interface GlassOptions {
cornerRadius?: number;
tintColor?: string;
opaque?: boolean;
}
interface LiquidGlassNative {
addView(handle: Buffer, options: GlassOptions): number;
setVariant(id: number, variant: GlassMaterialVariant): void;
setScrimState(id: number, scrim: number): void;
setSubduedState(id: number, subdued: number): void;
}
// Create a nice JavaScript wrapper
declare class LiquidGlass extends EventEmitter {
private _addon?;
// Instance property for easy access to variants
readonly GlassMaterialVariant: typeof GlassMaterialVariant;
constructor();
/**
* Wrap the Electron window with a glass / vibrancy view.
* @param handle BrowserWindow.getNativeWindowHandle()
* @param options Glass effect options
* @returns id – can be used for future API (remove/update)
*/
addView(handle: Buffer, options?: GlassOptions): number;
private setVariant;
// public
unstable_setVariant(id: number, variant: GlassMaterialVariant): void;
unstable_setScrim(id: number, scrim: number): void;
unstable_setSubdued(id: number, subdued: number): void;
}
// Create and export the singleton instance
// The class constructor handles platform checks internally
declare const liquidGlass: LiquidGlass;
//#endregion
export { GlassOptions, LiquidGlassNative, liquidGlass as default };