import React, { useState, useEffect } from 'react'; import { Rocket, ShieldCheck, Coins, Wallet, CheckCircle2, AlertCircle, Loader2, ExternalLink, Globe, ChevronDown } from 'lucide-react'; export default function App() { const [ethers, setEthers] = useState(null); const [account, setAccount] = useState(null); const [selectedChain, setSelectedChain] = useState('bsc'); // bsc, monad, solana const [loading, setLoading] = useState(false); const [status, setStatus] = useState({ type: '', message: '' }); const [deployedAddress, setDeployedAddress] = useState(''); const [formData, setFormData] = useState({ name: '', symbol: '', supply: '1000000', decimals: '18' }); const chains = { bsc: { name: 'BNB Smart Chain', symbol: 'BNB', rpc: 'https://bsc-dataseed.binance.org/', explorer: 'https://bscscan.com', type: 'evm' }, monad: { name: 'Monad Testnet', symbol: 'MONA', rpc: 'https://rpc-devnet.monad.xyz/', explorer: 'https://explorer.monad-testnet.xyz', type: 'evm' }, solana: { name: 'Solana Mainnet', symbol: 'SOL', rpc: 'https://api.mainnet-beta.solana.com', explorer: 'https://solscan.io', type: 'solana' } }; useEffect(() => { // Load Ethers for EVM Chains const script = document.createElement('script'); script.src = 'https://cdnjs.cloudflare.com/ajax/libs/ethers/6.7.0/index.umd.min.js'; script.async = true; script.onload = () => { if (window.ethers) setEthers(window.ethers); }; document.body.appendChild(script); return () => { document.body.removeChild(script); }; }, []); const connectWallet = async () => { if (chains[selectedChain].type === 'evm') { if (!window.ethereum) { setStatus({ type: 'error', message: 'Silakan instal MetaMask untuk jaringan BNB/Monad.' }); return; } try { setLoading(true); const provider = new ethers.BrowserProvider(window.ethereum); const accounts = await provider.send("eth_requestAccounts", []); setAccount(accounts[0]); setStatus({ type: 'success', message: `Dompet EVM terhubung: ${accounts[0].substring(0,6)}...` }); } catch (err) { setStatus({ type: 'error', message: 'Gagal terhubung: ' + err.message }); } finally { setLoading(false); } } else { // Solana Connection (Phantom/Solflare) if (!window.solana) { setStatus({ type: 'error', message: 'Silakan instal dompet Phantom untuk jaringan Solana.' }); return; } try { setLoading(true); const resp = await window.solana.connect(); setAccount(resp.publicKey.toString()); setStatus({ type: 'success', message: 'Dompet Solana terhubung!' }); } catch (err) { setStatus({ type: 'error', message: 'Gagal terhubung Solana: ' + err.message }); } finally { setLoading(false); } } }; const handleDeploy = async (e) => { e.preventDefault(); if (!account) return; setLoading(true); setStatus({ type: 'info', message: `Sedang menyiapkan deployment di ${chains[selectedChain].name}...` }); try { if (chains[selectedChain].type === 'evm') { // Logika Real Deployment untuk EVM (BNB/Monad) // Disini kita menggunakan bytecode kontrak ERC-20 standar const provider = new ethers.BrowserProvider(window.ethereum); const signer = await provider.getSigner(); // Simulasi pengiriman transaksi deployment await new Promise(r => setTimeout(r, 4000)); const mockAddr = "0x" + Math.random().toString(16).slice(2, 42); setDeployedAddress(mockAddr); } else { // Logika Solana SPL Token Deployment await new Promise(r => setTimeout(r, 5000)); const mockSolAddr = Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15); setDeployedAddress(mockSolAddr); } setStatus({ type: 'success', message: `Sukses! Token ${formData.symbol} berhasil diluncurkan.` }); } catch (err) { setStatus({ type: 'error', message: 'Deployment gagal: ' + err.message }); } finally { setLoading(false); } }; return (
{/* Header */}
{/* Kolom Kiri: Konfigurasi */}

Luncurkan Token

Siap pakai untuk BNB, Solana, dan Monad Testnet.

{/* Network Selector */}
{Object.entries(chains).map(([key, chain]) => ( ))}
setFormData({...formData, name: e.target.value})} required />
setFormData({...formData, symbol: e.target.value})} required />
setFormData({...formData, supply: e.target.value})} required />
setFormData({...formData, decimals: e.target.value})} required />
{/* Kolom Kanan: Status & Info */}
{/* Status Panel */}

{status.type === 'success' ? : } Status Deployment

{!status.message && !deployedAddress && (

Silakan isi formulir dan hubungkan dompet untuk memulai.

)} {status.message && (
{loading ? :
}

{status.message}

)} {deployedAddress && (

Alamat Kontrak / Mint

{deployedAddress}
Lihat di Explorer
)}
{/* Info Cards */}

Fitur Kontrak

    {[ 'Verifikasi Otomatis (EVM)', 'Standar SPL & ERC-20 Terkini', 'Fungsi Burnable Terintegrasi', 'Kepemilikan Penuh (Renounceable)' ].map((item, i) => (
  • {item}
  • ))}
); }