Exquisitely designed, fully customizable Sui wallet dapp-kit connect modal with 10 stunning preset themes. Built on top of @mysten/dapp-kit

📦 Download V01DConnectModal.zip

Jump straight to Themes

Prerequisites

Before using V01D Connect Modal you need a React or Next.js application with @mysten/dapp-kit installed. If you don't have these set up yet, follow the official guides below.

Quick Start Guide

Get your custom wallet connection modal up and running in under 5 minutes.

1

Download and Extract

Download the V01DConnectModal.zip file and extract the entire "V01DConnectModal" folder into your project's src directory.
your-project/
├── src/
│   ├── V01DConnectModal/         ←--- Extract here
│   │   ├── CustomConnectModal.tsx
│   │   ├── custom-modal.css
│   │   ├── modal-config.ts
│   │   └── theme-presets.ts
│   └── your-app-files...
2

Import the Component

Add this import line at the very top of the file where you want to use the wallet connection.
import { CustomConnectModal } from './V01DConnectModal/CustomConnectModal';
3

Add the Button

Add this component wherever you want the wallet connection button to appear.
<CustomConnectModal />
Or add these to use a custom trigger.
import { useState } from 'react'; //add at top with imports

const [isModalOpen, setIsModalOpen] = useState(false); //add in main function, before JSX return

<CustomConnectModal
  open={isModalOpen}
  onOpenChange={setIsModalOpen}
  trigger={
    <button 
      className="my-custom-button"
      onClick={() => setIsModalOpen(true)}
      type="button"
    >
      Launch Wallet Connection
    </button>
  }
/>
                
4

Complete Example

Here's a complete example showing how to integrate the modal into a typical React component. Both default and custom buttons are included for reference:
                    
import { CustomConnectModal } from './V01DConnectModal/CustomConnectModal';
import { useState } from 'react'; //added for custom trigger

function App() {

  const [isModalOpen, setIsModalOpen] = useState(false); //added for custom trigger

  return (
    <div className="app">
      <header>
        <h1>My Sui dApp</h1>
        
        <CustomConnectModal />

        <CustomConnectModal
            open={isModalOpen}
            onOpenChange={setIsModalOpen}
            trigger={
                <button 
                className="my-custom-button"
                onClick={() => setIsModalOpen(true)}
                type="button"
                >
                    Launch Wallet Connection
                </button>
            }
        />
      </header>

      <main>
        <p>Your app content</p>
      </main>
    </div>
  );
}
export default App;
That's it! The modal will automatically handle wallet detection, connection states, and provides a beautiful interface that works on both desktop and mobile.

Customizing

Customize your modal's content, behavior, and appearance through the modal-config.ts file.

Basic Configuration

modal-config.ts - this file contains all customization options. You can change the theme preset, customize all text content, and configure wallet behavior.
export const modalConfig: ModalConfig = {
theme: {
preset: "crystalClear",               // Theme preset name here, CaSe SensiTive

// --- variables for "custom" preset here ---

},
content: {
header: {
walletListHeader: "Connect a Wallet",   // Left panel title
contentHeader: "V01D Modal"             // Right panel title
},
body: {         // description is the main content on right side, accepts basic html
description: `
<div style="margin-bottom:12px;">Connect.</div>
<div style="margin-bottom:12px;">Ultimate Freedom.</div>
<div style="opacity:0.8;">10 amazing themes. Also, all code and css is easily accessible. Customize however you see fit.</div>
`
},
buttons: {
connectText: "Connect Wallet",          // Connect button text
mobileContentBtnText: "Instructions"    // Text for bottom button on mobile, reveals right side content
}
},
behavior: {
autoConnect: true,                       // Auto-connect on load
showWalletIcons: true,                   // Show wallet icons
preferredWallets: ["Slush"],             // Sort preferred wallets to top
filterWallets: ["Slush", "Nightly"],     // Show only the wallets listed here
showMobileContentButton: true           // Show/Hide the mobile view content button
}
};

Theme Presets

Choose from 10 carefully crafted themes. Each preset name must be entered exactly as shown, including proper capitalization and spelling.

lightVoid

Sophisticated light theme with subtle gradients. Minimalist design with enhanced visual depth.

Enter this exact value in modal-config.ts:
preset: "lightVoid"
⚠️ Case Sensitive: Must be exactly "lightVoid" - camelCase, capital V

darkVoid

Advanced dark theme with deep gradients and enhanced contrast. Perfect for premium applications.

Enter this exact value in modal-config.ts:
preset: "darkVoid"
⚠️ Case Sensitive: Must be exactly "darkVoid" - camelCase, capital V

mysticGateway

Vibrant gradient theme with mystical purple and pink tones. Creates a magical, engaging user experience.

Enter this exact value in modal-config.ts:
preset: "mysticGateway"
⚠️ Case Sensitive: Must be exactly "mysticGateway" - camelCase, capital G

crystalClear

Professional blue gradient design. Perfect for corporate applications and fintech products.

Enter this exact value in modal-config.ts:
preset: "crystalClear"
⚠️ Case Sensitive: Must be exactly "crystalClear" - camelCase, capital C

cottonCandy

Playful pink gradient theme. Great for creative applications, gaming, and youth-focused products.

Enter this exact value in modal-config.ts:
preset: "cottonCandy"
⚠️ Case Sensitive: Must be exactly "cottonCandy" - camelCase, capital C

brutal

My personal favorite! Button colors might be a little crazy... but you've got the css file(search "brutal").

Enter this exact value in modal-config.ts:
preset: "brutal"
⚠️ Case Sensitive: Must be exactly "brutal" - lowercase, no spaces

zen

Peaceful, minimalist design inspired by Japanese aesthetics. Clean typography and calming colors.

Enter this exact value in modal-config.ts:
preset: "zen"
⚠️ Case Sensitive: Must be exactly "zen" - lowercase, no spaces

light

OG Mytsen dapp-kit theme, but now you can easily change the content.

Enter this exact value in modal-config.ts:
preset: "light"
⚠️ Case Sensitive: Must be exactly "light" - lowercase, no spaces

dark

OG Mytsen dapp-kit theme... but dark.

Enter this exact value in modal-config.ts:
preset: "dark"
⚠️ Case Sensitive: Must be exactly "dark" - lowercase, no spaces

custom

This is were it really gets good. It's sooo easy to make any crazy look you want

Enable & Setup custom Theme

Set your preset to "custom" and uncomment the customVars section in modal-config.ts (remove /* and */).
theme: {
    preset: "custom",  // <--- Set this to "custom"

    //Uncomment this customVars section only when setting preset above to custom.
    /*  <--- Remove this, comment opener
    customVars: {
    modalRight: "#f04ecdff",          // Background Color for right side
    modalRightText: "#ffffff",        // Right side text color
    modalLeft: "#75ff70ff",           // Background Color for left side
    modalLeftText: "#000000",         // Left side wallet list header text color
    modalOverlay: "rgba(0,0,0,20%)",  // The transparent background behind the modal, above the regular page content    
    walletItem: "#ffffffff",          // Wallet list button color
    walletItemHover: "#19d1ffff",     // Wallet list button hover
    walletItemText: "#000eccff",      // Wallet button text color
    connectButton: "#000000ff",       // The Fallback Connect Wallet button color
    connectButtonHover: "#00ff22ff",  // The Fallback Connect Wallet button hover color
    connectButtonText: "#ffffff",     // The Fallback Connect Wallet button text color
    retryButton: "#000000",           // Retry Connection button, outline and text color
    mobileButton: "#f04ecdff",        // Mobile button that shows right side content, button color
    mobileButtonHover: "#000eccff",   // Mobile button that shows right side content, button color hover
    mobileButtonText: "#ffffff",      // Mobile button that shows right side content, text color
    connectMsgText: "#ffffff",        // Connection status text color
    errorText: "#9400b9ff"            // Connection error text color, warning default is #ff6b6b
    }
    */  <--- Remove this, comment closer
},
    
    
    
Enter this exact value in modal-config.ts:
preset: "custom"
⚠️ Case Sensitive: Must be exactly "custom" - lowercase, no spaces

Features

💀

10 Stunning Presets

From minimalist zen to bold brutal design, each preset is carefully crafted for different aesthetics and use cases.

🖤

Mobile-First Responsive

Optimized for all screen sizes with intuitive mobile interactions and touch-friendly navigation.

🕷️

Fully Accessible Code

All source files are easily accessible and customizable. No fragmented modules. Everything in 1 folder.

🔮

Simple Setup

One import, one component - works seamlessly with your existing @mysten/dapp-kit setup.

🦇

Advanced Filtering

Control which wallets appear, set preferred ordering, and customize the entire wallet selection experience.

🌙

Custom Triggers

Use the preset button or provide your own custom trigger element with automatic connection state handling.