MCPcopy Create free account
hub / github.com/GreatStackDev/project-management / ProjectSettings

Function ProjectSettings

src/components/ProjectSettings.jsx:6–130  ·  view source on GitHub ↗
({ project })

Source from the content-addressed store, hash-verified

4import AddProjectMember from "./AddProjectMember";
5
6export default function ProjectSettings({ project }) {
7
8 const [formData, setFormData] = useState({
9 name: "New Website Launch",
10 description: "Initial launch for new web platform.",
11 status: "PLANNING",
12 priority: "MEDIUM",
13 start_date: "2025-09-10",
14 end_date: "2025-10-15",
15 progress: 30,
16 });
17
18 const [isDialogOpen, setIsDialogOpen] = useState(false);
19 const [isSubmitting, setIsSubmitting] = useState(false);
20
21 const handleSubmit = async (e) => {
22 e.preventDefault();
23
24 };
25
26 useEffect(() => {
27 if (project) setFormData(project);
28 }, [project]);
29
30 const inputClasses = "w-full px-3 py-2 rounded mt-2 border text-sm dark:bg-zinc-900 border-zinc-300 dark:border-zinc-700 text-zinc-900 dark:text-zinc-300";
31
32 const cardClasses = "rounded-lg border p-6 not-dark:bg-white dark:bg-gradient-to-br dark:from-zinc-800/70 dark:to-zinc-900/50 border-zinc-300 dark:border-zinc-800";
33
34 const labelClasses = "text-sm text-zinc-600 dark:text-zinc-400";
35
36 return (
37 <div className="grid lg:grid-cols-2 gap-8">
38 {/* Project Details */}
39 <div className={cardClasses}>
40 <h2 className="text-lg font-medium text-zinc-900 dark:text-zinc-300 mb-4">Project Details</h2>
41 <form onSubmit={handleSubmit} className="space-y-4">
42 {/* Name */}
43 <div className="space-y-2">
44 <label className={labelClasses}>Project Name</label>
45 <input value={formData.name} onChange={(e) => setFormData({ ...formData, name: e.target.value })} className={inputClasses} required />
46 </div>
47
48 {/* Description */}
49 <div className="space-y-2">
50 <label className={labelClasses}>Description</label>
51 <textarea value={formData.description} onChange={(e) => setFormData({ ...formData, description: e.target.value })} className={inputClasses + " h-24"} />
52 </div>
53
54 {/* Status & Priority */}
55 <div className="grid grid-cols-2 gap-4">
56 <div className="space-y-2">
57 <label className={labelClasses}>Status</label>
58 <select value={formData.status} onChange={(e) => setFormData({ ...formData, status: e.target.value })} className={inputClasses} >
59 <option value="PLANNING">Planning</option>
60 <option value="ACTIVE">Active</option>
61 <option value="ON_HOLD">On Hold</option>
62 <option value="COMPLETED">Completed</option>
63 <option value="CANCELLED">Cancelled</option>

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected