import * as Dialog from '@radix-ui/react-dialog'; import { X } from 'lucide-react'; import { motion, AnimatePresence } from 'framer-motion'; /** * Modal 组件 * 使用 Radix UI Dialog 实现的模态弹窗 * @param {Object} props * @param {boolean} props.isOpen - 是否打开 * @param {Function} props.onClose - 关闭回调 * @param {React.ReactNode} props.children - 子元素 * @param {'sm'|'md'|'lg'} props.maxWidth - 最大宽度 * @param {string} props.title - 标题(可选) */ const Modal = ({ isOpen, onClose, children, maxWidth = 'md', title }) => { // 最大宽度映射 const maxWidthMap = { sm: 'max-w-sm', md: 'max-w-lg', lg: 'max-w-2xl' }; return ( !open && onClose()}> {isOpen && ( {/* 遮罩层 */} {/* 内容区 */} {/* 关闭按钮 */} {/* 标题 */} {title && ( {title} )} {/* 内容 */}
{children}
)}
); }; export default Modal;