UNPKG

hunt-mint-swap

Version:

A React component library for swapping MINT / HUNT buildings

201 lines (147 loc) 4.9 kB
# hunt-mint-swap A React component library for seamless token swapping and minting functionality, built with modern web3 technologies. ## Features - 🔄 MintSwap Component: Seamless token swapping interface - 🏗️ HuntBuildingsModal: Building minting and management interface - 🌈 Rainbow Kit Integration: Easy wallet connection - ⚡ Viem/Wagmi Support: Robust Web3 interactions - 🎨 Modern UI with Tailwind CSS ## Installation ```bash npm install hunt-mint-swap # or yarn add hunt-mint-swap # or pnpm add hunt-mint-swap ``` ## Prerequisites This package requires the following peer dependencies: ```json { "react": ">=19.1.0", "react-dom": ">=19.1.0", "@rainbow-me/rainbowkit": ">=2.2.4", "viem": ">=2.29.2", "wagmi": ">=2.15.3" } ``` ## Setup ### 1. Import Styles The components use Tailwind CSS for styling. You **must** import the component styles in your application: ```tsx // In your app's entry point (e.g., App.tsx or index.tsx) import "hunt-mint-swap/style.css"; ``` ### 2. Configure Tailwind CSS If you're using Tailwind CSS in your project, add the component paths to your `tailwind.config.js`: ```js /** @type {import('tailwindcss').Config} */ module.exports = { content: [ // ... your other content paths "./node_modules/hunt-mint-swap/**/*.{js,jsx,ts,tsx}", ], theme: { extend: {}, }, plugins: [], }; ``` ### 3. Setup Required Providers The library requires specific providers to be set up in your app. Create a wrapper component like this: ```tsx // App.tsx or your root component import { WagmiProvider, createConfig } from "wagmi"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { RainbowKitProvider } from "@rainbow-me/rainbowkit"; import { mainnet, base } from "viem/chains"; import { HuntMintSwapProvider } from "hunt-mint-swap"; // Get your project ID from WalletConnect Cloud const projectId = "YOUR_WALLET_CONNECT_PROJECT_ID"; // Create wagmi config const config = createConfig({ chains: [mainnet, base], // ... other config options }); const queryClient = new QueryClient(); function App() { return ( <WagmiProvider config={config}> <QueryClientProvider client={queryClient}> <RainbowKitProvider> <HuntMintSwapProvider>{/* Your app content */}</HuntMintSwapProvider> </RainbowKitProvider> </QueryClientProvider> </WagmiProvider> ); } export default App; ``` ### 4. Environment Variables Make sure to set up the following environment variables in your `.env` file: ```env VITE_DECENT_API_KEY=your_decent_api_key ``` ## Usage ### MintSwap Component ```tsx import { MintSwap } from "hunt-mint-swap"; function App() { const [isOpen, setIsOpen] = useState(false); return ( <MintSwap isOpen={isOpen} onClose={() => setIsOpen(false)} className="custom-class" /> ); } ``` ### HuntBuildingsModal Component ```tsx import { HuntBuildingsModal } from "hunt-mint-swap"; function App() { const [isOpen, setIsOpen] = useState(false); return ( <HuntBuildingsModal isOpen={isOpen} onClose={() => setIsOpen(false)} className="custom-class" /> ); } ``` ## Component Props ### MintSwap Props | Prop | Type | Description | | --------- | ---------- | ------------------------------------------ | | isOpen | boolean | Controls the visibility of the swap modal | | onClose | () => void | Callback function when modal is closed | | className | string? | Optional CSS class for custom on container | ### HuntBuildingsModal Props | Prop | Type | Description | | --------- | ---------- | ---------------------------------------------- | | isOpen | boolean | Controls the visibility of the buildings modal | | onClose | () => void | Callback function when modal is closed | | className | string? | Optional CSS class for custom on container | ## Troubleshooting ### Common Issues 1. **White Screen**: If you see a white screen, make sure you have: - Imported the CSS file - Set up all required providers - Set the WalletConnect project ID - Set the DECENT API key in your environment variables 2. **Provider Errors**: Ensure your providers are in the correct order: ```tsx WagmiProvider -> QueryClientProvider -> RainbowKitProvider -> HuntMintSwapProvider ``` 3. **Style Issues**: If styles are not loading: - Check that you've imported the CSS file - Verify your Tailwind configuration includes the package path - Make sure PostCSS is properly configured in your build setup ## Contributing We welcome contributions! Please see our contributing guide for details. ## License MIT ## Support For support, please open an issue in the GitHub repository: https://github.com/yourusername/hunt-mint-swap/issues