Files
Genarrative/src/components/common/PlatformUtilityInfoModal.tsx
T
kdletters d08842b576 继续沉淀工具信息弹窗与个人中心内容骨架
新增PlatformUtilityInfoModal统一工具信息弹窗白底骨架
收口profile副弹层的摘要头列表骨架与内容行
同步更新PlatformUiKit收口计划与共享决策记录
2026-06-11 06:07:30 +08:00

64 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 = 'light',
overlayClassName,
panelClassName,
bodyClassName,
footerClassName,
}: PlatformUtilityInfoModalProps) {
return (
<UnifiedModal
open={open}
title={title}
onClose={onClose}
size="sm"
overlayClassName={joinClassNames(
`platform-theme platform-theme--${platformTheme}`,
'!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>
);
}