@wonderkits/app
Version:
WonderKits micro-frontend SDK for sub-applications
99 lines (95 loc) • 2.56 kB
TypeScript
import * as React from 'react';
/**
* @wonderkits/app/core
*
* 子应用核心类型定义 - 最小化设计
* 只包含子应用开发必需的类型
*/
/**
* 图标组件类型
* 支持各种图标库(heroicons、lucide 等)
* 使用 ElementType 以兼容 ForwardRefExoticComponent
*/
type IconComponent = React.ElementType<{
className?: string;
}>;
/**
* 应用清单 - 精简版
* 子应用只需要定义这些基本信息
*/
interface AppManifest {
/** 应用唯一标识 */
id: string;
/** 应用名称 */
name: string;
/** 应用版本 */
version: string;
/** 显示名称(可选,默认使用 name) */
displayName?: string;
/** 应用描述 */
description?: string;
/** 应用图标 URL */
icon?: string;
/** 作者 */
author?: string;
/** 分类 */
category?: string;
}
/**
* 导航项配置 - 精简版
* 子应用声明自己在主应用中的导航位置
*/
interface AppNavItem {
/** 关联的应用 ID */
appId: string;
/** 导航显示名称 */
name: string;
/** 导航路径 */
href: string;
/** 路径匹配模式(用于高亮当前导航) */
matchPath?: string;
/** 排序权重(越小越靠前) */
order?: number;
/** 是否可见 */
visible?: boolean;
/** 图标组件 */
icon?: IconComponent;
/** 图标组件(路径激活状态) */
iconPath?: IconComponent;
/** 当前是否选中(运行时状态) */
current?: boolean;
}
/**
* 应用生命周期钩子 - 精简版
* 子应用可以监听的生命周期事件
*/
interface AppLifecycleHooks {
/** 应用安装时调用 */
onInstall?: () => Promise<void> | void;
/** 应用激活时调用 */
onActivate?: () => Promise<void> | void;
/** 应用停用时调用 */
onDeactivate?: () => Promise<void> | void;
/** 应用卸载时调用 */
onUninstall?: () => Promise<void> | void;
}
/**
* 子应用配置 - 精简版
* 子应用开发时需要提供的配置
*/
interface SubAppConfig {
/** 应用清单 */
manifest: AppManifest;
/** 导航配置(可选) */
navigation?: AppNavItem;
/** 生命周期钩子(可选) */
hooks?: AppLifecycleHooks;
}
/**
* 创建子应用配置的辅助函数
* @param config 子应用配置
* @returns 完整的子应用配置
*/
declare function defineSubApp(config: SubAppConfig): SubAppConfig;
export { defineSubApp };
export type { AppLifecycleHooks, AppManifest, AppNavItem, IconComponent, SubAppConfig };