
Exquisitely designed, fully customizable Sui wallet dapp-kit connect modal with 10 stunning preset themes. Built on top of @mysten/dapp-kit
📦 Download V01DConnectModal.zipGet your custom wallet connection modal up and running in under 5 minutes.
your-project/ ├── src/ │ ├── V01DConnectModal/ ←--- Extract here │ │ ├── CustomConnectModal.tsx │ │ ├── custom-modal.css │ │ ├── modal-config.ts │ │ └── theme-presets.ts │ └── your-app-files...
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> } />
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;Customize your modal's content, behavior, and appearance through the modal-config.ts file.
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 } };
Choose from 10 carefully crafted themes. Each preset name must be entered exactly as shown, including proper capitalization and spelling.
Sophisticated light theme with subtle gradients. Minimalist design with enhanced visual depth.
preset: "lightVoid"
Advanced dark theme with deep gradients and enhanced contrast. Perfect for premium applications.
preset: "darkVoid"
Vibrant gradient theme with mystical purple and pink tones. Creates a magical, engaging user experience.
preset: "mysticGateway"
Professional blue gradient design. Perfect for corporate applications and fintech products.
preset: "crystalClear"
Playful pink gradient theme. Great for creative applications, gaming, and youth-focused products.
preset: "cottonCandy"
My personal favorite! Button colors might be a little crazy... but you've got the css file(search "brutal").
preset: "brutal"
Peaceful, minimalist design inspired by Japanese aesthetics. Clean typography and calming colors.
preset: "zen"
OG Mytsen dapp-kit theme, but now you can easily change the content.
preset: "light"
OG Mytsen dapp-kit theme... but dark.
preset: "dark"
This is were it really gets good. It's sooo easy to make any crazy look you want
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
},
preset: "custom"
From minimalist zen to bold brutal design, each preset is carefully crafted for different aesthetics and use cases.
Optimized for all screen sizes with intuitive mobile interactions and touch-friendly navigation.
All source files are easily accessible and customizable. No fragmented modules. Everything in 1 folder.
One import, one component - works seamlessly with your existing @mysten/dapp-kit setup.
Control which wallets appear, set preferred ordering, and customize the entire wallet selection experience.
Use the preset button or provide your own custom trigger element with automatic connection state handling.