Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | /** * Portal type definitions. * Portal manages tabs, navigation, and menu configuration. */ import type {IAction} from '@feasibleone/blong'; /** A single open tab in the portal */ export interface ITab { id: string; /** The action that opened this tab */ /** The action name that opened this tab */ actionName: string; /** Parameters that were passed to the action */ params?: Record<string, unknown>; /** Resolved display title */ title: string; /** Whether the tab has unsaved changes */ dirty?: boolean; /** The loaded React component (after phase 2 resolution) */ component?: React.ComponentType; } /** Menu item — can be a group or a leaf */ export type IMenuItem = | IAction | { title: string; permission?: string; icon?: string; items: IMenuItem[]; }; /** Portal configuration YAML shape */ export interface IPortalConfig { name: string; title: string; theme?: string; home?: IAction; menu?: IMenuItem[]; rightMenu?: IMenuItem[]; } /** Portal tab state managed by Zustand */ export interface IPortalState { tabs: ITab[]; activeTabId: string | null; portalConfig: IPortalConfig | null; } /** Navigator node for hierarchical navigation */ export interface INavigatorNode { [key: string]: unknown; children?: INavigatorNode[]; } |