Files
ttstd-infinite-canvas/web/src/components/canvas/previs/canvas-previs-template-modal.tsx
T

35 lines
1.6 KiB
TypeScript

import { Modal } from "antd";
import { PREVIS_TEMPLATES, type PrevisTemplateId } from "@/lib/canvas/previs/previs-templates";
/**
* 新建预演台镜头前的模板选择。
*
* 为什么必须显式选:过去新建场景无条件塞一个默认演员,
* 产品镜头和空场景用户第一件事就是把它删掉。这里让开局内容由用户决定。
* 没有「默认」按钮 —— 空场景本身就是那个选项,且它真的没有演员。
*/
export function CanvasPrevisTemplateModal({ open, onClose, onSelect }: { open: boolean; onClose: () => void; onSelect: (templateId: PrevisTemplateId) => void }) {
return (
<Modal open={open} onCancel={onClose} footer={null} width={560} title="选择镜头模板" destroyOnHidden>
<div className="previs-template-grid">
{PREVIS_TEMPLATES.map((template) => (
<button
key={template.id}
type="button"
className="previs-template-card"
onClick={() => {
onSelect(template.id);
onClose();
}}
>
<span className="previs-template-card-name">{template.name}</span>
<span className="previs-template-card-summary">{template.summary}</span>
<span className="previs-template-card-description">{template.description}</span>
</button>
))}
</div>
</Modal>
);
}