Skip to content

Our Mint Layout

Let's start by creating a layout for our minting page. This will include a preview of the NFT the user will mint, the price of the NFT, and the user's balance.

Updating HelloPYUSD layout

Let's update our main HelloPyusd component. Nothing fancy here, just some basic layout and a Mint component that we'll build next.

tsx
import { ConnectButton } from "@rainbow-me/rainbowkit";
import Mint from "./Mint";

export default function HelloPyusd() {
return (
    <div className='container max-w-4xl p-4 md:p-8 mx-auto flex flex-col min-h-screen gap-8'>
      <nav className='flex flex-row gap-4 items-center justify-between'>
        <div>
          <h1 className='text-xl font-black'>Hello PYUSD!</h1>
          <p className='text-sm text-gray-500'>Open edition PYUSD NFT</p>
        </div>
        <ConnectButton />
      </nav>
      <div className='flex-1'>
        <Mint /> {/* We'll build this next */}
      </div>
    </div>
  );
}

The Mint component

We'll start by creating a new component, src/components/Mint.tsx. This component will allow the user to preview the NFT they'll mint, then mint it.

tsx
import MintPreview from "./MintPreview";
import MintInfo from "./MintInfo";
import MintButton from "./MintButton";

export default function Mint() {
  return (
    <div className='flex flex-col md:flex-row gap-16 items-center'>
      <div className='w-full md:w-3/5'>
        <MintPreview />
      </div>
      <div className='w-full md:w-2/5 space-y-4'>
        <MintButton />
        <MintInfo />
      </div>
    </div>
  );
}

We have three components to build here:

  • MintPreview will show a preview of the NFT the user will mint.
  • MintButton will allow the user to mint the NFT.
  • MintInfo will show the price of the NFT and the user's balance.

You can comment out the unfinished components to avoid errors for now.