Интеграция RainbowKit для подключения кошелька на сайте

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Интеграция RainbowKit для подключения кошелька на сайте
Простая
от 1 рабочего дня до 3 рабочих дней
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    874
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    851

Интеграция RainbowKit для подключения кошелька на сайте

RainbowKit — UI-библиотека поверх wagmi для подключения кошельков. Даёт готовый, полированный модальный диалог с поддержкой MetaMask, WalletConnect, Coinbase Wallet, Rainbow и других. Устанавливается за час, кастомизируется под дизайн проекта.

Установка

npm install @rainbow-me/rainbowkit wagmi viem @tanstack/react-query

Минимальная интеграция

// app/providers.tsx
'use client';
import '@rainbow-me/rainbowkit/styles.css';

import { RainbowKitProvider, getDefaultConfig } from '@rainbow-me/rainbowkit';
import { WagmiProvider } from 'wagmi';
import { mainnet, polygon, arbitrum } from 'wagmi/chains';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';

const config = getDefaultConfig({
  appName: 'MyApp',
  projectId: process.env.NEXT_PUBLIC_WC_PROJECT_ID!,
  chains: [mainnet, polygon, arbitrum],
});

const queryClient = new QueryClient();

export function Providers({ children }: { children: React.ReactNode }) {
  return (
    <WagmiProvider config={config}>
      <QueryClientProvider client={queryClient}>
        <RainbowKitProvider>
          {children}
        </RainbowKitProvider>
      </QueryClientProvider>
    </WagmiProvider>
  );
}
// Кнопка подключения — готовая, со всем состоянием внутри
import { ConnectButton } from '@rainbow-me/rainbowkit';

export function Header() {
  return (
    <header>
      <Logo />
      <ConnectButton />
    </header>
  );
}

ConnectButton показывает: кнопку «Connect Wallet» если не подключён, адрес + баланс + аватар если подключён, смену сети если сеть не поддерживается.

Кастомизация темы

import { RainbowKitProvider, darkTheme, lightTheme, midnightTheme } from '@rainbow-me/rainbowkit';

// Встроенные темы с акцентным цветом
<RainbowKitProvider
  theme={darkTheme({
    accentColor: '#6366f1',        // indigo-500
    accentColorForeground: 'white',
    borderRadius: 'medium',
    fontStack: 'system',
    overlayBlur: 'small',
  })}
>

Для полного контроля — кастомная тема:

import { cssStringFromTheme } from '@rainbow-me/rainbowkit';

const myTheme = {
  colors: {
    accentColor: '#6366f1',
    accentColorForeground: '#fff',
    actionButtonBorder: 'rgba(255,255,255,0.04)',
    actionButtonBorderMobile: 'rgba(255,255,255,0.08)',
    actionButtonSecondaryBackground: 'rgba(255,255,255,0.08)',
    closeButton: 'rgba(224,232,255,0.6)',
    closeButtonBackground: 'rgba(255,255,255,0.08)',
    connectButtonBackground: '#1c1c1e',
    connectButtonBackgroundError: '#ff494a',
    connectButtonInnerBackground: 'linear-gradient(0deg, rgba(255,255,255,0.075), rgba(255,255,255,0.15))',
    connectButtonText: '#fff',
    connectButtonTextError: '#fff',
    connectionIndicator: '#30e000',
    downloadBottomCardBackground: 'linear-gradient(126deg, rgba(0,0,0,0) 9.49%, rgba(120,120,120,0.2) 100%)',
    downloadTopCardBackground: 'linear-gradient(126deg, rgba(120,120,120,0.2) 0%, rgba(0,0,0,0) 90.51%)',
    error: '#ff494a',
    generalBorder: 'rgba(255,255,255,0.08)',
    generalBorderDim: 'rgba(255,255,255,0.04)',
    menuItemBackground: 'rgba(255,255,255,0.08)',
    modalBackdrop: 'rgba(0,0,0,0.5)',
    modalBackground: '#1c1c1e',
    modalBorder: 'rgba(255,255,255,0.08)',
    modalText: '#fff',
    modalTextDim: 'rgba(224,232,255,0.3)',
    modalTextSecondary: 'rgba(255,255,255,0.6)',
    profileAction: 'rgba(255,255,255,0.08)',
    profileActionHover: 'rgba(255,255,255,0.16)',
    profileForeground: 'rgba(255,255,255,0.05)',
    selectedOptionBorder: 'rgba(224,232,255,0.1)',
    standby: '#ff8c00',
  },
  // fonts, radii, shadows ...
};

Кастомная кнопка подключения

Если стандартная кнопка не вписывается в дизайн — используется headless API:

import { ConnectButton } from '@rainbow-me/rainbowkit';

export function CustomConnectButton() {
  return (
    <ConnectButton.Custom>
      {({
        account,
        chain,
        openAccountModal,
        openChainModal,
        openConnectModal,
        authenticationStatus,
        mounted,
      }) => {
        const ready = mounted && authenticationStatus !== 'loading';
        const connected = ready && account && chain && authenticationStatus !== 'unauthenticated';

        return (
          <div {...(!ready && { 'aria-hidden': true, style: { opacity: 0, pointerEvents: 'none' } })}>
            {!connected ? (
              <button onClick={openConnectModal} className="btn-primary">
                Подключить кошелёк
              </button>
            ) : chain.unsupported ? (
              <button onClick={openChainModal} className="btn-danger">
                Сменить сеть
              </button>
            ) : (
              <div className="flex gap-2">
                <button onClick={openChainModal} className="btn-ghost flex items-center gap-1">
                  {chain.hasIcon && (
                    <img src={chain.iconUrl} alt={chain.name} className="h-4 w-4" />
                  )}
                  <span>{chain.name}</span>
                </button>
                <button onClick={openAccountModal} className="btn-ghost">
                  {account.displayBalance && `${account.displayBalance} · `}
                  {account.displayName}
                </button>
              </div>
            )}
          </div>
        );
      }}
    </ConnectButton.Custom>
  );
}

Список кошельков

По умолчанию RainbowKit показывает популярные кошельки. Для кастомного набора:

import {
  injectedWallet,
  metaMaskWallet,
  rainbowWallet,
  walletConnectWallet,
  coinbaseWallet,
  safeWallet,
} from '@rainbow-me/rainbowkit/wallets';

const config = getDefaultConfig({
  wallets: [
    {
      groupName: 'Популярные',
      wallets: [metaMaskWallet, rainbowWallet, coinbaseWallet],
    },
    {
      groupName: 'Другие',
      wallets: [walletConnectWallet, safeWallet, injectedWallet],
    },
  ],
  // ...
});

Срок: установка и базовая интеграция с кастомной темой — половина дня. С кастомной кнопкой и кастомным списком кошельков — 1 день.