diff --git a/src/components/owner/CreateItemModal.jsx b/src/components/owner/CreateItemModal.jsx new file mode 100644 index 0000000..02f4a3a --- /dev/null +++ b/src/components/owner/CreateItemModal.jsx @@ -0,0 +1,103 @@ +import React, { useEffect, useState } from 'react'; +import { createPortal } from 'react-dom'; +import { X } from 'lucide-react'; + +const CreateItemModal = ({ isOpen, onClose, title, icon: Icon, iconColor = "text-[#00f0ff]", iconBg = "bg-blue-500/10", fields, onSubmit, submitLabel = "Submit", submitColor = "bg-blue-500/20 text-[#00f0ff] border-blue-500/30" }) => { + const [formData, setFormData] = useState({}); + + useEffect(() => { + const handleEsc = (e) => { if (e.key === 'Escape') onClose(); }; + if (isOpen) window.addEventListener('keydown', handleEsc); + return () => window.removeEventListener('keydown', handleEsc); + }, [isOpen, onClose]); + + if (!isOpen) return null; + + const handleSubmit = (e) => { + e.preventDefault(); + onSubmit(formData); + setFormData({}); + onClose(); + }; + + return createPortal( +
+
+
+ {/* Header */} +
+
+ {Icon && ( +
+ +
+ )} +

{title}

+
+ +
+ + {/* Content */} +
+ {fields.map((field, i) => ( +
+ + {field.type === 'textarea' ? ( +