import type { Annotation, AttributeType, ClassType, DataElement, DataType, MimeType } from "../data/elements"; import type { ClaimType, DialogSize, MenuLayout } from "../enums"; import type { LabeledElement, NamedElement } from "../visual/base"; import type { PageContainer } from "../visual/layout"; import type { ActionDefinition } from "./actions"; /** * Theme configuration. * Maps to: ui:Theme */ export interface Theme { textPrimaryColor?: string; textSecondaryColor?: string; primaryColor?: string; secondaryColor?: string; subtitleColor?: string; backgroundColor?: string; paperBackgroundColor?: string; } /** * OIDC claim mapping. * Maps to: ui:Claim */ export interface Claim { type: ClaimType; /** Resolved reference to AttributeType */ attributeType: AttributeType; } /** * Authentication configuration. * Maps to: ui:Authentication */ export interface Authentication { realm: string; claims: Claim[]; } /** * Root application model. * Maps to: ui:Application * * EMF Defaults: * - supportGuestAccess: true */ export interface Application extends NamedElement { /** Resolved reference to ClassType representing the actor */ actor: ClassType; /** Resolved reference to ClassType representing the principal */ principal?: ClassType; modelName: string; navigationController?: NavigationController; pages: PageDefinition[]; pageContainers: PageContainer[]; dataElements: DataElement[]; dataTypes: DataType[]; mimeTypes?: MimeType[]; authentication?: Authentication; version?: string; defaultLanguage?: string; logo?: string; icon?: string; title?: string; backgroundImage?: string; theme: Theme; /** Resolved reference to PageDefinition for profile page */ profilePage?: PageDefinition; defaultMenuLayout?: MenuLayout; /** Whether guest access is supported. @default true */ supportGuestAccess?: boolean; availableAnnotations?: Annotation[]; } /** * Navigation controller. * Maps to: ui:NavigationController */ export interface NavigationController extends NamedElement { items: NavigationItem[]; actions?: Action[]; } /** * Navigation menu item. * Maps to: ui:NavigationItem */ export interface NavigationItem extends NamedElement, LabeledElement { items?: NavigationItem[]; /** Resolved reference to target PageDefinition */ target?: PageDefinition; hiddenBy?: string; actionDefinition?: ActionDefinition; } /** * Page definition. * Maps to: ui:PageDefinition * * EMF Defaults: * - openInDialog: false * - isSelector: false * - isRelationSelector: false * - dashboard: false * - generateActionsHook: false */ export interface PageDefinition extends NamedElement, LabeledElement { /** Resolved reference to PageContainer */ container: PageContainer; /** Resolved reference to DataElement */ dataElement?: DataElement; actions: Action[]; /** Whether page opens in dialog. @default false */ openInDialog?: boolean; dialogSize?: DialogSize; /** Whether page is a selector. @default false */ isSelector?: boolean; /** Whether page is a relation selector. @default false */ isRelationSelector?: boolean; /** Whether page is a dashboard. @default false */ dashboard?: boolean; /** Whether to generate actions hook. @default false */ generateActionsHook?: boolean; } /** * Action binding between pages. * Maps to: ui:Action * * EMF Defaults: * - isMenuAction: false */ export interface Action extends NamedElement { /** Resolved reference to ActionDefinition */ actionDefinition: ActionDefinition; /** Resolved reference to target PageDefinition */ targetPageDefinition?: PageDefinition; /** Resolved reference to target DataElement */ targetDataElement?: DataElement; /** Resolved reference to owner DataElement */ ownerDataElement?: DataElement; /** Whether action appears in menu. @default false */ isMenuAction?: boolean; } //# sourceMappingURL=application.d.ts.map