Skip to main content

API Reference

Complete reference of types, injection tokens, interfaces, and helper functions exported by the Plugin UI packages.

@gauzy/plugin-ui​

Core Types​

PluginUiDefinition​

The main configuration object for a UI plugin.

interface PluginUiDefinition {
id: string;
module?: Type<any>;
loadModule?: () => Promise<Type<any>>;
bootstrap?: (injector: Injector) => void | Promise<void>;
location?: string;
plugins?: PluginUiDefinition[];
options?: Record<string, unknown>;
routes?: PluginRouteInput[];
navMenu?: PluginNavContribution[];
featureKey?: unknown;
permissionKeys?: unknown[];
dependsOn?: string[];
extensions?: PageExtensionDefinition[];
tabs?: PluginTabInput[];
translations?: Record<string, Record<string, any>>;
translationNamespace?: string;
settings?: PluginSettingsSchema;
version?: string;
peerPlugins?: Record<string, string>;
loadStrategy?: 'eager' | 'lazy' | 'preload';
}

PluginUiConfig​

Application-level plugin configuration.

interface PluginUiConfig {
defaultLanguage: string;
defaultLocale: string;
fallbackLocale?: string;
availableLanguages: string[];
availableLocales: string[];
startWeekOn?: DayOfWeek;
plugins: PluginUiDefinition[];
}

PageExtensionDefinition​

Describes a UI extension contributed to an extension slot.

interface PageExtensionDefinition {
id: string;
slotId: string;
component?: Type<any>;
loadComponent?: () => Promise<Type<any>>;
order?: number;
title?: string;
description?: string;
pluginId?: string;
hidden?: boolean;
visible?: (context: ExtensionVisibilityContext) => boolean | Promise<boolean>;
permissions?: string[];
permissionsAny?: string[];
featureKey?: string;
wrapper?: ExtensionWrapperConfig;
lifecycle?: ExtensionLifecycleHooks;
metadata?: ExtensionMetadata;
}

DayOfWeek​

enum DayOfWeek {
Sunday = 0,
Monday = 1,
Tuesday = 2,
Wednesday = 3,
Thursday = 4,
Friday = 5,
Saturday = 6
}

PluginUiServices​

Passed to PluginUiModule.init() to bridge the plugin system to the host application:

interface PluginUiServices {
navBuilder?: Type<IDeclarativeNavBuilder>;
routeRegistry?: Type<IDeclarativePageRouteRegistry>;
tabRegistry?: Type<IDeclarativePageTabRegistry>;
translateService?: Type<IPluginTranslateService>;
permissionChecker?: Type<IPluginPermissionChecker>;
featureChecker?: Type<IPluginFeatureChecker>;
}

All fields are optional. Values are Angular type references (classes), not instances.

Injection Tokens​

TokenTypeDescription
PLUGIN_UI_CONFIGPluginUiConfigThe full plugin configuration
PLUGIN_OPTIONSRecord<string, unknown>Per-plugin options (in plugin's child injector)
PLUGIN_DEFINITIONPluginUiDefinitionThe plugin's own definition (in plugin's child injector)
PLUGIN_ACTIVATION_PREDICATE(def: PluginUiDefinition) => booleanCustom activation filter
PLUGIN_NAV_BUILDERIDeclarativeNavBuilderNavigation menu builder
PLUGIN_ROUTE_REGISTRYIDeclarativePageRouteRegistryRoute registry
PLUGIN_TAB_REGISTRYIDeclarativePageTabRegistryTab registry
PLUGIN_TRANSLATE_SERVICEIPluginTranslateServiceTranslation service
PLUGIN_TRANSLATE_DELEGATETranslateServiceBacking @ngx-translate/core service
PLUGIN_TRANSLATE_STORE_DELEGATETranslateStoreBacking @ngx-translate/core store
PLUGIN_APP_STOREIPluginAppStoreBacking application store (permissions/features)
PLUGIN_PERMISSION_CHECKERIPluginPermissionCheckerPermission checker
PLUGIN_FEATURE_CHECKERIPluginFeatureCheckerFeature flag checker

Service Interfaces​

IPluginPermissionChecker​

interface IPluginPermissionChecker {
hasAllPermissions(...permissions: string[]): boolean;
}

IPluginFeatureChecker​

interface IPluginFeatureChecker {
isFeatureEnabled(featureKey: string): boolean;
}

IPluginTranslateService​

interface IPluginTranslateService {
instant(key: string, params?: Record<string, any>): string;
get(key: string, params?: Record<string, any>): Observable<string>;
onLangChange: EventEmitter<{ lang: string }>;
currentLang: string;
setTranslation(lang: string, translations: Record<string, any>, shouldMerge?: boolean): void;
}

IDeclarativeNavBuilder​

interface IDeclarativeNavBuilder {
addNavMenuItem(item: PluginNavItemInput, sectionId?: string): void;
removeNavMenuItem(itemId: string): void;
}

IDeclarativePageRouteRegistry​

interface IDeclarativePageRouteRegistry {
registerPageRoute(route: PluginRouteInput): void;
}

IDeclarativePageTabRegistry​

interface IDeclarativePageTabRegistry {
registerPageTab(tab: PluginTabInput): void;
}

Lifecycle Interfaces​

interface IOnPluginUiBootstrap {
ngOnPluginBootstrap(): void | Promise<void>;
}

interface IOnPluginUiDestroy {
ngOnPluginDestroy(): void | Promise<void>;
}

interface IOnPluginAfterBootstrap {
ngOnPluginAfterBootstrap(): void | Promise<void>;
}

interface IOnPluginBeforeDestroy {
ngOnPluginBeforeDestroy(): void | Promise<void>;
}

interface IOnPluginBeforeRouteActivate {
ngOnPluginBeforeRouteActivate(): boolean | Promise<boolean>;
}

interface IOnPluginConfigChange {
ngOnPluginConfigChange(config: Record<string, unknown>): void;
}

Helper Functions​

Plugin Definition​

FunctionSignatureDescription
defineDeclarativePlugin(id: string, config: Partial<PluginUiDefinition>) => PluginUiDefinitionCreate a declarative plugin (auto-generates bootstrap callback)
definePlugin(id: string, module: Type | LazyLoader, options?) => PluginUiDefinitionCreate a module-based plugin (smart loader detection via typeof fn === 'function' && !fn.prototype)
definePluginGroup(id: string, module: Type, options: { plugins, ... }) => PluginUiDefinitionCreate a plugin group with .init() method
applyDeclarativeRegistrations(def: PluginUiDefinition, services: { navBuilder?, pageRouteRegistry?, pageTabRegistry?, pageExtensionRegistry? }) => voidRegister routes, nav, tabs, and extensions from a definition
getUIPluginModules(defs: PluginUiDefinition[]) => Type<any>[]Extract Angular modules from definitions
getUIPluginModulesWithDefinitions(defs: PluginUiDefinition[]) => { module, definition }[]Extract modules paired with definitions

Plugin Utilities​

FunctionSignatureDescription
orderPluginsByDependencies(defs: PluginUiDefinition[]) => PluginUiDefinition[]Topological sort by dependencies
flattenPlugins(defs: PluginUiDefinition[]) => PluginUiDefinition[]Flatten nested plugin groups
collectPluginIds(defs: PluginUiDefinition[]) => Set<string>Collect all plugin IDs
isPluginActive(def: PluginUiDefinition) => booleanCheck activation status
getPluginsByLocation(defs: PluginUiDefinition[], location: string) => PluginUiDefinition[]Filter by location
getPluginDefinition(defs: PluginUiDefinition[], id: string) => PluginUiDefinition | undefinedFind by ID

Config Management​

FunctionSignatureDescription
getPluginUiConfig() => PluginUiConfigGet current config
setPluginUiConfig(config: PluginUiConfig) => voidSet config
resetPluginUiConfig() => voidReset to defaults

Dependency Validation​

FunctionSignatureDescription
validatePluginDependencies(defs: PluginUiDefinition[]) => ValidationResultValidate dependency graph
logDependencyValidation(result: ValidationResult) => voidLog validation results
checkVersionCompatibility(defs: PluginUiDefinition[]) => CompatResultCheck peer version ranges

i18n​

FunctionSignatureDescription
namespaceTranslations(ns: string, translations: object) => objectWrap translations in namespace
filterNewTranslationKeys(existing: object, incoming: object) => objectStrip existing keys

Events​

FunctionSignatureDescription
definePluginEvent<T>(pluginId: string, eventName: string) => PluginEventContract<T>Define a typed event
bindEventToBus(contract: PluginEventContract<T>, bus: PluginEventBusService) => TypedEventHandle<T>Bind event to bus

Services​

ServiceDescription
PluginUiRegistryServiceCentral plugin registry
PageExtensionRegistryServiceExtension slot registry
PluginEventBusServiceCross-plugin event bus
PluginEventSchemaRegistryEvent schema documentation
PluginSettingsRegistryServicePlugin settings storage
PluginServiceRegistryServiceCross-plugin service registry
PluginHealthServiceBoot time and error monitoring
PluginDevToolsServiceDebug introspection
DynamicPluginLoaderServiceRuntime plugin load/unload
UiBridgeRegistryServiceFramework bridge registry

Components​

ComponentSelectorDescription
PageExtensionSlotComponentgau-page-extension-slotRenders extensions for a slot

Constants​

ConstantDescription
PAGE_EXTENSION_SLOTSWell-known slot ID strings

@gauzy/ui-react​

Hooks​

HookSignatureDescription
useInjector() => InjectorAccess Angular injector
useObservable<T>(obs$: Observable<T>, initial: T) => TSubscribe to Observable
usePluginState<T>(pluginId, key, initial) => [T, (v: T) => void]Shared plugin state
usePluginSettings(pluginId: string) => Record<string, any>All plugin settings
usePluginSetting<T>(pluginId, key, defaultValue) => TSingle setting value
useTranslation() => { t, currentLang }Reactive translations
usePluginEvents() => PluginEventBusServiceRaw event bus access
usePluginEvent(eventName: string) => { emit, on }Basic event handle
useTypedEvent<T>(contract) => TypedEventHandle<T>Type-safe event handle
useTypedEventListener<T>(contract, callback) => voidAuto-subscribed listener
useDynamicPlugin(pluginId) => { load, unload, isLoaded }Dynamic plugin control

Components & Directives​

ExportDescription
ReactHostDirective[gaReactHost] β€” mount React in Angular
LazyReactHostDirective[gaReactLazyHost] β€” lazy mount React in Angular
PluginErrorBoundaryReact error boundary with recovery
NgContextProviderReact context providing Angular injector
NgBridgeContextReact context object
useBridgeContextAccess bridge context from React

Bridge​

ExportDescription
ReactBridgeBridge class with mount/unmount
createReactBridgeFactory function
provideReactBridgeAngular provider helper
REACT_BRIDGEInjection token

Extension Helpers​

FunctionDescription
defineReactExtension(config)Create eager React extension definition
defineLazyReactExtension(config)Create lazy React extension definition
isReactExtension(ext)Type guard for React extensions

@gauzy/ui-react-components​

Components​

ComponentPropsDescription
CardCardProps (variant?: 'default' | 'accent')Card container
CardHeaderβ€”Card header section
CardTitleβ€”Card title text
CardDescriptionβ€”Card description text
CardActionβ€”Card action area
CardContentβ€”Card body content
CardFooterβ€”Card footer section
WidgetCardWidget-specific propsPre-styled stat card
ProgressProgressProps (value: number)Progress bar
ColorDotsColorDotsPropsColor indicator dots

Design Tokens​

import { theme } from '@gauzy/ui-react-components';

theme.colors // { primary, textPrimary, textSecondary, background, border, ... }
theme.shadows // { card, elevated }
theme.spacing // { xs, sm, md, lg, xl }
theme.fonts // { family, sizeBase, sizeSmall, sizeLarge }
theme.radii // { sm, md, lg }

Utilities​

FunctionDescription
formatDuration(seconds: number)Format seconds as "Xh Ym"
currentWeekRange()Get current week start/end dates
todayRange()Get today's start/end timestamps