From 2d9273706da440fef8d8d50cc898798a5a84d9be Mon Sep 17 00:00:00 2001 From: YakshitAgarwal Date: Fri, 29 Aug 2025 17:25:36 +0530 Subject: [PATCH] Feat: Upload project on project owner dashboard --- .../project-owner/upload-project/page.tsx | 52 ++++++- .../dashboard/upload-project/FundProject.tsx | 66 +++++++++ .../upload-project/SubmitNewProject.tsx | 132 ++++++++++++++++++ .../upload-project/SummaryAndUpload.tsx | 111 +++++++++++++++ 4 files changed, 357 insertions(+), 4 deletions(-) create mode 100644 src/components/dashboard/upload-project/FundProject.tsx create mode 100644 src/components/dashboard/upload-project/SubmitNewProject.tsx create mode 100644 src/components/dashboard/upload-project/SummaryAndUpload.tsx diff --git a/src/app/dashboard/project-owner/upload-project/page.tsx b/src/app/dashboard/project-owner/upload-project/page.tsx index 4583406..eca4d3d 100644 --- a/src/app/dashboard/project-owner/upload-project/page.tsx +++ b/src/app/dashboard/project-owner/upload-project/page.tsx @@ -1,7 +1,51 @@ -import React from "react"; +"use client"; -function page() { - return
page
; +import FundProject from "@/components/dashboard/upload-project/FundProject"; +import SubmitNewProject from "@/components/dashboard/upload-project/SubmitNewProject"; +import SummaryAndUpload from "@/components/dashboard/upload-project/SummaryAndUpload"; +import React, { useState } from "react"; + +export type TabType = "submit" | "fund" | "summary"; + +function UploadProject() { + const [activeTab, setActiveTab] = useState("submit"); + + const tabs = [ + { name: "submit", title: "Submit New Project" }, + { name: "fund", title: "Fund Project" }, + { name: "summary", title: "Summary & Upload" }, + ]; + + const activeIndex = tabs.findIndex((t) => t.name === activeTab); + + return ( +
+
+ {tabs.map((item, index) => ( +
+
{item.title}
+
+
+ ))} +
+ +
+ {activeTab === tabs[0].name && ( + + )} + {activeTab === tabs[1].name && ( + + )} + {activeTab === tabs[2].name && ( + + )} +
+
+ ); } -export default page; +export default UploadProject; diff --git a/src/components/dashboard/upload-project/FundProject.tsx b/src/components/dashboard/upload-project/FundProject.tsx new file mode 100644 index 0000000..bc82f8f --- /dev/null +++ b/src/components/dashboard/upload-project/FundProject.tsx @@ -0,0 +1,66 @@ +import type { TabType } from "@/app/dashboard/project-owner/upload-project/page"; + +interface FundProjectProps { + setActiveTab: React.Dispatch>; +} + +const FundProject = ({ setActiveTab }: FundProjectProps) => { + return ( +
+
+
+
+ Fund project for audit +
+
+ Add funds to your bounty escrow account to pay for audit. +
+
+
+
Connect Wallet
+
+ 0x4A7d5cB67eA4F6e4B7cC3B3aE3f8fD9bB2cF9a1B +
+
+
+
+ + +

Minimum deposit: $100

+
+
+
Escrow Protection
+
+ Funds are held securely in escrow and only released when valid + vulnerabilities are confirmed and bounties are awarded. +
+
+
+
+
+ +
+
+ +
+
+
+
+ ); +}; +export default FundProject; diff --git a/src/components/dashboard/upload-project/SubmitNewProject.tsx b/src/components/dashboard/upload-project/SubmitNewProject.tsx new file mode 100644 index 0000000..e4707ac --- /dev/null +++ b/src/components/dashboard/upload-project/SubmitNewProject.tsx @@ -0,0 +1,132 @@ +import { ChevronDown, CalendarDays } from "lucide-react"; +import type { TabType } from "@/app/dashboard/project-owner/upload-project/page"; + +interface SubmitNewProjectProps { + setActiveTab: React.Dispatch>; +} + +const SubmitNewProject = ({ setActiveTab }: SubmitNewProjectProps) => { + return ( +
+
+
+ Submit New Project for Audit +
+
+
+ + +
+
+ +