Files
Genarrative/src/components/common/PlatformUtilityInfoModal.tsx
T
kdletters 071faa482c 统一 Rust 与 TypeScript 格式化门禁
纳入 AGC Cargo workspace 的统一 rustfmt 检查与格式化入口

完成项目 TypeScript/Prettier 与 Rust 全量格式化

修复 Pingora expected executable 门禁的空白敏感误报

同步开发运维文档与 AGC skill pack 格式化忽略规则
2026-09-01 16:28:34 +08:00

60 lines
1.5 KiB
TypeScript

import type { ReactNode } from 'react';
import { UnifiedModal } from './UnifiedModal';
type PlatformUtilityInfoModalProps = {
open: boolean;
title: string;
onClose: () => void;
children: ReactNode;
footer?: ReactNode;
platformTheme?: 'light' | 'dark';
overlayClassName?: string;
panelClassName?: string;
bodyClassName?: string;
footerClassName?: string;
};
function joinClassNames(
...classNames: Array<string | null | undefined | false>
) {
return classNames.filter(Boolean).join(' ');
}
/**
* 工具信息类弹窗统一走平台主题 overlay + 白底 panel 壳层。
* 这里只收口通用窗口骨架,字段内容、分享渠道和复制按钮仍由业务组件自己渲染。
*/
export function PlatformUtilityInfoModal({
open,
title,
onClose,
children,
footer,
platformTheme,
overlayClassName,
panelClassName,
bodyClassName,
footerClassName,
}: PlatformUtilityInfoModalProps) {
return (
<UnifiedModal
open={open}
title={title}
onClose={onClose}
size="sm"
portalTheme={platformTheme}
overlayClassName={joinClassNames('!items-center', overlayClassName)}
panelClassName={joinClassNames('platform-remap-surface', panelClassName)}
bodyClassName={joinClassNames(
'space-y-4 px-4 py-4 sm:px-5 sm:py-5',
bodyClassName,
)}
footer={footer}
footerClassName={joinClassNames('px-4 py-4 sm:px-5', footerClassName)}
>
{children}
</UnifiedModal>
);
}