@medialane/ui 0.141.2 → 0.142.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/fast-mint/dropzone.cjs +120 -0
- package/dist/components/fast-mint/dropzone.cjs.map +1 -0
- package/dist/components/fast-mint/dropzone.d.cts +17 -0
- package/dist/components/fast-mint/dropzone.d.ts +17 -0
- package/dist/components/fast-mint/dropzone.js +96 -0
- package/dist/components/fast-mint/dropzone.js.map +1 -0
- package/dist/components/fast-mint/fast-mint.cjs +889 -0
- package/dist/components/fast-mint/fast-mint.cjs.map +1 -0
- package/dist/components/fast-mint/fast-mint.d.cts +10 -0
- package/dist/components/fast-mint/fast-mint.d.ts +10 -0
- package/dist/components/fast-mint/fast-mint.js +875 -0
- package/dist/components/fast-mint/fast-mint.js.map +1 -0
- package/dist/components/fast-mint/success-view.cjs +113 -0
- package/dist/components/fast-mint/success-view.cjs.map +1 -0
- package/dist/components/fast-mint/success-view.d.cts +17 -0
- package/dist/components/fast-mint/success-view.d.ts +17 -0
- package/dist/components/fast-mint/success-view.js +79 -0
- package/dist/components/fast-mint/success-view.js.map +1 -0
- package/dist/data/drop-create-schema.d.cts +2 -2
- package/dist/data/drop-create-schema.d.ts +2 -2
- package/dist/index.cjs +18 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +7 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -1
- package/dist/types-BEsgYSTA.d.cts +36 -0
- package/dist/types-BEsgYSTA.d.ts +36 -0
- package/dist/utils/ipfs-upload.cjs +87 -0
- package/dist/utils/ipfs-upload.cjs.map +1 -0
- package/dist/utils/ipfs-upload.d.cts +13 -0
- package/dist/utils/ipfs-upload.d.ts +13 -0
- package/dist/utils/ipfs-upload.js +60 -0
- package/dist/utils/ipfs-upload.js.map +1 -0
- package/package.json +5 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/fast-mint/fast-mint.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useRef, useState } from \"react\";\nimport Image from \"next/image\";\nimport { useForm } from \"react-hook-form\";\nimport { hash } from \"starknet\";\nimport { normalizeAddress, getService, buildAssetMetadata, type ApiCollection } from \"@medialane/sdk\";\nimport { executeIntent } from \"@medialane/sdk/starknet\";\nimport {\n ImagePlus, Music, Video, FileText, Loader2,\n Layers, ImagePlus as SingleIcon, ChevronDown, Boxes, Plus, Check,\n ShieldCheck, X,\n} from \"lucide-react\";\nimport { Input } from \"../input.js\";\nimport { Textarea } from \"../textarea.js\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"../select.js\";\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from \"../collapsible.js\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../popover.js\";\nimport { MedialaneCollectionCard } from \"../medialane-collection-card.js\";\nimport { ActionDialog } from \"../action-dialog.js\";\nimport { IPTypeFields, type MetadataField } from \"../ip-type-fields.js\";\nimport {\n IP_TYPES, LICENSE_TYPES, GEOGRAPHIC_SCOPES, AI_POLICIES, DERIVATIVES_OPTIONS,\n type IPType,\n} from \"../../data/ip.js\";\nimport { suggestLaunchpadSymbol } from \"../../utils/launchpad-defaults.js\";\nimport { uploadFileToIpfs, uploadJsonToIpfs, uploadFailureToast } from \"../../utils/ipfs-upload.js\";\nimport { ipfsToHttp } from \"../../utils/ipfs.js\";\nimport { cn } from \"../../utils/cn.js\";\nimport { Dropzone } from \"./dropzone.js\";\nimport { SuccessView } from \"./success-view.js\";\nimport type { FastMintProps, FastMintSigner, MediaKind, MintedAsset } from \"./types.js\";\n\nconst COLLECTION_DEPLOYED_SELECTOR = hash.getSelectorFromName(\"CollectionDeployed\");\nconst IP_MINTED_SELECTOR = hash.getSelectorFromName(\"IPMinted\");\n\nasync function readMintedTokenId(\n provider: { getTransactionReceipt(txHash: string): Promise<unknown> },\n txHash: string,\n contractAddress: string,\n): Promise<string | null> {\n let receipt: { events?: { from_address?: string; keys?: string[] }[] } | null = null;\n for (let attempt = 0; attempt < 3 && !receipt; attempt++) {\n try {\n if (attempt > 0) await new Promise((r) => setTimeout(r, 2000));\n const raw = await provider.getTransactionReceipt(txHash);\n receipt = raw as { events?: { from_address?: string; keys?: string[] }[] };\n } catch { /* retry */ }\n }\n const events = receipt?.events ?? [];\n const mintEvent = events.find((e) =>\n e.from_address && BigInt(e.from_address) === BigInt(contractAddress) &&\n e.keys?.[0] && BigInt(e.keys[0]) === BigInt(IP_MINTED_SELECTOR)\n );\n if (!mintEvent?.keys?.[1]) return null;\n const low = BigInt(mintEvent.keys[1] ?? 0);\n const high = BigInt(mintEvent.keys[2] ?? 0);\n return (low + (high << 128n)).toString();\n}\n\nconst MEDIA_ROUTE_MIME_TYPES = new Set([\n \"image/jpeg\", \"image/png\", \"image/gif\", \"image/webp\", \"image/svg+xml\", \"image/avif\",\n \"video/mp4\", \"video/webm\", \"video/ogg\",\n \"audio/mpeg\", \"audio/ogg\", \"audio/wav\", \"audio/webm\", \"audio/flac\",\n \"application/pdf\",\n]);\nconst DOCUMENT_SIGNED_URL_MIME_TYPES = new Set([\n \"application/msword\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n \"application/vnd.oasis.opendocument.text\",\n \"application/rtf\",\n \"text/plain\",\n \"text/markdown\",\n]);\nconst MEDIA_MAX_BYTES = 100 * 1024 * 1024;\nconst DOCUMENT_MAX_BYTES = 20 * 1024 * 1024;\n\nfunction detectMediaKind(mime: string): MediaKind | null {\n if (mime.startsWith(\"image/\")) return MEDIA_ROUTE_MIME_TYPES.has(mime) ? \"image\" : null;\n if (mime.startsWith(\"video/\")) return MEDIA_ROUTE_MIME_TYPES.has(mime) ? \"video\" : null;\n if (mime.startsWith(\"audio/\")) return MEDIA_ROUTE_MIME_TYPES.has(mime) ? \"audio\" : null;\n if (mime === \"application/pdf\" || DOCUMENT_SIGNED_URL_MIME_TYPES.has(mime)) return \"document\";\n return null;\n}\n\nconst IP_TYPE_BY_KIND: Record<MediaKind, IPType> = {\n image: \"NFT\",\n audio: \"Audio\",\n video: \"Video\",\n document: \"Documents\",\n};\n\nconst MEDIA_KIND_ICON: Record<MediaKind, typeof ImagePlus> = {\n image: ImagePlus,\n audio: Music,\n video: Video,\n document: FileText,\n};\n\nfunction ToggleGroup({\n value, options, onChange,\n}: { value: string; options: readonly string[]; onChange: (v: string) => void }) {\n return (\n <div className=\"flex rounded-lg border border-border overflow-hidden w-full\">\n {options.map((opt, i) => (\n <button\n key={opt}\n type=\"button\"\n onClick={() => onChange(opt)}\n className={cn(\n \"flex-1 px-3 py-2 text-sm transition-colors\",\n i > 0 && \"border-l border-border\",\n value === opt ? \"bg-primary text-primary-foreground font-medium\" : \"bg-background hover:bg-muted text-muted-foreground\"\n )}\n >\n {opt}\n </button>\n ))}\n </div>\n );\n}\n\nfunction collectionDisplayLabel(col: ApiCollection) {\n return col.name || col.symbol || `Collection #${col.collectionId}`;\n}\n\nfunction CollectionThumb({ image }: { image: string | null | undefined }) {\n const imageUrl = image ? ipfsToHttp(image) : null;\n return (\n <div className=\"relative h-10 w-10 rounded-lg overflow-hidden bg-muted shrink-0\">\n {imageUrl ? (\n <Image src={imageUrl} alt=\"\" fill className=\"object-cover\" unoptimized />\n ) : (\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <Boxes className=\"h-4 w-4 text-muted-foreground/40\" />\n </div>\n )}\n </div>\n );\n}\n\nfunction CollectionPicker({\n collections, value, onChange,\n}: { collections: ApiCollection[]; value: string; onChange: (id: string) => void }) {\n const [open, setOpen] = useState(false);\n const selected = collections.find((c) => c.collectionId === value) ?? null;\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n aria-expanded={open}\n className=\"flex w-full items-center gap-3 rounded-xl border border-border p-3 text-left transition-colors hover:bg-muted/40\"\n >\n <CollectionThumb image={selected?.image} />\n <div className=\"min-w-0 flex-1\">\n <p className=\"text-sm font-semibold truncate\">\n {selected ? collectionDisplayLabel(selected) : collections.length ? \"Choose a collection\" : \"No collections yet\"}\n </p>\n <p className=\"text-xs text-muted-foreground\">\n {selected ? `${selected.totalSupply ?? 0} work${selected.totalSupply === 1 ? \"\" : \"s\"}` : \"Where this work will live\"}\n </p>\n </div>\n <ChevronDown className=\"h-3.5 w-3.5 text-muted-foreground shrink-0\" />\n </button>\n </PopoverTrigger>\n <PopoverContent className=\"w-[var(--radix-popover-trigger-width)] p-0\" align=\"start\">\n <div className=\"max-h-64 overflow-y-auto p-1\">\n {collections.length === 0 ? (\n <p className=\"px-3 py-4 text-center text-sm text-muted-foreground\">No collections yet — create one instead.</p>\n ) : (\n collections.map((col) => {\n const isSelected = value === col.collectionId;\n return (\n <button\n key={col.collectionId!}\n type=\"button\"\n onClick={() => { onChange(col.collectionId!); setOpen(false); }}\n className=\"flex w-full items-center gap-2.5 rounded-lg px-2 py-2 text-left transition-colors hover:bg-muted/60\"\n >\n <CollectionThumb image={col.image} />\n <div className=\"min-w-0 flex-1\">\n <p className=\"text-sm font-medium truncate\">{collectionDisplayLabel(col)}</p>\n <p className=\"text-xs text-muted-foreground\">{col.totalSupply ?? 0} work{col.totalSupply === 1 ? \"\" : \"s\"}</p>\n </div>\n {isSelected && <Check className=\"h-4 w-4 text-brand-blue shrink-0\" />}\n </button>\n );\n })\n )}\n </div>\n </PopoverContent>\n </Popover>\n );\n}\n\ninterface FormValues {\n name: string;\n description: string;\n external_url: string;\n licenseType: string;\n commercialUse: \"Yes\" | \"No\";\n derivatives: \"Allowed\" | \"Not Allowed\" | \"Share-Alike\";\n attribution: \"Required\" | \"Not Required\";\n geographicScope: string;\n aiPolicy: \"Allowed\" | \"Not Allowed\" | \"Training Only\";\n royalty: number;\n}\n\nexport function FastMint(props: FastMintProps) {\n const {\n presentation = \"inline\", open = true, onClose, mediaKindLock, onMinted,\n collections, refetchCollections,\n hasWallet, walletAddress, onRequireWallet, connectLabel, getUploadToken, getSigner,\n client, provider,\n } = props;\n\n const [status, setStatus] = useState<\"idle\" | \"minting\" | \"success\" | \"error\">(\"idle\");\n const [errorMsg, setErrorMsg] = useState<string | null>(null);\n\n const [mediaFile, setMediaFile] = useState<File | null>(null);\n const [mediaPreview, setMediaPreview] = useState<string | null>(null);\n const [mediaUri, setMediaUri] = useState<string | null>(null);\n const [mediaKind, setMediaKind] = useState<MediaKind>(\"image\");\n const [mediaUploading, setMediaUploading] = useState(false);\n const previewUrlRef = useRef<string | null>(null);\n const mediaInputRef = useRef<HTMLInputElement>(null);\n\n const [featurePreview, setFeaturePreview] = useState<string | null>(null);\n const [featureUri, setFeatureUri] = useState<string | null>(null);\n const [featureUploading, setFeatureUploading] = useState(false);\n const featurePreviewRef = useRef<string | null>(null);\n const featureInputRef = useRef<HTMLInputElement>(null);\n\n const [assetType, setAssetType] = useState<\"single\" | \"editions\">(\"single\");\n const [editionCount, setEditionCount] = useState(\"10\");\n\n const [collectionMode, setCollectionMode] = useState<\"existing\" | \"new\">(\"existing\");\n const [existingCollectionId, setExistingCollectionId] = useState(\"\");\n const [existingCollectionContract, setExistingCollectionContract] = useState(\"\");\n const [newCollectionName, setNewCollectionName] = useState(\"\");\n const [newCollectionSymbol, setNewCollectionSymbol] = useState(\"\");\n const [autoSymbol, setAutoSymbol] = useState(\"\");\n const [autoCollectionName, setAutoCollectionName] = useState(\"\");\n\n const [ipType, setIpType] = useState<IPType>(\"NFT\");\n const [advancedOpen, setAdvancedOpen] = useState(false);\n const [ipTypeOpen, setIpTypeOpen] = useState(false);\n const templateFieldsRef = useRef<MetadataField[]>([]);\n\n const [mintedAsset, setMintedAsset] = useState<MintedAsset | null>(null);\n\n useEffect(() => () => {\n if (previewUrlRef.current) URL.revokeObjectURL(previewUrlRef.current);\n if (featurePreviewRef.current) URL.revokeObjectURL(featurePreviewRef.current);\n }, []);\n\n const form = useForm<FormValues>({\n defaultValues: {\n name: \"\", description: \"\", external_url: \"\",\n licenseType: \"CC BY-SA\", commercialUse: \"Yes\", derivatives: \"Share-Alike\",\n attribution: \"Required\", geographicScope: \"Worldwide\", aiPolicy: \"Not Allowed\", royalty: 0,\n },\n });\n const name = form.watch(\"name\");\n\n useEffect(() => {\n const s = suggestLaunchpadSymbol(name);\n if (!s) return;\n if (!newCollectionSymbol || newCollectionSymbol === autoSymbol) {\n setNewCollectionSymbol(s);\n setAutoSymbol(s);\n }\n if (!newCollectionName || newCollectionName === autoCollectionName) {\n setNewCollectionName(name);\n setAutoCollectionName(name);\n }\n }, [name, autoSymbol, autoCollectionName, newCollectionSymbol, newCollectionName]);\n\n const erc721Collections = collections.filter((c) => getService(c.service)?.id === \"mip-erc721\");\n const erc1155Collections = collections.filter((c) => c.standard === \"ERC1155\");\n\n const handleMediaSelect = async (file: File) => {\n const kind = detectMediaKind(file.type);\n if (!kind) {\n setErrorMsg(\"Publish an image, audio, video (JPG/PNG/GIF/SVG/WebP, MP3/WAV/OGG/FLAC, MP4/WebM), or document (PDF, DOC, DOCX, ODT, RTF, TXT, MD).\");\n return;\n }\n if (mediaKindLock && kind !== mediaKindLock) {\n setErrorMsg(`Please upload a${mediaKindLock === \"image\" ? \"n\" : \"\"} ${mediaKindLock}.`);\n return;\n }\n const viaMediaRoute = MEDIA_ROUTE_MIME_TYPES.has(file.type);\n const maxBytes = viaMediaRoute ? MEDIA_MAX_BYTES : DOCUMENT_MAX_BYTES;\n if (file.size > maxBytes) {\n setErrorMsg(`Maximum size is ${maxBytes / (1024 * 1024)} MB.`);\n return;\n }\n setMediaFile(file);\n setMediaKind(kind);\n setIpType(IP_TYPE_BY_KIND[kind]);\n if (previewUrlRef.current) URL.revokeObjectURL(previewUrlRef.current);\n const objectUrl = URL.createObjectURL(file);\n previewUrlRef.current = objectUrl;\n setMediaPreview(objectUrl);\n setMediaUri(null);\n setMediaUploading(true);\n try {\n const token = await getUploadToken();\n if (!token) throw new Error(\"Sign in first\");\n const { uri } = await uploadFileToIpfs(file, token, viaMediaRoute ? \"media\" : \"document\");\n setMediaUri(uri);\n } catch (err) {\n const t = uploadFailureToast(err);\n setErrorMsg(t.description ?? t.title);\n } finally {\n setMediaUploading(false);\n }\n };\n\n const clearMedia = () => {\n setMediaFile(null);\n setMediaPreview(null);\n setMediaUri(null);\n if (mediaInputRef.current) mediaInputRef.current.value = \"\";\n };\n\n const handleFeatureSelect = async (file: File) => {\n if (featurePreviewRef.current) URL.revokeObjectURL(featurePreviewRef.current);\n const objectUrl = URL.createObjectURL(file);\n featurePreviewRef.current = objectUrl;\n setFeaturePreview(objectUrl);\n setFeatureUri(null);\n setFeatureUploading(true);\n try {\n const token = await getUploadToken();\n if (!token) throw new Error(\"Sign in first\");\n const { uri } = await uploadFileToIpfs(file, token, \"image\");\n setFeatureUri(uri);\n } catch (err) {\n const t = uploadFailureToast(err);\n setErrorMsg(t.description ?? t.title);\n } finally {\n setFeatureUploading(false);\n }\n };\n\n const handleLicenseChange = (value: string) => {\n form.setValue(\"licenseType\", value);\n const def = LICENSE_TYPES.find((l) => l.value === value);\n if (def) {\n form.setValue(\"commercialUse\", def.commercialUse);\n form.setValue(\"derivatives\", def.derivatives);\n form.setValue(\"attribution\", def.attribution);\n }\n };\n\n const ready = !!mediaUri && !mediaUploading && name.trim().length > 0 &&\n (mediaKind === \"image\" || !!featureUri) &&\n (collectionMode === \"existing\"\n ? assetType === \"single\" ? !!existingCollectionId : !!existingCollectionContract\n : newCollectionName.trim().length > 0 && newCollectionSymbol.trim().length > 0);\n\n async function pollForNewCollection(name: string, symbol: string): Promise<ApiCollection | null> {\n for (let attempt = 0; attempt < 8; attempt++) {\n const list = await refetchCollections();\n const match = list.find((c) => c.name === name && c.symbol === symbol);\n if (match?.collectionId) return match;\n await new Promise((r) => setTimeout(r, 1500));\n }\n return null;\n }\n\n const onSubmit = async (values: FormValues) => {\n if (!hasWallet) { onRequireWallet(); return; }\n if (!walletAddress || !mediaUri) return;\n if (values.external_url && !values.external_url.startsWith(\"http://\") && !values.external_url.startsWith(\"https://\")) {\n setErrorMsg(\"External link must start with http:// or https://\");\n return;\n }\n\n setStatus(\"minting\");\n setErrorMsg(null);\n\n try {\n const signer: FastMintSigner = await getSigner();\n\n const image = mediaKind === \"image\" ? mediaUri : featureUri!;\n const animationUrl = mediaKind === \"image\" ? undefined : mediaUri;\n\n const built = buildAssetMetadata({\n name: values.name,\n description: values.description || \"\",\n externalUrl: values.external_url || \"\",\n imageUri: image,\n creator: walletAddress,\n ipType,\n licenseType: values.licenseType,\n commercialUse: values.commercialUse,\n derivatives: values.derivatives,\n attribution: values.attribution,\n geographicScope: values.geographicScope,\n aiPolicy: values.aiPolicy,\n royalty: String(values.royalty),\n templateTraits: templateFieldsRef.current\n .filter(({ traitType, value }) => traitType.trim() && value.trim())\n .map(({ traitType, value }) => ({ traitType, value })),\n });\n const metadata: Record<string, unknown> = { ...built };\n if (animationUrl) metadata.animation_url = animationUrl;\n\n const uploadToken = await getUploadToken();\n if (!uploadToken) throw new Error(\"Sign in first\");\n const tokenUri = await uploadJsonToIpfs(metadata, uploadToken);\n\n let result: { txHash: string };\n let finalContractAddress: string | null;\n let finalTokenId: string | null = null;\n\n if (assetType === \"single\") {\n let collectionId = existingCollectionId;\n let contractAddress = erc721Collections.find((c) => c.collectionId === existingCollectionId)?.contractAddress ?? null;\n\n if (collectionMode === \"new\") {\n const intentRes = await client.api.createCollectionIntent({\n owner: walletAddress,\n name: newCollectionName,\n symbol: newCollectionSymbol,\n });\n await executeIntent(provider, signer, client, intentRes.data);\n\n const found = await pollForNewCollection(newCollectionName, newCollectionSymbol);\n if (!found) throw new Error(\"Collection created, but it's still indexing — try minting again in a moment from My Collections.\");\n collectionId = found.collectionId!;\n contractAddress = found.contractAddress ?? null;\n }\n\n const intentRes = await client.api.createMintIntent({\n owner: walletAddress,\n collectionId,\n recipient: walletAddress,\n tokenUri,\n royaltyBps: Math.round(values.royalty * 100),\n });\n if (!intentRes.data.requiresSignature) {\n const calls = intentRes.data.calls;\n contractAddress = calls[calls.length - 1]?.contractAddress ?? contractAddress;\n }\n result = await executeIntent(provider, signer, client, intentRes.data);\n finalContractAddress = contractAddress;\n\n if (finalContractAddress) {\n finalTokenId = await readMintedTokenId(provider, result.txHash, finalContractAddress);\n }\n } else {\n let collectionContract = existingCollectionContract;\n\n if (collectionMode === \"new\") {\n const intentRes = await client.api.createCollectionIntent({\n owner: walletAddress,\n name: newCollectionName,\n symbol: newCollectionSymbol,\n baseUri: \"\",\n service: \"mip-erc1155\",\n });\n const deployResult = await executeIntent(provider, signer, client, intentRes.data);\n\n let receipt: { events?: { keys?: string[] }[] } | null = null;\n for (let attempt = 0; attempt < 3 && !receipt; attempt++) {\n try {\n if (attempt > 0) await new Promise((r) => setTimeout(r, 2000));\n const raw = await provider.getTransactionReceipt(deployResult.txHash);\n receipt = raw as { events?: { keys?: string[] }[] };\n } catch { /* retry */ }\n }\n const events = receipt?.events ?? [];\n const deployEvent = events.find((e) =>\n e.keys?.[0] && BigInt(e.keys[0]) === BigInt(COLLECTION_DEPLOYED_SELECTOR)\n );\n if (!deployEvent?.keys?.[1]) throw new Error(\"Collection deployed, but its address couldn't be read — check My Collections to mint into it.\");\n collectionContract = normalizeAddress(\"STARKNET\", deployEvent.keys[1]);\n }\n\n const intentRes = await client.api.createMintIntent({\n owner: walletAddress,\n recipient: walletAddress,\n collectionContract,\n tokenUri,\n value: editionCount,\n royaltyBps: Math.round(values.royalty * 100),\n });\n result = await executeIntent(provider, signer, client, intentRes.data);\n finalContractAddress = collectionContract;\n finalTokenId = await readMintedTokenId(provider, result.txHash, collectionContract);\n }\n\n if (finalContractAddress && finalTokenId) {\n const asset: MintedAsset = { contract: finalContractAddress, tokenId: finalTokenId, image };\n setMintedAsset(asset);\n onMinted?.(asset);\n }\n setStatus(\"success\");\n } catch (err) {\n setErrorMsg(err instanceof Error ? err.message : \"Something went wrong. Please try again.\");\n setStatus(\"error\");\n }\n };\n\n const resetAll = () => {\n setStatus(\"idle\");\n setErrorMsg(null);\n setMintedAsset(null);\n form.reset();\n clearMedia();\n setFeaturePreview(null);\n setFeatureUri(null);\n setAssetType(\"single\");\n setEditionCount(\"10\");\n setCollectionMode(\"existing\");\n setExistingCollectionId(\"\");\n setExistingCollectionContract(\"\");\n setNewCollectionName(\"\");\n setNewCollectionSymbol(\"\");\n setAutoSymbol(\"\");\n setAutoCollectionName(\"\");\n templateFieldsRef.current = [];\n };\n\n const busy = status === \"minting\";\n const KindIcon = MEDIA_KIND_ICON[mediaKind];\n const selectedExistingCollection = assetType === \"single\"\n ? erc721Collections.find((c) => c.collectionId === existingCollectionId)\n : erc1155Collections.find((c) => c.contractAddress === existingCollectionContract);\n const collectionLabel = mediaUri\n ? (collectionMode === \"new\"\n ? (newCollectionName || \"New collection\")\n : (selectedExistingCollection?.name || \"IP Asset\"))\n : undefined;\n\n const wrap = (node: React.ReactNode) => {\n if (presentation !== \"dialog\") return node;\n return (\n <ActionDialog open={open} onClose={onClose ?? (() => {})} width={640}>\n <div className=\"relative p-6 sm:p-8\">\n <button\n type=\"button\"\n onClick={onClose}\n aria-label=\"Close\"\n className=\"absolute top-4 right-4 h-8 w-8 rounded-full hover:bg-muted flex items-center justify-center text-muted-foreground\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n {node}\n </div>\n </ActionDialog>\n );\n };\n\n if (status === \"success\") {\n return wrap(\n <SuccessView\n presentation={presentation}\n previewImage={mediaKind === \"image\" ? mediaPreview : featurePreview}\n name={name}\n collectionLabel={collectionLabel}\n mintedAsset={mintedAsset}\n onPublishAnother={resetAll}\n />\n );\n }\n\n if (!mediaFile) {\n return wrap(\n <Dropzone\n mediaKindLock={mediaKindLock}\n presentation={presentation}\n hasWallet={hasWallet}\n onRequireWallet={onRequireWallet}\n connectLabel={connectLabel}\n onFileSelected={handleMediaSelect}\n />\n );\n }\n\n return wrap(\n <section className=\"space-y-6\">\n <div className=\"flex items-center gap-4 rounded-xl border border-border p-3\">\n <div className=\"relative h-14 w-14 rounded-lg bg-muted overflow-hidden shrink-0\">\n {mediaKind === \"image\" && mediaPreview ? (\n <Image src={mediaPreview} alt=\"\" fill className=\"object-cover\" unoptimized />\n ) : (\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <KindIcon className=\"h-6 w-6 text-muted-foreground\" />\n </div>\n )}\n {mediaUploading && (\n <div className=\"absolute inset-0 flex items-center justify-center bg-background/70\">\n <Loader2 className=\"h-4 w-4 animate-spin\" />\n </div>\n )}\n </div>\n <div className=\"min-w-0 flex-1\">\n <p className=\"text-sm font-semibold truncate\">{mediaFile.name}</p>\n <p className=\"text-xs text-muted-foreground\">\n {mediaUploading ? \"Uploading…\" : mediaUri ? \"Uploaded\" : \"Upload failed\"}\n </p>\n </div>\n <button\n type=\"button\"\n onClick={() => mediaInputRef.current?.click()}\n className=\"text-xs font-semibold text-brand-blue hover:underline shrink-0\"\n >\n Change\n </button>\n <input ref={mediaInputRef} type=\"file\" className=\"hidden\" onChange={(e) => { const f = e.target.files?.[0]; if (f) handleMediaSelect(f); }} />\n </div>\n\n {mediaUri && (\n <div className=\"grid grid-cols-1 lg:grid-cols-[1fr_320px] gap-8 items-start\">\n <div className=\"space-y-5\">\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Name *</label>\n <Input\n value={name}\n onChange={(e) => form.setValue(\"name\", e.target.value)}\n placeholder=\"My Creative Work\"\n />\n </div>\n\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Description</label>\n <Textarea\n value={form.watch(\"description\")}\n onChange={(e) => form.setValue(\"description\", e.target.value)}\n placeholder=\"Describe your work, its story, and any context for buyers…\"\n rows={3}\n />\n </div>\n\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">External link <span className=\"text-muted-foreground font-normal\">(optional)</span></label>\n <Input\n value={form.watch(\"external_url\")}\n onChange={(e) => form.setValue(\"external_url\", e.target.value)}\n placeholder=\"https://yourwebsite.com\"\n />\n </div>\n\n {mediaKind !== \"image\" && (\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Feature image *</label>\n <div className=\"flex items-center gap-4\">\n <div\n role=\"button\"\n tabIndex={0}\n onClick={() => !featureUploading && featureInputRef.current?.click()}\n onKeyDown={(e) => { if ((e.key === \"Enter\" || e.key === \" \") && !featureUploading) { e.preventDefault(); featureInputRef.current?.click(); } }}\n className=\"relative h-20 w-20 rounded-xl border-2 border-dashed border-border bg-muted flex items-center justify-center overflow-hidden shrink-0 cursor-pointer hover:border-primary/50 transition-colors\"\n >\n {featurePreview ? (\n <Image src={featurePreview} alt=\"\" fill className=\"object-cover\" unoptimized />\n ) : (\n <ImagePlus className=\"h-6 w-6 text-muted-foreground\" />\n )}\n {featureUploading && (\n <div className=\"absolute inset-0 flex items-center justify-center bg-background/70\">\n <Loader2 className=\"h-4 w-4 animate-spin\" />\n </div>\n )}\n <input ref={featureInputRef} type=\"file\" accept=\"image/*\" className=\"hidden\" onChange={(e) => { const f = e.target.files?.[0]; if (f) handleFeatureSelect(f); }} />\n </div>\n <p className=\"text-xs text-muted-foreground\">Cover art shown wherever the work is previewed. JPG, PNG, GIF, SVG or WebP.</p>\n </div>\n </div>\n )}\n\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Type</label>\n <div className=\"grid grid-cols-2 gap-3\">\n <button\n type=\"button\"\n onClick={() => setAssetType(\"single\")}\n className={cn(\"flex items-start gap-3 rounded-xl border p-4 text-left transition-colors\",\n assetType === \"single\" ? \"border-brand-blue bg-brand-blue/5\" : \"border-border hover:bg-muted/40\")}\n >\n <SingleIcon className={cn(\"h-5 w-5 shrink-0 mt-0.5\", assetType === \"single\" ? \"text-brand-blue\" : \"text-muted-foreground\")} />\n <span>\n <span className=\"block text-sm font-semibold\">One copy</span>\n <span className=\"block text-xs mt-0.5 text-muted-foreground\">Minted once</span>\n </span>\n </button>\n <button\n type=\"button\"\n onClick={() => setAssetType(\"editions\")}\n className={cn(\"flex items-start gap-3 rounded-xl border p-4 text-left transition-colors\",\n assetType === \"editions\" ? \"border-brand-blue bg-brand-blue/5\" : \"border-border hover:bg-muted/40\")}\n >\n <Layers className={cn(\"h-5 w-5 shrink-0 mt-0.5\", assetType === \"editions\" ? \"text-brand-blue\" : \"text-muted-foreground\")} />\n <span>\n <span className=\"block text-sm font-semibold\">Numbered copies</span>\n <span className=\"block text-xs mt-0.5 text-muted-foreground\">Several editions</span>\n </span>\n </button>\n </div>\n </div>\n\n {assetType === \"editions\" && (\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Number of copies</label>\n <Input\n type=\"number\"\n min={1}\n value={editionCount}\n onChange={(e) => setEditionCount(e.target.value)}\n className=\"max-w-[140px]\"\n />\n </div>\n )}\n\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between\">\n <label className=\"text-sm font-medium flex items-center gap-1.5\">\n <Boxes className=\"h-4 w-4\" />\n Collection *\n </label>\n <div className=\"flex rounded-lg border border-border overflow-hidden\">\n <button\n type=\"button\"\n onClick={() => setCollectionMode(\"existing\")}\n className={cn(\"px-3 h-7 text-xs font-medium transition-colors\",\n collectionMode === \"existing\" ? \"bg-primary text-primary-foreground\" : \"bg-background hover:bg-muted text-muted-foreground\")}\n >\n Existing\n </button>\n <button\n type=\"button\"\n onClick={() => setCollectionMode(\"new\")}\n className={cn(\"px-3 h-7 text-xs font-medium border-l border-border transition-colors flex items-center gap-1\",\n collectionMode === \"new\" ? \"bg-primary text-primary-foreground\" : \"bg-background hover:bg-muted text-muted-foreground\")}\n >\n <Plus className=\"h-3 w-3\" />New\n </button>\n </div>\n </div>\n\n {collectionMode === \"existing\" ? (\n <CollectionPicker\n collections={assetType === \"single\" ? erc721Collections : erc1155Collections}\n value={assetType === \"single\" ? existingCollectionId : existingCollectionContract}\n onChange={assetType === \"single\" ? setExistingCollectionId : setExistingCollectionContract}\n />\n ) : (\n <div className=\"grid grid-cols-2 gap-2\">\n <Input\n value={newCollectionName}\n onChange={(e) => setNewCollectionName(e.target.value)}\n placeholder=\"Collection name\"\n />\n <Input\n value={newCollectionSymbol}\n onChange={(e) => setNewCollectionSymbol(e.target.value.toUpperCase())}\n placeholder=\"SYMBOL\"\n />\n </div>\n )}\n </div>\n\n <Collapsible open={advancedOpen} onOpenChange={setAdvancedOpen}>\n <div className=\"rounded-xl border border-border overflow-hidden\">\n <CollapsibleTrigger asChild>\n <button type=\"button\" className=\"w-full flex items-center justify-between px-4 py-3.5 hover:bg-muted/30 transition-colors\">\n <span className=\"flex items-center gap-2\">\n <ShieldCheck className=\"h-4 w-4 text-primary\" />\n <span className=\"text-sm font-semibold\">Licensing Terms</span>\n <span className=\"text-xs text-muted-foreground font-normal\">Optional · Berne Convention</span>\n </span>\n <ChevronDown className={cn(\"h-4 w-4 text-muted-foreground transition-transform\", advancedOpen && \"rotate-180\")} />\n </button>\n </CollapsibleTrigger>\n <CollapsibleContent>\n <div className=\"px-4 pb-4 space-y-4 border-t border-border/60 pt-4\">\n <div className=\"space-y-1.5\">\n <label className=\"text-xs font-medium text-muted-foreground\">License</label>\n <Select value={form.watch(\"licenseType\")} onValueChange={handleLicenseChange}>\n <SelectTrigger><SelectValue /></SelectTrigger>\n <SelectContent>\n {LICENSE_TYPES.map((l) => <SelectItem key={l.value} value={l.value}>{l.label}</SelectItem>)}\n </SelectContent>\n </Select>\n </div>\n <div className=\"space-y-1.5\">\n <label className=\"text-xs font-medium text-muted-foreground\">Commercial use</label>\n <ToggleGroup value={form.watch(\"commercialUse\")} options={[\"Yes\", \"No\"]} onChange={(v) => form.setValue(\"commercialUse\", v as \"Yes\" | \"No\")} />\n </div>\n <div className=\"space-y-1.5\">\n <label className=\"text-xs font-medium text-muted-foreground\">Derivatives</label>\n <ToggleGroup value={form.watch(\"derivatives\")} options={DERIVATIVES_OPTIONS} onChange={(v) => form.setValue(\"derivatives\", v as FormValues[\"derivatives\"])} />\n </div>\n <div className=\"space-y-1.5\">\n <label className=\"text-xs font-medium text-muted-foreground\">Territory</label>\n <Select value={form.watch(\"geographicScope\")} onValueChange={(v) => form.setValue(\"geographicScope\", v)}>\n <SelectTrigger><SelectValue /></SelectTrigger>\n <SelectContent>\n {GEOGRAPHIC_SCOPES.map((s) => <SelectItem key={s} value={s}>{s}</SelectItem>)}\n </SelectContent>\n </Select>\n </div>\n <div className=\"space-y-1.5\">\n <label className=\"text-xs font-medium text-muted-foreground\">AI & data mining</label>\n <ToggleGroup value={form.watch(\"aiPolicy\")} options={AI_POLICIES} onChange={(v) => form.setValue(\"aiPolicy\", v as FormValues[\"aiPolicy\"])} />\n </div>\n <div className=\"space-y-1.5\">\n <label className=\"text-xs font-medium text-muted-foreground\">Royalty % (0–50)</label>\n <Input\n type=\"number\" min={0} max={50} step={0.5}\n value={form.watch(\"royalty\")}\n onChange={(e) => form.setValue(\"royalty\", parseFloat(e.target.value) || 0)}\n className=\"max-w-[120px]\"\n />\n </div>\n </div>\n </CollapsibleContent>\n </div>\n </Collapsible>\n\n <Collapsible open={ipTypeOpen} onOpenChange={setIpTypeOpen}>\n <div className=\"rounded-xl border border-border overflow-hidden\">\n <CollapsibleTrigger asChild>\n <button type=\"button\" className=\"w-full flex items-center justify-between px-4 py-3.5 hover:bg-muted/30 transition-colors\">\n <span className=\"flex items-center gap-2\">\n <Layers className=\"h-4 w-4 text-primary\" />\n <span className=\"text-sm font-semibold\">IP Type & Metadata</span>\n <span className=\"text-xs text-muted-foreground font-normal\">Optional</span>\n </span>\n <ChevronDown className={cn(\"h-4 w-4 text-muted-foreground transition-transform\", ipTypeOpen && \"rotate-180\")} />\n </button>\n </CollapsibleTrigger>\n <CollapsibleContent>\n <div className=\"px-4 pb-4 space-y-4 border-t border-border/60 pt-4\">\n <div className=\"space-y-1.5\">\n <label className=\"text-xs font-medium text-muted-foreground\">IP Type</label>\n <Select value={ipType} onValueChange={(v) => setIpType(v as IPType)}>\n <SelectTrigger><SelectValue /></SelectTrigger>\n <SelectContent>\n {IP_TYPES.map((t) => <SelectItem key={t} value={t}>{t}</SelectItem>)}\n </SelectContent>\n </Select>\n </div>\n <IPTypeFields\n ipType={ipType}\n onChange={(fields) => { templateFieldsRef.current = fields; }}\n uploadDocument={async (file) => {\n const token = await getUploadToken();\n if (!token) throw new Error(\"Sign in first\");\n const { uri } = await uploadFileToIpfs(file, token, \"document\");\n return uri;\n }}\n />\n </div>\n </CollapsibleContent>\n </div>\n </Collapsible>\n\n {status === \"error\" && errorMsg && <p className=\"text-xs text-destructive\">{errorMsg}</p>}\n\n <button\n type=\"button\"\n disabled={!ready || busy || !hasWallet}\n onClick={form.handleSubmit(onSubmit)}\n className={cn(\n \"w-full h-12 text-base font-semibold text-white rounded-xl flex items-center justify-center gap-2 transition-all hover:brightness-110 active:scale-[0.98] bg-brand-blue\",\n (!ready || busy || !hasWallet) && \"opacity-40 pointer-events-none\"\n )}\n >\n {busy ? <><Loader2 className=\"h-4 w-4 animate-spin\" />Minting…</> : assetType === \"single\" ? \"Mint NFT\" : \"Mint Editions\"}\n </button>\n <p className=\"text-xs text-center text-muted-foreground\">\n Zero platform fees to mint.\n </p>\n </div>\n\n <div className=\"lg:sticky lg:top-20\">\n <MedialaneCollectionCard\n image={mediaKind === \"image\" ? mediaPreview : featurePreview}\n name={name}\n collection={collectionLabel}\n creator={walletAddress ? `${walletAddress.slice(0, 6)}…${walletAddress.slice(-4)}` : undefined}\n creatorHref={walletAddress ? `/account/${walletAddress}` : undefined}\n />\n </div>\n </div>\n )}\n </section>\n );\n}\n"],"mappings":"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","names":["name","intentRes"]}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
"use client";
|
|
3
|
+
var __create = Object.create;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __export = (target, all) => {
|
|
10
|
+
for (var name in all)
|
|
11
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from))
|
|
16
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
17
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
18
|
+
}
|
|
19
|
+
return to;
|
|
20
|
+
};
|
|
21
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
22
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
23
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
24
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
25
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
26
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
27
|
+
mod
|
|
28
|
+
));
|
|
29
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
30
|
+
var success_view_exports = {};
|
|
31
|
+
__export(success_view_exports, {
|
|
32
|
+
SuccessView: () => SuccessView
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(success_view_exports);
|
|
35
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
36
|
+
var import_link = __toESM(require("../link.js"), 1);
|
|
37
|
+
var import_lucide_react = require("lucide-react");
|
|
38
|
+
var import_cn = require("../../utils/cn.js");
|
|
39
|
+
var import_button = require("../button.js");
|
|
40
|
+
var import_medialane_collection_card = require("../medialane-collection-card.js");
|
|
41
|
+
function SuccessView({
|
|
42
|
+
presentation = "inline",
|
|
43
|
+
previewImage,
|
|
44
|
+
name,
|
|
45
|
+
collectionLabel,
|
|
46
|
+
mintedAsset,
|
|
47
|
+
onPublishAnother
|
|
48
|
+
}) {
|
|
49
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("section", { className: (0, import_cn.cn)(presentation === "dialog" ? "" : "rounded-2xl border border-border p-6 sm:p-8"), children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "grid grid-cols-1 sm:grid-cols-[220px_1fr] gap-6 items-start", children: [
|
|
50
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_medialane_collection_card.MedialaneCollectionCard, { image: previewImage, name, collection: collectionLabel }),
|
|
51
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "space-y-5", children: [
|
|
52
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "space-y-1.5", children: [
|
|
53
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center gap-2 text-green-500", children: [
|
|
54
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.CheckCircle2, { className: "h-5 w-5" }),
|
|
55
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-sm font-semibold", children: "Published \u2014 live onchain" })
|
|
56
|
+
] }),
|
|
57
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-sm text-muted-foreground", children: mintedAsset ? "Ready to share, sell, or remix." : "It'll appear in your portfolio shortly." })
|
|
58
|
+
] }),
|
|
59
|
+
mintedAsset && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "grid grid-cols-2 gap-2.5", children: [
|
|
60
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
61
|
+
import_link.default,
|
|
62
|
+
{
|
|
63
|
+
href: `/asset/STARKNET/${mintedAsset.contract}/${mintedAsset.tokenId}`,
|
|
64
|
+
className: "flex items-center gap-2 rounded-xl border border-border px-4 py-3 text-sm font-semibold hover:bg-muted/40 transition-colors",
|
|
65
|
+
children: [
|
|
66
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Eye, { className: "h-4 w-4 text-muted-foreground" }),
|
|
67
|
+
"View asset"
|
|
68
|
+
]
|
|
69
|
+
}
|
|
70
|
+
),
|
|
71
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
72
|
+
import_link.default,
|
|
73
|
+
{
|
|
74
|
+
href: `/asset/STARKNET/${mintedAsset.contract}/${mintedAsset.tokenId}?action=list`,
|
|
75
|
+
className: "flex items-center gap-2 rounded-xl border border-border px-4 py-3 text-sm font-semibold hover:bg-muted/40 transition-colors",
|
|
76
|
+
children: [
|
|
77
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Tag, { className: "h-4 w-4 text-muted-foreground" }),
|
|
78
|
+
"List on marketplace"
|
|
79
|
+
]
|
|
80
|
+
}
|
|
81
|
+
),
|
|
82
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
83
|
+
import_link.default,
|
|
84
|
+
{
|
|
85
|
+
href: `/asset/STARKNET/${mintedAsset.contract}/${mintedAsset.tokenId}?action=transfer`,
|
|
86
|
+
className: "flex items-center gap-2 rounded-xl border border-border px-4 py-3 text-sm font-semibold hover:bg-muted/40 transition-colors",
|
|
87
|
+
children: [
|
|
88
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ArrowRightLeft, { className: "h-4 w-4 text-muted-foreground" }),
|
|
89
|
+
"Transfer"
|
|
90
|
+
]
|
|
91
|
+
}
|
|
92
|
+
),
|
|
93
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
94
|
+
import_link.default,
|
|
95
|
+
{
|
|
96
|
+
href: `/create/remix/${mintedAsset.contract}/${mintedAsset.tokenId}`,
|
|
97
|
+
className: "flex items-center gap-2 rounded-xl border border-border px-4 py-3 text-sm font-semibold hover:bg-muted/40 transition-colors",
|
|
98
|
+
children: [
|
|
99
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.GitBranch, { className: "h-4 w-4 text-muted-foreground" }),
|
|
100
|
+
"Create a remix"
|
|
101
|
+
]
|
|
102
|
+
}
|
|
103
|
+
)
|
|
104
|
+
] }),
|
|
105
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_button.Button, { variant: "outline", onClick: onPublishAnother, className: "w-full sm:w-auto", children: "Publish another" })
|
|
106
|
+
] })
|
|
107
|
+
] }) });
|
|
108
|
+
}
|
|
109
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
110
|
+
0 && (module.exports = {
|
|
111
|
+
SuccessView
|
|
112
|
+
});
|
|
113
|
+
//# sourceMappingURL=success-view.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/fast-mint/success-view.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"../link.js\";\nimport { CheckCircle2, Eye, Tag, ArrowRightLeft, GitBranch } from \"lucide-react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { Button } from \"../button.js\";\nimport { MedialaneCollectionCard } from \"../medialane-collection-card.js\";\nimport type { MintedAsset } from \"./types.js\";\n\nexport interface SuccessViewProps {\n presentation?: \"inline\" | \"dialog\";\n previewImage: string | null;\n name: string;\n collectionLabel?: string;\n mintedAsset: MintedAsset | null;\n onPublishAnother: () => void;\n}\n\nexport function SuccessView({\n presentation = \"inline\",\n previewImage,\n name,\n collectionLabel,\n mintedAsset,\n onPublishAnother,\n}: SuccessViewProps) {\n return (\n <section className={cn(presentation === \"dialog\" ? \"\" : \"rounded-2xl border border-border p-6 sm:p-8\")}>\n <div className=\"grid grid-cols-1 sm:grid-cols-[220px_1fr] gap-6 items-start\">\n <MedialaneCollectionCard image={previewImage} name={name} collection={collectionLabel} />\n <div className=\"space-y-5\">\n <div className=\"space-y-1.5\">\n <div className=\"flex items-center gap-2 text-green-500\">\n <CheckCircle2 className=\"h-5 w-5\" />\n <p className=\"text-sm font-semibold\">Published — live onchain</p>\n </div>\n <p className=\"text-sm text-muted-foreground\">\n {mintedAsset ? \"Ready to share, sell, or remix.\" : \"It'll appear in your portfolio shortly.\"}\n </p>\n </div>\n\n {mintedAsset && (\n <div className=\"grid grid-cols-2 gap-2.5\">\n <Link\n href={`/asset/STARKNET/${mintedAsset.contract}/${mintedAsset.tokenId}`}\n className=\"flex items-center gap-2 rounded-xl border border-border px-4 py-3 text-sm font-semibold hover:bg-muted/40 transition-colors\"\n >\n <Eye className=\"h-4 w-4 text-muted-foreground\" />\n View asset\n </Link>\n <Link\n href={`/asset/STARKNET/${mintedAsset.contract}/${mintedAsset.tokenId}?action=list`}\n className=\"flex items-center gap-2 rounded-xl border border-border px-4 py-3 text-sm font-semibold hover:bg-muted/40 transition-colors\"\n >\n <Tag className=\"h-4 w-4 text-muted-foreground\" />\n List on marketplace\n </Link>\n <Link\n href={`/asset/STARKNET/${mintedAsset.contract}/${mintedAsset.tokenId}?action=transfer`}\n className=\"flex items-center gap-2 rounded-xl border border-border px-4 py-3 text-sm font-semibold hover:bg-muted/40 transition-colors\"\n >\n <ArrowRightLeft className=\"h-4 w-4 text-muted-foreground\" />\n Transfer\n </Link>\n <Link\n href={`/create/remix/${mintedAsset.contract}/${mintedAsset.tokenId}`}\n className=\"flex items-center gap-2 rounded-xl border border-border px-4 py-3 text-sm font-semibold hover:bg-muted/40 transition-colors\"\n >\n <GitBranch className=\"h-4 w-4 text-muted-foreground\" />\n Create a remix\n </Link>\n </div>\n )}\n\n <Button variant=\"outline\" onClick={onPublishAnother} className=\"w-full sm:w-auto\">\n Publish another\n </Button>\n </div>\n </div>\n </section>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA6BQ;AA3BR,kBAAiB;AACjB,0BAAkE;AAClE,gBAAmB;AACnB,oBAAuB;AACvB,uCAAwC;AAYjC,SAAS,YAAY;AAAA,EAC1B,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAqB;AACnB,SACE,4CAAC,aAAQ,eAAW,cAAG,iBAAiB,WAAW,KAAK,6CAA6C,GACnG,uDAAC,SAAI,WAAU,+DACb;AAAA,gDAAC,4DAAwB,OAAO,cAAc,MAAY,YAAY,iBAAiB;AAAA,IACvF,6CAAC,SAAI,WAAU,aACb;AAAA,mDAAC,SAAI,WAAU,eACb;AAAA,qDAAC,SAAI,WAAU,0CACb;AAAA,sDAAC,oCAAa,WAAU,WAAU;AAAA,UAClC,4CAAC,OAAE,WAAU,yBAAwB,2CAAwB;AAAA,WAC/D;AAAA,QACA,4CAAC,OAAE,WAAU,iCACV,wBAAc,oCAAoC,2CACrD;AAAA,SACF;AAAA,MAEC,eACC,6CAAC,SAAI,WAAU,4BACb;AAAA;AAAA,UAAC,YAAAA;AAAA,UAAA;AAAA,YACC,MAAM,mBAAmB,YAAY,QAAQ,IAAI,YAAY,OAAO;AAAA,YACpE,WAAU;AAAA,YAEV;AAAA,0DAAC,2BAAI,WAAU,iCAAgC;AAAA,cAAE;AAAA;AAAA;AAAA,QAEnD;AAAA,QACA;AAAA,UAAC,YAAAA;AAAA,UAAA;AAAA,YACC,MAAM,mBAAmB,YAAY,QAAQ,IAAI,YAAY,OAAO;AAAA,YACpE,WAAU;AAAA,YAEV;AAAA,0DAAC,2BAAI,WAAU,iCAAgC;AAAA,cAAE;AAAA;AAAA;AAAA,QAEnD;AAAA,QACA;AAAA,UAAC,YAAAA;AAAA,UAAA;AAAA,YACC,MAAM,mBAAmB,YAAY,QAAQ,IAAI,YAAY,OAAO;AAAA,YACpE,WAAU;AAAA,YAEV;AAAA,0DAAC,sCAAe,WAAU,iCAAgC;AAAA,cAAE;AAAA;AAAA;AAAA,QAE9D;AAAA,QACA;AAAA,UAAC,YAAAA;AAAA,UAAA;AAAA,YACC,MAAM,iBAAiB,YAAY,QAAQ,IAAI,YAAY,OAAO;AAAA,YAClE,WAAU;AAAA,YAEV;AAAA,0DAAC,iCAAU,WAAU,iCAAgC;AAAA,cAAE;AAAA;AAAA;AAAA,QAEzD;AAAA,SACF;AAAA,MAGF,4CAAC,wBAAO,SAAQ,WAAU,SAAS,kBAAkB,WAAU,oBAAmB,6BAElF;AAAA,OACF;AAAA,KACF,GACF;AAEJ;","names":["Link"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { b as MintedAsset } from '../../types-BEsgYSTA.cjs';
|
|
3
|
+
import 'starknet';
|
|
4
|
+
import '@medialane/sdk';
|
|
5
|
+
import '@medialane/sdk/starknet';
|
|
6
|
+
|
|
7
|
+
interface SuccessViewProps {
|
|
8
|
+
presentation?: "inline" | "dialog";
|
|
9
|
+
previewImage: string | null;
|
|
10
|
+
name: string;
|
|
11
|
+
collectionLabel?: string;
|
|
12
|
+
mintedAsset: MintedAsset | null;
|
|
13
|
+
onPublishAnother: () => void;
|
|
14
|
+
}
|
|
15
|
+
declare function SuccessView({ presentation, previewImage, name, collectionLabel, mintedAsset, onPublishAnother, }: SuccessViewProps): react_jsx_runtime.JSX.Element;
|
|
16
|
+
|
|
17
|
+
export { SuccessView, type SuccessViewProps };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { b as MintedAsset } from '../../types-BEsgYSTA.js';
|
|
3
|
+
import 'starknet';
|
|
4
|
+
import '@medialane/sdk';
|
|
5
|
+
import '@medialane/sdk/starknet';
|
|
6
|
+
|
|
7
|
+
interface SuccessViewProps {
|
|
8
|
+
presentation?: "inline" | "dialog";
|
|
9
|
+
previewImage: string | null;
|
|
10
|
+
name: string;
|
|
11
|
+
collectionLabel?: string;
|
|
12
|
+
mintedAsset: MintedAsset | null;
|
|
13
|
+
onPublishAnother: () => void;
|
|
14
|
+
}
|
|
15
|
+
declare function SuccessView({ presentation, previewImage, name, collectionLabel, mintedAsset, onPublishAnother, }: SuccessViewProps): react_jsx_runtime.JSX.Element;
|
|
16
|
+
|
|
17
|
+
export { SuccessView, type SuccessViewProps };
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import Link from "../link.js";
|
|
4
|
+
import { CheckCircle2, Eye, Tag, ArrowRightLeft, GitBranch } from "lucide-react";
|
|
5
|
+
import { cn } from "../../utils/cn.js";
|
|
6
|
+
import { Button } from "../button.js";
|
|
7
|
+
import { MedialaneCollectionCard } from "../medialane-collection-card.js";
|
|
8
|
+
function SuccessView({
|
|
9
|
+
presentation = "inline",
|
|
10
|
+
previewImage,
|
|
11
|
+
name,
|
|
12
|
+
collectionLabel,
|
|
13
|
+
mintedAsset,
|
|
14
|
+
onPublishAnother
|
|
15
|
+
}) {
|
|
16
|
+
return /* @__PURE__ */ jsx("section", { className: cn(presentation === "dialog" ? "" : "rounded-2xl border border-border p-6 sm:p-8"), children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-[220px_1fr] gap-6 items-start", children: [
|
|
17
|
+
/* @__PURE__ */ jsx(MedialaneCollectionCard, { image: previewImage, name, collection: collectionLabel }),
|
|
18
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-5", children: [
|
|
19
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
|
|
20
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-green-500", children: [
|
|
21
|
+
/* @__PURE__ */ jsx(CheckCircle2, { className: "h-5 w-5" }),
|
|
22
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm font-semibold", children: "Published \u2014 live onchain" })
|
|
23
|
+
] }),
|
|
24
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: mintedAsset ? "Ready to share, sell, or remix." : "It'll appear in your portfolio shortly." })
|
|
25
|
+
] }),
|
|
26
|
+
mintedAsset && /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-2 gap-2.5", children: [
|
|
27
|
+
/* @__PURE__ */ jsxs(
|
|
28
|
+
Link,
|
|
29
|
+
{
|
|
30
|
+
href: `/asset/STARKNET/${mintedAsset.contract}/${mintedAsset.tokenId}`,
|
|
31
|
+
className: "flex items-center gap-2 rounded-xl border border-border px-4 py-3 text-sm font-semibold hover:bg-muted/40 transition-colors",
|
|
32
|
+
children: [
|
|
33
|
+
/* @__PURE__ */ jsx(Eye, { className: "h-4 w-4 text-muted-foreground" }),
|
|
34
|
+
"View asset"
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
),
|
|
38
|
+
/* @__PURE__ */ jsxs(
|
|
39
|
+
Link,
|
|
40
|
+
{
|
|
41
|
+
href: `/asset/STARKNET/${mintedAsset.contract}/${mintedAsset.tokenId}?action=list`,
|
|
42
|
+
className: "flex items-center gap-2 rounded-xl border border-border px-4 py-3 text-sm font-semibold hover:bg-muted/40 transition-colors",
|
|
43
|
+
children: [
|
|
44
|
+
/* @__PURE__ */ jsx(Tag, { className: "h-4 w-4 text-muted-foreground" }),
|
|
45
|
+
"List on marketplace"
|
|
46
|
+
]
|
|
47
|
+
}
|
|
48
|
+
),
|
|
49
|
+
/* @__PURE__ */ jsxs(
|
|
50
|
+
Link,
|
|
51
|
+
{
|
|
52
|
+
href: `/asset/STARKNET/${mintedAsset.contract}/${mintedAsset.tokenId}?action=transfer`,
|
|
53
|
+
className: "flex items-center gap-2 rounded-xl border border-border px-4 py-3 text-sm font-semibold hover:bg-muted/40 transition-colors",
|
|
54
|
+
children: [
|
|
55
|
+
/* @__PURE__ */ jsx(ArrowRightLeft, { className: "h-4 w-4 text-muted-foreground" }),
|
|
56
|
+
"Transfer"
|
|
57
|
+
]
|
|
58
|
+
}
|
|
59
|
+
),
|
|
60
|
+
/* @__PURE__ */ jsxs(
|
|
61
|
+
Link,
|
|
62
|
+
{
|
|
63
|
+
href: `/create/remix/${mintedAsset.contract}/${mintedAsset.tokenId}`,
|
|
64
|
+
className: "flex items-center gap-2 rounded-xl border border-border px-4 py-3 text-sm font-semibold hover:bg-muted/40 transition-colors",
|
|
65
|
+
children: [
|
|
66
|
+
/* @__PURE__ */ jsx(GitBranch, { className: "h-4 w-4 text-muted-foreground" }),
|
|
67
|
+
"Create a remix"
|
|
68
|
+
]
|
|
69
|
+
}
|
|
70
|
+
)
|
|
71
|
+
] }),
|
|
72
|
+
/* @__PURE__ */ jsx(Button, { variant: "outline", onClick: onPublishAnother, className: "w-full sm:w-auto", children: "Publish another" })
|
|
73
|
+
] })
|
|
74
|
+
] }) });
|
|
75
|
+
}
|
|
76
|
+
export {
|
|
77
|
+
SuccessView
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=success-view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/fast-mint/success-view.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"../link.js\";\nimport { CheckCircle2, Eye, Tag, ArrowRightLeft, GitBranch } from \"lucide-react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { Button } from \"../button.js\";\nimport { MedialaneCollectionCard } from \"../medialane-collection-card.js\";\nimport type { MintedAsset } from \"./types.js\";\n\nexport interface SuccessViewProps {\n presentation?: \"inline\" | \"dialog\";\n previewImage: string | null;\n name: string;\n collectionLabel?: string;\n mintedAsset: MintedAsset | null;\n onPublishAnother: () => void;\n}\n\nexport function SuccessView({\n presentation = \"inline\",\n previewImage,\n name,\n collectionLabel,\n mintedAsset,\n onPublishAnother,\n}: SuccessViewProps) {\n return (\n <section className={cn(presentation === \"dialog\" ? \"\" : \"rounded-2xl border border-border p-6 sm:p-8\")}>\n <div className=\"grid grid-cols-1 sm:grid-cols-[220px_1fr] gap-6 items-start\">\n <MedialaneCollectionCard image={previewImage} name={name} collection={collectionLabel} />\n <div className=\"space-y-5\">\n <div className=\"space-y-1.5\">\n <div className=\"flex items-center gap-2 text-green-500\">\n <CheckCircle2 className=\"h-5 w-5\" />\n <p className=\"text-sm font-semibold\">Published — live onchain</p>\n </div>\n <p className=\"text-sm text-muted-foreground\">\n {mintedAsset ? \"Ready to share, sell, or remix.\" : \"It'll appear in your portfolio shortly.\"}\n </p>\n </div>\n\n {mintedAsset && (\n <div className=\"grid grid-cols-2 gap-2.5\">\n <Link\n href={`/asset/STARKNET/${mintedAsset.contract}/${mintedAsset.tokenId}`}\n className=\"flex items-center gap-2 rounded-xl border border-border px-4 py-3 text-sm font-semibold hover:bg-muted/40 transition-colors\"\n >\n <Eye className=\"h-4 w-4 text-muted-foreground\" />\n View asset\n </Link>\n <Link\n href={`/asset/STARKNET/${mintedAsset.contract}/${mintedAsset.tokenId}?action=list`}\n className=\"flex items-center gap-2 rounded-xl border border-border px-4 py-3 text-sm font-semibold hover:bg-muted/40 transition-colors\"\n >\n <Tag className=\"h-4 w-4 text-muted-foreground\" />\n List on marketplace\n </Link>\n <Link\n href={`/asset/STARKNET/${mintedAsset.contract}/${mintedAsset.tokenId}?action=transfer`}\n className=\"flex items-center gap-2 rounded-xl border border-border px-4 py-3 text-sm font-semibold hover:bg-muted/40 transition-colors\"\n >\n <ArrowRightLeft className=\"h-4 w-4 text-muted-foreground\" />\n Transfer\n </Link>\n <Link\n href={`/create/remix/${mintedAsset.contract}/${mintedAsset.tokenId}`}\n className=\"flex items-center gap-2 rounded-xl border border-border px-4 py-3 text-sm font-semibold hover:bg-muted/40 transition-colors\"\n >\n <GitBranch className=\"h-4 w-4 text-muted-foreground\" />\n Create a remix\n </Link>\n </div>\n )}\n\n <Button variant=\"outline\" onClick={onPublishAnother} className=\"w-full sm:w-auto\">\n Publish another\n </Button>\n </div>\n </div>\n </section>\n );\n}\n"],"mappings":";AA6BQ,cAGI,YAHJ;AA3BR,OAAO,UAAU;AACjB,SAAS,cAAc,KAAK,KAAK,gBAAgB,iBAAiB;AAClE,SAAS,UAAU;AACnB,SAAS,cAAc;AACvB,SAAS,+BAA+B;AAYjC,SAAS,YAAY;AAAA,EAC1B,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAqB;AACnB,SACE,oBAAC,aAAQ,WAAW,GAAG,iBAAiB,WAAW,KAAK,6CAA6C,GACnG,+BAAC,SAAI,WAAU,+DACb;AAAA,wBAAC,2BAAwB,OAAO,cAAc,MAAY,YAAY,iBAAiB;AAAA,IACvF,qBAAC,SAAI,WAAU,aACb;AAAA,2BAAC,SAAI,WAAU,eACb;AAAA,6BAAC,SAAI,WAAU,0CACb;AAAA,8BAAC,gBAAa,WAAU,WAAU;AAAA,UAClC,oBAAC,OAAE,WAAU,yBAAwB,2CAAwB;AAAA,WAC/D;AAAA,QACA,oBAAC,OAAE,WAAU,iCACV,wBAAc,oCAAoC,2CACrD;AAAA,SACF;AAAA,MAEC,eACC,qBAAC,SAAI,WAAU,4BACb;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,MAAM,mBAAmB,YAAY,QAAQ,IAAI,YAAY,OAAO;AAAA,YACpE,WAAU;AAAA,YAEV;AAAA,kCAAC,OAAI,WAAU,iCAAgC;AAAA,cAAE;AAAA;AAAA;AAAA,QAEnD;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,MAAM,mBAAmB,YAAY,QAAQ,IAAI,YAAY,OAAO;AAAA,YACpE,WAAU;AAAA,YAEV;AAAA,kCAAC,OAAI,WAAU,iCAAgC;AAAA,cAAE;AAAA;AAAA;AAAA,QAEnD;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,MAAM,mBAAmB,YAAY,QAAQ,IAAI,YAAY,OAAO;AAAA,YACpE,WAAU;AAAA,YAEV;AAAA,kCAAC,kBAAe,WAAU,iCAAgC;AAAA,cAAE;AAAA;AAAA;AAAA,QAE9D;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,MAAM,iBAAiB,YAAY,QAAQ,IAAI,YAAY,OAAO;AAAA,YAClE,WAAU;AAAA,YAEV;AAAA,kCAAC,aAAU,WAAU,iCAAgC;AAAA,cAAE;AAAA;AAAA;AAAA,QAEzD;AAAA,SACF;AAAA,MAGF,oBAAC,UAAO,SAAQ,WAAU,SAAS,kBAAkB,WAAU,oBAAmB,6BAElF;AAAA,OACF;AAAA,KACF,GACF;AAEJ;","names":[]}
|
|
@@ -23,8 +23,8 @@ declare const dropCreateSchema: z.ZodEffects<z.ZodObject<{
|
|
|
23
23
|
allowlistAddresses: z.ZodDefault<z.ZodString>;
|
|
24
24
|
}, "strip", z.ZodTypeAny, {
|
|
25
25
|
symbol: string;
|
|
26
|
-
derivatives: string;
|
|
27
26
|
name: string;
|
|
27
|
+
derivatives: string;
|
|
28
28
|
ipType: "Audio" | "Video" | "Art" | "Photography" | "NFT" | "Software" | "RWA" | "Patents" | "Posts" | "Publications" | "Documents" | "Custom";
|
|
29
29
|
licenseType: string;
|
|
30
30
|
commercialUse: string;
|
|
@@ -65,8 +65,8 @@ declare const dropCreateSchema: z.ZodEffects<z.ZodObject<{
|
|
|
65
65
|
allowlistAddresses?: string | undefined;
|
|
66
66
|
}>, {
|
|
67
67
|
symbol: string;
|
|
68
|
-
derivatives: string;
|
|
69
68
|
name: string;
|
|
69
|
+
derivatives: string;
|
|
70
70
|
ipType: "Audio" | "Video" | "Art" | "Photography" | "NFT" | "Software" | "RWA" | "Patents" | "Posts" | "Publications" | "Documents" | "Custom";
|
|
71
71
|
licenseType: string;
|
|
72
72
|
commercialUse: string;
|
|
@@ -23,8 +23,8 @@ declare const dropCreateSchema: z.ZodEffects<z.ZodObject<{
|
|
|
23
23
|
allowlistAddresses: z.ZodDefault<z.ZodString>;
|
|
24
24
|
}, "strip", z.ZodTypeAny, {
|
|
25
25
|
symbol: string;
|
|
26
|
-
derivatives: string;
|
|
27
26
|
name: string;
|
|
27
|
+
derivatives: string;
|
|
28
28
|
ipType: "Audio" | "Video" | "Art" | "Photography" | "NFT" | "Software" | "RWA" | "Patents" | "Posts" | "Publications" | "Documents" | "Custom";
|
|
29
29
|
licenseType: string;
|
|
30
30
|
commercialUse: string;
|
|
@@ -65,8 +65,8 @@ declare const dropCreateSchema: z.ZodEffects<z.ZodObject<{
|
|
|
65
65
|
allowlistAddresses?: string | undefined;
|
|
66
66
|
}>, {
|
|
67
67
|
symbol: string;
|
|
68
|
-
derivatives: string;
|
|
69
68
|
name: string;
|
|
69
|
+
derivatives: string;
|
|
70
70
|
ipType: "Audio" | "Video" | "Art" | "Photography" | "NFT" | "Software" | "RWA" | "Patents" | "Posts" | "Publications" | "Documents" | "Custom";
|
|
71
71
|
licenseType: string;
|
|
72
72
|
commercialUse: string;
|
package/dist/index.cjs
CHANGED
|
@@ -125,6 +125,7 @@ __export(index_exports, {
|
|
|
125
125
|
DropdownMenuSubContent: () => import_dropdown_menu.DropdownMenuSubContent,
|
|
126
126
|
DropdownMenuSubTrigger: () => import_dropdown_menu.DropdownMenuSubTrigger,
|
|
127
127
|
DropdownMenuTrigger: () => import_dropdown_menu.DropdownMenuTrigger,
|
|
128
|
+
Dropzone: () => import_dropzone.Dropzone,
|
|
128
129
|
DurationPicker: () => import_marketplace_dialog_primitives.DurationPicker,
|
|
129
130
|
EASE_OUT: () => import_motion_primitives.EASE_OUT,
|
|
130
131
|
EMBED_PLATFORM_META: () => import_ip_templates.EMBED_PLATFORM_META,
|
|
@@ -132,6 +133,7 @@ __export(index_exports, {
|
|
|
132
133
|
EmailVerificationGate: () => import_email_verification_gate.EmailVerificationGate,
|
|
133
134
|
EmptyOrError: () => import_empty_or_error.EmptyOrError,
|
|
134
135
|
FadeIn: () => import_motion_primitives.FadeIn,
|
|
136
|
+
FastMint: () => import_fast_mint.FastMint,
|
|
135
137
|
FeaturedCarousel: () => import_featured_carousel.FeaturedCarousel,
|
|
136
138
|
FeaturedCarouselSkeleton: () => import_featured_carousel.FeaturedCarouselSkeleton,
|
|
137
139
|
Form: () => import_form.Form,
|
|
@@ -256,6 +258,7 @@ __export(index_exports, {
|
|
|
256
258
|
StatPillRow: () => import_stat_tile.StatPillRow,
|
|
257
259
|
StatTile: () => import_stat_tile.StatTile,
|
|
258
260
|
StepNav: () => import_step_nav.StepNav,
|
|
261
|
+
SuccessView: () => import_success_view.SuccessView,
|
|
259
262
|
Switch: () => import_switch.Switch,
|
|
260
263
|
TEMPLATE_TRAIT_TYPES: () => import_ip_templates.TEMPLATE_TRAIT_TYPES,
|
|
261
264
|
TYPE_FILTERS: () => import_activity.TYPE_FILTERS,
|
|
@@ -310,6 +313,7 @@ __export(index_exports, {
|
|
|
310
313
|
isLivingRenderCollection: () => import_living_render_collections.isLivingRenderCollection,
|
|
311
314
|
isStableCurrency: () => import_format.isStableCurrency,
|
|
312
315
|
isUserRejectedRequest: () => import_wallet_error.isUserRejectedRequest,
|
|
316
|
+
isUserRejection: () => import_ipfs_upload.isUserRejection,
|
|
313
317
|
isWrongNetwork: () => import_wallet_error.isWrongNetwork,
|
|
314
318
|
licenseSummary: () => import_license_summary.licenseSummary,
|
|
315
319
|
markRead: () => import_notification_storage.markRead,
|
|
@@ -325,6 +329,9 @@ __export(index_exports, {
|
|
|
325
329
|
timeUntil: () => import_time.timeUntil,
|
|
326
330
|
toDurationDays: () => import_license_terms_builder.toDurationDays,
|
|
327
331
|
toLicenseMetadata: () => import_license_terms_builder.toLicenseMetadata,
|
|
332
|
+
uploadFailureToast: () => import_ipfs_upload.uploadFailureToast,
|
|
333
|
+
uploadFileToIpfs: () => import_ipfs_upload.uploadFileToIpfs,
|
|
334
|
+
uploadJsonToIpfs: () => import_ipfs_upload.uploadJsonToIpfs,
|
|
328
335
|
usdPriceFor: () => import_use_usd_prices.usdPriceFor,
|
|
329
336
|
useActivities: () => import_use_activities.useActivities,
|
|
330
337
|
useActivitiesByAddress: () => import_use_activities.useActivitiesByAddress,
|
|
@@ -365,6 +372,7 @@ var import_cn = require("./utils/cn.js");
|
|
|
365
372
|
var import_format = require("./utils/format.js");
|
|
366
373
|
var import_address = require("./utils/address.js");
|
|
367
374
|
var import_ipfs = require("./utils/ipfs.js");
|
|
375
|
+
var import_ipfs_upload = require("./utils/ipfs-upload.js");
|
|
368
376
|
var import_use_intersection_active = require("./utils/use-intersection-active.js");
|
|
369
377
|
var import_notification_storage = require("./utils/notification-storage.js");
|
|
370
378
|
var import_license_summary = require("./utils/license-summary.js");
|
|
@@ -497,6 +505,9 @@ var import_json_ld = require("./components/json-ld.js");
|
|
|
497
505
|
var import_creation_record = require("./components/creation-record.js");
|
|
498
506
|
var import_club_owner_actions = require("./components/club-owner-actions.js");
|
|
499
507
|
var import_ip_type_fields = require("./components/ip-type-fields.js");
|
|
508
|
+
var import_fast_mint = require("./components/fast-mint/fast-mint.js");
|
|
509
|
+
var import_dropzone = require("./components/fast-mint/dropzone.js");
|
|
510
|
+
var import_success_view = require("./components/fast-mint/success-view.js");
|
|
500
511
|
var import_proxy_body = require("./utils/proxy-body.js");
|
|
501
512
|
var import_format_activity = require("./utils/format-activity.js");
|
|
502
513
|
var import_query_keys = require("./utils/query-keys.js");
|
|
@@ -629,6 +640,7 @@ var import_dialog = require("./components/dialog.js");
|
|
|
629
640
|
DropdownMenuSubContent,
|
|
630
641
|
DropdownMenuSubTrigger,
|
|
631
642
|
DropdownMenuTrigger,
|
|
643
|
+
Dropzone,
|
|
632
644
|
DurationPicker,
|
|
633
645
|
EASE_OUT,
|
|
634
646
|
EMBED_PLATFORM_META,
|
|
@@ -636,6 +648,7 @@ var import_dialog = require("./components/dialog.js");
|
|
|
636
648
|
EmailVerificationGate,
|
|
637
649
|
EmptyOrError,
|
|
638
650
|
FadeIn,
|
|
651
|
+
FastMint,
|
|
639
652
|
FeaturedCarousel,
|
|
640
653
|
FeaturedCarouselSkeleton,
|
|
641
654
|
Form,
|
|
@@ -760,6 +773,7 @@ var import_dialog = require("./components/dialog.js");
|
|
|
760
773
|
StatPillRow,
|
|
761
774
|
StatTile,
|
|
762
775
|
StepNav,
|
|
776
|
+
SuccessView,
|
|
763
777
|
Switch,
|
|
764
778
|
TEMPLATE_TRAIT_TYPES,
|
|
765
779
|
TYPE_FILTERS,
|
|
@@ -814,6 +828,7 @@ var import_dialog = require("./components/dialog.js");
|
|
|
814
828
|
isLivingRenderCollection,
|
|
815
829
|
isStableCurrency,
|
|
816
830
|
isUserRejectedRequest,
|
|
831
|
+
isUserRejection,
|
|
817
832
|
isWrongNetwork,
|
|
818
833
|
licenseSummary,
|
|
819
834
|
markRead,
|
|
@@ -829,6 +844,9 @@ var import_dialog = require("./components/dialog.js");
|
|
|
829
844
|
timeUntil,
|
|
830
845
|
toDurationDays,
|
|
831
846
|
toLicenseMetadata,
|
|
847
|
+
uploadFailureToast,
|
|
848
|
+
uploadFileToIpfs,
|
|
849
|
+
uploadJsonToIpfs,
|
|
832
850
|
usdPriceFor,
|
|
833
851
|
useActivities,
|
|
834
852
|
useActivitiesByAddress,
|