/** * Copyright (c) OpenLens Authors. All rights reserved. * Licensed under MIT License. See LICENSE in root directory for more information. */ import type { IComputedValue } from "mobx"; import type { PageParamInit, PageParam } from "../../renderer/navigation"; // Extensions-api -> Custom page registration export interface PageRegistration { /** * Page ID, part of extension's page url, must be unique within same extension * When not provided, first registered page without "id" would be used for page-menus without target.pageId for same extension */ id?: string; params?: PageParams, "name" | "prefix">>; components: PageComponents; enabled?: IComputedValue; } export interface PageComponents { Page: React.ComponentType; } export interface PageTarget { extensionId?: string; pageId?: string; params?: PageParams; } export interface PageParams { [paramName: string]: V; } export interface PageComponentProps

{ params?: { [N in keyof P]: PageParam; }; } export interface RegisteredPage { id: string; extensionId: string; url: string; // registered extension's page URL (without page params) params: PageParams>; // normalized params components: PageComponents; // normalized components }