From b6f899afd2d873ec812727cf605149a1aec45f93 Mon Sep 17 00:00:00 2001 From: Satyam <95536056+Satyam-Rastogi@users.noreply.github.com> Date: Sun, 22 Feb 2026 03:00:38 +0530 Subject: [PATCH] feat(owner-dash): Expand project command center with mock data, modals, and recharts fixes --- src/components/owner/CreateItemModal.jsx | 103 +++ src/data/mockStore.jsx | 87 +- src/pages/owner/OwnerProjectDetail.jsx | 1005 +++++++++++++++------- 3 files changed, 887 insertions(+), 308 deletions(-) create mode 100644 src/components/owner/CreateItemModal.jsx 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' ? ( +