diff --git a/packages/nextjs/app/createComission/page.tsx b/packages/nextjs/app/createComission/page.tsx new file mode 100644 index 0000000..6c07dab --- /dev/null +++ b/packages/nextjs/app/createComission/page.tsx @@ -0,0 +1,160 @@ +"use client"; + +import type { NextPage } from "next"; +import { useAccount } from "@starknet-react/core"; +import { CustomConnectButton } from "~~/components/scaffold-stark/CustomConnectButton"; +import { SetStateAction, useState } from "react" +import { Button } from "~~/components/ui/button" +import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "~~/components/ui/card" +import { Input } from "~~/components/ui/input" +import { Label } from "~~/components/ui/label" +import { Textarea } from "~~/components/ui/textarea" +import { Select, SelectItem } from "~~/components/ui/select2" +import { DollarSign, Target, Users } from "lucide-react"; + +const createComission: NextPage = () => { + const { address: connectedAddress, isConnected, isConnecting } = useAccount(); + + const [fundingGoal, setFundingGoal] = useState(10000) + const [duration, setDuration] = useState(30) + + // Mock user's IP data + const userIPs = [ + { id: "ip1", name: "AI-Powered Neural Interface" }, + { id: "ip2", "name": "Quantum Encryption Algorithm" }, + { id: "ip3", "name": "Sustainable Energy Converter" }, + ] + return ( + <> + + + +
+ + + + {!isConnected || isConnecting ? ( + + ) : ( + + +
+ +

Commission Intellectual Property

+ +
+ + + + + Commission IP from a Freelancer + Describe the intellectual property you need created + + +
+
+
+ + +
+
+ + +
+
+ +
{/* Existing Licenses Column */} -
+

Recent Licenses

{mockLicenses.map((license) => ( -
+

{license.name}

diff --git a/packages/nextjs/app/listingIP/page.tsx b/packages/nextjs/app/listingIP/page.tsx index 44788a8..a55eeb7 100644 --- a/packages/nextjs/app/listingIP/page.tsx +++ b/packages/nextjs/app/listingIP/page.tsx @@ -3,101 +3,12 @@ import type { NextPage } from "next"; import { useAccount } from "@starknet-react/core"; import { CustomConnectButton } from "~~/components/scaffold-stark/CustomConnectButton"; -import { MyHoldings } from "~~/components/SimpleNFT/MyHoldings"; -import { useScaffoldReadContract } from "~~/hooks/scaffold-stark/useScaffoldReadContract"; -import { useScaffoldWriteContract } from "~~/hooks/scaffold-stark/useScaffoldWriteContract"; -import { notification } from "~~/utils/scaffold-stark"; -import { addToIPFS } from "~~/utils/simpleNFT/ipfs-fetch"; -import nftsMetadata from "~~/utils/simpleNFT/nftsMetadata"; import { useState } from "react"; - - import { Button } from "~~/components/ui/button" -import { Input } from "~~/components/ui/input" -import { Card, CardContent, CardFooter, CardHeader, CardTitle } from "~~/components/ui/card" -import { Badge } from "~~/components/ui/badge" -import { Search, Filter, ArrowUpDown, Settings } from "lucide-react" import Link from "next/link" const listingIP: NextPage = () => { const { address: connectedAddress, isConnected, isConnecting } = useAccount(); - const [status, setStatus] = useState("Mint NFT"); - - const { writeAsync: mintItem } = useScaffoldWriteContract({ - contractName: "YourCollectible", - functionName: "mint_item", - args: [connectedAddress, ""], - }); - - - const [searchTerm, setSearchTerm] = useState('') - - const listings = [ - { id: 1, title: "The Batman Movie Critic", type: "Patent", price: "$50,000", status: "For Sale" }, - { id: 2, title: "Avalon Game Soundtrack", type: "Trade Secret", price: "$75,000", status: "For License" }, - { id: 3, title: "Stark Blue Secrect Paint", type: "Copyright", price: "$25,000", status: "For Sale" }, - { id: 4, title: "Movie Website Logo", type: "Patent", price: "$100,000", status: "For License" }, - ] - - const features = [ - { title: "Secure Transactions", description: "Blockchain-powered security for all your IP transactions" }, - { title: "Global Marketplace", description: "Connect with buyers and sellers from around the world" }, - { title: "Smart Contracts", description: "Automated, transparent, and efficient deal execution" }, - { title: "IP Valuation Tools", description: "Get accurate estimates for your intellectual property" }, - ] - - - const filteredListings = listings.filter(listing => - listing.title.toLowerCase().includes(searchTerm.toLowerCase()) || - listing.type.toLowerCase().includes(searchTerm.toLowerCase()) || - listing.status.toLowerCase().includes(searchTerm.toLowerCase()) - ) - - - - - const { data: tokenIdCounter, refetch } = useScaffoldReadContract({ - contractName: "YourCollectible", - functionName: "current", - watch: false, - }); - - const handleMintItem = async () => { - setStatus("Minting NFT"); - // circle back to the zero item if we've reached the end of the array - if (tokenIdCounter === undefined) { - setStatus("Mint NFT"); - return; - } - - - - - - - - const tokenIdCounterNumber = Number(tokenIdCounter); - const currentTokenMetaData = - nftsMetadata[tokenIdCounterNumber % nftsMetadata.length]; - const notificationId = notification.loading("Uploading to IPFS"); - try { - const uploadedItem = await addToIPFS(currentTokenMetaData); - - // First remove previous loading notification and then show success notification - notification.remove(notificationId); - notification.success("Metadata uploaded to IPFS"); - - await mintItem({ - args: [connectedAddress, uploadedItem.path], - }); - setStatus("Updating NFT List"); - refetch(); - } catch (error) { - notification.remove(notificationId); - console.error(error); - setStatus("Mint NFT"); - } - }; return ( <> @@ -119,81 +30,23 @@ const listingIP: NextPage = () => { -

- - - -

IP Listings Marketplace

- -
- setSearchTerm(e.target.value)} - /> - - +
+ + +
+

Ready to step up?

+

Start trading intellectual property today!

+
+ + +
+
+
- -
- {filteredListings.map((listing) => ( - - - {listing.title} -
- {listing.type} - {listing.status} -
-
- -

{listing.price}

-
- - - -
- ))} -
- - -
-

-

- -
-

Features and Benefits

-
- {features.map((feature, index) => ( - - - {feature.title} - - -

{feature.description}

-
-
- ))} -
-
- -

-
-

- -
-

Ready to step up?

-

Start trading intellectual property today!

-
- - -
-
-
diff --git a/packages/nextjs/app/monetizeIP/page.tsx b/packages/nextjs/app/monetizeIP/page.tsx index f69c8b4..8c22417 100644 --- a/packages/nextjs/app/monetizeIP/page.tsx +++ b/packages/nextjs/app/monetizeIP/page.tsx @@ -69,12 +69,13 @@ const monetizeIP: NextPage = () => { Transfer ownership of your IP -

List your intellectual property for sale on our marketplace to find potential buyers.

+

Create a sale contract to another address.

+ {/*} Royalties @@ -86,7 +87,7 @@ const monetizeIP: NextPage = () => { Explore - + */} Crowdfunding @@ -95,7 +96,19 @@ const monetizeIP: NextPage = () => {

Launch a crowdfunding campaign to support the development or promotion of your intellectual property.

+
+
+ + + Marketplace + List your IP on our Marketplace + + +

Showcase and license your intellectual property on blockchain.

+
diff --git a/packages/nextjs/app/registerIP/page.tsx b/packages/nextjs/app/registerIP/page.tsx index 0d76bd8..46721a4 100644 --- a/packages/nextjs/app/registerIP/page.tsx +++ b/packages/nextjs/app/registerIP/page.tsx @@ -308,9 +308,9 @@ const uploadIP = () => { -
+
-
+

Blockchain IP Protection Features

Secure, transparent, and efficient

diff --git a/packages/nextjs/app/sellIP/page.tsx b/packages/nextjs/app/sellIP/page.tsx new file mode 100644 index 0000000..9f8bdac --- /dev/null +++ b/packages/nextjs/app/sellIP/page.tsx @@ -0,0 +1,155 @@ +"use client"; + +import type { NextPage } from "next"; +import { useAccount } from "@starknet-react/core"; +import { CustomConnectButton } from "~~/components/scaffold-stark/CustomConnectButton"; +import { useScaffoldReadContract } from "~~/hooks/scaffold-stark/useScaffoldReadContract"; +import { useScaffoldWriteContract } from "~~/hooks/scaffold-stark/useScaffoldWriteContract"; +import { notification } from "~~/utils/scaffold-stark"; +import { useState } from "react"; +import { Button } from "~~/components/ui/button" +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "~~/components/ui/card" +import { Input } from "~~/components/ui/input" +import { Label } from "~~/components/ui/label" +import { Textarea } from "~~/components/ui/textarea" +import { ArrowRightLeft, ShieldCheck, Banknote } from "lucide-react" + + +import Image from 'next/image' +import Link from 'next/link' + + + + +const sellIP: NextPage = () => { + const { address: connectedAddress, isConnected, isConnecting } = useAccount(); + + + return ( + <> + + +
+ + {!isConnected || isConnecting ? ( + + ) : ( + + +
+ +
+

Sell Your Intellectual Property

+ +
+ + + Transfer/Sell IP Form + Create a smart transaction to securely transfer ownership or sell your intellectual property with blockchain technology. After initiating the sales transaction, the Address indicated in the contract will be able to finalize the purchase and claim your digital asset. + + + +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +