GaslessTooltips.tsx

Обзор

Файл GaslessTooltips.tsx реализует набор React-компонентов для отображения пользовательских всплывающих подсказок (tooltips), связанных с особенностями "газлесс" (gasless) транзакций и игровых действий в контексте блокчейн-приложения или игры. Основной компонент GaslessTooltip отвечает за логику отображения и позиционирования всплывающей подсказки, а также за её содержимое, которое описывает преимущества и характеристики газлесс-транзакций, мгновенных действий, безопасности валидаторов и пакетной (batch) обработки транзакций.

Компоненты предназначены для улучшения UX, предоставляя пользователю пояснения и детали по ключевым аспектам работы системы, при этом не требуя от него взаимодействия с блокчейном напрямую (например, одобрения транзакций или оплаты газа).


Подробное описание компонентов и функций

Интерфейс TooltipContent

interface TooltipContent {
  id: string;
  title: string;
  description: string;
  icon: React.ReactNode;
  details: string[];
}

Константа tooltipContents

Содержит массив объектов TooltipContent с предопределёнными подсказками для следующих тем:

Каждый элемент включает иконку из библиотеки lucide-react, заголовок, описание и список подробных пунктов.


Компонент GaslessTooltip

function GaslessTooltip({ id, children, className = '' }: GaslessTooltipProps)
<GaslessTooltip id="gasless">
  <span>Что такое газлесс транзакции?</span>
</GaslessTooltip>

Специализированные компоненты

Для удобства и переиспользования созданы специализированные обёртки над GaslessTooltip, которые автоматически подставляют нужный id:

Пример использования:

<GaslessTransactionTooltip>
  <button>Подробнее о газлесс транзакциях</button>
</GaslessTransactionTooltip>

Эти компоненты упрощают использование подсказок в разных частях приложения, гарантируя консистентность и удобство.


Важные детали реализации


Взаимодействие с другими частями системы


Диаграмма компонентов

componentDiagram
    direction LR
    GaslessTooltip <|-- GaslessTransactionTooltip
    GaslessTooltip <|-- InstantActionTooltip
    GaslessTooltip <|-- ValidatorSecurityTooltip
    GaslessTooltip <|-- BatchSettlementTooltip

    GaslessTooltip : +props.id
    GaslessTooltip : +props.children
    GaslessTooltip : +props.className
    GaslessTooltip : +isVisible: boolean (state)
    GaslessTooltip : +position: {x, y} (state)
    GaslessTooltip : +handleToggle()
    GaslessTooltip : +handleClickOutside()

    GaslessTransactionTooltip : wraps GaslessTooltip with id="gasless"
    InstantActionTooltip : wraps GaslessTooltip with id="instant"
    ValidatorSecurityTooltip : wraps GaslessTooltip with id="secure"
    BatchSettlementTooltip : wraps GaslessTooltip with id="settlement"

Итог

GaslessTooltips.tsx — это модуль, обеспечивающий информативные и интерактивные подсказки, разъясняющие ключевые особенности газлесс-транзакций и связанных компонентов блокчейн-игры. Он служит интерфейсным мостом между сложной технологией и конечным пользователем, улучшая понимание и взаимодействие с продуктом благодаря удобному и современному UI.