@quantabit/nft-sdk 1.0.0

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../src/services/nftApi.js","../src/utils/chainAnchor.js","../src/types/index.js","../src/i18n/index.js","../src/hooks/useNft.js","../src/components/Nft.jsx","../src/index.js"],"sourcesContent":["/**\n * NFT SDK - API 客户端\n * NFT 系统后端接口封装\n * \n * 使用 BaseApiClient 基类简化代码\n */\n\nimport { BaseApiClient } from '@quantabit/sdk-config';\n\n/**\n * NFT API 客户端\n */\nexport class NftApiClient extends BaseApiClient {\n constructor(config = {}) {\n super('/nft', config);\n }\n\n // ============ NFT 查询 ============\n\n /**\n * 获取 NFT 列表\n * @param {Object} params - 查询参数\n */\n async getNFTs(params = {}) {\n return this.get('/list', params);\n }\n\n /**\n * 兼容旧 Hook 命名\n */\n async getNfts(params = {}) {\n return this.getNFTs(params);\n }\n\n /**\n * 获取 NFT 详情\n * @param {string} nftId - NFT ID\n */\n async getNFT(nftId) {\n return this.get(`/${nftId}`);\n }\n\n /**\n * 兼容旧 Hook 命名\n */\n async getNftDetail(nftId) {\n return this.getNFT(nftId);\n }\n\n /**\n * 获取 NFT 元数据\n * @param {string} nftId - NFT ID\n */\n async getMetadata(nftId) {\n return this.get(`/${nftId}/metadata`);\n }\n\n /**\n * 获取 NFT 历史\n * @param {string} nftId - NFT ID\n */\n async getHistory(nftId) {\n return this.get(`/${nftId}/history`);\n }\n\n // ============ 我的 NFT ============\n\n /**\n * 获取我的 NFT\n * @param {Object} params - 查询参数\n */\n async getMyNFTs(params = {}) {\n return this.get('/my', params);\n }\n\n /**\n * 兼容旧 Hook 命名\n */\n async getMyNfts(params = {}) {\n return this.getMyNFTs(params);\n }\n\n /**\n * 获取收藏的 NFT\n * @param {Object} params - 查询参数\n */\n async getFavorites(params = {}) {\n return this.get('/my/favorites', params);\n }\n\n /**\n * 收藏 NFT\n * @param {string} nftId - NFT ID\n */\n async favorite(nftId) {\n return this.post(`/${nftId}/favorite`);\n }\n\n async addFavorite(nftId) {\n return this.favorite(nftId);\n }\n\n /**\n * 取消收藏\n * @param {string} nftId - NFT ID\n */\n async unfavorite(nftId) {\n return this.delete(`/${nftId}/favorite`);\n }\n\n async removeFavorite(nftId) {\n return this.unfavorite(nftId);\n }\n\n // ============ NFT 铸造 ============\n\n /**\n * 铸造 NFT\n * @param {Object} data - 铸造数据\n */\n async mint(data) {\n return this.post('/mint', data);\n }\n\n async mintNft(data) {\n return this.mint(data);\n }\n\n /**\n * 批量铸造\n * @param {Object[]} items - NFT 数据列表\n */\n async batchMint(items) {\n return this.post('/mint/batch', { items });\n }\n\n /**\n * 获取铸造费用估算\n * @param {Object} data - 铸造数据\n */\n async estimateMintFee(data) {\n return this.post('/mint/estimate', data);\n }\n\n // ============ NFT 转移 ============\n\n /**\n * 转移 NFT\n * @param {string} nftId - NFT ID\n * @param {string} toAddress - 目标地址\n */\n async transfer(nftId, toAddress) {\n return this.post(`/${nftId}/transfer`, { to_address: toAddress });\n }\n\n /**\n * 批量转移\n * @param {Object[]} transfers - 转移列表\n */\n async batchTransfer(transfers) {\n return this.post('/transfer/batch', { transfers });\n }\n\n // ============ 合集 ============\n\n /**\n * 获取合集列表\n * @param {Object} params - 查询参数\n */\n async getCollections(params = {}) {\n return this.get('/collections', params);\n }\n\n /**\n * 获取合集详情\n * @param {string} collectionId - 合集 ID\n */\n async getCollection(collectionId) {\n return this.get(`/collections/${collectionId}`);\n }\n\n /**\n * 获取合集中的 NFT\n * @param {string} collectionId - 合集 ID\n * @param {Object} params - 查询参数\n */\n async getCollectionNFTs(collectionId, params = {}) {\n return this.get(`/collections/${collectionId}/nfts`, params);\n }\n\n /**\n * 创建合集\n * @param {Object} data - 合集数据\n */\n async createCollection(data) {\n return this.post('/collections', data);\n }\n\n // ============ 市场 ============\n\n /**\n * 上架 NFT\n * @param {string} nftId - NFT ID\n * @param {Object} listing - 上架信息\n */\n async list(nftId, listing) {\n return this.post(`/${nftId}/list`, listing);\n }\n\n /**\n * 下架 NFT\n * @param {string} nftId - NFT ID\n */\n async unlist(nftId) {\n return this.post(`/${nftId}/unlist`);\n }\n\n /**\n * 购买 NFT\n * @param {string} nftId - NFT ID\n */\n async buy(nftId) {\n return this.post(`/${nftId}/buy`);\n }\n\n async buyNft(nftId, price, options = {}) {\n return this.post(`/${nftId}/buy`, { price, ...options });\n }\n\n /**\n * 出价\n * @param {string} nftId - NFT ID\n * @param {Object} offer - 出价信息\n */\n async makeOffer(nftId, offer) {\n return this.post(`/${nftId}/offer`, offer);\n }\n\n /**\n * 接受出价\n * @param {string} nftId - NFT ID\n * @param {string} offerId - 出价 ID\n */\n async acceptOffer(nftId, offerId) {\n return this.post(`/${nftId}/offer/${offerId}/accept`);\n }\n\n // ============ 链上证明 ============\n\n\n /**\n * 提交 NFT 链上交易哈希\n */\n async submitChainTx(nftId, txHash, data = {}) {\n return this.post(`/${nftId}/chain/submit`, {\n tx_hash: txHash,\n chain: 'qbit',\n network: 'mainnet',\n ...data,\n });\n }\n\n /**\n * 查询 NFT 链上确认状态\n */\n async getChainStatus(nftId) {\n return this.get(`/${nftId}/chain/status`);\n }\n\n async getAuction(nftId) {\n return this.get(`/${nftId}/auction`);\n }\n\n async placeBid(nftId, amount, options = {}) {\n return this.post(`/${nftId}/bid`, { amount, ...options });\n }\n\n}\n\n// 创建默认实例\nexport const nftApi = new NftApiClient();\n\n\n\nexport default nftApi;\n","const NFT_ANCHOR_NAMESPACE = 'qbit_nft';\n\nfunction pickNftId(nft) {\n return nft?.id || nft?.nft_id || nft?.nftId || nft?.token_id || nft?.tokenId || nft?.mint;\n}\n\nfunction pickContentHash(nft, options) {\n return (\n options.contentHash ||\n nft?.content_hash ||\n nft?.metadata_hash ||\n nft?.image_hash ||\n nft?.hash ||\n null\n );\n}\n\nexport async function buildNftAnchorMemo(nft, options = {}) {\n const { buildQBitAnchorMemo } = await import('@quantabit/qbit-chain-sdk');\n const nftId = options.nftId || pickNftId(nft);\n const contentHash = pickContentHash(nft, options);\n\n return buildQBitAnchorMemo({\n action: options.action || 'nft_anchor',\n subject: nftId ? `nft:${nftId}` : 'nft',\n resource_id: nftId,\n content_hash: contentHash,\n version: options.version,\n timestamp: options.timestamp,\n extra: {\n collection_id: nft?.collection_id || nft?.collectionId || nft?.collection?.id,\n owner: nft?.owner || nft?.owner_address,\n creator_did: nft?.creator_did,\n ...options.extra,\n },\n }, {\n namespace: options.namespace || NFT_ANCHOR_NAMESPACE,\n maxBytes: options.maxBytes,\n });\n}\n\nexport function buildNftChainSubmit(nftId, txHash, options = {}) {\n return {\n nft_id: nftId,\n tx_hash: txHash,\n chain: options.chain || 'qbit',\n network: options.network || 'mainnet',\n action: options.action || 'nft_anchor',\n memo: options.memo,\n content_hash: options.contentHash,\n ...options.extra,\n };\n}\n\nexport { NFT_ANCHOR_NAMESPACE };\n","/**\n * NFT SDK - 类型定义\n */\n\n// NFT状态\nexport const NFTStatus = {\n MINTING: 'minting',\n MINTED: 'minted',\n LISTED: 'listed',\n SOLD: 'sold',\n BURNED: 'burned',\n};\n\n// NFT类型\nexport const NFTType = {\n IMAGE: 'image',\n VIDEO: 'video',\n AUDIO: 'audio',\n MODEL_3D: '3d_model',\n COLLECTIBLE: 'collectible',\n TICKET: 'ticket',\n MEMBERSHIP: 'membership',\n};\n\n// 链类型\nexport const ChainType = {\n ETHEREUM: 'ethereum',\n POLYGON: 'polygon',\n BSC: 'bsc',\n SOLANA: 'solana',\n PRIVATE: 'private',\n};\n\n// 交易类型\nexport const NFTTransactionType = {\n MINT: 'mint',\n TRANSFER: 'transfer',\n SALE: 'sale',\n AUCTION: 'auction',\n BURN: 'burn',\n};\n\nexport default { NFTStatus, NFTType, ChainType, NFTTransactionType };\n\nexport const NftRarity = {};\n\nexport const NftStatus = {};\n","/**\n * NFT SDK - 国际化\n * NFT系统多语言支持\n */\n\nexport const SUPPORTED_LANGUAGES = ['en', 'zh', 'ja', 'ko'];\n\nexport const messages = {\n zh: {\n // NFT\n nft: 'NFT',\n nfts: 'NFT',\n myNfts: '我的NFT',\n allNfts: '全部NFT',\n \n // 详情\n name: '名称',\n description: '描述',\n collection: '系列',\n creator: '创作者',\n owner: '拥有者',\n tokenId: 'Token ID',\n contractAddress: '合约地址',\n contract: '合约地址',\n blockchain: '区块链',\n chain: '区块链',\n history: '交易历史',\n \n // 属性\n attributes: '属性',\n properties: '属性',\n rarity: '稀有度',\n common: '普通',\n rare: '稀有',\n epic: '史诗',\n legendary: '传说',\n \n // 交易\n price: '价格',\n lastSale: '最近成交',\n buy: '购买',\n sell: '出售',\n transfer: '转移',\n list: '上架',\n delist: '下架',\n unlist: '下架',\n \n // 竞拍\n auction: '拍卖',\n bid: '出价',\n currentBid: '当前出价',\n minBid: '最低出价',\n placeBid: '出价',\n endTime: '结束时间',\n \n // 铸造\n mint: '铸造',\n minting: '铸造中...',\n mintSuccess: '铸造成功',\n mintFailed: '铸造失败',\n supply: '发行量',\n \n // 筛选\n filter: '筛选',\n sort: '排序',\n priceHighToLow: '价格从高到低',\n priceLowToHigh: '价格从低到高',\n newest: '最新',\n oldest: '最早',\n \n // 状态\n loading: '加载中...',\n noNfts: '暂无NFT',\n error: '加载失败',\n \n // 其他\n viewOnExplorer: '在浏览器中查看',\n share: '分享',\n favorite: '收藏',\n favorites: '收藏',\n },\n en: {\n nft: 'NFT',\n nfts: 'NFTs',\n myNfts: 'My NFTs',\n allNfts: 'All NFTs',\n \n name: 'Name',\n description: 'Description',\n collection: 'Collection',\n creator: 'Creator',\n owner: 'Owner',\n tokenId: 'Token ID',\n contractAddress: 'Contract',\n contract: 'Contract',\n blockchain: 'Blockchain',\n chain: 'Blockchain',\n history: 'History',\n \n attributes: 'Attributes',\n properties: 'Properties',\n rarity: 'Rarity',\n common: 'Common',\n rare: 'Rare',\n epic: 'Epic',\n legendary: 'Legendary',\n \n price: 'Price',\n lastSale: 'Last Sale',\n buy: 'Buy',\n sell: 'Sell',\n transfer: 'Transfer',\n list: 'List',\n delist: 'Delist',\n unlist: 'Delist',\n \n auction: 'Auction',\n bid: 'Bid',\n currentBid: 'Current Bid',\n minBid: 'Min Bid',\n placeBid: 'Place Bid',\n endTime: 'End Time',\n \n mint: 'Mint',\n minting: 'Minting...',\n mintSuccess: 'Minted!',\n mintFailed: 'Mint Failed',\n supply: 'Supply',\n \n filter: 'Filter',\n sort: 'Sort',\n priceHighToLow: 'Price: High to Low',\n priceLowToHigh: 'Price: Low to High',\n newest: 'Newest',\n oldest: 'Oldest',\n \n loading: 'Loading...',\n noNfts: 'No NFTs',\n error: 'Error',\n \n viewOnExplorer: 'View on Explorer',\n share: 'Share',\n favorite: 'Favorite',\n favorites: 'Favorites',\n },\n ja: {\n nft: 'NFT',\n nfts: 'NFT',\n myNfts: 'マイNFT',\n allNfts: 'すべてのNFT',\n \n name: '名前',\n description: '説明',\n collection: 'コレクション',\n creator: 'クリエイター',\n owner: 'オーナー',\n tokenId: 'トークンID',\n contractAddress: 'コントラクト',\n contract: 'コントラクト',\n blockchain: 'ブロックチェーン',\n chain: 'ブロックチェーン',\n history: '取引履歴',\n \n attributes: '属性',\n properties: 'プロパティ',\n rarity: 'レアリティ',\n common: 'コモン',\n rare: 'レア',\n epic: 'エピック',\n legendary: 'レジェンダリー',\n \n price: '価格',\n lastSale: '最終取引',\n buy: '購入',\n sell: '売却',\n transfer: '転送',\n list: '出品',\n delist: '取り下げ',\n unlist: '取り下げ',\n \n auction: 'オークション',\n bid: '入札',\n currentBid: '現在の入札',\n minBid: '最低入札',\n placeBid: '入札する',\n endTime: '終了時間',\n \n mint: 'ミント',\n minting: 'ミント中...',\n mintSuccess: 'ミント完了',\n mintFailed: 'ミント失敗',\n supply: '発行数',\n \n filter: 'フィルター',\n sort: '並び替え',\n priceHighToLow: '価格: 高い順',\n priceLowToHigh: '価格: 安い順',\n newest: '新着順',\n oldest: '古い順',\n \n loading: '読み込み中...',\n noNfts: 'NFTなし',\n error: 'エラー',\n \n viewOnExplorer: 'エクスプローラーで見る',\n share: '共有',\n favorite: 'お気に入り',\n favorites: 'お気に入り',\n },\n ko: {\n nft: 'NFT',\n nfts: 'NFT',\n myNfts: '내 NFT',\n allNfts: '모든 NFT',\n \n name: '이름',\n description: '설명',\n collection: '컬렉션',\n creator: '제작자',\n owner: '소유자',\n tokenId: '토큰 ID',\n contractAddress: '컨트랙트',\n contract: '컨트랙트',\n blockchain: '블록체인',\n chain: '블록체인',\n history: '거래 내역',\n \n attributes: '속성',\n properties: '속성',\n rarity: '희귀도',\n common: '일반',\n rare: '레어',\n epic: '에픽',\n legendary: '전설',\n \n price: '가격',\n lastSale: '최근 거래',\n buy: '구매',\n sell: '판매',\n transfer: '전송',\n list: '등록',\n delist: '등록 취소',\n unlist: '등록 취소',\n \n auction: '경매',\n bid: '입찰',\n currentBid: '현재 입찰',\n minBid: '최소 입찰',\n placeBid: '입찰하기',\n endTime: '종료 시간',\n \n mint: '민팅',\n minting: '민팅 중...',\n mintSuccess: '민팅 완료',\n mintFailed: '민팅 실패',\n supply: '발행량',\n \n filter: '필터',\n sort: '정렬',\n priceHighToLow: '가격: 높은 순',\n priceLowToHigh: '가격: 낮은 순',\n newest: '최신순',\n oldest: '오래된 순',\n \n loading: '로딩 중...',\n noNfts: 'NFT 없음',\n error: '오류',\n \n viewOnExplorer: '탐색기에서 보기',\n share: '공유',\n favorite: '즐겨찾기',\n favorites: '즐겨찾기',\n },\n};\n\nlet currentLanguage = 'zh';\n\nexport function setLanguage(lang) {\n if (SUPPORTED_LANGUAGES.includes(lang)) currentLanguage = lang;\n}\n\nexport function getLanguage() {\n return currentLanguage;\n}\n\nexport function t(key) {\n return (messages[currentLanguage] || messages.en)[key] || key;\n}\n\nexport default { messages, SUPPORTED_LANGUAGES, setLanguage, getLanguage, t };\n","/**\n * NFT SDK - React Hooks\n * NFT系统相关的状态管理\n */\n\nimport { useState, useEffect, useCallback, useMemo } from 'react';\nimport { nftApi } from '../services/nftApi';\n\n/**\n * 获取NFT列表\n */\nexport function useNfts(options = {}) {\n const [nfts, setNfts] = useState([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n const [pagination, setPagination] = useState({ page: 1, total: 0, hasMore: true });\n\n const { collection, owner, sort = 'newest', limit = 20 } = options;\n\n const fetchNfts = useCallback(async (page = 1) => {\n try {\n setLoading(true);\n const response = await nftApi.getNfts({ collection, owner, sort, page, limit });\n \n if (page === 1) {\n setNfts(response.data || []);\n } else {\n setNfts(prev => [...prev, ...(response.data || [])]);\n }\n \n setPagination({\n page,\n total: response.total || 0,\n hasMore: response.hasMore || false,\n });\n setError(null);\n } catch (err) {\n setError(err.message);\n } finally {\n setLoading(false);\n }\n }, [collection, owner, sort, limit]);\n\n useEffect(() => {\n fetchNfts(1);\n }, [fetchNfts]);\n\n const loadMore = useCallback(() => {\n if (!loading && pagination.hasMore) {\n fetchNfts(pagination.page + 1);\n }\n }, [loading, pagination, fetchNfts]);\n\n return { nfts, loading, error, pagination, loadMore, refresh: () => fetchNfts(1) };\n}\n\n/**\n * 获取NFT详情\n */\nexport function useNftDetail(tokenId) {\n const [nft, setNft] = useState(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n\n const fetchDetail = useCallback(async () => {\n if (!tokenId) return;\n \n try {\n setLoading(true);\n const response = await nftApi.getNftDetail(tokenId);\n setNft(response);\n setError(null);\n } catch (err) {\n setError(err.message);\n } finally {\n setLoading(false);\n }\n }, [tokenId]);\n\n useEffect(() => {\n fetchDetail();\n }, [fetchDetail]);\n\n return { nft, loading, error, refresh: fetchDetail };\n}\n\n/**\n * 我的NFT\n */\nexport function useMyNfts() {\n const [nfts, setNfts] = useState([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n\n const fetchNfts = useCallback(async () => {\n try {\n setLoading(true);\n const response = await nftApi.getMyNfts();\n setNfts(response.data || []);\n setError(null);\n } catch (err) {\n setError(err.message);\n } finally {\n setLoading(false);\n }\n }, []);\n\n useEffect(() => {\n fetchNfts();\n }, [fetchNfts]);\n\n // 按系列分组\n const grouped = useMemo(() => {\n const groups = {};\n nfts.forEach(nft => {\n const collection = nft.collection?.name || 'Others';\n if (!groups[collection]) groups[collection] = [];\n groups[collection].push(nft);\n });\n return groups;\n }, [nfts]);\n\n return { nfts, grouped, totalCount: nfts.length, loading, error, refresh: fetchNfts };\n}\n\n/**\n * NFT收藏\n */\nexport function useFavoriteNfts() {\n const [favorites, setFavorites] = useState([]);\n const [loading, setLoading] = useState(true);\n\n const fetchFavorites = useCallback(async () => {\n try {\n setLoading(true);\n const response = await nftApi.getFavorites();\n setFavorites(response.data || []);\n } catch (err) {\n console.error('Get favorites error:', err);\n } finally {\n setLoading(false);\n }\n }, []);\n\n useEffect(() => {\n fetchFavorites();\n }, [fetchFavorites]);\n\n const toggleFavorite = useCallback(async (tokenId) => {\n try {\n const isFav = favorites.some(f => f.tokenId === tokenId);\n if (isFav) {\n await nftApi.removeFavorite(tokenId);\n setFavorites(prev => prev.filter(f => f.tokenId !== tokenId));\n } else {\n await nftApi.addFavorite(tokenId);\n fetchFavorites(); // 重新加载\n }\n } catch (err) {\n console.error('Toggle favorite error:', err);\n }\n }, [favorites, fetchFavorites]);\n\n const isFavorite = useCallback((tokenId) => {\n return favorites.some(f => f.tokenId === tokenId);\n }, [favorites]);\n\n return { favorites, toggleFavorite, isFavorite, loading, refresh: fetchFavorites };\n}\n\n/**\n * 购买NFT\n */\nexport function useBuyNft() {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(null);\n const [result, setResult] = useState(null);\n\n const buy = useCallback(async (tokenId, price) => {\n try {\n setLoading(true);\n setError(null);\n const response = await nftApi.buyNft(tokenId, price);\n setResult(response);\n return response;\n } catch (err) {\n setError(err.message);\n throw err;\n } finally {\n setLoading(false);\n }\n }, []);\n\n const reset = useCallback(() => {\n setResult(null);\n setError(null);\n }, []);\n\n return { buy, loading, error, result, reset };\n}\n\n/**\n * 铸造NFT\n */\nexport function useMintNft() {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(null);\n const [result, setResult] = useState(null);\n const [progress, setProgress] = useState(0);\n\n const mint = useCallback(async (metadata) => {\n try {\n setLoading(true);\n setError(null);\n setProgress(0);\n \n // 上传资源\n setProgress(30);\n const response = await nftApi.mintNft(metadata);\n \n setProgress(100);\n setResult(response);\n return response;\n } catch (err) {\n setError(err.message);\n throw err;\n } finally {\n setLoading(false);\n }\n }, []);\n\n const reset = useCallback(() => {\n setResult(null);\n setError(null);\n setProgress(0);\n }, []);\n\n return { mint, loading, error, result, progress, reset };\n}\n\n/**\n * NFT拍卖\n */\nexport function useNftAuction(tokenId) {\n const [auction, setAuction] = useState(null);\n const [loading, setLoading] = useState(true);\n const [bidding, setBidding] = useState(false);\n\n const fetchAuction = useCallback(async () => {\n if (!tokenId) return;\n \n try {\n setLoading(true);\n const response = await nftApi.getAuction(tokenId);\n setAuction(response);\n } catch (err) {\n console.error('Get auction error:', err);\n } finally {\n setLoading(false);\n }\n }, [tokenId]);\n\n useEffect(() => {\n fetchAuction();\n }, [fetchAuction]);\n\n const placeBid = useCallback(async (amount) => {\n try {\n setBidding(true);\n await nftApi.placeBid(tokenId, amount);\n await fetchAuction();\n } catch (err) {\n console.error('Place bid error:', err);\n throw err;\n } finally {\n setBidding(false);\n }\n }, [tokenId, fetchAuction]);\n\n return { auction, placeBid, loading, bidding, refresh: fetchAuction };\n}\n\n","/**\n * NFT SDK - React 组件\n * NFT系统可视化组件\n */\n\nimport React, { useState, useCallback } from 'react';\nimport {\n useNfts,\n useNftDetail,\n useMyNfts,\n useFavoriteNfts,\n useBuyNft,\n useNftAuction,\n} from '../hooks/useNft';\nimport { t } from '../i18n';\nimport './Nft.css';\n\n/**\n * NFT卡片\n */\nexport function NftCard({ nft, onClick, showPrice = true }) {\n const { isFavorite, toggleFavorite } = useFavoriteNfts();\n const isFav = isFavorite(nft.tokenId);\n\n return (\n <div className=\"eco-nft-card\" onClick={() => onClick?.(nft)}>\n <div className=\"eco-nft-image\">\n <img src={nft.image} alt={nft.name} />\n {nft.rarity && (\n <span className={`eco-nft-rarity ${nft.rarity}`}>\n {t(nft.rarity)}\n </span>\n )}\n <button\n className={`eco-nft-fav ${isFav ? 'active' : ''}`}\n onClick={(e) => { e.stopPropagation(); toggleFavorite(nft.tokenId); }}\n >\n {isFav ? '❤️' : '🤍'}\n </button>\n </div>\n \n <div className=\"eco-nft-info\">\n <span className=\"eco-nft-collection\">{nft.collection?.name}</span>\n <h4 className=\"eco-nft-name\">{nft.name}</h4>\n \n {showPrice && nft.price && (\n <div className=\"eco-nft-price\">\n <span className=\"eco-nft-price-value\">{nft.price} ETH</span>\n </div>\n )}\n </div>\n </div>\n );\n}\n\n/**\n * NFT网格列表\n */\nexport function NftGrid({ nfts, onNftClick, loading }) {\n if (loading && nfts.length === 0) {\n return (\n <div className=\"eco-nft-grid eco-nft-loading\">\n <div className=\"eco-nft-spinner\" />\n </div>\n );\n }\n\n if (nfts.length === 0) {\n return (\n <div className=\"eco-nft-grid eco-nft-empty\">\n <span className=\"eco-nft-empty-icon\">🖼️</span>\n <span>{t('noNfts')}</span>\n </div>\n );\n }\n\n return (\n <div className=\"eco-nft-grid\">\n {nfts.map((nft) => (\n <NftCard key={nft.tokenId} nft={nft} onClick={onNftClick} />\n ))}\n </div>\n );\n}\n\n/**\n * NFT详情\n */\nexport function NftDetail({ tokenId, onClose }) {\n const { nft, loading } = useNftDetail(tokenId);\n const { buy, loading: buying } = useBuyNft();\n\n const handleBuy = useCallback(async () => {\n try {\n await buy(tokenId, nft.price);\n onClose?.();\n } catch (err) {\n console.error('Buy error:', err);\n }\n }, [buy, tokenId, nft, onClose]);\n\n if (loading) {\n return (\n <div className=\"eco-nft-detail eco-nft-loading\">\n <div className=\"eco-nft-spinner\" />\n </div>\n );\n }\n\n if (!nft) return null;\n\n return (\n <div className=\"eco-nft-detail\">\n <div className=\"eco-nft-detail-image\">\n <img src={nft.image} alt={nft.name} />\n </div>\n \n <div className=\"eco-nft-detail-content\">\n <span className=\"eco-nft-detail-collection\">{nft.collection?.name}</span>\n <h2 className=\"eco-nft-detail-name\">{nft.name}</h2>\n \n <div className=\"eco-nft-detail-owner\">\n <span>{t('owner')}</span>\n <span>{nft.owner?.slice(0, 8)}...</span>\n </div>\n \n <p className=\"eco-nft-detail-desc\">{nft.description}</p>\n \n {/* 属性 */}\n {nft.attributes?.length > 0 && (\n <div className=\"eco-nft-attributes\">\n <h4>{t('attributes')}</h4>\n <div className=\"eco-nft-attributes-grid\">\n {nft.attributes.map((attr, qbit) => (\n <div key={qbit} className=\"eco-nft-attribute\">\n <span className=\"eco-nft-attribute-type\">{attr.trait_type}</span>\n <span className=\"eco-nft-attribute-value\">{attr.value}</span>\n </div>\n ))}\n </div>\n </div>\n )}\n \n {/* 购买区域 */}\n {nft.isForSale && (\n <div className=\"eco-nft-detail-buy\">\n <div className=\"eco-nft-detail-price\">\n <span>{t('price')}</span>\n <span className=\"eco-nft-detail-price-value\">{nft.price} ETH</span>\n </div>\n <button\n className=\"eco-nft-buy-btn\"\n onClick={handleBuy}\n disabled={buying}\n >\n {buying ? '...' : t('buy')}\n </button>\n </div>\n )}\n </div>\n </div>\n );\n}\n\n/**\n * 我的NFT收藏页\n */\nexport function MyNftsPage() {\n const { nfts, grouped, totalCount, loading } = useMyNfts();\n const [selectedNft, setSelectedNft] = useState(null);\n\n return (\n <div className=\"eco-nft-my-page\">\n <div className=\"eco-nft-my-header\">\n <h2>{t('myNfts')}</h2>\n <span className=\"eco-nft-count\">{totalCount} NFTs</span>\n </div>\n\n {Object.entries(grouped).map(([collection, items]) => (\n <div key={collection} className=\"eco-nft-collection-section\">\n <h3>{collection}</h3>\n <NftGrid\n nfts={items}\n loading={loading}\n onNftClick={setSelectedNft}\n />\n </div>\n ))}\n\n {selectedNft && (\n <div className=\"eco-nft-modal\">\n <div className=\"eco-nft-modal-overlay\" onClick={() => setSelectedNft(null)} />\n <div className=\"eco-nft-modal-content\">\n <button className=\"eco-nft-modal-close\" onClick={() => setSelectedNft(null)}>\n ×\n </button>\n <NftDetail tokenId={selectedNft.tokenId} onClose={() => setSelectedNft(null)} />\n </div>\n </div>\n )}\n </div>\n );\n}\n\n/**\n * 拍卖卡片\n */\nexport function AuctionCard({ tokenId }) {\n const { auction, placeBid, bidding, loading } = useNftAuction(tokenId);\n const [bidAmount, setBidAmount] = useState('');\n\n const handleBid = useCallback(async () => {\n if (!bidAmount) return;\n try {\n await placeBid(parseFloat(bidAmount));\n setBidAmount('');\n } catch (err) {\n console.error('Bid error:', err);\n }\n }, [placeBid, bidAmount]);\n\n if (loading) {\n return (\n <div className=\"eco-nft-auction eco-nft-loading\">\n <div className=\"eco-nft-spinner\" />\n </div>\n );\n }\n\n if (!auction) return null;\n\n return (\n <div className=\"eco-nft-auction\">\n <h4>{t('auction')}</h4>\n \n <div className=\"eco-nft-auction-info\">\n <div className=\"eco-nft-auction-item\">\n <span>{t('currentBid')}</span>\n <span className=\"eco-nft-auction-value\">{auction.currentBid} ETH</span>\n </div>\n <div className=\"eco-nft-auction-item\">\n <span>{t('endTime')}</span>\n <span>{new Date(auction.endTime).toLocaleString()}</span>\n </div>\n </div>\n \n <div className=\"eco-nft-auction-bid\">\n <input\n type=\"number\"\n value={bidAmount}\n onChange={(e) => setBidAmount(e.target.value)}\n placeholder={`${t('minBid')}: ${auction.minBid} ETH`}\n step=\"0.01\"\n />\n <button\n className=\"eco-nft-bid-btn\"\n onClick={handleBid}\n disabled={bidding}\n >\n {bidding ? '...' : t('placeBid')}\n </button>\n </div>\n </div>\n );\n}\n\n/**\n * NFT市场首页\n */\nexport function NftMarketplace({ onNftClick }) {\n const [sort, setSort] = useState('newest');\n const { nfts, loading, pagination, loadMore } = useNfts({ sort });\n\n return (\n <div className=\"eco-nft-marketplace\">\n <div className=\"eco-nft-toolbar\">\n <h2>{t('allNfts')}</h2>\n <select\n className=\"eco-nft-sort\"\n value={sort}\n onChange={(e) => setSort(e.target.value)}\n >\n <option value=\"newest\">{t('newest')}</option>\n <option value=\"oldest\">{t('oldest')}</option>\n <option value=\"priceHighToLow\">{t('priceHighToLow')}</option>\n <option value=\"priceLowToHigh\">{t('priceLowToHigh')}</option>\n </select>\n </div>\n\n <NftGrid nfts={nfts} loading={loading} onNftClick={onNftClick} />\n\n {pagination.hasMore && (\n <button\n className=\"eco-nft-load-more\"\n onClick={loadMore}\n disabled={loading}\n >\n {loading ? '...' : t('loading')}\n </button>\n )}\n </div>\n );\n}\n\n","/**\n * @quantabit/nft-sdk\n * NFT System SDK - Full Version\n */\n\n// API Client\nexport { nftApi, NftApiClient } from './services/nftApi';\n\n// QBit Chain Anchor\nexport {\n NFT_ANCHOR_NAMESPACE,\n buildNftAnchorMemo,\n buildNftChainSubmit,\n} from './utils/chainAnchor';\n\n// Types\nexport { NftRarity, NftStatus } from './types';\n\n// i18n\nexport { messages, SUPPORTED_LANGUAGES, setLanguage, getLanguage, t } from './i18n';\n\n// React Hooks\nexport {\n useNfts,\n useNftDetail,\n useMyNfts,\n useFavoriteNfts,\n useBuyNft,\n useMintNft,\n useNftAuction,\n} from './hooks/useNft';\n\n// React Components\nexport {\n NftCard,\n NftGrid,\n NftDetail,\n MyNftsPage,\n AuctionCard,\n NftMarketplace,\n} from './components/Nft';\n\n// Shortcut Methods\nimport { nftApi } from './services/nftApi';\n\nexport const getNfts = (...args) => nftApi.getNfts(...args);\nexport const getNftDetail = (...args) => nftApi.getNftDetail(...args);\nexport const getMyNfts = (...args) => nftApi.getMyNfts(...args);\nexport const buyNft = (...args) => nftApi.buyNft(...args);\nexport const mintNft = (...args) => nftApi.mintNft(...args);\n"],"names":["NftApiClient","BaseApiClient","constructor","config","getNFTs","params","get","getNfts","getNFT","nftId","getNftDetail","getMetadata","getHistory","getMyNFTs","getMyNfts","getFavorites","favorite","post","addFavorite","unfavorite","delete","removeFavorite","mint","data","mintNft","batchMint","items","estimateMintFee","transfer","toAddress","to_address","batchTransfer","transfers","getCollections","getCollection","collectionId","getCollectionNFTs","createCollection","list","listing","unlist","buy","buyNft","price","options","makeOffer","offer","acceptOffer","offerId","submitChainTx","txHash","tx_hash","chain","network","getChainStatus","getAuction","placeBid","amount","nftApi","NFT_ANCHOR_NAMESPACE","pickNftId","nft","id","nft_id","token_id","tokenId","pickContentHash","contentHash","content_hash","metadata_hash","image_hash","hash","buildNftAnchorMemo","buildQBitAnchorMemo","action","subject","resource_id","version","timestamp","extra","collection_id","collection","owner","owner_address","creator_did","namespace","maxBytes","buildNftChainSubmit","memo","NftRarity","NftStatus","SUPPORTED_LANGUAGES","messages","zh","nfts","myNfts","allNfts","name","description","creator","contractAddress","contract","blockchain","history","attributes","properties","rarity","common","rare","epic","legendary","lastSale","sell","delist","auction","bid","currentBid","minBid","endTime","minting","mintSuccess","mintFailed","supply","filter","sort","priceHighToLow","priceLowToHigh","newest","oldest","loading","noNfts","error","viewOnExplorer","share","favorites","en","ja","ko","currentLanguage","setLanguage","lang","includes","getLanguage","t","key","useNfts","setNfts","useState","setLoading","setError","pagination","setPagination","page","total","hasMore","limit","fetchNfts","useCallback","response","prev","err","message","useEffect","loadMore","refresh","useNftDetail","setNft","fetchDetail","useMyNfts","grouped","useMemo","groups","forEach","push","totalCount","length","useFavoriteNfts","setFavorites","fetchFavorites","console","toggleFavorite","isFav","some","f","isFavorite","useBuyNft","result","setResult","reset","useMintNft","progress","setProgress","metadata","useNftAuction","setAuction","bidding","setBidding","fetchAuction","NftCard","onClick","showPrice","React","createElement","className","src","image","alt","e","stopPropagation","NftGrid","onNftClick","map","NftDetail","onClose","buying","handleBuy","slice","attr","qbit","trait_type","value","isForSale","disabled","MyNftsPage","selectedNft","setSelectedNft","Object","entries","AuctionCard","bidAmount","setBidAmount","handleBid","parseFloat","Date","toLocaleString","type","onChange","target","placeholder","step","NftMarketplace","setSort","args"],"mappings":"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"}