@tuwaio/nova-connect 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -96
- package/dist/chunk-6S5OTERL.cjs +2 -0
- package/dist/chunk-6S5OTERL.cjs.map +1 -0
- package/dist/chunk-CEGEQMI2.cjs +2 -0
- package/dist/chunk-CEGEQMI2.cjs.map +1 -0
- package/dist/chunk-DYDY3FCT.cjs +2 -0
- package/dist/chunk-DYDY3FCT.cjs.map +1 -0
- package/dist/{chunk-NJDPFYUJ.js → chunk-FNWARYJY.js} +2 -2
- package/dist/{chunk-NJDPFYUJ.js.map → chunk-FNWARYJY.js.map} +1 -1
- package/dist/{chunk-KKCRUSJT.js → chunk-J4TY3CJF.js} +2 -2
- package/dist/{chunk-KKCRUSJT.js.map → chunk-J4TY3CJF.js.map} +1 -1
- package/dist/evm/index.cjs +1 -1
- package/dist/evm/index.cjs.map +1 -1
- package/dist/evm/index.d.cts +24 -0
- package/dist/evm/index.d.ts +24 -0
- package/dist/evm/index.js +1 -1
- package/dist/evm/index.js.map +1 -1
- package/dist/evm-7NHOTSAK.cjs +2 -0
- package/dist/evm-7NHOTSAK.cjs.map +1 -0
- package/dist/{getChainsListByWalletType-KXWMBNB4.js → getChainsListByWalletType-EO6A7Q5A.js} +2 -2
- package/dist/{getChainsListByWalletType-KXWMBNB4.js.map → getChainsListByWalletType-EO6A7Q5A.js.map} +1 -1
- package/dist/getChainsListByWalletType-ZU7OPWTP.cjs +2 -0
- package/dist/getChainsListByWalletType-ZU7OPWTP.cjs.map +1 -0
- package/dist/index.cjs +3 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6081 -6112
- package/dist/index.d.ts +6081 -6112
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/solana/index.cjs +1 -1
- package/dist/solana/index.cjs.map +1 -1
- package/dist/solana/index.d.cts +33 -0
- package/dist/solana/index.d.ts +33 -0
- package/dist/solana/index.js +1 -1
- package/dist/solana/index.js.map +1 -1
- package/dist/{providers/solana-WHT5KTOF.js → solana-GLHHYZDQ.js} +2 -2
- package/dist/{solana-2MXIY6UT.js.map → solana-GLHHYZDQ.js.map} +1 -1
- package/dist/solana-JUU54KQ3.cjs +2 -0
- package/dist/solana-JUU54KQ3.cjs.map +1 -0
- package/dist/types-DGsiEwne.d.cts +50 -0
- package/dist/types-DGsiEwne.d.ts +50 -0
- package/dist/utils-DZB4ZTS4.cjs +2 -0
- package/dist/utils-DZB4ZTS4.cjs.map +1 -0
- package/dist/utils-H5O25MTI.cjs +2 -0
- package/dist/utils-H5O25MTI.cjs.map +1 -0
- package/dist/utils-SUIRQJIA.js +2 -0
- package/dist/{utils-72MDY3OH.js.map → utils-SUIRQJIA.js.map} +1 -1
- package/package.json +6 -18
- package/dist/evm-F7OJEDX3.js +0 -2
- package/dist/evm-F7OJEDX3.js.map +0 -1
- package/dist/hooks/index.cjs +0 -2
- package/dist/hooks/index.cjs.map +0 -1
- package/dist/hooks/index.js +0 -2
- package/dist/hooks/index.js.map +0 -1
- package/dist/providers/evm-5323YCLC.js +0 -2
- package/dist/providers/evm-5323YCLC.js.map +0 -1
- package/dist/providers/index.cjs +0 -6
- package/dist/providers/index.cjs.map +0 -1
- package/dist/providers/index.d.cts +0 -506
- package/dist/providers/index.d.ts +0 -506
- package/dist/providers/index.js +0 -6
- package/dist/providers/index.js.map +0 -1
- package/dist/providers/solana-WHT5KTOF.js.map +0 -1
- package/dist/providers/utils-FHHKXQ5Z.js +0 -2
- package/dist/providers/utils-FHHKXQ5Z.js.map +0 -1
- package/dist/providers/utils-L6CFHW4B.js +0 -2
- package/dist/providers/utils-L6CFHW4B.js.map +0 -1
- package/dist/solana-2MXIY6UT.js +0 -2
- package/dist/solana-EV65GS7Q.js +0 -2
- package/dist/solana-EV65GS7Q.js.map +0 -1
- package/dist/utils-72MDY3OH.js +0 -2
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/i18n/en.ts","../../src/hooks/useNovaConnectLabels.ts","../../src/components/Chains/ChainListRenderer.tsx","../../src/hooks/useNovaConnect.ts","../../src/utils/adapters/registry.ts","../../src/utils/getChainsListByWalletType.ts","../../src/utils/getConnectedChainId.ts","../../src/utils/getGroupedConnectors.ts","../../src/utils/getFilteredConnectors.ts","../../src/utils/getNetworIcon.ts","../../src/utils/networksLinks.ts","../../src/components/ToBottomButton.tsx","../../src/components/ToTopButton.tsx","../../src/components/SelectContentAnimated.tsx","../../src/components/Chains/ScrollableChainList.tsx","../../src/components/Chains/ChainSelector.tsx","../../src/hooks/useGetWalletNameAndAvatar.ts","../../src/hooks/useWalletNativeBalance.ts","../../src/components/ConnectedModal/ConnectedModalFooter.tsx","../../src/components/WalletAvatar.tsx","../../src/components/ConnectedModal/ConnectedModalNameAndBalance.tsx","../../src/components/WalletIcon.tsx","../../src/components/ConnectedModal/IconButton.tsx","../../src/components/ConnectedModal/ConnectedModalMainContent.tsx","../../src/components/ConnectedModal/ConnectedModalTxHistory.tsx","../../src/components/ConnectedModal/ConnectedModal.tsx","../../src/components/ConnectModal/images/digitalPassportImage.ts","../../src/components/ConnectModal/images/walletImage.ts","../../src/components/ConnectModal/AboutWallets.tsx","../../src/components/ConnectModal/Connecting.tsx","../../src/components/ConnectModal/RecentBadge.tsx","../../src/components/ConnectModal/ConnectCard.tsx","../../src/components/ConnectModal/ConnectorsBlock.tsx","../../src/components/ConnectModal/Disclaimer.tsx","../../src/components/ConnectModal/ConnectorsSelections.tsx","../../src/components/ConnectModal/GetWallet.tsx","../../src/components/ConnectModal/ImpersonatedForm.tsx","../../src/components/ConnectModal/NetworkSelections.tsx","../../src/components/ConnectModal/NetworkTabs.tsx","../../src/components/ConnectModal/ConnectModal.tsx","../../src/components/ConnectButton/StatusIcon.tsx","../../src/components/ConnectButton/ConnectedContent.tsx","../../src/components/ConnectButton/WaitForConnectionContent.tsx","../../src/components/ConnectButton/ConnectButton.tsx","../../src/components/ConnectButton/index.tsx","../../src/components/ToastError.tsx","../../src/providers/ErrorsProvider.tsx","../../src/providers/NovaConnectLabelsProvider.tsx","../../src/providers/NovaConnectProvider.tsx"],"names":["defaultLabels","NovaConnectLabelsContext","createContext","useNovaConnectLabels","useContext","DefaultChainIcon","chainId","className","props","jsx","Web3Icon","DefaultChainContent","icon","children","jsxs","DefaultActiveIndicator","isActive","label","Fragment","cn","SelectItemBase","forwardRef","forwardedRef","labels","ot","ChainListRenderer","chainsList","selectValue","handleValueChange","getChainData","onClose","isMobile","itemClassName","customization","ariaLabel","isLoading","error","ChainIcon","ChainContent","ActiveIndicator","animations","behavior","containerClasses","useMemo","customClasses","createClickHandler","useCallback","formattedChainId","chainName","originalHandler","createKeyDownHandler","clickHandler","e","event","loadingMessage","renderChainItem","chain","getChainName","itemClasses","iconClasses","chainNameClasses","handleClick","handleKeyDown","contentElement","activeIndicatorClasses","activeIndicator","MotionItem","motion","motionProps","MotionContainer","containerMotionProps","NovaConnectProviderError","message","NovaConnectProviderContext","useNovaConnect","context","LazyAdapterRegistry","type","info","adapter","OrbitAdapter","createEvmAdapter","createSolanaAdapter","err","attempts","maxAttempts","pollInterval","resolve","types","adapterInfo","adapterRegistry","isValidChainId","id","getChainsListByWalletType","params","walletType","chains","config","adapterType","getAdapterFromWalletType","getFallbackChains","getChainsListByWalletTypeSync","appChains","solanaRPCUrls","getWalletChains","activeWallet","DEFAULT_CHAIN_IDS","getConnectChainId","selectedAdapter","firstChain","networks","processConnector","connector","connectorObj","getGroupedConnectors","connectors","excludeConnectors","excludeSet","name","formatWalletName","processedConnectors","adapterKey","adapterConnectors","processed","formattedName","groupedMap","group","a","b","getConnectorAdapter","connectorMatchesAdapter","getFilteredConnectors","groupedConnectors","filteredConnectors","getNetworkIcon","networksLinks","DefaultIcon","disabled","ChevronDownIcon","DefaultContent","defaultClickHandler","defaultKeyDownHandler","ToBottomButton","onClick","ref","Icon","Content","customOnClickHandler","customOnKeyDownHandler","syntheticEvent","buttonClasses","iconElement","buttonProps","ChevronUpIcon","ToTopButton","SelectContentAnimated","contentClassName","viewportClassName","position","reduceMotion","maxHeight","animationDuration","showScrollButtons","topButtonProps","bottomButtonProps","topButtonCustomization","bottomButtonCustomization","animationConfig","contentClasses","selectContentClasses","viewportClasses","selectContentStyles","finalAriaLabel","AnimatePresence","DefaultScrollContainer","React","onKeyDown","DefaultWrapper","DefaultButtonAnimationWrapper","isVisible","animationKey","ScrollableChainList","containerRef","useRef","showTopButton","setShowTopButton","useState","showBottomButton","setShowBottomButton","isScrolling","setIsScrolling","hasScrollableContent","setHasScrollableContent","scrollContext","setScrollContext","ScrollContainer","Wrapper","ButtonAnimationWrapper","scrollBehavior","buttonConfig","scrollBehaviorType","pageScrollPercentage","updateScrollContext","container","scrollTop","scrollHeight","clientHeight","updateScrollButtons","hasContent","useEffect","scrollTimeout","handleScroll","resizeObserver","scrollToExtreme","isTop","handleTopButtonClick","handleBottomButtonClick","wrapperClasses","topButtonWrapperClasses","bottomButtonWrapperClasses","createButtonWrapper","wrapperStyles","wrapperElement","DefaultTriggerIcon","DefaultTriggerContent","eo","DefaultTriggerArrow","isOpen","ChevronArrowWithAnim","DefaultLoadingState","DefaultSingleChainDisplay","DefaultDesktopSelector","DefaultMobileSelector","DefaultDialogHeader","title","DialogHeader","DialogTitle","DialogClose","CloseIcon","_event","_context","defaultChainChangeHandler","newChainId","defaultDialogCloseHandler","ChainTriggerButton","currentFormattedChainId","isChainsListOpen","onToggle","hasMultipleChains","Arrow","customClickHandler","customKeyDownHandler","layoutAnimation","innerContentAnimation","innerContentClasses","innerContent","arrowElement","ariaExpanded","ariaHaspopup","mobileButtonProps","selectTriggerProps","ChainSelector","store","setIsChainsListOpen","isChainsListOpenMobile","setIsChainsListOpenMobile","setChainsList","isLoadingChains","setIsLoadingChains","loadingRef","walletTypeRef","LoadingState","SingleChainDisplay","DesktopSelector","MobileSelector","customChainChangeHandler","customDialogCloseHandler","loadingStateClasses","singleChainDisplayClasses","desktopWrapperClasses","mobileWrapperClasses","dialogContentClasses","dialogInnerContainerClasses","handleChainChange","formatWalletChainId","walletChains","asyncChains","asyncError","syncChains","syncError","handleDialogClose","Dialog","DialogContent","useGetWalletNameAndAvatar","options","abbreviateSymbols","maxNameLength","autoRetry","retryDelay","getAdapter","walletAddress","foundAdapter","ensName","setEnsName","ensAvatar","setEnsAvatar","setIsLoading","setError","abortControllerRef","retryTimeoutRef","adapterCapabilities","hasNameResolver","hasAvatarResolver","cleanup","fetchNameData","signal","avatar","avatarError","errorMessage","retry","ensNameAbbreviated","textCenterEllipsis","useWalletNativeBalance","balanceCache","setBalanceCache","fetchOperationRef","cacheKey","hasBalanceResolver","fetchBalance","forceRefresh","operationId","balanceResult","prevCache","newCache","refetch","DEFAULT_PATH_ANIMATION_VARIANTS","DefaultDisconnectButton","testId","ariaDescribedBy","standardButtonClasses","DefaultDisconnectIcon","DefaultExplorerLink","href","isValidUrl","iconPath","DefaultExplorerIcon","pathData","variants","strokeWidth","strokeLinecap","strokeLinejoin","animation","isAnimated","DefaultFooterContent","disconnectButton","explorerLink","ConnectedModalFooter","setIsOpen","disconnect","DisconnectButton","ExplorerLink","FooterContent","showDisconnectButton","showExplorerLink","disconnectButtonTestId","explorerLinkTestId","closeModalAfterDisconnect","explorerUrlFallback","finalLabels","explorerUrl","isValidExplorerUrl","handleDisconnect","handleExplorerClick","disconnectButtonElement","explorerLinkElement","containerProps","isHex","value","strict","zeroAddress","sizeClasses","DefaultLoadingOverlay","showLoading","disableAnimation","loadingClasses","DefaultAvatarImage","src","onLoad","onError","address","DefaultFallbackContent","formattedAddress","defaultGenerateBlockie","makeBlockie","defaultGenerateBgColor","colorHex","defaultFormatAddress","WalletAvatar","altText","size","onImageLoad","onImageError","imageSrc","setImageSrc","hasError","setHasError","LoadingOverlay","AvatarImage","FallbackContent","generateBlockie","generateBgColor","formatAddress","blockie","bgColor","imageAltText","currentEnsAvatar","handleImageLoad","handleImageError","currentImageSrc","DEFAULT_CONTAINER_ANIMATION_VARIANTS","DEFAULT_COPY_ICON_ANIMATION_VARIANTS","DEFAULT_CHECK_ICON_ANIMATION_VARIANTS","DEFAULT_LOADING_ANIMATION_VARIANTS","DefaultWalletNameDisplay","DefaultCopyButton","isCopied","onCopy","getCopyButtonAriaLabel","baseLabel","addressInfo","CheckIcon","DocumentDuplicateIcon","DefaultBalanceDisplay","balance","balanceLoading","balanceDisplay","DefaultScreenReaderFeedback","DefaultLiveRegion","ConnectedModalNameAndBalance","copy","useCopyToClipboard","WalletNameDisplay","CopyButton","BalanceDisplay","ScreenReaderFeedback","LiveRegion","ariaLabels","hasActiveWallet","hasBalance","handleCopyAddress","containerVariants","content","DefaultErrorIndicator","walletName","DefaultFallbackIcon","WalletIcon","lazy","ErrorIndicator","FallbackIcon","cleanIconUrl","trimmedIcon","imageClasses","imageStyle","imageProps","DEFAULT_BUTTON_ANIMATION_VARIANTS","DefaultWalletIconContainer","walletIcon","DefaultChainIconContainer","walletChainId","DefaultChevronContainer","loading","DefaultButtonContent","walletIconContainer","chainIconContainer","chevronContainer","loadingOverlay","IconButton","items","WalletIconContainer","ChainIconContainer","ChevronContainer","ButtonContent","showWalletIcon","showChainIcon","showChevron","showLoadingOverlay","buttonTestId","chainIdFormatter","isClickable","hasWalletIcon","hasChainIcon","hasChevron","hasMultipleIcons","accessibleLabel","customAriaLabel","parts","tooltipText","customTooltip","customButtonClasses","handleMouseEnter","customHoverHandler","handleMouseLeave","handleFocus","customFocusHandler","handleBlur","customBlurHandler","walletIconCustomClasses","chainIconCustomClasses","chevronCustomClasses","loadingCustomClasses","buttonVariants","baseButtonProps","buttonContent","DEFAULT_AVATAR_SECTION_ANIMATION_VARIANTS","DEFAULT_INFO_SECTION_ANIMATION_VARIANTS","DEFAULT_TRANSACTIONS_ANIMATION_VARIANTS","DefaultLoadingIndicator","DefaultAvatarSection","connectorsCount","onSwitchWallet","onSwitchNetwork","DefaultInfoSection","DefaultTransactionsSection","walletTransactions","hasPendingTransactions","onViewTransactions","showPendingIndicators","DefaultNoTransactionsIndicator","ConnectedModalMainContent","transactionPool","avatarIsLoading","setConnectedModalContentType","setIsConnectedModalOpen","setIsConnectModalOpen","getConnectors","customComponents","customConfig","customHandlers","LoadingIndicator","AvatarSection","InfoSection","TransactionsSection","NoTransactionsIndicator","showLoadingIndicators","handleSwitchWallet","handleSwitchNetwork","handleViewTransactions","tx","hasTransactions","pendingCount","DEFAULT_ERROR_ANIMATION_VARIANTS","TransactionsHistory","module","DefaultLoadingContainer","DefaultErrorContainer","ExclamationTriangleIcon","DefaultNoWalletContainer","DefaultTransactionsHistoryWrapper","activeWalletAddress","PulsarAdapterRequired","iconContainerClasses","titleClasses","descriptionClasses","errorVariants","PuzzlePieceIcon","ErrorBoundary","Component","errorInfo","ConnectedModalTxHistory","pulsarAdapter","LoadingContainer","ErrorContainer","NoWalletContainer","TransactionsHistoryWrapper","packageName","hasValidAdapter","handlePackageLoadingFailure","loadingComponent","errorComponent","noWalletComponent","Suspense","DEFAULT_MODAL_ANIMATION_VARIANTS","DefaultBackButton","onBack","ChevronLeftIcon","DefaultTitle","DefaultCloseButton","DefaultHeader","contentType","DefaultMainContent","onChainChange","renderContent","ConnectedModal","isConnectedModalOpen","connectedModalContentType","CustomDialog","CustomDialogContent","CustomHeader","CustomMainContent","CustomFooter","autoResetToMain","hooksConfig","walletNameConfig","handleOpenChange","open","getTitle","handleBackToMain","handleCloseModal","currentTitle","modalVariants","layoutTransition","digitalPassportImage","walletImage","DEFAULT_SLIDES_CONFIG","DEFAULT_SLIDE_VARIANTS","direction","DEFAULT_IMAGE_VARIANTS","TOUCH_CONFIG","ANIMATION_CONFIG","DefaultSection","DefaultSlideContainer","StarsBackground","DefaultImageSection","slide","imageLoaded","slideIndex","DefaultContentSection","DefaultIndicator","index","DefaultNavigation","slides","currentSlide","onSlideChange","DefaultSlide","totalSlides","imageLoadedStates","slideVariants","slideTransition","DefaultStatus","currentSlideData","isAutoPlaying","AboutWallets","slidesConfig","CustomSection","CustomSlideContainer","CustomSlide","CustomNavigation","CustomStatus","disableAutoPlay","initialSlide","touchConfig","setCurrentSlide","setDirection","setIsAutoPlaying","userInteracted","setUserInteracted","setImageLoadedStates","touchState","setTouchState","autoPlayIntervalRef","resumeTimeoutRef","goToSlide","newDirection","goToNextSlide","nextIndex","goToPreviousSlide","prevIndex","prev","newValue","next","touch","deltaX","DefaultContainer","_statusData","restProps","DefaultStatusContainer","DefaultSpinner","DefaultStatusIcon","statusData","IconComponent","CheckCircleIcon","ExclamationCircleIcon","DefaultMessageContainer","DefaultStatusMessage","DefaultErrorMessage","DefaultErrorDetails","DefaultLoadingPlaceholder","Connecting","memo","activeConnector","isConnected","customErrorMessage","showDetailedError","walletConnectionError","isMountedRef","prevStateRef","prevStatusDataRef","cleanupCalled","CustomContainer","CustomStatusContainer","CustomSpinner","CustomStatusIcon","CustomWalletIconContainer","CustomMessageContainer","CustomStatusMessage","CustomErrorMessage","CustomErrorDetails","CustomLoadingPlaceholder","currentConnector","performDefaultCleanup","connectionState","displayMessage","statusContainerClasses","element","containerAriaLabel","defaultAnimationConfig","defaultGradientConfig","DefaultAnimatedGradient","animated","gradientConfig","gradientBackground","stops","stop","animatedStyle","DefaultBackgroundOverlay","RecentBadge","CustomAnimatedGradient","CustomBackgroundOverlay","CustomContent","isTouch","isTouchDevice","getContainerClasses","animatedGradientClasses","backgroundOverlayClasses","getAriaLabel","DefaultNetworkIconsContainer","cardData","DefaultNetworkIcon","networkData","DefaultNetworkOverflow","NetworkIcons","adapters","isOnlyOneNetwork","CustomNetworkIcon","CustomOverflowIndicator","visibleNetworksData","overflowCount","DefaultCardContainer","DefaultCardContent","DefaultIconContainer","DefaultIconWrapper","DefaultTextContainer","DefaultSubtitle","DefaultInfoLink","DefaultRecentBadgeWrapper","DefaultChevron","ConnectCard","infoLink","subtitle","isRecent","CustomIconContainer","CustomIconWrapper","CustomTextContainer","CustomTitle","CustomSubtitle","CustomInfoLink","CustomRecentBadgeWrapper","CustomChevron","networkStats","networkCount","visibleNetworks","cardAriaLabel","recentText","subtitleText","handleInfoClick","InformationCircleIcon","ChevronRightIcon","_blockData","DefaultConnectorsList","DefaultConnectorItem","_itemData","DefaultEmptyState","ConnectorsBlock","waitForPredict","setIsConnected","isTitleBold","connectInProgressRef","CustomConnectorsList","CustomConnectorItem","CustomEmptyState","connect","recentWallets","recentConnectedWalletHelpers","sectionId","blockData","layoutClasses","touchClasses","mouseClasses","connectorItems","handleConnectorClick","targetAdapter","getWalletTypeFromConnectorName","waitFor","modalCloseTime","isConnectedTimer","delay","handleConnectorClickWrapper","itemData","cssClasses","listAriaLabel","isLink","action","DefaultDescription","DefaultAdditionalContent","DefaultActions","DefaultLinkButton","DefaultActionButton","Disclaimer","description","learnMoreAction","listAction","compact","announceToScreenReader","uniqueId","useId","CustomContentSection","CustomDescription","CustomAdditionalContent","CustomActions","CustomLinkButton","CustomActionButton","disclaimerId","buttonTestIds","renderActionButton","buttonText","isPrimary","isLinkAction","_selectionsData","DefaultContentWrapper","DefaultConnectorsArea","DefaultImpersonateSection","_impersonateData","DefaultImpersonateTitle","DefaultDisclaimerSection","ConnectorsSelections","setContentType","withImpersonated","CustomContentWrapper","CustomConnectorsArea","CustomImpersonateSection","CustomImpersonateTitle","CustomDisclaimerSection","connectorGroups","installedConnectorsInitial","installedConnectors","isSafeApp","popularConnectors","impersonatedConnector","selectionsData","impersonateData","touchConnectorsClasses","mouseConnectorsClasses","touchContentClasses","mouseContentClasses","handleImpersonateClick","handleImpersonateClickWrapper","connectorsAreaAriaLabel","impersonateAriaLabel","defaultWalletIcons","DefaultAnimationSection","DefaultStarsBackground","show","DefaultGradientOverlay","DefaultAnimationWrapper","enableAnimations","animationDelay","DefaultWalletIcon","walletKey","positionClasses","classes","animationClasses","animationStyle","DefaultScreenReader","GetWallet","customWalletIcons","showStarsBackground","CustomAnimationSection","CustomStarsBackground","CustomGradientOverlay","CustomAnimationWrapper","CustomWalletIcon","CustomScreenReader","walletIcons","icons","durationMultiplier","delayMultiplier","defaultClasses","animationSectionClasses","starsBackgroundClasses","gradientOverlayClasses","animationWrapperClasses","contentSectionClasses","screenReaderClasses","iconConfig","defaultValidationConfig","DefaultLabel","DefaultInput","_","ImpersonateForm","impersonatedAddress","setImpersonatedAddress","CustomLabel","CustomInput","resetWalletConnectionError","setWalletConnectionError","hasInteracted","setHasInteracted","timeoutRef","validationConfig","getValidateAddress","customError","isAddress","validateAddress","getDebouncedValidate","debouncedValidate","getHandleAddressChange","handleAddressChange","getHandleBlur","getLabelClasses","labelClasses","getInputClasses","inputClasses","getErrorMessageClasses","errorMessageClasses","inputId","errorId","placeholder","autoComplete","spellCheck","DefaultNetworkList","DefaultNetworkItem","DefaultErrorIcon","DefaultErrorTitle","NetworkSelections","CustomNetworkList","CustomNetworkItem","CustomErrorContainer","CustomErrorIcon","CustomErrorTitle","activeConnectors","networkInfo","touchListClasses","mouseListClasses","handleNetworkClick","network","n","selectedNetwork","getTextVariant","DefaultTabList","DefaultTab","DefaultTabButton","DefaultTabText","NetworkTabs","onSelect","CustomTabList","CustomTab","CustomTabButton","CustomTabText","CustomIndicator","textVariant","shouldRender","minNetworks","localNetworks","getNetworkDisplayNameGen","networkKey","getNetworkDisplayName","getNetworkAriaLabelGen","isSelected","displayName","tabPrefix","selectedSuffix","getNetworkAriaLabel","getHandleTabSelect","tabData","handleTabSelect","tabsData","getTabListClasses","tabListClasses","tabKey","tabClasses","tabButtonClasses","tabTextClasses","indicatorClasses","GlobeAltIcon","getConnectorName","c","DefaultModalContainer","modalData","DefaultModalHeader","DefaultInfoButton","DefaultFooter","DefaultActionDescription","_modalData","ConnectModal","isConnectModalOpen","setConnectModalContentType","setActiveConnector","connectModalContentType","setSelectedAdapter","storeGetters","normalizedError","components","classNames","handlers","childComponents","ModalContainer","ModalHeader","InfoButton","Title","CloseButton","MainContent","Footer","BackButton","ActionButton","ActionDescription","CustomMotionDiv","goBackContentType","handleBack","handleConnect","renderMainContent","bottomButtonConfig","trimmedAddress","impersonatedHelpers","getActionDescription","DEFAULT_MOTION_PATH_VARIANTS","DEFAULT_CONTAINER_VARIANTS","DefaultSvg","ariaHidden","focusable","DefaultPath","StatusIcon","txStatus","colorVar","Svg","Path","defaultAriaLabel","svgClasses","pathClasses","pathVariants","containerAnimation","pathAnimation","shouldReduceMotion","isAnimationDisabled","svgElement","baseProps","createElement","DefaultBalanceContainer","formattedBalance","statusDisplay","withBalance","DefaultLoadingAnimation","connectedButtonStatus","DefaultBalanceDivider","ConnectedContent","setConnectedButtonStatus","prevTxPoolRef","BalanceContainer","LoadingAnimation","BalanceDivider","statusResetTimeout","showLoadingAnimation","showBalanceDivider","currentPool","prevPool","newStatus","currentTx","prevTx","TransactionStatus","timer","getStatusAriaLabel","status","baseAriaLabel","handleBalanceClick","DefaultText","text","role","WaitForConnectionContent","Text","hideWhenConnected","customText","displayText","defaultPathData","textClasses","textElement","buttonData","DefaultButtonContainer","DefaultButton","ConnectButton","withChain","Navigation","Container","ButtonContainer","Button","handleConnectButtonClick","buttonAriaLabel","navigationAriaLabel","DefaultRootContainer","_providerData","NovaConnectButton","connectButtonProps","providerCustomization","connectButtonCustomization","RootContainer","CustomProvider","NovaConnectProvider","CustomConnectButton","providerData","providerProps","titleId","rawError","descriptionId","copyLabel","copiedLabel","idCounter","ToastError","onCopyComplete","Description","errorToCopy","handleCopy","DefaultToastError","errorType","ToastContainer","defaultShowErrorHandler","defaultDismissErrorHandler","defaultCopyCompleteHandler","success","defaultErrorTitleGenerator","defaultTitle","defaultErrorHashGenerator","defaultHash","ErrorsProvider","containerId","autoClose","draggable","switchNetworkError","CustomToastError","customShowErrorHandler","customDismissErrorHandler","customCopyCompleteHandler","customErrorTitleGenerator","customErrorHashGenerator","displayedErrorsRef","currentToastIdRef","errorState","hasWalletError","hasSwitchError","defaultErrorTitle","errorTitle","defaultErrorHash","errorHash","dismissCurrentToast","toast","handleCopyComplete","originalErrorHandler","t","r","k","defaultToastOptions","customToastOptions","toastOptions","showErrorToast","errorKey","hasAnyError","primaryError","defaultContainerProps","ToastCloseButton","Bounce","NovaConnectLabelsProvider","memoizedLabels","missingLabels","key","DefaultLabelsProvider","DefaultErrorsProvider","defaultLabelsMerge","userLabels","deepMerge","defaultLabelsTransform","mergedLabels","defaultStoreSubscribedHandler","defaultConnectionStateChangeHandler","defaultErrorStateChangeHandler","defaultContextValueTransform","defaultValue","defaultProviderTreeRenderer","defaultTree","LabelsProvider","CustomErrorsProvider","customLabelsMerge","customLabelsTransform","customStoreSubscribedHandler","customConnectionStateChangeHandler","customErrorStateChangeHandler","customContextValueTransform","customProviderTreeRenderer","setActiveWallet","providerContext","handleConnectionStateChange","newIsConnected","newActiveWallet","handleErrorStateChange","newError","unsubscribe","state","contextValue","errorsProviderElement","labelsProviderElement","mainContentElement","defaultProviderTree","finalProviderTree"],"mappings":"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","file":"index.js","sourcesContent":["import { NovaConnectLabels } from './types';\n\n/**\n * Default English translations for NovaConnect component\n * All text strings extracted from component files\n */\nexport const defaultLabels: NovaConnectLabels = {\n // Core actions - Primary user interactions\n connectWallet: 'Connect Wallet',\n disconnect: 'Disconnect',\n connecting: 'Connecting...',\n connected: 'Connected',\n tryAgain: 'Try again',\n back: 'Back',\n connect: 'Connect',\n close: 'Close',\n all: 'All',\n\n // Connection states - Status messages for wallet connection flow\n connectionError: 'Connection error',\n connectedSuccessfully: 'Connected successfully!',\n connectingTo: 'Connecting to',\n walletConnectionError: 'Wallet connection error',\n errorWhenChainSwitching: 'Error when chain switching',\n cannotConnectWallet: 'Cannot connect to the wallet. Please try again or use another connector.',\n\n // Transaction states - Status indicators for blockchain transactions\n success: 'Success',\n error: 'Error',\n replaced: 'Replaced',\n recent: 'Recent',\n transactionLoading: 'Transaction loading',\n transactionSuccess: 'Transaction successful',\n transactionError: 'Transaction failed',\n transactionReplaced: 'Transaction replaced',\n\n // Modal titles - Headers for different modal dialogs\n aboutWallets: 'About wallets',\n getWallet: 'Get a wallet',\n connectImpersonatedWallet: 'Connect impersonated wallet',\n transactionsInApp: 'Transactions in app',\n switchNetwork: 'Switch network',\n switchNetworks: 'Switch Networks',\n connectingEllipsis: 'Connecting...',\n\n // Wallet sections - Categories for wallet connector grouping\n installed: 'Installed',\n popular: 'Popular',\n impersonate: 'Impersonate',\n readOnlyMode: 'Read-only mode',\n\n // Information and descriptions - Educational content and explanations\n whatIsWallet: 'What is a wallet?',\n walletDescription:\n 'Wallets are essential for managing your crypto—they let you send, receive, and securely hold digital assets. Connecting your wallet grants you safe access and interaction with decentralized applications (dApps).',\n whatIsNetwork: 'What is a network?',\n networkDescription:\n 'A network (or blockchain) is a decentralized digital ledger that records transactions. Selecting a network lets you choose which blockchain you want to connect to.',\n learnMore: 'Learn more',\n listOfNetworks: 'List of networks',\n viewOnExplorer: 'View on explorer',\n viewTransactions: 'View transactions',\n\n // Impersonation form - Labels for wallet address impersonation feature\n enterWalletAddress: 'Enter wallet address to impersonate',\n walletAddressPlaceholder: '0x...',\n\n // Error messages - User-facing error notifications and descriptions\n noConnectorsFound: 'No Connectors Found',\n noConnectorsDescription: \"We couldn't find any wallets or connection methods for the selected network.\",\n somethingWentWrong: 'Something went wrong',\n networkPickingError: 'Something went wrong with wallet network selection. Please go back and try again.',\n pulsarAdapterRequired: 'Pulsar Adapter Required',\n pulsarAdapterDescription:\n 'Additional configuration is needed for viewing transactions in app. Please contact your admin.',\n selectAvailableNetwork: 'Select one of available network',\n\n // Get Wallet section - Onboarding content for new users without wallets\n startExploringWeb3: 'Start Exploring Web3',\n walletKeyToDigitalWorld:\n 'Your wallet is the key to the digital world and the technology that makes exploring web3 possible.',\n iDontHaveWallet: \"I don't have a wallet\",\n choseWallet: 'Choose a wallet',\n\n // About Wallets slides - Educational carousel content explaining wallet benefits\n keyToNewInternet: 'The Key to a New Internet',\n keyToNewInternetDescription:\n 'Your wallet is more than just storage. Think of it as your digital passport that lets you truly own, display, and exchange every digital asset you hold, from crypto tokens to unique NFTs.',\n logInWithoutHassle: 'Log In Without the Hassle',\n logInWithoutHassleDescription:\n 'Skip the endless sign-up forms! Your wallet is your unique access pass. Just connect it, and the website instantly recognizes you. It saves you time and protects your privacy.',\n\n // Copy functionality and UI feedback - Clipboard operations and user feedback\n copyRawError: 'Copy raw error',\n copied: 'Copied!',\n\n // Accessibility labels - Screen reader and ARIA labels for better accessibility\n chainSelector: 'Chain Selector',\n closeModal: 'Close modal',\n selectChain: 'Select chain',\n chainOption: 'Chain option',\n openChainSelector: 'Open chain selector',\n currentChain: 'Current chain',\n scrollToTop: 'Scroll to top',\n scrollToBottom: 'Scroll to bottom',\n chainListContainer: 'Chain list container',\n walletControls: 'Wallet controls',\n openWalletModal: 'Open wallet modal',\n walletConnected: 'Wallet connected',\n walletNotConnected: 'Wallet not connected',\n walletBalance: 'Wallet balance',\n walletAddress: 'Wallet address',\n transactionStatus: 'Transaction status',\n successIcon: 'Success icon',\n errorIcon: 'Error icon',\n replacedIcon: 'Replaced icon',\n statusIcon: 'Status icon',\n\n // Additional states - Supplementary status indicators\n loading: 'Loading',\n idle: 'Idle',\n\n // Wallet Avatar labels\n unknownWallet: 'Unknown wallet',\n walletAvatar: 'Wallet avatar',\n ensAvatar: 'ENS avatar',\n walletIcon: 'Wallet icon',\n\n // Impersonate errors\n impersonateAddressEmpty: 'Enter a wallet address to impersonate.',\n impersonateAddressNotCorrect: 'Entered wallet address is not correct. Please try again.',\n impersonateAddressConnected: 'First disconnect the wallet to impersonate another address.',\n};\n","import { createContext, useContext } from 'react';\n\nimport { defaultLabels } from '../i18n/en';\nimport { NovaConnectLabels } from '../i18n/types';\n\n/**\n * React Context for storing and providing the UI labels.\n * It is initialized with the default English labels, ensuring that components\n * work even without an explicit provider.\n */\nexport const NovaConnectLabelsContext = createContext<NovaConnectLabels>(defaultLabels);\n\n/**\n * A custom hook to easily access the i18n labels from any component\n * within the `NovaConnectLabelsProvider` tree.\n *\n * This hook provides type-safe access to all UI labels and automatically\n * falls back to default English labels if no provider is found.\n *\n * @returns {NovaConnectLabels} The complete object of UI labels for the current locale.\n *\n * @example\n * ```typescript\n * import { useNovaConnectLabels } from './hooks/useNovaConnectLabels';\n *\n * function MyComponent() {\n * const labels = useNovaConnectLabels();\n *\n * return (\n * <div>\n * <h1>{labels.connectWallet}</h1>\n * <button>{labels.connect}</button>\n * <p aria-label={labels.walletBalance}>{formattedBalance}</p>\n * </div>\n * );\n * }\n * ```\n *\n * @example\n * ```typescript\n * // Destructuring specific labels for better performance\n * function ConnectButton() {\n * const { connectWallet, connecting, connected } = useNovaConnectLabels();\n *\n * return (\n * <button>\n * {isConnecting ? connecting : isConnected ? connected : connectWallet}\n * </button>\n * );\n * }\n * ```\n */\nexport const useNovaConnectLabels = (): NovaConnectLabels => {\n return useContext(NovaConnectLabelsContext);\n};\n\n/**\n * Hook to get a specific label by key path with type safety\n *\n * @param key The label key to retrieve\n * @returns The specific label value\n *\n * @example\n * ```typescript\n * function MyComponent() {\n * const connectLabel = useNovaConnectLabel('connectWallet');\n * const errorLabel = useNovaConnectLabel('connectionError');\n *\n * return <button>{connectLabel}</button>;\n * }\n * ```\n */\nexport const useNovaConnectLabel = <K extends keyof NovaConnectLabels>(key: K): NovaConnectLabels[K] => {\n const labels = useNovaConnectLabels();\n return labels[key];\n};\n\n/**\n * Hook to get multiple specific labels for better performance\n *\n * @param keys Array of label keys to retrieve\n * @returns Object with only the requested labels\n *\n * @example\n * ```typescript\n * function ConnectModal() {\n * const { connectWallet, connecting, disconnect } = useNovaConnectLabelsSubset(['connectWallet', 'connecting', 'disconnect']);\n *\n * return (\n * <div>\n * <h2>{connectWallet}</h2>\n * <span>{connecting}</span>\n * <button>{disconnect}</button>\n * </div>\n * );\n * }\n * ```\n */\nexport const useNovaConnectLabelsSubset = <K extends keyof NovaConnectLabels>(\n keys: K[],\n): Pick<NovaConnectLabels, K> => {\n const allLabels = useNovaConnectLabels();\n\n const subset = {} as Pick<NovaConnectLabels, K>;\n for (const key of keys) {\n subset[key] = allLabels[key];\n }\n\n return subset;\n};\n\n/**\n * Type-safe helper to check if a label exists\n *\n * @param labels The labels object\n * @param key The key to check\n * @returns Whether the key exists and has a non-empty value\n */\nexport const hasLabel = (labels: NovaConnectLabels, key: keyof NovaConnectLabels): boolean => {\n return Boolean(labels[key]?.trim());\n};\n\n/**\n * Utility type for extracting label keys by category\n */\nexport type LabelCategory = {\n actions: Extract<\n keyof NovaConnectLabels,\n 'connectWallet' | 'disconnect' | 'connecting' | 'connected' | 'tryAgain' | 'back' | 'connect' | 'close'\n >;\n states: Extract<keyof NovaConnectLabels, 'success' | 'error' | 'replaced' | 'loading' | 'idle'>;\n accessibility: Extract<\n keyof NovaConnectLabels,\n 'chainSelector' | 'closeModal' | 'selectChain' | 'walletControls' | 'openWalletModal'\n >;\n transactions: Extract<\n keyof NovaConnectLabels,\n 'transactionLoading' | 'transactionSuccess' | 'transactionError' | 'transactionReplaced' | 'recent'\n >;\n};\n\n/**\n * Hook to get labels by category for better organization\n *\n * @param category The category of labels to retrieve\n * @returns Object with labels from the specified category\n */\nexport const useLabelsByCategory = <T extends keyof LabelCategory>(\n category: T,\n): Pick<NovaConnectLabels, LabelCategory[T]> => {\n const allLabels = useNovaConnectLabels();\n\n const categoryKeys: Record<keyof LabelCategory, (keyof NovaConnectLabels)[]> = {\n actions: ['connectWallet', 'disconnect', 'connecting', 'connected', 'tryAgain', 'back', 'connect', 'close'],\n states: ['success', 'error', 'replaced', 'loading', 'idle'],\n accessibility: ['chainSelector', 'closeModal', 'selectChain', 'walletControls', 'openWalletModal'],\n transactions: ['transactionLoading', 'transactionSuccess', 'transactionError', 'transactionReplaced', 'recent'],\n };\n\n const keys = categoryKeys[category] as LabelCategory[T][];\n const categoryLabels = {} as Pick<NovaConnectLabels, LabelCategory[T]>;\n\n for (const key of keys) {\n // eslint-disable-next-line\n (categoryLabels as any)[key] = allLabels[key as keyof NovaConnectLabels];\n }\n\n return categoryLabels;\n};\n\n/**\n * Utility function to check if labels are default ones (for external use)\n * This is a regular function, not a hook, so it can be used anywhere\n *\n * @param labels The labels to check\n * @returns Whether the labels are the default English labels\n *\n * @example\n * ```typescript\n * function SomeUtilityFunction(labels: NovaConnectLabels) {\n * if (isDefaultLabels(labels)) {\n * console.log('Using default English labels');\n * }\n * }\n * ```\n */\nexport const isDefaultLabels = (labels: NovaConnectLabels): boolean => {\n return labels === defaultLabels;\n};\n\n/**\n * Utility function to get a formatted label with fallback\n *\n * @param labels The labels object\n * @param key The label key\n * @param fallback Optional fallback text\n * @returns The label value or fallback\n *\n * @example\n * ```typescript\n * const buttonText = getLabelWithFallback(labels, 'connectWallet', 'Connect');\n * ```\n */\nexport const getLabelWithFallback = (\n labels: NovaConnectLabels,\n key: keyof NovaConnectLabels,\n fallback?: string,\n): string => {\n const value = labels[key];\n if (value && value.trim()) {\n return value;\n }\n return fallback || defaultLabels[key] || key.toString();\n};\n\n/**\n * Utility function to create a labels subset (for use outside of React components)\n *\n * @param labels The source labels object\n * @param keys Array of keys to extract\n * @returns Object with only the requested labels\n *\n * @example\n * ```typescript\n * const actionLabels = createLabelsSubset(labels, ['connect', 'disconnect', 'tryAgain']);\n * ```\n */\nexport const createLabelsSubset = <K extends keyof NovaConnectLabels>(\n labels: NovaConnectLabels,\n keys: K[],\n): Pick<NovaConnectLabels, K> => {\n const subset = {} as Pick<NovaConnectLabels, K>;\n for (const key of keys) {\n subset[key] = labels[key];\n }\n return subset;\n};\n","/**\n * @file Highly customizable chain list renderer with comprehensive styling and behavior control.\n * @module ChainListRenderer\n */\n\nimport { Web3Icon } from '@bgd-labs/react-web3-icons';\nimport { getChainName } from '@bgd-labs/react-web3-icons/dist/utils';\nimport * as Select from '@radix-ui/react-select';\nimport { cn } from '@tuwaio/nova-core';\nimport {\n type AnyResolvedKeyframe,\n type LegacyAnimationControls,\n motion,\n type TargetAndTransition,\n type Transition,\n type VariantLabels,\n} from 'framer-motion';\nimport React, {\n type ComponentPropsWithoutRef,\n type ComponentType,\n type ElementRef,\n forwardRef,\n ReactNode,\n useCallback,\n useMemo,\n} from 'react';\n\nimport { useNovaConnectLabels } from '../../hooks/useNovaConnectLabels';\n\n// === TYPES AND INTERFACES ===\n\n/**\n * Chain data structure returned by getChainData function\n */\ninterface ChainData {\n formattedChainId: string | number;\n chain: string | number;\n}\n\n/**\n * Props for custom chain icon component\n */\ninterface CustomChainIconProps {\n chainId: string | number;\n className?: string;\n 'aria-hidden'?: boolean;\n}\n\n/**\n * Props for custom chain content component\n */\ninterface CustomChainContentProps {\n chainId: string | number;\n isActive: boolean;\n icon: ReactNode;\n children?: ReactNode;\n}\n\n/**\n * Props for custom active indicator component\n */\ninterface CustomActiveIndicatorProps {\n isActive: boolean;\n label: string;\n className?: string;\n}\n\n/**\n * Animation configuration for container\n */\ninterface ContainerAnimationConfig {\n initial?: TargetAndTransition | VariantLabels | LegacyAnimationControls | undefined;\n animate?: TargetAndTransition | VariantLabels | LegacyAnimationControls | undefined;\n exit?: TargetAndTransition | VariantLabels | LegacyAnimationControls | undefined;\n transition?: Transition<AnyResolvedKeyframe>;\n}\n\n/**\n * Animation configuration for items\n */\ninterface ItemAnimationConfig {\n initial?: TargetAndTransition | VariantLabels | LegacyAnimationControls | undefined;\n animate?: TargetAndTransition | VariantLabels | LegacyAnimationControls | undefined;\n transition?: Transition<AnyResolvedKeyframe>;\n}\n\n/**\n * Comprehensive customization options for ChainListRenderer\n */\nexport interface ChainListRendererCustomization {\n /** Custom components */\n components?: {\n /** Custom chain icon component */\n ChainIcon?: ComponentType<CustomChainIconProps>;\n /** Custom chain content layout component */\n ChainContent?: ComponentType<CustomChainContentProps>;\n /** Custom active indicator component */\n ActiveIndicator?: ComponentType<CustomActiveIndicatorProps>;\n };\n /** Custom class name generators */\n classNames?: {\n /** Container classes */\n container?: (params: { isMobile: boolean; itemCount: number }) => string;\n /** Item classes */\n item?: (params: { isActive: boolean; isMobile: boolean; chainId: string | number }) => string;\n /** Content wrapper classes */\n content?: (params: { isActive: boolean; isMobile: boolean }) => string;\n /** Icon classes */\n icon?: (params: { isActive: boolean; chainId: string | number }) => string;\n /** Chain name classes */\n chainName?: (params: { isActive: boolean; isMobile: boolean }) => string;\n /** Active indicator classes */\n activeIndicator?: (params: { isMobile: boolean }) => string;\n };\n /** Custom event handlers */\n handlers?: {\n /** Custom click handler wrapper */\n onClick?: (\n originalHandler: () => void,\n context: { chainId: string | number; chainName: string; isActive: boolean },\n ) => void;\n /** Custom keydown handler wrapper */\n onKeyDown?: (\n originalHandler: (event: React.KeyboardEvent) => void,\n event: React.KeyboardEvent,\n context: { chainId: string | number; chainName: string; isActive: boolean },\n ) => void;\n /** Chain selection handler wrapper */\n onSelect?: (\n originalHandler: (chainId: string) => void,\n chainId: string,\n context: { chainName: string; isActive: boolean },\n ) => void;\n };\n /** Animation configuration */\n animations?: {\n /** Container animation */\n container?: ContainerAnimationConfig;\n /** Item animation */\n item?: ItemAnimationConfig;\n };\n /** Behavior configuration */\n behavior?: {\n /** Auto-focus first item */\n autoFocus?: boolean;\n /** Enable animation on mount */\n animateOnMount?: boolean;\n /** Show loading states */\n showLoading?: boolean;\n /** Custom loading message */\n loadingMessage?: string;\n };\n}\n\n/**\n * Props for the ChainListRenderer component\n */\nexport interface ChainListRendererProps {\n /** List of chain identifiers to render */\n chainsList: (string | number)[];\n /** Currently selected chain value */\n selectValue: string;\n /** Handler for chain selection changes */\n handleValueChange: (newChainId: string) => void;\n /** Function to get formatted chain data */\n getChainData: (chain: string | number) => ChainData;\n /** Handler called when list should close */\n onClose: () => void;\n /** Whether this is being rendered on mobile */\n isMobile?: boolean;\n /** Custom CSS classes for container (added to defaults) */\n className?: string;\n /** Custom CSS classes for individual items (added to defaults) */\n itemClassName?: string;\n /** Comprehensive customization options */\n customization?: ChainListRendererCustomization;\n /** ARIA label for the list container */\n 'aria-label'?: string;\n /** Loading state */\n isLoading?: boolean;\n /** Error state */\n error?: string | null;\n}\n\n// === DEFAULT COMPONENTS ===\n\n/**\n * Default chain icon component using Web3Icon\n */\nconst DefaultChainIcon: React.FC<CustomChainIconProps> = ({ chainId, className, ...props }) => (\n <Web3Icon chainId={chainId} className={className} {...props} />\n);\n\n/**\n * Default chain content component\n */\nconst DefaultChainContent: React.FC<CustomChainContentProps> = ({ icon, children }) => (\n <div className=\"novacon:flex novacon:items-center novacon:space-x-3 novacon:[&_img]:w-6 novacon:[&_img]:h-6\">\n <div aria-hidden=\"true\">{icon}</div>\n {children}\n </div>\n);\n\n/**\n * Default active indicator component\n */\nconst DefaultActiveIndicator: React.FC<CustomActiveIndicatorProps> = ({ isActive, label, className }) => {\n if (!isActive) return null;\n\n return (\n <>\n <span\n className={cn(\n 'novacon:ml-auto novacon:text-xs novacon:font-semibold novacon:w-2 novacon:h-2 novacon:rounded-full novacon:bg-[var(--tuwa-success-text)]',\n className,\n )}\n aria-label={label}\n role=\"status\"\n />\n <span className=\"novacon:sr-only\">{label}</span>\n </>\n );\n};\n\n/**\n * Enhanced SelectItem component for desktop use\n */\nconst SelectItemBase = forwardRef<ElementRef<typeof Select.Item>, ComponentPropsWithoutRef<typeof Select.Item>>(\n ({ children, className, ...props }, forwardedRef) => {\n const labels = useNovaConnectLabels();\n const isActive = props.value === props['aria-selected'];\n return (\n <Select.Item\n ref={forwardedRef}\n className={cn(\n // Base styles\n 'novacon:flex novacon:items-center novacon:w-full novacon:text-left novacon:px-2 novacon:py-2',\n 'novacon:rounded-md novacon:transition-colors novacon:space-x-3 novacon:cursor-pointer novacon:outline-none',\n // Interactive states\n 'novacon:text-[var(--tuwa-text-primary)] novacon:hover:bg-[var(--tuwa-bg-muted)]',\n 'novacon:focus:bg-[var(--tuwa-bg-muted)] novacon:focus:outline-none',\n 'novacon:focus:ring-2 novacon:focus:ring-[var(--tuwa-border-primary)] novacon:focus:ring-offset-2',\n // Active state\n { 'novacon:bg-[var(--tuwa-bg-muted)]': isActive },\n // Custom classes\n className,\n )}\n role=\"option\"\n aria-selected={isActive}\n tabIndex={0}\n {...props}\n >\n {children}\n {isActive && <DefaultActiveIndicator isActive={true} label={labels.connected} className=\"novacon:ml-auto\" />}\n </Select.Item>\n );\n },\n);\nSelectItemBase.displayName = 'SelectItemBase';\n\n// === MAIN COMPONENT ===\n\n/**\n * Highly customizable chain list renderer with comprehensive styling and behavior control.\n */\nexport const ChainListRenderer: React.FC<ChainListRendererProps> = ({\n chainsList,\n selectValue,\n handleValueChange,\n getChainData,\n onClose,\n isMobile = false,\n className,\n itemClassName,\n customization,\n 'aria-label': ariaLabel,\n isLoading = false,\n error = null,\n}) => {\n const labels = useNovaConnectLabels();\n\n // Extract customization options with defaults\n const {\n ChainIcon = DefaultChainIcon,\n ChainContent = DefaultChainContent,\n ActiveIndicator = DefaultActiveIndicator,\n } = customization?.components ?? {};\n\n const animations = customization?.animations;\n const behavior = customization?.behavior ?? {};\n\n // Memoize container classes and styles\n const containerClasses = useMemo(() => {\n const customClasses = customization?.classNames?.container?.({ isMobile, itemCount: chainsList.length });\n return cn(customClasses, className);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customization?.classNames?.container, isMobile, chainsList.length, className]);\n\n // Create event handlers at top level to avoid hooks violations\n const createClickHandler = useCallback(\n (formattedChainId: string | number, chainName: string, isActive: boolean) => {\n const originalHandler = () => {\n if (customization?.handlers?.onSelect) {\n customization.handlers.onSelect(handleValueChange, String(formattedChainId), { chainName, isActive });\n } else {\n handleValueChange(String(formattedChainId));\n }\n onClose();\n };\n\n return () => {\n if (customization?.handlers?.onClick) {\n customization.handlers.onClick(originalHandler, {\n chainId: formattedChainId,\n chainName,\n isActive,\n });\n } else {\n originalHandler();\n }\n };\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [customization?.handlers?.onSelect, customization?.handlers?.onClick, handleValueChange, onClose],\n );\n\n const createKeyDownHandler = useCallback(\n (clickHandler: () => void, formattedChainId: string | number, chainName: string, isActive: boolean) => {\n const originalHandler = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n clickHandler();\n }\n };\n\n return (event: React.KeyboardEvent) => {\n if (customization?.handlers?.onKeyDown) {\n customization.handlers.onKeyDown(originalHandler, event, {\n chainId: formattedChainId,\n chainName,\n isActive,\n });\n } else {\n originalHandler(event);\n }\n };\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [customization?.handlers?.onKeyDown],\n );\n\n // Handle loading state\n if (isLoading) {\n const loadingMessage = behavior.loadingMessage || `${labels.loading}...`;\n return (\n <div\n className={cn('novacon:flex novacon:justify-center novacon:items-center novacon:py-4', containerClasses)}\n role=\"status\"\n aria-label={loadingMessage}\n >\n <span className=\"novacon:text-sm novacon:text-[var(--tuwa-text-secondary)]\">{loadingMessage}</span>\n </div>\n );\n }\n\n // Handle error state\n if (error) {\n return (\n <div\n className={cn('novacon:flex novacon:justify-center novacon:items-center novacon:py-4', containerClasses)}\n role=\"alert\"\n aria-live=\"assertive\"\n >\n <span className=\"novacon:text-sm novacon:text-[var(--tuwa-text-error)]\">{error}</span>\n </div>\n );\n }\n\n // Handle empty state\n if (chainsList.length === 0) {\n return (\n <div\n className={cn('novacon:flex novacon:justify-center novacon:items-center novacon:py-4', containerClasses)}\n role=\"status\"\n >\n <span className=\"novacon:text-sm novacon:text-[var(--tuwa-text-secondary)]\">{labels.noConnectorsFound}</span>\n </div>\n );\n }\n\n // Main render method for individual chain items\n const renderChainItem = (chain: string | number) => {\n const { formattedChainId } = getChainData(chain);\n const isActive = String(formattedChainId) === selectValue;\n const chainName = getChainName(formattedChainId);\n\n // Generate custom classes and styles\n const itemClasses = customization?.classNames?.item?.({ isActive, isMobile, chainId: formattedChainId })\n ? customization?.classNames?.item?.({ isActive, isMobile, chainId: formattedChainId })\n : cn(\n // Default item styles\n 'novacon:flex novacon:items-center novacon:w-full novacon:text-left novacon:px-2 novacon:py-2',\n 'novacon:rounded-md novacon:transition-colors novacon:space-x-3 novacon:cursor-pointer novacon:outline-none',\n 'novacon:text-[var(--tuwa-text-primary)] novacon:hover:bg-[var(--tuwa-bg-muted)]',\n 'novacon:focus:bg-[var(--tuwa-bg-muted)] novacon:focus:outline-none',\n 'novacon:focus:ring-2 novacon:focus:ring-[var(--tuwa-border-primary)] novacon:focus:ring-offset-2',\n { 'novacon:bg-[var(--tuwa-bg-muted)]': isActive, 'novacon:justify-between': isMobile },\n // Custom classes\n itemClassName,\n );\n\n const iconClasses = customization?.classNames?.icon?.({ isActive, chainId: formattedChainId });\n\n const chainNameClasses = customization?.classNames?.chainName?.({ isActive, isMobile });\n\n // Create event handlers\n const handleClick = createClickHandler(formattedChainId, chainName, isActive);\n const handleKeyDown = createKeyDownHandler(handleClick, formattedChainId, chainName, isActive);\n\n // Create icon element\n const iconElement = <ChainIcon chainId={formattedChainId} className={iconClasses} aria-hidden={true} />;\n\n // Create content element\n const contentElement = (\n <ChainContent chainId={formattedChainId} isActive={isActive} icon={iconElement}>\n <span className={cn('novacon:text-sm novacon:font-medium', chainNameClasses)}>{chainName}</span>\n </ChainContent>\n );\n\n // Create active indicator\n const activeIndicatorClasses = customization?.classNames?.activeIndicator?.({ isMobile });\n\n const activeIndicator = isMobile ? (\n <div className=\"novacon:flex novacon:items-center novacon:space-x-2 novacon:text-xs novacon:font-semibold novacon:text-[var(--tuwa-text-tertiary)]\">\n <span aria-label={labels.connected}>{labels.connected}</span>\n <ActiveIndicator isActive={isActive} label={labels.connected} className={activeIndicatorClasses} />\n </div>\n ) : (\n <ActiveIndicator isActive={isActive} label={labels.connected} className={activeIndicatorClasses} />\n );\n\n const ariaLabel = `${labels.chainOption}: ${chainName}`;\n\n // Render mobile version\n if (isMobile) {\n const MotionItem = animations?.item ? motion.div : 'div';\n const motionProps = animations?.item || {};\n\n return (\n <MotionItem\n key={chain}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n className={itemClasses}\n role=\"option\"\n aria-selected={isActive}\n aria-label={ariaLabel}\n tabIndex={0}\n {...motionProps}\n >\n {contentElement}\n {activeIndicator}\n </MotionItem>\n );\n }\n\n // Render desktop version with Select.Item\n return (\n <SelectItemBase\n key={chain}\n value={String(formattedChainId)}\n aria-label={ariaLabel}\n onSelect={handleClick}\n className={itemClasses}\n >\n {contentElement}\n </SelectItemBase>\n );\n };\n\n // Container animation wrapper\n const MotionContainer = animations?.container ? motion.div : 'div';\n const containerMotionProps = animations?.container || {};\n\n return (\n <MotionContainer\n role=\"listbox\"\n aria-label={ariaLabel || labels.selectChain}\n className={containerClasses}\n {...containerMotionProps}\n >\n {chainsList.map(renderChainItem)}\n </MotionContainer>\n );\n};\n","import { OrbitAdapter } from '@tuwaio/orbit-core';\nimport { ISatelliteConnectStore } from '@tuwaio/satellite-core';\nimport { BaseWallet } from '@tuwaio/satellite-core';\nimport { createContext, useContext } from 'react';\nimport { StoreApi } from 'zustand/index';\n\nimport { NovaConnectLabels } from '../i18n/types';\nimport { Connector, Wallet } from '../types';\n\nexport type ButtonTxStatus = 'idle' | 'loading' | 'succeed' | 'failed' | 'replaced';\nexport type ConnectContentType = 'network' | 'connectors' | 'about' | 'getWallet' | 'connecting' | 'impersonate';\nexport type ConnectedContentType = 'main' | 'transactions' | 'chains';\n\n// Provider props interface\nexport interface NovaConnectProviderProps {\n store: StoreApi<ISatelliteConnectStore<Connector, Wallet>>;\n children: React.ReactNode;\n labels?: Partial<NovaConnectLabels>;\n}\n\n// Balance type for better type safety\nexport interface WalletBalance {\n value: string;\n symbol: string;\n}\n\n// Provider context type with better organization\nexport interface NovaConnectProviderType {\n activeWallet: BaseWallet | undefined;\n walletConnectionError: string | undefined;\n // Modal states\n isConnectModalOpen: boolean;\n setIsConnectModalOpen: (value: boolean) => void;\n isConnectedModalOpen: boolean;\n setIsConnectedModalOpen: (value: boolean) => void;\n\n // Chain selection states\n isChainsListOpen: boolean;\n setIsChainsListOpen: (value: boolean) => void;\n isChainsListOpenMobile: boolean;\n setIsChainsListOpenMobile: (value: boolean) => void;\n\n // Connection states\n connectedButtonStatus: ButtonTxStatus;\n setConnectedButtonStatus: (value: ButtonTxStatus) => void;\n isConnected: boolean;\n setIsConnected: (value: boolean) => void;\n\n // Modal content types\n connectedModalContentType: ConnectedContentType;\n setConnectedModalContentType: (value: ConnectedContentType) => void;\n connectModalContentType: ConnectContentType;\n setConnectModalContentType: (value: ConnectContentType) => void;\n\n // Adapter and connector states\n selectedAdapter: OrbitAdapter | undefined;\n setSelectedAdapter: (value: OrbitAdapter | undefined) => void;\n activeConnector: string | undefined;\n setActiveConnector: (value: string | undefined) => void;\n\n // Impersonation\n impersonatedAddress: string;\n setImpersonatedAddress: (value: string) => void;\n}\n\n// Custom error for hook usage outside provider\nexport class NovaConnectProviderError extends Error {\n constructor(message = 'useNovaConnect must be used within NovaConnectProvider') {\n super(message);\n this.name = 'NovaConnectProviderError';\n }\n}\n\n// Create context with undefined default to enforce provider usage\nexport const NovaConnectProviderContext = createContext<NovaConnectProviderType | undefined>(undefined);\n\n/**\n * Hook to access NovaConnect context\n *\n * @throws {NovaConnectProviderError} When used outside of NovaConnectProvider\n * @returns {NovaConnectProviderType} The NovaConnect context value\n *\n * @example\n * ```typescript\n * function MyComponent() {\n * const { isConnected, handleConnectButtonClick } = useNovaConnect();\n *\n * return (\n * <button onClick={handleConnectButtonClick}>\n * {isConnected ? 'Connected' : 'Connect Wallet'}\n * </button>\n * );\n * }\n * ```\n */\nexport const useNovaConnect = (): NovaConnectProviderType => {\n const context = useContext(NovaConnectProviderContext);\n\n if (!context) {\n throw new NovaConnectProviderError();\n }\n\n return context;\n};\n\n/**\n * Hook to check if NovaConnect context is available\n *\n * @returns {boolean} True if context is available, false otherwise\n *\n * @example\n * ```typescript\n * function ConditionalComponent() {\n * const hasContext = useHasNovaConnectContext();\n *\n * if (!hasContext) {\n * return <div>NovaConnect provider not found</div>;\n * }\n *\n * return <ConnectedComponent />;\n * }\n * ```\n */\nexport const useHasNovaConnectContext = (): boolean => {\n const context = useContext(NovaConnectProviderContext);\n return context !== undefined;\n};\n\n/**\n * Optional hook that returns null if provider is not available\n *\n * @returns {NovaConnectProviderType | null} Context value or null if not available\n *\n * @example\n * ```typescript\n * function OptionalComponent() {\n * const context = useNovaConnectOptional();\n *\n * if (!context) {\n * return <div>No wallet provider available</div>;\n * }\n *\n * return <div>Connected: {context.isConnected}</div>;\n * }\n * ```\n */\nexport const useNovaConnectOptional = (): NovaConnectProviderType | null => {\n const context = useContext(NovaConnectProviderContext);\n return context ?? null;\n};\n","import { OrbitAdapter } from '@tuwaio/orbit-core';\n\nimport type { AdapterInfo, AdapterLoadStatus, ChainAdapter } from './types';\n\n/**\n * Registry for blockchain adapters with lazy loading and intelligent caching.\n *\n * This class manages the lifecycle of blockchain adapters, providing:\n * - Lazy loading of adapters only when needed\n * - Intelligent caching to avoid redundant loads\n * - Graceful error handling and retry logic\n * - Thread-safe loading with concurrent request handling\n *\n * @internal\n * @since 1.0.0\n */\nclass LazyAdapterRegistry {\n /**\n * Internal cache mapping adapter types to their loading information.\n * @private\n */\n private adapters = new Map<OrbitAdapter, AdapterInfo>();\n\n /**\n * Gets an adapter with automatic loading and caching.\n *\n * This method implements intelligent loading logic:\n * - Returns immediately if adapter is already loaded\n * - Waits for completion if adapter is currently loading\n * - Retries loading if previous attempt failed\n * - Initiates new load if adapter hasn't been requested before\n *\n * @param type The blockchain adapter type to retrieve\n * @returns Promise resolving to the loaded adapter or null if unavailable\n *\n * @example\n * ```typescript\n * const evmAdapter = await registry.getAdapter(OrbitAdapter.EVM);\n * if (evmAdapter) {\n * const chains = evmAdapter.getChains(appChains);\n * }\n * ```\n *\n * @since 1.0.0\n */\n async getAdapter(type: OrbitAdapter): Promise<ChainAdapter | null> {\n const info = this.adapters.get(type);\n\n // Return cached adapter if already loaded\n if (info?.status === 'loaded' && info.adapter) {\n return info.adapter;\n }\n\n // Wait for completion if currently loading\n if (info?.status === 'loading') {\n return this.waitForAdapter(type);\n }\n\n // Retry loading if previous attempt failed\n if (info?.status === 'error') {\n console.warn(`Retrying to load ${type} adapter after previous error`);\n }\n\n // Start new loading process\n return this.loadAdapter(type);\n }\n\n /**\n * Loads a specific adapter with error handling and state management.\n *\n * @private\n * @param type The adapter type to load\n * @returns Promise resolving to the loaded adapter or null on failure\n *\n * @since 1.0.0\n */\n private async loadAdapter(type: OrbitAdapter): Promise<ChainAdapter | null> {\n // Set loading status to prevent concurrent loads\n this.adapters.set(type, { status: 'loading' });\n\n try {\n let adapter: ChainAdapter;\n\n switch (type) {\n case OrbitAdapter.EVM: {\n const { createEvmAdapter } = await import('./evm');\n adapter = await createEvmAdapter();\n break;\n }\n case OrbitAdapter.SOLANA: {\n const { createSolanaAdapter } = await import('./solana');\n adapter = await createSolanaAdapter();\n break;\n }\n case OrbitAdapter.Starknet: {\n // Future implementation placeholder\n console.warn('Starknet adapter not implemented yet');\n this.adapters.set(type, {\n status: 'error',\n error: new Error('Starknet adapter not yet implemented'),\n });\n return null;\n }\n default: {\n const error = new Error(`Unknown adapter type: ${type}`);\n this.adapters.set(type, { status: 'error', error });\n return null;\n }\n }\n\n // Mark as successfully loaded\n this.adapters.set(type, { status: 'loaded', adapter });\n return adapter;\n } catch (error) {\n const err = error instanceof Error ? error : new Error(`Failed to load ${type} adapter`);\n console.warn(`Failed to load ${type} adapter:`, err);\n this.adapters.set(type, { status: 'error', error: err });\n return null;\n }\n }\n\n /**\n * Waits for an adapter that's currently loading to complete.\n *\n * Implements polling with timeout to handle concurrent loading requests.\n * Multiple calls to getAdapter() for the same type will wait for a single\n * loading operation to complete rather than starting multiple loads.\n *\n * @private\n * @param type The adapter type to wait for\n * @returns Promise resolving to the loaded adapter or null on timeout/error\n *\n * @since 1.0.0\n */\n private async waitForAdapter(type: OrbitAdapter): Promise<ChainAdapter | null> {\n let attempts = 0;\n const maxAttempts = 50; // 5 seconds with 100ms intervals\n const pollInterval = 100; // milliseconds\n\n while (attempts < maxAttempts) {\n const info = this.adapters.get(type);\n\n if (info?.status === 'loaded' && info.adapter) {\n return info.adapter;\n }\n\n if (info?.status === 'error') {\n return null;\n }\n\n // Wait before next poll\n await new Promise((resolve) => setTimeout(resolve, pollInterval));\n attempts++;\n }\n\n console.warn(`Timeout waiting for ${type} adapter to load after ${maxAttempts * pollInterval}ms`);\n return null;\n }\n\n /**\n * Synchronously retrieves an already loaded adapter.\n *\n * This method only returns adapters that have been successfully loaded\n * and cached. It will not trigger loading of new adapters.\n *\n * @param type The adapter type to retrieve\n * @returns The loaded adapter or null if not available/loaded\n *\n * @example\n * ```typescript\n * // Check if adapter is already loaded\n * const adapter = registry.getLoadedAdapter(OrbitAdapter.EVM);\n * if (adapter) {\n * // Use immediately without waiting\n * const isValid = adapter.isChainList([1, 137]);\n * }\n * ```\n *\n * @since 1.0.0\n */\n getLoadedAdapter(type: OrbitAdapter): ChainAdapter | null {\n const info = this.adapters.get(type);\n return info?.status === 'loaded' ? info.adapter || null : null;\n }\n\n /**\n * Gets the current loading status of a specific adapter.\n *\n * @param type The adapter type to check\n * @returns Current status of the adapter\n *\n * @example\n * ```typescript\n * const status = registry.getAdapterStatus(OrbitAdapter.EVM);\n * console.log(`EVM adapter status: ${status}`);\n * // Possible values: 'idle', 'loading', 'loaded', 'error'\n * ```\n *\n * @since 1.0.0\n */\n getAdapterStatus(type: OrbitAdapter): AdapterLoadStatus {\n return this.adapters.get(type)?.status || 'idle';\n }\n\n /**\n * Checks if an adapter is available by attempting to load it.\n *\n * @param type The adapter type to check for availability\n * @returns Promise resolving to true if adapter can be loaded successfully\n *\n * @example\n * ```typescript\n * const hasEvm = await registry.isAdapterAvailable(OrbitAdapter.EVM);\n * const hasSolana = await registry.isAdapterAvailable(OrbitAdapter.SOLANA);\n *\n * if (hasEvm && hasSolana) {\n * console.log('Multi-chain support available');\n * }\n * ```\n *\n * @since 1.0.0\n */\n async isAdapterAvailable(type: OrbitAdapter): Promise<boolean> {\n const adapter = await this.getAdapter(type);\n return adapter !== null;\n }\n\n /**\n * Preloads multiple adapters for improved performance.\n *\n * This method is useful for application initialization to load commonly\n * used adapters ahead of time. All loading operations run concurrently.\n *\n * @param types Array of adapter types to preload (defaults to EVM and Solana)\n * @returns Promise that resolves when all loading attempts complete\n *\n * @example\n * ```typescript\n * // Preload during app startup\n * await registry.preloadAdapters([OrbitAdapter.EVM, OrbitAdapter.SOLANA]);\n *\n * // Later usage will be instant for loaded adapters\n * const evmAdapter = registry.getLoadedAdapter(OrbitAdapter.EVM);\n * ```\n *\n * @since 1.0.0\n */\n async preloadAdapters(types: OrbitAdapter[] = [OrbitAdapter.EVM, OrbitAdapter.SOLANA]): Promise<void> {\n // Use Promise.allSettled to continue even if some adapters fail\n await Promise.allSettled(types.map((type) => this.getAdapter(type)));\n }\n\n /**\n * Clears all cached adapters and resets the registry state.\n *\n * This method is useful for testing scenarios or when you need to\n * force reload of all adapters (e.g., after configuration changes).\n *\n * @example\n * ```typescript\n * // Clear cache to force reload\n * registry.clearCache();\n *\n * // Next getAdapter() call will reload from scratch\n * const adapter = await registry.getAdapter(OrbitAdapter.EVM);\n * ```\n *\n * @since 1.0.0\n */\n clearCache(): void {\n this.adapters.clear();\n }\n\n /**\n * Gets comprehensive information about all registered adapters.\n *\n * @returns Record mapping adapter types to their current loading status\n *\n * @example\n * ```typescript\n * const info = registry.getAdaptersInfo();\n * console.log('Adapter status overview:', info);\n * // Output: { \"evm\": \"loaded\", \"solana\": \"loading\", \"starknet\": \"idle\" }\n *\n * // Check specific status\n * if (info.evm === 'loaded') {\n * console.log('EVM adapter ready for use');\n * }\n * ```\n *\n * @since 1.0.0\n */\n getAdaptersInfo(): Record<string, AdapterLoadStatus> {\n const info: Record<string, AdapterLoadStatus> = {};\n for (const [type, adapterInfo] of this.adapters.entries()) {\n info[type] = adapterInfo.status;\n }\n return info;\n }\n}\n\n/**\n * Global singleton instance of the adapter registry.\n *\n * This is the primary interface for accessing blockchain adapters throughout\n * the application. The registry handles all loading, caching, and lifecycle\n * management automatically.\n *\n * @example\n * ```typescript\n * import { adapterRegistry } from './registry';\n *\n * // Get an adapter (loads if needed)\n * const evmAdapter = await adapterRegistry.getAdapter(OrbitAdapter.EVM);\n *\n * // Check loading status\n * const status = adapterRegistry.getAdapterStatus(OrbitAdapter.EVM);\n *\n * // Preload adapters during initialization\n * await adapterRegistry.preloadAdapters();\n * ```\n *\n * @since 1.0.0\n */\nexport const adapterRegistry = new LazyAdapterRegistry();\n","import { getAdapterFromWalletType, OrbitAdapter, WalletType } from '@tuwaio/orbit-core';\n\nimport { ChainIdentifierArray, InitialChains } from '../types';\nimport { adapterRegistry } from './adapters/registry';\n\n/**\n * Parameters for retrieving chain lists based on wallet configuration.\n *\n * Combines chain configuration with wallet-specific requirements to determine\n * which chains should be available for a given wallet type.\n *\n * @interface GetChainsListParams\n * @extends InitialChains\n * @since 1.0.0\n *\n * @example\n * ```typescript\n * const params: GetChainsListParams = {\n * walletType: WalletType.EVM_METAMASK,\n * appChains: [\n * { id: 1, name: 'Ethereum' },\n * { id: 137, name: 'Polygon' }\n * ],\n * chains: [1, 137] // Optional filter\n * };\n * ```\n */\ninterface GetChainsListParams extends InitialChains {\n /** The wallet type to determine chain compatibility */\n walletType: WalletType;\n /** Optional array of specific chain identifiers to filter or validate */\n chains?: ChainIdentifierArray;\n}\n\n/**\n * Type guard that validates if a value represents a valid chain identifier.\n *\n * Chain identifiers can be strings (for Solana clusters) or numbers (for EVM chain IDs).\n * This function filters out null, undefined, and other invalid values.\n *\n * @param id - Value to check for validity as chain identifier\n * @returns True if the value is a valid string or number chain ID\n *\n * @example\n * ```typescript\n * const rawChains = [1, 'mainnet-beta', null, undefined, 137];\n * const validChains = rawChains.filter(isValidChainId);\n * // Result: [1, 'mainnet-beta', 137]\n * ```\n *\n * @since 1.0.0\n */\nfunction isValidChainId(id: unknown): id is string | number {\n return id !== undefined && id !== null && (typeof id === 'string' || typeof id === 'number');\n}\n\n/**\n * Retrieves chain list for a specific wallet type with automatic adapter loading.\n *\n * This is the primary function for getting blockchain-compatible chains based on\n * wallet type and configuration. It automatically determines the correct adapter,\n * loads it if necessary, and falls back to safe defaults if loading fails.\n *\n * The function supports all major blockchain types:\n * - EVM chains: Returns numeric chain IDs from app configuration\n * - Solana clusters: Returns string cluster names from RPC configuration\n * - Future blockchains: Extensible through the adapter pattern\n *\n * @param params - Configuration object with wallet type and chain data\n * @returns Promise resolving to array of chain identifiers\n *\n * @example\n * ```typescript\n * // Get EVM chains for MetaMask\n * const evmChains = await getChainsListByWalletType({\n * walletType: WalletType.EVM_METAMASK,\n * appChains: [\n * { id: 1, name: 'Ethereum' },\n * { id: 137, name: 'Polygon' }\n * ]\n * });\n * // Returns: [1, 137]\n *\n * // Get Solana clusters for Phantom\n * const solanaClusters = await getChainsListByWalletType({\n * walletType: WalletType.SOLANA_PHANTOM,\n * solanaRPCUrls: {\n * 'mainnet-beta': 'https://api.mainnet-beta.solana.com',\n * 'devnet': 'https://api.devnet.solana.com'\n * }\n * });\n * // Returns: ['mainnet-beta', 'devnet']\n * ```\n *\n * @since 1.0.0\n */\nexport async function getChainsListByWalletType(params: GetChainsListParams): Promise<(string | number)[]> {\n const { walletType, chains = [], ...config } = params;\n\n if (!walletType) {\n console.warn('getChainsListByWalletType: walletType is required');\n return [];\n }\n\n const adapterType = getAdapterFromWalletType(walletType);\n const adapter = await adapterRegistry.getAdapter(adapterType);\n\n if (!adapter) {\n console.warn(`No adapter available for ${adapterType}, using fallback`);\n return getFallbackChains(adapterType, config);\n }\n\n try {\n if (adapterType === OrbitAdapter.SOLANA) {\n return adapter.getChains(config.solanaRPCUrls, chains);\n } else {\n return adapter.getChains(config.appChains);\n }\n } catch (error) {\n console.warn(`Error getting chains for ${adapterType}:`, error);\n return getFallbackChains(adapterType, config);\n }\n}\n\n/**\n * Synchronous version that only works with pre-loaded adapters.\n *\n * This function provides immediate results by using only adapters that have\n * already been loaded into the registry cache. It will not trigger new\n * loading operations, making it safe for synchronous contexts but potentially\n * less complete than the async version.\n *\n * Use this function when:\n * - You've pre-loaded adapters during app initialization\n * - You need immediate results without async overhead\n * - You're in a synchronous context where async calls aren't feasible\n *\n * @param params - Configuration object with wallet type and chain data\n * @returns Array of chain identifiers (empty if adapter not loaded)\n *\n * @example\n * ```typescript\n * // Pre-load adapters first\n * await preloadChainAdapters([OrbitAdapter.EVM, OrbitAdapter.SOLANA]);\n *\n * // Now safe to use sync version\n * const chains = getChainsListByWalletTypeSync({\n * walletType: WalletType.EVM_METAMASK,\n * appChains: evmConfiguration\n * });\n * ```\n *\n * @since 1.0.0\n */\nexport function getChainsListByWalletTypeSync(params: GetChainsListParams): (string | number)[] {\n const { walletType, chains = [], ...config } = params;\n\n if (!walletType) {\n console.warn('getChainsListByWalletType: walletType is required');\n return [];\n }\n\n const adapterType = getAdapterFromWalletType(walletType);\n const adapter = adapterRegistry.getLoadedAdapter(adapterType);\n\n if (adapter) {\n try {\n if (adapterType === OrbitAdapter.SOLANA) {\n return adapter.getChains(config.solanaRPCUrls, chains);\n } else {\n return adapter.getChains(config.appChains);\n }\n } catch (error) {\n console.warn(`Error with loaded adapter for ${adapterType}:`, error);\n }\n }\n\n return getFallbackChains(adapterType, config);\n}\n\n/**\n * Provides fallback chain extraction without external dependencies.\n *\n * This function implements basic chain extraction logic that works without\n * requiring blockchain-specific packages to be installed. It provides a\n * safety net when adapters fail to load or aren't available.\n *\n * Fallback behaviors:\n * - EVM: Extracts `id` field from chain objects or direct identifiers\n * - Solana: Extracts keys from RPC URL configuration objects\n * - Unknown: Returns empty array\n *\n * @private\n * @param adapterType - The blockchain adapter type\n * @param config - Configuration object containing chain data\n * @returns Array of extracted chain identifiers\n *\n * @since 1.0.0\n */\nfunction getFallbackChains(adapterType: OrbitAdapter, config: any): (string | number)[] {\n switch (adapterType) {\n case OrbitAdapter.EVM: {\n const appChains = config.appChains;\n if (!Array.isArray(appChains)) return [];\n\n return appChains\n .map((chain: any) => {\n // Handle chain objects with id property (e.g., { id: 1, name: 'Ethereum' })\n if (typeof chain === 'object' && chain?.id) return chain.id;\n // Handle direct chain identifiers (numbers or strings)\n if (typeof chain === 'number' || typeof chain === 'string') return chain;\n return null;\n })\n .filter(isValidChainId);\n }\n case OrbitAdapter.SOLANA: {\n const solanaRPCUrls = config.solanaRPCUrls;\n // Extract cluster names from RPC URL configuration\n return solanaRPCUrls && typeof solanaRPCUrls === 'object' ? Object.keys(solanaRPCUrls) : [];\n }\n default:\n return [];\n }\n}\n\n// ========================================\n// Chain List Validation Functions\n// ========================================\n\n/**\n * Validates if a chain list conforms to EVM format (with adapter loading).\n *\n * Uses the EVM adapter to perform comprehensive validation, falling back to\n * basic type checking if the adapter isn't available. EVM chains typically\n * use numeric identifiers.\n *\n * @param chains - Array of chain identifiers to validate\n * @returns Promise resolving to true if chains are valid for EVM\n *\n * @example\n * ```typescript\n * const isEvm = await isEvmChainList([1, 137, 56]); // true\n * const notEvm = await isEvmChainList(['mainnet-beta']); // false\n * ```\n *\n * @since 1.0.0\n */\nexport async function isEvmChainList(chains: (string | number)[]): Promise<boolean> {\n const adapter = await adapterRegistry.getAdapter(OrbitAdapter.EVM);\n return adapter?.isChainList(chains) ?? chains.every((chain) => typeof chain === 'number');\n}\n\n/**\n * Validates if a chain list conforms to Solana format (with adapter loading).\n *\n * Uses the Solana adapter to perform comprehensive validation, falling back to\n * basic type checking if the adapter isn't available. Solana chains typically\n * use string cluster names.\n *\n * @param chains - Array of chain identifiers to validate\n * @returns Promise resolving to true if chains are valid for Solana\n *\n * @example\n * ```typescript\n * const isSolana = await isSolanaChainList(['mainnet-beta', 'devnet']); // true\n * const notSolana = await isSolanaChainList([1, 137]); // false\n * ```\n *\n * @since 1.0.0\n */\nexport async function isSolanaChainList(chains: (string | number)[]): Promise<boolean> {\n const adapter = await adapterRegistry.getAdapter(OrbitAdapter.SOLANA);\n return adapter?.isChainList(chains) ?? chains.every((chain) => typeof chain === 'string');\n}\n\n/**\n * Synchronous EVM chain list validation using pre-loaded adapters.\n *\n * Provides immediate validation results without triggering adapter loading.\n * Falls back to basic type checking if adapter isn't pre-loaded.\n *\n * @param chains - Array of chain identifiers to validate\n * @returns True if chains are valid for EVM\n *\n * @example\n * ```typescript\n * const isEvm = isEvmChainListSync([1, 137, 56]); // true (immediate result)\n * ```\n *\n * @since 1.0.0\n */\nexport function isEvmChainListSync(chains: (string | number)[]): boolean {\n const adapter = adapterRegistry.getLoadedAdapter(OrbitAdapter.EVM);\n return adapter?.isChainList(chains) ?? chains.every((chain) => typeof chain === 'number');\n}\n\n/**\n * Synchronous Solana chain list validation using pre-loaded adapters.\n *\n * Provides immediate validation results without triggering adapter loading.\n * Falls back to basic type checking if adapter isn't pre-loaded.\n *\n * @param chains - Array of chain identifiers to validate\n * @returns True if chains are valid for Solana\n *\n * @example\n * ```typescript\n * const isSolana = isSolanaChainListSync(['mainnet-beta', 'devnet']); // true\n * ```\n *\n * @since 1.0.0\n */\nexport function isSolanaChainListSync(chains: (string | number)[]): boolean {\n const adapter = adapterRegistry.getLoadedAdapter(OrbitAdapter.SOLANA);\n return adapter?.isChainList(chains) ?? chains.every((chain) => typeof chain === 'string');\n}\n\n// ========================================\n// Solana-Specific Utilities\n// ========================================\n\n/**\n * Retrieves all available Solana clusters from the current configuration.\n *\n * This function loads the Solana adapter and queries it for all configured\n * cluster names. Useful for populating UI dropdowns or validating cluster\n * availability before connection attempts.\n *\n * @returns Promise resolving to array of available cluster names\n *\n * @example\n * ```typescript\n * const clusters = await getAvailableSolanaClusters();\n * console.log('Available clusters:', clusters);\n * // Might log: ['mainnet-beta', 'devnet', 'testnet', 'localnet']\n *\n * // Use for UI population\n * const clusterOptions = clusters.map(cluster => ({\n * value: cluster,\n * label: cluster.replace('-', ' ').toUpperCase()\n * }));\n * ```\n *\n * @since 1.0.0\n */\nexport async function getAvailableSolanaClusters(): Promise<string[]> {\n const adapter = await adapterRegistry.getAdapter(OrbitAdapter.SOLANA);\n return adapter?.getAvailableClusters?.() ?? [];\n}\n\n/**\n * Validates whether a cluster name is valid for Solana connections.\n *\n * This function loads the Solana adapter and uses it to validate cluster\n * names against known Solana cluster monikers and custom configurations.\n *\n * @param cluster - Cluster name to validate\n * @returns Promise resolving to true if cluster is valid\n *\n * @example\n * ```typescript\n * const isValid = await isValidSolanaCluster('mainnet-beta'); // true\n * const isInvalid = await isValidSolanaCluster('invalid-cluster'); // false\n *\n * // Use for form validation\n * if (await isValidSolanaCluster(userInput)) {\n * // Proceed with connection\n * } else {\n * // Show error message\n * }\n * ```\n *\n * @since 1.0.0\n */\nexport async function isValidSolanaCluster(cluster: string): Promise<boolean> {\n const adapter = await adapterRegistry.getAdapter(OrbitAdapter.SOLANA);\n return adapter?.isValidCluster?.(cluster) ?? false;\n}\n\n// ========================================\n// Wallet Chain Extraction Utilities\n// ========================================\n\n/**\n * Safely extracts chain information from a wallet object.\n *\n * This utility function handles the complex nested structure of wallet objects\n * and safely extracts chain information without throwing errors. It performs\n * comprehensive type checking to ensure data integrity.\n *\n * The function expects wallet objects with this structure:\n * ```\n * {\n * connectedWallet: {\n * chains: [chain1, chain2, ...]\n * }\n * }\n * ```\n *\n * @param activeWallet - Wallet object to extract chains from\n * @returns Array of chain identifiers or undefined if not found/invalid\n *\n * @example\n * ```typescript\n * // With valid wallet structure\n * const wallet = {\n * connectedWallet: {\n * chains: [1, 137, 56]\n * }\n * };\n * const chains = getWalletChains(wallet); // [1, 137, 56]\n *\n * // With invalid/missing structure\n * const invalidWallet = { someOtherProperty: true };\n * const noChains = getWalletChains(invalidWallet); // undefined\n *\n * // Use in conditional logic\n * const walletChains = getWalletChains(activeWallet);\n * if (walletChains) {\n * console.log('Wallet supports chains:', walletChains);\n * }\n * ```\n *\n * @since 1.0.0\n */\nexport function getWalletChains(activeWallet: any): (string | number)[] | undefined {\n if (\n activeWallet &&\n typeof activeWallet === 'object' &&\n 'connectedWallet' in activeWallet &&\n activeWallet.connectedWallet &&\n typeof activeWallet.connectedWallet === 'object' &&\n 'chains' in activeWallet.connectedWallet\n ) {\n const chains = activeWallet.connectedWallet.chains;\n if (Array.isArray(chains)) {\n return chains;\n }\n }\n return undefined;\n}\n\n// ========================================\n// Adapter Management Utilities\n// ========================================\n\n/**\n * Pre-loads blockchain adapters for improved application performance.\n *\n * This function should be called during application initialization to load\n * commonly used adapters ahead of time. This eliminates loading delays when\n * users first interact with wallet connections.\n *\n * All loading operations run concurrently for maximum efficiency, and the\n * function completes even if some adapters fail to load (partial success).\n *\n * @param types - Array of adapter types to preload (defaults to EVM and Solana)\n * @returns Promise that resolves when all loading attempts complete\n *\n * @example\n * ```typescript\n * // During app initialization\n * export async function initializeApp() {\n * // Preload common adapters\n * await preloadChainAdapters([OrbitAdapter.EVM, OrbitAdapter.SOLANA]);\n *\n * // Continue with other initialization\n * // ...\n * }\n *\n * // Later usage will be instant for loaded adapters\n * const evmChains = getChainsListByWalletTypeSync({\n * walletType: WalletType.EVM_METAMASK,\n * appChains: configuration\n * }); // Instant result since adapter is pre-loaded\n * ```\n *\n * @since 1.0.0\n */\nexport async function preloadChainAdapters(\n types: OrbitAdapter[] = [OrbitAdapter.EVM, OrbitAdapter.SOLANA],\n): Promise<void> {\n await adapterRegistry.preloadAdapters(types);\n}\n\n/**\n * Gets the current loading status of a specific adapter.\n *\n * Returns the current state of an adapter in the loading lifecycle. Useful\n * for UI indicators, debugging, or conditional logic based on adapter\n * availability.\n *\n * @param type - The adapter type to check\n * @returns Current loading status of the adapter\n *\n * @example\n * ```typescript\n * const evmStatus = getAdapterStatus(OrbitAdapter.EVM);\n *\n * switch (evmStatus) {\n * case 'idle':\n * console.log('EVM adapter not yet requested');\n * break;\n * case 'loading':\n * // Show loading spinner\n * break;\n * case 'loaded':\n * // Enable EVM features\n * break;\n * case 'error':\n * // Show fallback UI\n * break;\n * }\n * ```\n *\n * @since 1.0.0\n */\nexport function getAdapterStatus(type: OrbitAdapter) {\n return adapterRegistry.getAdapterStatus(type);\n}\n\n/**\n * Gets comprehensive status information for all registered adapters.\n *\n * Returns a complete overview of all adapter states, useful for debugging,\n * monitoring, or displaying system status in admin interfaces.\n *\n * @returns Record mapping adapter types to their current loading status\n *\n * @example\n * ```typescript\n * const allStatuses = getAllAdaptersStatus();\n * console.log('System overview:', allStatuses);\n * // Output: { \"evm\": \"loaded\", \"solana\": \"loading\", \"starknet\": \"idle\" }\n *\n * // Use for system health monitoring\n * const loadedAdapters = Object.entries(allStatuses)\n * .filter(([_, status]) => status === 'loaded')\n * .map(([type, _]) => type);\n *\n * console.log('Available blockchain support:', loadedAdapters);\n * ```\n *\n * @since 1.0.0\n */\nexport function getAllAdaptersStatus() {\n return adapterRegistry.getAdaptersInfo();\n}\n","import { OrbitAdapter } from '@tuwaio/orbit-core';\n\nimport { InitialChains } from '../types';\n\n// Default fallback chain IDs\nconst DEFAULT_CHAIN_IDS = {\n [OrbitAdapter.EVM]: 1, // Ethereum Mainnet\n [OrbitAdapter.SOLANA]: 'mainnet',\n [OrbitAdapter.Starknet]: '0x534e5f4d41494e',\n} as const;\n\n/**\n * Basic interface for chain objects to handle the any type safely\n */\ninterface BasicChain {\n id: number | string;\n [key: string]: any;\n}\n\n/**\n * Gets the appropriate chain ID for connecting based on the selected adapter.\n * Returns the first available chain for the adapter, or a sensible default.\n *\n * @param params - Configuration object\n * @param params.selectedAdapter - The blockchain adapter to use\n * @param params.appChains - Available EVM chains\n * @param params.solanaRPCUrls - Available Solana networks\n * @returns Chain ID (number for EVM/Starknet, string for Solana)\n */\nexport function getConnectChainId({\n selectedAdapter,\n appChains,\n solanaRPCUrls,\n}: { selectedAdapter: OrbitAdapter } & InitialChains): number | string {\n switch (selectedAdapter) {\n case OrbitAdapter.EVM: {\n // Return first available EVM chain or default to Ethereum\n const firstChain = appChains?.[0];\n if (firstChain?.id && typeof firstChain.id === 'number') {\n return firstChain.id;\n }\n\n if (process.env.NODE_ENV === 'development' && !appChains?.length) {\n console.warn('getConnectChainId: No EVM chains configured, using Ethereum Mainnet');\n }\n\n return DEFAULT_CHAIN_IDS[OrbitAdapter.EVM];\n }\n\n case OrbitAdapter.SOLANA: {\n // Return first available Solana network or default to mainnet\n if (solanaRPCUrls && typeof solanaRPCUrls === 'object') {\n const networks = Object.keys(solanaRPCUrls);\n if (networks.length > 0) {\n return networks[0];\n }\n }\n\n if (process.env.NODE_ENV === 'development' && !solanaRPCUrls) {\n console.warn('getConnectChainId: No Solana RPC URLs configured, using mainnet');\n }\n\n return DEFAULT_CHAIN_IDS[OrbitAdapter.SOLANA];\n }\n\n case OrbitAdapter.Starknet: {\n if (process.env.NODE_ENV === 'development') {\n console.info('getConnectChainId: Using default Starknet chain ID');\n }\n\n return DEFAULT_CHAIN_IDS[OrbitAdapter.Starknet];\n }\n\n default: {\n // Handle unknown adapter types gracefully\n if (process.env.NODE_ENV === 'development') {\n console.error('getConnectChainId: Unknown adapter:', selectedAdapter);\n }\n\n return DEFAULT_CHAIN_IDS[OrbitAdapter.EVM];\n }\n }\n}\n\n/**\n * Helper to get all available chain IDs for an adapter\n */\nexport function getAvailableChainIds({\n selectedAdapter,\n appChains,\n solanaRPCUrls,\n}: { selectedAdapter: OrbitAdapter } & InitialChains): Array<number | string> {\n switch (selectedAdapter) {\n case OrbitAdapter.EVM:\n return appChains?.map((chain: BasicChain) => chain.id).filter(Boolean) ?? [DEFAULT_CHAIN_IDS[OrbitAdapter.EVM]];\n\n case OrbitAdapter.SOLANA:\n return solanaRPCUrls ? Object.keys(solanaRPCUrls) : [DEFAULT_CHAIN_IDS[OrbitAdapter.SOLANA]];\n\n case OrbitAdapter.Starknet:\n return [DEFAULT_CHAIN_IDS[OrbitAdapter.Starknet]];\n\n default:\n return [DEFAULT_CHAIN_IDS[OrbitAdapter.EVM]];\n }\n}\n","import { formatWalletName, OrbitAdapter } from '@tuwaio/orbit-core';\n\nimport { Connector } from '../types';\n\nexport interface GroupedConnector {\n name: string;\n icon?: string;\n adapters: OrbitAdapter[];\n connectors: (Connector & { adapter: OrbitAdapter })[];\n}\n\ninterface GetGroupedConnectorsParams {\n connectors: Partial<Record<OrbitAdapter, Connector[]>>;\n excludeConnectors?: string[];\n}\n\n/**\n * Type for a safely processed connector\n */\ntype ProcessedConnector = {\n name: string;\n icon?: string;\n adapter: OrbitAdapter;\n originalConnector: Connector;\n};\n\n/**\n * Safely processes a connector and extracts its properties\n */\nfunction processConnector(connector: unknown, adapter: OrbitAdapter): ProcessedConnector | null {\n if (!connector || typeof connector !== 'object') {\n return null;\n }\n\n const connectorObj = connector as Record<string, Connector>;\n\n if (!connectorObj.name || typeof connectorObj.name !== 'string') {\n return null;\n }\n\n return {\n name: connectorObj.name,\n icon: connectorObj.icon,\n adapter,\n originalConnector: connectorObj as Connector,\n };\n}\n\n/**\n * Groups wallet connectors by their formatted names across different adapters.\n * Filters out specified excluded connectors (like 'injected' wallets).\n */\nexport function getGroupedConnectors(\n { connectors, excludeConnectors = ['injected'] }: GetGroupedConnectorsParams = { connectors: {} },\n): GroupedConnector[] {\n // Input validation\n if (!connectors || Object.keys(connectors).length === 0) {\n return [];\n }\n\n // Create exclusion set for efficient lookup\n const excludeSet = new Set(excludeConnectors.map((name) => formatWalletName(name)));\n\n // Process and collect all valid connectors\n const processedConnectors: ProcessedConnector[] = [];\n\n Object.entries(connectors).forEach(([adapterKey, adapterConnectors]) => {\n if (Array.isArray(adapterConnectors)) {\n const adapter = adapterKey as OrbitAdapter;\n\n adapterConnectors.forEach((connector) => {\n const processed = processConnector(connector, adapter);\n if (processed) {\n const formattedName = formatWalletName(processed.name);\n if (!excludeSet.has(formattedName)) {\n processedConnectors.push(processed);\n }\n }\n });\n }\n });\n\n // Group by formatted wallet name using Map for better performance\n const groupedMap = new Map<string, GroupedConnector>();\n\n processedConnectors.forEach((processed) => {\n const formattedName = formatWalletName(processed.name);\n\n if (!groupedMap.has(formattedName)) {\n groupedMap.set(formattedName, {\n name: processed.name,\n icon: processed.icon,\n adapters: [],\n connectors: [],\n });\n }\n\n const group = groupedMap.get(formattedName)!;\n\n // Add unique adapter\n if (!group.adapters.includes(processed.adapter)) {\n group.adapters.push(processed.adapter);\n }\n // @ts-expect-error - connectors property is not typed on package level\n group.connectors.push({ ...(processed.originalConnector as Connector), adapter: processed.adapter } as Connector & {\n adapter: OrbitAdapter;\n });\n\n // Update icon if not set\n if (!group.icon && processed.icon) {\n group.icon = processed.icon;\n }\n });\n\n // Return sorted array for consistent ordering\n return Array.from(groupedMap.values()).sort((a, b) =>\n a.name.localeCompare(b.name, undefined, { sensitivity: 'base' }),\n );\n}\n\n/**\n * Quick helper to check if connectors are available\n */\nexport function hasAvailableConnectors(connectors: Partial<Record<OrbitAdapter, Connector[]>>): boolean {\n return Object.values(connectors).some(\n (adapterConnectors) => Array.isArray(adapterConnectors) && adapterConnectors.length > 0,\n );\n}\n","import { OrbitAdapter } from '@tuwaio/orbit-core';\n\nimport { Connector } from '../types';\nimport { getGroupedConnectors, GroupedConnector } from './getGroupedConnectors';\n\ninterface GetFilteredConnectorsParams {\n connectors: Partial<Record<OrbitAdapter, Connector[]>>;\n selectedAdapter?: OrbitAdapter;\n}\n\n/**\n * Type for connector with adapter information\n */\ntype ConnectorWithAdapter = Connector & { adapter: OrbitAdapter };\n\n/**\n * Helper function to safely access connector adapter property\n * Uses any type to avoid TypeScript inference issues with complex types\n */\nfunction getConnectorAdapter(connector: any): OrbitAdapter | undefined {\n // Safe property access without type guards\n try {\n if (connector && typeof connector === 'object' && connector.adapter) {\n return connector.adapter as OrbitAdapter;\n }\n } catch {\n // Silently handle any errors in property access\n }\n return undefined;\n}\n\n/**\n * Helper function to check if connector matches the selected adapter\n */\nfunction connectorMatchesAdapter(connector: any, selectedAdapter: OrbitAdapter): boolean {\n const connectorAdapter = getConnectorAdapter(connector);\n return connectorAdapter === selectedAdapter;\n}\n\n/**\n * Filters grouped connectors by the selected adapter.\n * Returns all connectors if no adapter is selected, or only connectors\n * that support the specified adapter if one is provided.\n *\n * @param params Configuration object with connectors and optional adapter filter\n * @returns Filtered array of grouped connectors\n */\nexport function getFilteredConnectors({\n connectors,\n selectedAdapter,\n}: GetFilteredConnectorsParams): GroupedConnector[] {\n // Input validation\n if (!connectors || Object.keys(connectors).length === 0) {\n return [];\n }\n\n const groupedConnectors = getGroupedConnectors({ connectors });\n\n // Return all connectors if no filter is applied\n if (!selectedAdapter) {\n return groupedConnectors;\n }\n\n // Filter and transform connector groups\n return groupedConnectors\n .filter((group) => {\n // Only include groups that support the selected adapter\n return (\n group.adapters.includes(selectedAdapter) &&\n group.connectors.some((connector) => connectorMatchesAdapter(connector, selectedAdapter))\n );\n })\n .map((group) => {\n // Create new group with filtered connectors\n const filteredConnectors = group.connectors.filter((connector) =>\n connectorMatchesAdapter(connector, selectedAdapter),\n );\n\n return {\n ...group,\n // Narrow down to only the selected adapter\n adapters: [selectedAdapter],\n // Cast to proper type since we know these connectors have the adapter property\n connectors: filteredConnectors as ConnectorWithAdapter[],\n };\n })\n .filter((group) => group.connectors.length > 0); // Remove empty groups\n}\n\n/**\n * Quick helper to check if any connectors exist for an adapter\n */\nexport function hasConnectorsForAdapter(\n connectors: Partial<Record<OrbitAdapter, Connector[]>>,\n adapter: OrbitAdapter,\n): boolean {\n const adapterConnectors = connectors[adapter];\n return Array.isArray(adapterConnectors) && adapterConnectors.length > 0;\n}\n","import { OrbitAdapter } from '@tuwaio/orbit-core';\n\nexport const getNetworkIcon = (adapter: OrbitAdapter) => {\n switch (adapter) {\n case OrbitAdapter.EVM:\n return {\n chainId: 1,\n name: 'Ethereum',\n };\n case OrbitAdapter.SOLANA:\n return {\n chainId: 'solana:mainnet',\n name: 'Solana',\n };\n }\n};\n","import { OrbitAdapter } from '@tuwaio/orbit-core';\n\nexport const networksLinks: Partial<\n Record<OrbitAdapter, { aboutNetwork: string; choseWallet: string; about: string }>\n> = {\n [OrbitAdapter.EVM]: {\n aboutNetwork: 'https://ethereum.org/developers/docs/intro-to-ethereum/',\n choseWallet: 'https://ethereum.org/wallets/find-wallet/',\n about: 'https://ethereum.org/wallets/',\n },\n [OrbitAdapter.SOLANA]: {\n aboutNetwork: 'https://solana.com/en/learn/what-is-solana',\n choseWallet: 'https://solana.com/en/solana-wallets',\n about: 'https://solana.com/en/learn/what-is-a-wallet',\n },\n};\n","/**\n * @file This file contains the `ToBottomButton` component, a customizable scroll-to-bottom button with full styling control.\n */\n\nimport { ChevronDownIcon } from '@heroicons/react/24/solid';\nimport { cn } from '@tuwaio/nova-core';\nimport { ComponentPropsWithoutRef, ComponentType, forwardRef, ReactNode, useCallback, useMemo } from 'react';\n\nimport { useNovaConnectLabels } from '../hooks/useNovaConnectLabels';\n\n// --- Types for Customization ---\ntype CustomIconProps = {\n disabled: boolean;\n className?: string;\n 'aria-hidden'?: boolean;\n};\n\ntype CustomContentProps = {\n icon: ReactNode;\n disabled: boolean;\n ariaLabel?: string;\n};\n\n/**\n * Customization options for ToBottomButton component\n */\nexport type ToBottomButtonCustomization = {\n /** Override button element props */\n buttonProps?: Partial<ComponentPropsWithoutRef<'button'>>;\n /** Custom components */\n components?: {\n /** Custom icon component */\n Icon?: ComponentType<CustomIconProps>;\n /** Custom button content component (wraps the icon) */\n Content?: ComponentType<CustomContentProps>;\n };\n /** Custom class name generators */\n classNames?: {\n /** Function to generate button classes */\n button?: (params: { disabled: boolean; hasOnClick: boolean }) => string;\n /** Function to generate icon classes */\n icon?: (params: { disabled: boolean }) => string;\n };\n /** Custom event handlers */\n handlers?: {\n /** Custom click handler wrapper */\n onClick?: (\n originalHandler: (event: React.MouseEvent<HTMLButtonElement>) => void,\n event: React.MouseEvent<HTMLButtonElement>,\n ) => void;\n /** Custom keydown handler wrapper */\n onKeyDown?: (\n originalHandler: (event: React.KeyboardEvent<HTMLButtonElement>) => void,\n event: React.KeyboardEvent<HTMLButtonElement>,\n ) => void;\n };\n};\n\nexport interface ToBottomButtonProps\n extends Omit<ComponentPropsWithoutRef<'button'>, 'type' | 'onClick' | 'onKeyDown' | 'style'> {\n /** Custom CSS classes for the button */\n className?: string;\n /** Custom aria-label for the button */\n 'aria-label'?: string;\n /** Callback fired when button is clicked */\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n /** Whether the button is disabled */\n disabled?: boolean;\n /** Customization options */\n customization?: ToBottomButtonCustomization;\n}\n\n// --- Default Sub-Components ---\nconst DefaultIcon = ({ disabled, className, ...props }: CustomIconProps) => {\n return (\n <ChevronDownIcon\n className={cn(\n 'novacon:w-4 novacon:h-4 novacon:transition-transform novacon:duration-200',\n {\n 'novacon:opacity-50': disabled,\n },\n className,\n )}\n {...props}\n />\n );\n};\n\nconst DefaultContent = ({ icon }: CustomContentProps) => {\n return <>{icon}</>;\n};\n\n// --- Default Event Handlers ---\nconst defaultClickHandler = (\n originalHandler: (event: React.MouseEvent<HTMLButtonElement>) => void,\n event: React.MouseEvent<HTMLButtonElement>,\n) => {\n originalHandler(event);\n};\n\nconst defaultKeyDownHandler = (\n originalHandler: (event: React.KeyboardEvent<HTMLButtonElement>) => void,\n event: React.KeyboardEvent<HTMLButtonElement>,\n) => {\n originalHandler(event);\n};\n\n/**\n * A highly customizable scroll-to-bottom button component with extensive styling options and accessibility features.\n * Provides comprehensive customization for appearance, behavior, and event handling while maintaining keyboard navigation support.\n */\nexport const ToBottomButton = forwardRef<HTMLButtonElement, ToBottomButtonProps>(\n ({ className, 'aria-label': ariaLabel, onClick, disabled = false, customization, ...props }, ref) => {\n const labels = useNovaConnectLabels();\n\n // Extract custom components and handlers\n const { Icon = DefaultIcon, Content = DefaultContent } = customization?.components ?? {};\n\n const {\n onClick: customOnClickHandler = defaultClickHandler,\n onKeyDown: customOnKeyDownHandler = defaultKeyDownHandler,\n } = customization?.handlers ?? {};\n\n // Handle click events\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n const originalHandler = (e: React.MouseEvent<HTMLButtonElement>) => {\n // Prevent default scroll behavior if custom handler provided\n if (onClick) {\n e.preventDefault();\n onClick(e);\n }\n };\n\n customOnClickHandler(originalHandler, event);\n },\n [onClick, customOnClickHandler],\n );\n\n // Handle keyboard events\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLButtonElement>) => {\n const originalHandler = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n // Handle keyboard activation\n if ((e.key === 'Enter' || e.key === ' ') && onClick) {\n e.preventDefault();\n // Create a synthetic mouse event for onClick compatibility\n const syntheticEvent = {\n ...e,\n button: 0,\n buttons: 1,\n clientX: 0,\n clientY: 0,\n movementX: 0,\n movementY: 0,\n offsetX: 0,\n offsetY: 0,\n pageX: 0,\n pageY: 0,\n relatedTarget: null,\n screenX: 0,\n screenY: 0,\n x: 0,\n y: 0,\n getModifierState: () => false,\n initMouseEvent: () => {},\n };\n // eslint-disable-next-line\n onClick(syntheticEvent as any);\n }\n };\n\n customOnKeyDownHandler(originalHandler, event);\n },\n [onClick, customOnKeyDownHandler],\n );\n\n // Generate button classes\n const buttonClasses = useMemo(() => {\n if (customization?.classNames?.button) {\n return customization.classNames.button({ disabled, hasOnClick: Boolean(onClick) });\n }\n return cn(\n 'novacon:flex novacon:w-full novacon:h-6 novacon:items-center novacon:justify-center',\n 'novacon:bg-[var(--tuwa-bg-secondary)] novacon:text-[var(--tuwa-text-primary)]',\n 'novacon:transition-colors novacon:duration-200',\n 'novacon:hover:bg-[var(--tuwa-bg-tertiary)] novacon:hover:text-[var(--tuwa-text-secondary)]',\n 'novacon:focus:outline-none novacon:focus:ring-2 novacon:focus:ring-[var(--tuwa-text-accent)] novacon:focus:ring-inset',\n 'novacon:active:bg-[var(--tuwa-bg-quaternary)]',\n 'novacon:disabled:opacity-50 novacon:disabled:cursor-not-allowed novacon:disabled:hover:bg-[var(--tuwa-bg-secondary)] novacon:cursor-default',\n {\n 'novacon:cursor-pointer': onClick,\n },\n className,\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customization?.classNames?.button, disabled, onClick, className]);\n\n // Generate icon classes\n const iconClasses = useMemo(() => {\n if (customization?.classNames?.icon) {\n return customization.classNames.icon({ disabled });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customization?.classNames?.icon, disabled]);\n\n // Create icon element\n const iconElement = useMemo(\n () => <Icon disabled={disabled} className={iconClasses} aria-hidden />,\n [Icon, disabled, iconClasses],\n );\n\n // Merge button props\n const buttonProps = useMemo(\n () => ({\n ...customization?.buttonProps,\n ...props,\n ref,\n type: 'button' as const,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n disabled,\n className: buttonClasses,\n 'aria-label': ariaLabel || labels.scrollToBottom,\n title: ariaLabel || labels.scrollToBottom,\n }),\n [\n customization?.buttonProps,\n props,\n ref,\n handleClick,\n handleKeyDown,\n disabled,\n buttonClasses,\n ariaLabel,\n labels.scrollToBottom,\n ],\n );\n\n return (\n <button {...buttonProps}>\n <Content icon={iconElement} disabled={disabled} ariaLabel={ariaLabel} />\n </button>\n );\n },\n);\n\nToBottomButton.displayName = 'ToBottomButton';\n","/**\n * @file This file contains the `ToTopButton` component, a customizable scroll-to-top button with full styling control.\n */\n\nimport { ChevronUpIcon } from '@heroicons/react/24/solid';\nimport { cn } from '@tuwaio/nova-core';\nimport { ComponentPropsWithoutRef, ComponentType, forwardRef, ReactNode, useCallback, useMemo } from 'react';\n\nimport { useNovaConnectLabels } from '../hooks/useNovaConnectLabels';\n\n// --- Types for Customization ---\ntype CustomIconProps = {\n disabled: boolean;\n className?: string;\n 'aria-hidden'?: boolean;\n};\n\ntype CustomContentProps = {\n icon: ReactNode;\n disabled: boolean;\n ariaLabel?: string;\n};\n\n/**\n * Customization options for ToTopButton component\n */\nexport type ToTopButtonCustomization = {\n /** Override button element props */\n buttonProps?: Partial<ComponentPropsWithoutRef<'button'>>;\n /** Custom components */\n components?: {\n /** Custom icon component */\n Icon?: ComponentType<CustomIconProps>;\n /** Custom button content component (wraps the icon) */\n Content?: ComponentType<CustomContentProps>;\n };\n /** Custom class name generators */\n classNames?: {\n /** Function to generate button classes */\n button?: (params: { disabled: boolean; hasOnClick: boolean }) => string;\n /** Function to generate icon classes */\n icon?: (params: { disabled: boolean }) => string;\n };\n /** Custom event handlers */\n handlers?: {\n /** Custom click handler wrapper */\n onClick?: (\n originalHandler: (event: React.MouseEvent<HTMLButtonElement>) => void,\n event: React.MouseEvent<HTMLButtonElement>,\n ) => void;\n /** Custom keydown handler wrapper */\n onKeyDown?: (\n originalHandler: (event: React.KeyboardEvent<HTMLButtonElement>) => void,\n event: React.KeyboardEvent<HTMLButtonElement>,\n ) => void;\n };\n};\n\nexport interface ToTopButtonProps\n extends Omit<ComponentPropsWithoutRef<'button'>, 'type' | 'onClick' | 'onKeyDown' | 'style'> {\n /** Custom CSS classes for the button */\n className?: string;\n /** Custom aria-label for the button */\n 'aria-label'?: string;\n /** Callback fired when button is clicked */\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n /** Whether the button is disabled */\n disabled?: boolean;\n /** Customization options */\n customization?: ToTopButtonCustomization;\n}\n\n// --- Default Sub-Components ---\nconst DefaultIcon = ({ disabled, className, ...props }: CustomIconProps) => {\n return (\n <ChevronUpIcon\n className={cn(\n 'novacon:w-4 novacon:h-4 novacon:transition-transform novacon:duration-200',\n disabled && 'novacon:opacity-50',\n className,\n )}\n {...props}\n />\n );\n};\n\nconst DefaultContent = ({ icon }: CustomContentProps) => {\n return <>{icon}</>;\n};\n\n// --- Default Event Handlers ---\nconst defaultClickHandler = (\n originalHandler: (event: React.MouseEvent<HTMLButtonElement>) => void,\n event: React.MouseEvent<HTMLButtonElement>,\n) => {\n originalHandler(event);\n};\n\nconst defaultKeyDownHandler = (\n originalHandler: (event: React.KeyboardEvent<HTMLButtonElement>) => void,\n event: React.KeyboardEvent<HTMLButtonElement>,\n) => {\n originalHandler(event);\n};\n\n/**\n * A highly customizable scroll-to-top button component with extensive styling options and accessibility features.\n * Provides comprehensive customization for appearance, behavior, and event handling while maintaining keyboard navigation support.\n */\nexport const ToTopButton = forwardRef<HTMLButtonElement, ToTopButtonProps>(\n ({ className, 'aria-label': ariaLabel, onClick, disabled = false, customization, ...props }, ref) => {\n const labels = useNovaConnectLabels();\n\n // Extract custom components and handlers\n const { Icon = DefaultIcon, Content = DefaultContent } = customization?.components ?? {};\n\n const {\n onClick: customOnClickHandler = defaultClickHandler,\n onKeyDown: customOnKeyDownHandler = defaultKeyDownHandler,\n } = customization?.handlers ?? {};\n\n // Handle click events\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n const originalHandler = (e: React.MouseEvent<HTMLButtonElement>) => {\n // Prevent default scroll behavior if custom handler provided\n if (onClick) {\n e.preventDefault();\n onClick(e);\n }\n };\n\n customOnClickHandler(originalHandler, event);\n },\n [onClick, customOnClickHandler],\n );\n\n // Handle keyboard events\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLButtonElement>) => {\n const originalHandler = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n // Handle keyboard activation\n if ((e.key === 'Enter' || e.key === ' ') && onClick) {\n e.preventDefault();\n // Create a synthetic mouse event for onClick compatibility\n const syntheticEvent = {\n ...e,\n button: 0,\n buttons: 1,\n clientX: 0,\n clientY: 0,\n movementX: 0,\n movementY: 0,\n offsetX: 0,\n offsetY: 0,\n pageX: 0,\n pageY: 0,\n relatedTarget: null,\n screenX: 0,\n screenY: 0,\n x: 0,\n y: 0,\n getModifierState: () => false,\n initMouseEvent: () => {},\n };\n // eslint-disable-next-line\n onClick(syntheticEvent as any);\n }\n };\n\n customOnKeyDownHandler(originalHandler, event);\n },\n [onClick, customOnKeyDownHandler],\n );\n\n // Generate button classes\n const buttonClasses = useMemo(() => {\n if (customization?.classNames?.button) {\n return customization.classNames.button({ disabled, hasOnClick: Boolean(onClick) });\n }\n return cn(\n 'novacon:flex novacon:w-full novacon:h-6 novacon:items-center novacon:justify-center',\n 'novacon:bg-[var(--tuwa-bg-secondary)] novacon:text-[var(--tuwa-text-primary)]',\n 'novacon:transition-colors novacon:duration-200',\n 'novacon:hover:bg-[var(--tuwa-bg-tertiary)] novacon:hover:text-[var(--tuwa-text-secondary)]',\n 'novacon:focus:outline-none novacon:focus:ring-2 novacon:focus:ring-[var(--tuwa-text-accent)] novacon:focus:ring-inset',\n 'novacon:active:bg-[var(--tuwa-bg-quaternary)]',\n 'novacon:disabled:opacity-50 novacon:disabled:cursor-not-allowed novacon:disabled:hover:bg-[var(--tuwa-bg-secondary)] novacon:cursor-default',\n {\n 'novacon:cursor-pointer': onClick,\n },\n className,\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customization?.classNames?.button, disabled, onClick, className]);\n\n // Generate icon classes\n const iconClasses = useMemo(() => {\n if (customization?.classNames?.icon) {\n return customization.classNames.icon({ disabled });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customization?.classNames?.icon, disabled]);\n\n // Create icon element\n const iconElement = useMemo(\n () => <Icon disabled={disabled} className={iconClasses} aria-hidden />,\n [Icon, disabled, iconClasses],\n );\n\n // Merge button props\n const buttonProps = useMemo(\n () => ({\n ...customization?.buttonProps,\n ...props,\n ref,\n type: 'button' as const,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n disabled,\n className: buttonClasses,\n 'aria-label': ariaLabel || labels.scrollToTop,\n title: ariaLabel || labels.scrollToTop,\n }),\n [\n customization?.buttonProps,\n props,\n ref,\n handleClick,\n handleKeyDown,\n disabled,\n buttonClasses,\n ariaLabel,\n labels.scrollToTop,\n ],\n );\n\n return (\n <button {...buttonProps}>\n <Content icon={iconElement} disabled={disabled} ariaLabel={ariaLabel} />\n </button>\n );\n },\n);\n\nToTopButton.displayName = 'ToTopButton';\n","/**\n * @file Animated select content component with comprehensive customization capabilities.\n * @module SelectContentAnimated\n */\n\nimport * as Select from '@radix-ui/react-select';\nimport { cn } from '@tuwaio/nova-core';\nimport { AnimatePresence, type Easing, motion } from 'framer-motion';\nimport { type ComponentPropsWithoutRef, type ElementRef, forwardRef, useMemo } from 'react';\n\nimport { useNovaConnectLabels } from '../hooks/useNovaConnectLabels';\nimport { ToBottomButton, type ToBottomButtonCustomization } from './ToBottomButton';\nimport { ToTopButton, type ToTopButtonCustomization } from './ToTopButton';\n\n/**\n * Props for the SelectContentAnimated component\n */\nexport interface SelectContentAnimatedProps extends ComponentPropsWithoutRef<typeof Select.Content> {\n /** Custom CSS classes to apply to the select content container (added to defaults) */\n className?: string;\n /** Custom CSS classes to apply to the animated inner content (added to defaults) */\n contentClassName?: string;\n /** Custom CSS classes to apply to the viewport (added to defaults) */\n viewportClassName?: string;\n /** ARIA label for the select content */\n 'aria-label'?: string;\n /** Whether the select content should have reduced motion for accessibility */\n reduceMotion?: boolean;\n /** Maximum height for the content in pixels */\n maxHeight?: number;\n /** Custom animation duration in seconds */\n animationDuration?: number;\n /** Whether to show scroll buttons */\n showScrollButtons?: boolean;\n /** Custom props for the ToTopButton */\n topButtonProps?: Omit<ComponentPropsWithoutRef<typeof ToTopButton>, 'ref'>;\n /** Custom props for the ToBottomButton */\n bottomButtonProps?: Omit<ComponentPropsWithoutRef<typeof ToBottomButton>, 'ref'>;\n /** Customization options for ToTopButton */\n topButtonCustomization?: ToTopButtonCustomization;\n /** Customization options for ToBottomButton */\n bottomButtonCustomization?: ToBottomButtonCustomization;\n}\n\n/**\n * Animated select content component with smooth enter/exit animations.\n *\n * This component provides animated dropdown content for select components\n * with accessibility support and extensive customization capabilities.\n *\n * Features:\n * - Smooth enter/exit animations with Framer Motion\n * - Accessibility-first design with ARIA support\n * - Fully customizable scroll buttons with ToTopButton/ToBottomButton\n * - Reduced motion support for accessibility\n * - Customizable max height and animation duration\n * - Full control over styling via className props (additive, not replacement)\n * - Separate styling for container, content, and viewport\n * - Custom button props and customization options\n *\n * @example Basic usage\n * ```tsx\n * <Select.Root>\n * <Select.Trigger>Select an option</Select.Trigger>\n * <SelectContentAnimated>\n * <Select.Item value=\"option1\">Option 1</Select.Item>\n * <Select.Item value=\"option2\">Option 2</Select.Item>\n * </SelectContentAnimated>\n * </Select.Root>\n * ```\n *\n * @example With full customization\n * ```tsx\n * <SelectContentAnimated\n * className=\"novacon:shadow-2xl novacon:border-2\"\n * contentClassName=\"novacon:p-4 novacon:bg-gradient-to-b\"\n * viewportClassName=\"novacon:scrollbar-thin\"\n * maxHeight={400}\n * animationDuration={0.3}\n * reduceMotion={false}\n * showScrollButtons={true}\n * topButtonProps={{\n * className: \"novacon:bg-blue-500\",\n * onClick: () => console.log(\"Top button clicked\"),\n * }}\n * topButtonCustomization={{\n * classNames: {\n * button: () => \"novacon:bg-red-500 novacon:hover:bg-red-600\",\n * },\n * }}\n * bottomButtonCustomization={{\n * components: {\n * Icon: ({ className }) => <div className={className}>⬇️</div>,\n * },\n * }}\n * >\n * <Select.Item value=\"item1\">Item 1</Select.Item>\n * </SelectContentAnimated>\n * ```\n */\nexport const SelectContentAnimated = forwardRef<\n Omit<ElementRef<typeof Select.Content>, 'style'>,\n SelectContentAnimatedProps\n>(\n (\n {\n className,\n contentClassName,\n viewportClassName,\n children,\n position = 'popper',\n 'aria-label': ariaLabel,\n reduceMotion = false,\n maxHeight = 300,\n animationDuration = 0.2,\n showScrollButtons = true,\n topButtonProps,\n bottomButtonProps,\n topButtonCustomization,\n bottomButtonCustomization,\n ...props\n },\n forwardedRef,\n ) => {\n const labels = useNovaConnectLabels();\n\n // Memoize animation configuration based on reduce motion preference\n const animationConfig = useMemo(() => {\n if (reduceMotion) {\n return {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n exit: { opacity: 0 },\n transition: { duration: 0.15, layout: { duration: 0 } },\n };\n }\n\n return {\n initial: { opacity: 0, scaleY: 0.8, y: -5 },\n animate: { opacity: 1, scaleY: 1, y: 0 },\n exit: { opacity: 0, scaleY: 0.8, y: -5 },\n transition: {\n duration: animationDuration,\n ease: 'easeOut' as Easing,\n layout: {\n duration: 0.15,\n ease: 'easeOut' as Easing,\n },\n },\n };\n }, [reduceMotion, animationDuration]);\n\n // Memoize content container classes (additive approach)\n const contentClasses = useMemo(\n () =>\n cn(\n // Default styles always applied\n 'novacon:p-1 novacon:bg-[var(--tuwa-bg-secondary)] novacon:rounded-lg novacon:shadow-xl',\n 'novacon:ring-1 novacon:ring-[var(--tuwa-border-primary)] novacon:overflow-hidden',\n // Custom classes added to defaults\n contentClassName,\n ),\n [contentClassName],\n );\n\n // Memoize select content classes (additive approach)\n const selectContentClasses = useMemo(\n () =>\n cn(\n // Default styles always applied\n 'novacon:overflow-hidden',\n 'novacon:w-[--radix-select-trigger-width]',\n 'novacon:data-[state=open]:animate-in novacon:data-[state=closed]:animate-out',\n 'novacon:data-[state=closed]:fade-out-0 novacon:data-[state=open]:fade-in-0',\n 'novacon:data-[state=closed]:zoom-out-95 novacon:data-[state=open]:zoom-in-95',\n 'novacon:data-[side=bottom]:slide-in-from-top-2 novacon:data-[side=left]:slide-in-from-right-2',\n 'novacon:data-[side=right]:slide-in-from-left-2 novacon:data-[side=top]:slide-in-from-bottom-2',\n // Custom classes added to defaults\n className,\n ),\n [className],\n );\n\n // Memoize viewport classes (additive approach)\n const viewportClasses = useMemo(\n () =>\n cn(\n // Default viewport styles (minimal by default)\n '',\n // Custom classes added\n viewportClassName,\n ),\n [viewportClassName],\n );\n\n // Memoize inline styles for containers\n const selectContentStyles = useMemo(\n () => ({\n // Apply maxHeight as inline style (can be overridden by style prop)\n maxHeight: `${maxHeight}px`,\n }),\n [maxHeight],\n );\n\n // Generate ARIA label\n const finalAriaLabel = ariaLabel || labels.chainListContainer;\n\n return (\n <Select.Portal>\n <Select.Content\n className={selectContentClasses}\n style={selectContentStyles}\n // @ts-expect-error - type changed for better using\n ref={forwardedRef}\n position={position}\n role=\"listbox\"\n aria-label={finalAriaLabel}\n {...props}\n >\n {/* Scroll to top button - only render if showScrollButtons is true */}\n {showScrollButtons && (\n <Select.ScrollUpButton asChild>\n <ToTopButton customization={topButtonCustomization} {...topButtonProps} />\n </Select.ScrollUpButton>\n )}\n\n {/* Main content viewport */}\n <Select.Viewport role=\"presentation\" className={viewportClasses}>\n <AnimatePresence mode=\"wait\" initial={false}>\n <motion.div\n initial={animationConfig.initial}\n animate={animationConfig.animate}\n exit={animationConfig.exit}\n transition={animationConfig.transition}\n className={contentClasses}\n layout={!reduceMotion}\n role=\"group\"\n aria-live=\"polite\"\n >\n {children}\n </motion.div>\n </AnimatePresence>\n </Select.Viewport>\n\n {/* Scroll to bottom button - only render if showScrollButtons is true */}\n {showScrollButtons && (\n <Select.ScrollDownButton asChild>\n <ToBottomButton customization={bottomButtonCustomization} {...bottomButtonProps} />\n </Select.ScrollDownButton>\n )}\n </Select.Content>\n </Select.Portal>\n );\n },\n);\n\nSelectContentAnimated.displayName = 'SelectContentAnimated';\n","/**\n * @file Highly customizable scrollable chain list with comprehensive styling and behavior control.\n * @module ScrollableChainList\n */\n\nimport {\n AnimatePresence,\n type AnyResolvedKeyframe,\n type LegacyAnimationControls,\n motion,\n type TargetAndTransition,\n type Transition,\n type VariantLabels,\n} from 'framer-motion';\nimport React, { type ComponentType, ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { useNovaConnectLabels } from '../../hooks/useNovaConnectLabels';\nimport { ToBottomButton, type ToBottomButtonCustomization } from '../ToBottomButton';\nimport { ToTopButton, type ToTopButtonCustomization } from '../ToTopButton';\nimport { ChainListRenderer, type ChainListRendererCustomization } from './ChainListRenderer';\n\n// === TYPES AND INTERFACES ===\n\n/**\n * Chain data structure returned by getChainData function\n */\ninterface ChainData {\n formattedChainId: string | number;\n chain: string | number;\n}\n\n/**\n * Scroll button state context\n */\ninterface ScrollButtonContext {\n showTopButton: boolean;\n showBottomButton: boolean;\n isScrolling: boolean;\n scrollTop: number;\n scrollHeight: number;\n clientHeight: number;\n}\n\n/**\n * Props for custom scroll container component\n */\ninterface CustomScrollContainerProps {\n children: ReactNode;\n ref: React.RefObject<HTMLDivElement | null>;\n onKeyDown: (event: React.KeyboardEvent<HTMLDivElement>) => void;\n className?: string;\n role: string;\n 'aria-label': string;\n tabIndex: number;\n}\n\n/**\n * Props for custom wrapper component\n */\ninterface CustomWrapperProps {\n children: ReactNode;\n className?: string;\n role: string;\n 'aria-label': string;\n}\n\n/**\n * Props for custom button animations wrapper\n */\ninterface CustomButtonAnimationWrapperProps {\n children: ReactNode;\n isVisible: boolean;\n position: 'top' | 'bottom';\n animationKey: string;\n}\n\n/**\n * Animation configuration for scroll buttons\n */\ninterface ScrollButtonAnimationConfig {\n initial?: TargetAndTransition | VariantLabels | LegacyAnimationControls | undefined;\n animate?: TargetAndTransition | VariantLabels | LegacyAnimationControls | undefined;\n exit?: TargetAndTransition | VariantLabels | LegacyAnimationControls | undefined;\n transition?: Transition<AnyResolvedKeyframe>;\n}\n\n/**\n * Comprehensive customization options for ScrollableChainList\n */\nexport interface ScrollableChainListCustomization {\n /** Custom components */\n components?: {\n /** Custom scroll container component */\n ScrollContainer?: ComponentType<CustomScrollContainerProps>;\n /** Custom wrapper component */\n Wrapper?: ComponentType<CustomWrapperProps>;\n /** Custom button animation wrapper */\n ButtonAnimationWrapper?: ComponentType<CustomButtonAnimationWrapperProps>;\n };\n /** Custom class name generators */\n classNames?: {\n /** Wrapper classes */\n wrapper?: (params: { itemCount: number; hasScrollableContent: boolean }) => string;\n /** Scroll container classes */\n container?: (params: {\n itemCount: number;\n hasScrollableContent: boolean;\n showTopButton: boolean;\n showBottomButton: boolean;\n }) => string;\n /** Button animation wrapper classes */\n buttonWrapper?: (params: { position: 'top' | 'bottom'; isVisible: boolean }) => string;\n };\n /** Custom event handlers */\n handlers?: {\n /** Custom scroll handler wrapper */\n onScroll?: (originalHandler: () => void, event: Event, context: ScrollButtonContext) => void;\n /** Custom key handler wrapper for container */\n onKeyDown?: (\n originalHandler: (event: React.KeyboardEvent<HTMLDivElement>) => void,\n event: React.KeyboardEvent<HTMLDivElement>,\n context: { scrollContainer: HTMLDivElement | null },\n ) => void;\n /** Custom top button click handler wrapper */\n onTopButtonClick?: (originalHandler: () => void, context: ScrollButtonContext) => void;\n /** Custom bottom button click handler wrapper */\n onBottomButtonClick?: (originalHandler: () => void, context: ScrollButtonContext) => void;\n };\n /** Animation configuration */\n animations?: {\n /** Button animation */\n scrollButtons?: ScrollButtonAnimationConfig;\n };\n /** Scroll behavior configuration */\n scrollBehavior?: {\n /** Scroll behavior type */\n behavior?: ScrollBehavior;\n /** Page scroll percentage (0-1) */\n pageScrollPercentage?: number;\n /** Scroll update throttle in ms */\n updateThrottle?: number;\n /** Enable auto-scroll to active item */\n autoScrollToActive?: boolean;\n };\n /** Button customization */\n buttons?: {\n /** Top button customization */\n topButton?: ToTopButtonCustomization;\n /** Bottom button customization */\n bottomButton?: ToBottomButtonCustomization;\n /** Hide buttons when content fits */\n hideWhenContentFits?: boolean;\n };\n /** Chain list renderer customization */\n chainListRenderer?: ChainListRendererCustomization;\n}\n\n/**\n * Props for the ScrollableChainList component\n */\nexport interface ScrollableChainListProps {\n /** List of chain identifiers to render */\n chainsList: (string | number)[];\n /** Currently selected chain value */\n selectValue: string;\n /** Handler for chain selection changes */\n handleValueChange: (newChainId: string) => void;\n /** Function to get formatted chain data */\n getChainData: (chain: string | number) => ChainData;\n /** Handler called when list should close */\n onClose: () => void;\n /** Comprehensive customization options */\n customization?: ScrollableChainListCustomization;\n /** ARIA label for the wrapper */\n 'aria-label'?: string;\n /** Loading state */\n isLoading?: boolean;\n /** Error state */\n error?: string | null;\n}\n\n// === DEFAULT COMPONENTS ===\n\n/**\n * Default scroll container component\n */\nconst DefaultScrollContainer: React.FC<CustomScrollContainerProps> = React.forwardRef<\n HTMLDivElement,\n CustomScrollContainerProps\n>(({ children, className, onKeyDown, ...props }, ref) => (\n <div ref={ref} className={className} onKeyDown={onKeyDown} {...props}>\n {children}\n </div>\n));\n\nDefaultScrollContainer.displayName = 'DefaultScrollContainer';\n\n/**\n * Default wrapper component\n */\nconst DefaultWrapper: React.FC<CustomWrapperProps> = ({ children, className, ...props }) => (\n <div className={className} {...props}>\n {children}\n </div>\n);\n\n/**\n * Default button animation wrapper\n */\nconst DefaultButtonAnimationWrapper: React.FC<CustomButtonAnimationWrapperProps> = ({\n children,\n isVisible,\n animationKey,\n}) => {\n if (!isVisible) return null;\n\n return (\n <motion.div\n key={animationKey}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={{ duration: 0.2 }}\n >\n {children}\n </motion.div>\n );\n};\n\n// === MAIN COMPONENT ===\n\n/**\n * Highly customizable scrollable chain list with comprehensive styling and behavior control.\n */\nexport const ScrollableChainList: React.FC<ScrollableChainListProps> = ({\n chainsList,\n selectValue,\n handleValueChange,\n getChainData,\n onClose,\n customization,\n 'aria-label': ariaLabel,\n isLoading = false,\n error = null,\n}) => {\n const labels = useNovaConnectLabels();\n const containerRef = useRef<HTMLDivElement>(null);\n const [showTopButton, setShowTopButton] = useState(false);\n const [showBottomButton, setShowBottomButton] = useState(false);\n const [isScrolling, setIsScrolling] = useState(false);\n const [hasScrollableContent, setHasScrollableContent] = useState(false);\n const [scrollContext, setScrollContext] = useState<ScrollButtonContext>({\n showTopButton: false,\n showBottomButton: false,\n isScrolling: false,\n scrollTop: 0,\n scrollHeight: 0,\n clientHeight: 0,\n });\n\n // Extract customization options with defaults\n const {\n ScrollContainer = DefaultScrollContainer,\n Wrapper = DefaultWrapper,\n ButtonAnimationWrapper = DefaultButtonAnimationWrapper,\n } = customization?.components ?? {};\n\n const scrollBehavior = customization?.scrollBehavior ?? {};\n const buttonConfig = customization?.buttons ?? {};\n const animations = customization?.animations;\n\n // Scroll behavior settings\n const scrollBehaviorType = scrollBehavior.behavior ?? 'smooth';\n const pageScrollPercentage = scrollBehavior.pageScrollPercentage ?? 0.8;\n\n // Update scroll context\n const updateScrollContext = useCallback(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const { scrollTop, scrollHeight, clientHeight } = container;\n setScrollContext({\n showTopButton,\n showBottomButton,\n isScrolling,\n scrollTop,\n scrollHeight,\n clientHeight,\n });\n }, [showTopButton, showBottomButton, isScrolling]);\n\n // Update scroll buttons visibility\n const updateScrollButtons = useCallback(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const { scrollTop, scrollHeight, clientHeight } = container;\n const hasContent = scrollHeight > clientHeight;\n\n setHasScrollableContent(hasContent);\n\n if (buttonConfig.hideWhenContentFits && !hasContent) {\n setShowTopButton(false);\n setShowBottomButton(false);\n return;\n }\n\n setShowTopButton(scrollTop > 0);\n setShowBottomButton(scrollTop + clientHeight < scrollHeight - 1);\n\n // Call custom scroll handler if provided\n if (customization?.handlers?.onScroll) {\n customization.handlers.onScroll(() => {}, new Event('scroll'), {\n showTopButton: scrollTop > 0,\n showBottomButton: scrollTop + clientHeight < scrollHeight - 1,\n isScrolling,\n scrollTop,\n scrollHeight,\n clientHeight,\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [buttonConfig.hideWhenContentFits, customization?.handlers?.onScroll, isScrolling]);\n\n // Update context after button states change\n useEffect(() => {\n updateScrollContext();\n }, [updateScrollContext]);\n\n // Setup scroll listeners and observers\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n let scrollTimeout: NodeJS.Timeout;\n\n const handleScroll = () => {\n setIsScrolling(true);\n updateScrollButtons();\n\n clearTimeout(scrollTimeout);\n scrollTimeout = setTimeout(() => {\n setIsScrolling(false);\n }, 150);\n };\n\n updateScrollButtons();\n container.addEventListener('scroll', handleScroll);\n\n const resizeObserver = new ResizeObserver(updateScrollButtons);\n resizeObserver.observe(container);\n\n return () => {\n container.removeEventListener('scroll', handleScroll);\n resizeObserver.disconnect();\n clearTimeout(scrollTimeout);\n };\n }, [chainsList, updateScrollButtons]);\n\n // Scroll to extreme positions\n const scrollToExtreme = useCallback(\n (isTop: boolean) => {\n const container = containerRef.current;\n if (container) {\n container.scrollTo({\n top: isTop ? 0 : container.scrollHeight,\n behavior: scrollBehaviorType,\n });\n }\n },\n [scrollBehaviorType],\n );\n\n // Handle scroll button clicks\n const handleTopButtonClick = useCallback(() => {\n const originalHandler = () => scrollToExtreme(true);\n\n if (customization?.handlers?.onTopButtonClick) {\n customization.handlers.onTopButtonClick(originalHandler, scrollContext);\n } else {\n originalHandler();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customization?.handlers?.onTopButtonClick, scrollToExtreme, scrollContext]);\n\n const handleBottomButtonClick = useCallback(() => {\n const originalHandler = () => scrollToExtreme(false);\n\n if (customization?.handlers?.onBottomButtonClick) {\n customization.handlers.onBottomButtonClick(originalHandler, scrollContext);\n } else {\n originalHandler();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customization?.handlers?.onBottomButtonClick, scrollToExtreme, scrollContext]);\n\n // Handle keyboard navigation\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n const originalHandler = (e: React.KeyboardEvent<HTMLDivElement>) => {\n // Handle arrow key navigation within the scrollable area\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n // Let the ChainListRenderer handle the focus management\n return;\n }\n\n // Handle Page Up/Page Down for large scrolls\n if (e.key === 'PageUp') {\n e.preventDefault();\n const container = containerRef.current;\n if (container) {\n container.scrollBy({\n top: -container.clientHeight * pageScrollPercentage,\n behavior: scrollBehaviorType,\n });\n }\n }\n\n if (e.key === 'PageDown') {\n e.preventDefault();\n const container = containerRef.current;\n if (container) {\n container.scrollBy({\n top: container.clientHeight * pageScrollPercentage,\n behavior: scrollBehaviorType,\n });\n }\n }\n };\n\n if (customization?.handlers?.onKeyDown) {\n customization.handlers.onKeyDown(originalHandler, event, {\n scrollContainer: containerRef.current,\n });\n } else {\n originalHandler(event);\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [customization?.handlers?.onKeyDown, pageScrollPercentage, scrollBehaviorType],\n );\n\n // Generate wrapper classes and styles\n const wrapperClasses = useMemo(() => {\n const customClasses = customization?.classNames?.wrapper?.({\n itemCount: chainsList.length,\n hasScrollableContent,\n });\n return customClasses || 'novacon:relative novacon:py-[24px]';\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customization?.classNames?.wrapper, chainsList.length, hasScrollableContent]);\n\n // Generate container classes and styles\n const containerClasses = useMemo(() => {\n const customClasses = customization?.classNames?.container?.({\n itemCount: chainsList.length,\n hasScrollableContent,\n showTopButton,\n showBottomButton,\n });\n return (\n customClasses ||\n 'NovaCustomScroll novacon:relative novacon:flex novacon:w-full novacon:flex-col novacon:p-2 novacon:gap-1 novacon:max-h-[312px] novacon:overflow-x-hidden novacon:overflow-y-auto'\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customization?.classNames?.container, chainsList.length, hasScrollableContent, showTopButton, showBottomButton]);\n\n // Button animation wrapper classes and styles\n const topButtonWrapperClasses = useMemo(() => {\n return (\n customization?.classNames?.buttonWrapper?.({ position: 'top', isVisible: showTopButton }) ||\n 'novacon:absolute novacon:top-0 novacon:z-10 novacon:w-full'\n );\n }, [customization, showTopButton]);\n\n const bottomButtonWrapperClasses = useMemo(() => {\n return (\n customization?.classNames?.buttonWrapper?.({ position: 'bottom', isVisible: showBottomButton }) ||\n 'novacon:absolute novacon:bottom-0 novacon:z-10 novacon:w-full'\n );\n }, [customization, showBottomButton]);\n\n // Create button animation wrapper with custom animations\n const createButtonWrapper = useCallback(\n (\n children: ReactNode,\n isVisible: boolean,\n position: 'top' | 'bottom',\n wrapperClasses: string,\n wrapperStyles?: React.CSSProperties,\n ) => {\n const animationConfig = animations?.scrollButtons;\n const animationKey = `${position}-button`;\n\n const wrapperElement = (\n <div className={wrapperClasses} style={wrapperStyles}>\n {children}\n </div>\n );\n\n return (\n <ButtonAnimationWrapper isVisible={isVisible} position={position} animationKey={animationKey}>\n {animationConfig ? <motion.div {...animationConfig}>{wrapperElement}</motion.div> : wrapperElement}\n </ButtonAnimationWrapper>\n );\n },\n [animations, ButtonAnimationWrapper],\n );\n\n return (\n <Wrapper className={wrapperClasses} role=\"region\" aria-label={ariaLabel || labels.chainListContainer}>\n <AnimatePresence>\n {createButtonWrapper(\n <ToTopButton\n onClick={handleTopButtonClick}\n aria-label={labels.scrollToTop}\n className=\"novacon:w-full\"\n customization={buttonConfig.topButton}\n />,\n showTopButton,\n 'top',\n topButtonWrapperClasses,\n )}\n </AnimatePresence>\n\n <ScrollContainer\n ref={containerRef}\n className={containerClasses}\n role=\"listbox\"\n aria-label={labels.selectChain}\n tabIndex={0}\n onKeyDown={handleKeyDown}\n >\n <ChainListRenderer\n chainsList={chainsList}\n selectValue={selectValue}\n handleValueChange={handleValueChange}\n getChainData={getChainData}\n onClose={onClose}\n isMobile={true}\n isLoading={isLoading}\n error={error}\n customization={customization?.chainListRenderer}\n />\n </ScrollContainer>\n\n <AnimatePresence>\n {createButtonWrapper(\n <ToBottomButton\n onClick={handleBottomButtonClick}\n aria-label={labels.scrollToBottom}\n className=\"novacon:w-full\"\n customization={buttonConfig.bottomButton}\n />,\n showBottomButton,\n 'bottom',\n bottomButtonWrapperClasses,\n )}\n </AnimatePresence>\n </Wrapper>\n );\n};\n","/**\n * @file ChainSelector component - A highly customizable chain selector with support for desktop and mobile devices.\n * @module ChainSelector\n */\n\nimport { Web3Icon } from '@bgd-labs/react-web3-icons';\nimport { getChainName } from '@bgd-labs/react-web3-icons/dist/utils';\nimport * as Select from '@radix-ui/react-select';\nimport {\n ChevronArrowWithAnim,\n CloseIcon,\n cn,\n Dialog,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogTitle,\n} from '@tuwaio/nova-core';\nimport { formatWalletChainId } from '@tuwaio/orbit-core';\nimport { getAdapterFromWalletType } from '@tuwaio/orbit-core';\nimport { motion, type Transition } from 'framer-motion';\nimport React, {\n ComponentPropsWithoutRef,\n ComponentType,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { useNovaConnect } from '../../hooks/useNovaConnect';\nimport { useNovaConnectLabels } from '../../hooks/useNovaConnectLabels';\nimport { InitialChains } from '../../types';\nimport { getChainsListByWalletType, getChainsListByWalletTypeAsync, getWalletChains } from '../../utils';\nimport { ConnectButtonProps } from '../ConnectButton/ConnectButton';\nimport { SelectContentAnimated, SelectContentAnimatedProps } from '../SelectContentAnimated';\nimport { ChainListRenderer, ChainListRendererCustomization } from './ChainListRenderer';\nimport { ScrollableChainList, ScrollableChainListCustomization } from './ScrollableChainList';\n\n/**\n * Context for the chain selection trigger button.\n */\ntype ChainTriggerButtonContext = {\n /** The currently formatted chain ID */\n currentFormattedChainId: string | number;\n /** Value for the Select component */\n selectValue: string;\n /** Whether the chain list is open */\n isChainsListOpen: boolean;\n /** Whether the device is mobile */\n isMobile: boolean;\n /** The name of the chain */\n chainName: string;\n};\n\n/**\n * Props for a custom trigger icon component.\n */\ntype CustomTriggerIconProps = {\n /** Chain ID */\n chainId: string | number;\n /** CSS class */\n className?: string;\n /** Whether hidden from screen readers */\n 'aria-hidden'?: boolean;\n};\n\n/**\n * Props for a custom trigger content component.\n */\ntype CustomTriggerContentProps = {\n /** Chain icon */\n icon: ReactNode;\n /** Chain name */\n chainName: string;\n /** Whether the device is mobile */\n isMobile: boolean;\n /** Whether the list is open */\n isOpen: boolean;\n /** The currently formatted chain ID */\n currentFormattedChainId: string | number;\n};\n\n/**\n * Props for a custom trigger arrow component.\n */\ntype CustomTriggerArrowProps = {\n /** Whether the list is open */\n isOpen: boolean;\n /** CSS class */\n className?: string;\n /** Whether hidden from screen readers */\n 'aria-hidden'?: boolean;\n};\n\n/**\n * Props for a custom loading state display.\n */\ntype CustomLoadingStateProps = {\n /** CSS class */\n className?: string;\n /** ARIA label */\n 'aria-label': string;\n};\n\n/**\n * Props for a custom display for a single chain (when no selector is needed).\n */\ntype CustomSingleChainDisplayProps = {\n /** Chain ID */\n chainId: string | number;\n /** Chain name */\n chainName: string;\n /** CSS class */\n className?: string;\n /** ARIA label */\n 'aria-label': string;\n};\n\n/**\n * Props for a custom desktop selector wrapper.\n */\ntype CustomDesktopSelectorProps = {\n /** Child elements */\n children: ReactNode;\n /** CSS class */\n className?: string;\n /** ARIA label */\n 'aria-label': string;\n};\n\n/**\n * Props for a custom mobile selector wrapper.\n */\ntype CustomMobileSelectorProps = {\n /** Child elements */\n children: ReactNode;\n /** CSS class */\n className?: string;\n /** ARIA label */\n 'aria-label': string;\n};\n\n/**\n * Props for a custom dialog header component.\n */\ntype CustomDialogHeaderProps = {\n /** Title text */\n title: string;\n /** Close handler */\n onClose: () => void;\n /** CSS class */\n className?: string;\n};\n\n/**\n * Animation easing parameters for framer-motion.\n */\ntype AnimationEasing = [number, number, number, number] | string;\n\n/**\n * Customization options for the ChainTriggerButton.\n */\nexport type ChainTriggerButtonCustomization = {\n /** Overrides for the button/trigger props */\n buttonProps?: Partial<ComponentPropsWithoutRef<'button'>>;\n /** Overrides for the Select.Trigger props (desktop only) */\n selectTriggerProps?: Partial<ComponentPropsWithoutRef<typeof Select.Trigger>>;\n /** Custom component overrides */\n components?: {\n /** Custom chain icon component */\n Icon?: ComponentType<CustomTriggerIconProps>;\n /** Custom trigger content wrapper */\n Content?: ComponentType<CustomTriggerContentProps>;\n /** Custom arrow/chevron component */\n Arrow?: ComponentType<CustomTriggerArrowProps>;\n };\n /** Custom CSS class generators */\n classNames?: {\n /** Function to generate wrapper classes */\n wrapper?: (params: { isMobile: boolean; isOpen: boolean }) => string;\n /** Function to generate button/trigger classes */\n button?: (params: { isMobile: boolean; isOpen: boolean; hasMultipleChains: boolean }) => string;\n /** Function to generate inner content classes */\n innerContent?: (params: { isMobile: boolean; isOpen: boolean }) => string;\n /** Function to generate icon wrapper classes */\n iconWrapper?: (params: { isMobile: boolean }) => string;\n /** Function to generate chain name classes */\n chainName?: (params: { isMobile: boolean; isVisible: boolean }) => string;\n /** Function to generate arrow wrapper classes */\n arrowWrapper?: (params: { isMobile: boolean }) => string;\n };\n /** Custom event handlers */\n handlers?: {\n /** Wrapper for the click handler */\n onClick?: (\n originalHandler: () => void,\n event: React.MouseEvent<HTMLButtonElement>,\n context: ChainTriggerButtonContext,\n ) => void;\n /** Wrapper for the key down handler */\n onKeyDown?: (\n originalHandler: (event: React.KeyboardEvent) => void,\n event: React.KeyboardEvent,\n context: ChainTriggerButtonContext,\n ) => void;\n };\n /** Animation settings */\n animations?: {\n /** Layout animation settings */\n layout?: {\n duration?: number;\n ease?: AnimationEasing;\n };\n /** Inner content animation settings */\n innerContent?: {\n duration?: number;\n };\n };\n};\n\n/**\n * Comprehensive customization options for the ChainSelector.\n */\nexport type ChainSelectorCustomization = {\n /** Custom component overrides */\n components?: {\n /** Custom loading state component */\n LoadingState?: ComponentType<CustomLoadingStateProps>;\n /** Custom component for displaying a single chain */\n SingleChainDisplay?: ComponentType<CustomSingleChainDisplayProps>;\n /** Custom wrapper for the desktop selector */\n DesktopSelector?: ComponentType<CustomDesktopSelectorProps>;\n /** Custom wrapper for the mobile selector */\n MobileSelector?: ComponentType<CustomMobileSelectorProps>;\n /** Custom dialog header component */\n DialogHeader?: ComponentType<CustomDialogHeaderProps>;\n };\n /** Custom CSS class generators */\n classNames?: {\n /** Classes for the main container */\n container?: (params: { hasMultipleChains: boolean; isLoading: boolean }) => string;\n /** Classes for the desktop wrapper */\n desktopWrapper?: (params: { chainCount: number }) => string;\n /** Classes for the mobile wrapper */\n mobileWrapper?: (params: { chainCount: number }) => string;\n /** Classes for the loading state */\n loadingState?: () => string;\n /** Classes for the single chain display */\n singleChainDisplay?: () => string;\n /** Classes for the dialog content */\n dialogContent?: (params: { chainCount: number }) => string;\n /** Classes for the dialog inner container */\n dialogInnerContainer?: () => string;\n };\n /** Custom event handlers */\n handlers?: {\n /** Wrapper for the chain change handler */\n onChainChange?: (originalHandler: (newChainId: string) => void, newChainId: string) => void;\n /** Wrapper for the dialog close handler */\n onDialogClose?: (originalHandler: () => void) => void;\n };\n /** Customization for sub-components */\n triggerButton?: ChainTriggerButtonCustomization;\n /** Customization for the Select content */\n selectContent?: Partial<SelectContentAnimatedProps>;\n /** Customization for the chain list renderer (desktop) */\n chainListRenderer?: ChainListRendererCustomization;\n /** Customization for the scrollable chain list (mobile) */\n scrollableChainList?: ScrollableChainListCustomization;\n};\n\n/**\n * Props for the ChainTriggerButton component.\n */\ninterface ChainTriggerButtonProps {\n /** The currently formatted chain ID */\n currentFormattedChainId: string | number;\n /** The value of the select component */\n selectValue: string;\n /** Whether the chain list is currently open */\n isChainsListOpen: boolean;\n /** Function to toggle the visibility of the chain list */\n onToggle: () => void;\n /** Whether it's displayed on a mobile device */\n isMobile: boolean;\n /** Whether multiple chains are available */\n hasMultipleChains?: boolean;\n /** Customization options */\n customization?: ChainTriggerButtonCustomization;\n}\n\n// --- Default Components ---\n\n/**\n * Default trigger icon.\n */\nconst DefaultTriggerIcon = ({ chainId, className, ...props }: CustomTriggerIconProps) => {\n return <Web3Icon chainId={chainId} className={className} {...props} />;\n};\n\n/**\n * Default trigger content.\n */\nconst DefaultTriggerContent = ({ icon, chainName, isMobile }: CustomTriggerContentProps) => {\n return (\n <>\n <div className=\"novacon:flex novacon:items-center novacon:sm:space-x-2 novacon:[&_img]:w-6 novacon:[&_img]:h-6\">\n <div aria-hidden=\"true\">{icon}</div>\n {isMobile ? (\n <span className=\"novacon:hidden novacon:sm:inline-block novacon:sr-only novacon:sm:not-sr-only\">\n {chainName}\n </span>\n ) : (\n <Select.Value asChild>\n <span className=\"novacon:hidden novacon:sm:inline-block novacon:sr-only novacon:sm:not-sr-only\">\n {chainName}\n </span>\n </Select.Value>\n )}\n </div>\n </>\n );\n};\n\n/**\n * Default trigger arrow.\n */\nconst DefaultTriggerArrow = ({ isOpen, className, ...props }: CustomTriggerArrowProps) => {\n return <ChevronArrowWithAnim isOpen={isOpen} className={className} {...props} />;\n};\n\n/**\n * Default loading state component.\n */\nconst DefaultLoadingState = ({ className, 'aria-label': ariaLabel }: CustomLoadingStateProps) => {\n return (\n <div className={className} role=\"status\" aria-label={ariaLabel}>\n <div className=\"novacon:w-6 novacon:h-6 novacon:bg-gray-300 novacon:rounded-full\" aria-hidden=\"true\" />\n <div className=\"novacon:w-20 novacon:h-4 novacon:bg-gray-300 novacon:rounded\" aria-hidden=\"true\" />\n </div>\n );\n};\n\n/**\n * Default display for a single chain.\n */\nconst DefaultSingleChainDisplay = ({\n chainId,\n chainName,\n className,\n 'aria-label': ariaLabel,\n}: CustomSingleChainDisplayProps) => {\n return (\n <div className={className} role=\"img\" aria-label={ariaLabel}>\n <Web3Icon chainId={chainId} />\n <span className=\"novacon:sr-only\">{chainName}</span>\n </div>\n );\n};\n\n/**\n * Default desktop selector wrapper.\n */\nconst DefaultDesktopSelector = ({ children, className, 'aria-label': ariaLabel }: CustomDesktopSelectorProps) => {\n return (\n <div className={className} role=\"region\" aria-label={ariaLabel}>\n {children}\n </div>\n );\n};\n\n/**\n * Default mobile selector wrapper.\n */\nconst DefaultMobileSelector = ({ children, className, 'aria-label': ariaLabel }: CustomMobileSelectorProps) => {\n return (\n <div className={className} role=\"region\" aria-label={ariaLabel}>\n {children}\n </div>\n );\n};\n\n/**\n * Default dialog header component.\n */\nconst DefaultDialogHeader = ({ title, onClose, className }: CustomDialogHeaderProps) => {\n const labels = useNovaConnectLabels();\n\n return (\n <DialogHeader className={className}>\n <DialogTitle>{title}</DialogTitle>\n <DialogClose asChild>\n <button\n type=\"button\"\n aria-label={labels.closeModal}\n className=\"novacon:cursor-pointer novacon:rounded-full novacon:p-1\n novacon:text-[var(--tuwa-text-tertiary)] novacon:transition-colors\n novacon:hover:bg-[var(--tuwa-bg-muted)] novacon:hover:text-[var(--tuwa-text-primary)]\n novacon:focus:outline-none novacon:focus:ring-2 novacon:focus:ring-[var(--tuwa-border-primary)] novacon:focus:ring-offset-2\"\n onClick={onClose}\n >\n <CloseIcon />\n </button>\n </DialogClose>\n </DialogHeader>\n );\n};\n\n// --- Default Event Handlers ---\n\n/**\n * Default click handler.\n */\nconst defaultClickHandler = (\n originalHandler: () => void,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _event: React.MouseEvent<HTMLButtonElement>,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _context: ChainTriggerButtonContext,\n) => {\n originalHandler();\n};\n\n/**\n * Default key down handler.\n */\nconst defaultKeyDownHandler = (\n originalHandler: (event: React.KeyboardEvent) => void,\n event: React.KeyboardEvent,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _context: ChainTriggerButtonContext,\n) => {\n originalHandler(event);\n};\n\n/**\n * Default chain change handler.\n */\nconst defaultChainChangeHandler = (originalHandler: (newChainId: string) => void, newChainId: string) => {\n originalHandler(newChainId);\n};\n\n/**\n * Default dialog close handler.\n */\nconst defaultDialogCloseHandler = (originalHandler: () => void) => {\n originalHandler();\n};\n\n/**\n * Trigger button component for chain selection.\n */\nconst ChainTriggerButton: React.FC<ChainTriggerButtonProps> = ({\n currentFormattedChainId,\n isChainsListOpen,\n onToggle,\n isMobile,\n hasMultipleChains = true,\n customization,\n}) => {\n const labels = useNovaConnectLabels();\n const chainName = getChainName(currentFormattedChainId);\n\n // Extract custom components\n const {\n Icon = DefaultTriggerIcon,\n Content = DefaultTriggerContent,\n Arrow = DefaultTriggerArrow,\n } = customization?.components ?? {};\n\n const { onClick: customClickHandler = defaultClickHandler, onKeyDown: customKeyDownHandler = defaultKeyDownHandler } =\n customization?.handlers ?? {};\n\n // Animation configuration\n const layoutAnimation = customization?.animations?.layout ?? {\n duration: 0.2,\n ease: [0.4, 1, 0.4, 1] as AnimationEasing,\n };\n const innerContentAnimation = useMemo(\n () => customization?.animations?.innerContent ?? { duration: 0.0001 },\n [customization?.animations?.innerContent],\n );\n\n /**\n * Handles keyboard navigation for the trigger button.\n */\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n const context: ChainTriggerButtonContext = {\n currentFormattedChainId,\n selectValue: String(currentFormattedChainId),\n isChainsListOpen,\n isMobile,\n chainName,\n };\n\n const originalHandler = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onToggle();\n }\n if (e.key === 'Escape' && isChainsListOpen) {\n e.preventDefault();\n onToggle();\n }\n };\n\n customKeyDownHandler(originalHandler, event, context);\n },\n [customKeyDownHandler, currentFormattedChainId, isChainsListOpen, isMobile, chainName, onToggle],\n );\n\n /**\n * Handles click events for the mobile button.\n */\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n const context: ChainTriggerButtonContext = {\n currentFormattedChainId,\n selectValue: String(currentFormattedChainId),\n isChainsListOpen,\n isMobile,\n chainName,\n };\n\n customClickHandler(onToggle, event, context);\n },\n [customClickHandler, currentFormattedChainId, isChainsListOpen, isMobile, chainName, onToggle],\n );\n\n // Generate classes and styles\n const wrapperClasses = useMemo(() => {\n if (customization?.classNames?.wrapper) {\n return customization.classNames.wrapper({ isMobile, isOpen: isChainsListOpen });\n }\n return 'novacon:relative';\n }, [customization, isMobile, isChainsListOpen]);\n\n const buttonClasses = useMemo(() => {\n if (customization?.classNames?.button) {\n return customization.classNames.button({ isMobile, isOpen: isChainsListOpen, hasMultipleChains });\n }\n\n return cn(\n 'novacon:cursor-pointer novacon:inline-flex novacon:items-center novacon:justify-center',\n 'novacon:rounded-xl novacon:font-medium novacon:text-sm novacon:transition-all novacon:duration-200',\n 'novacon:hover:scale-[1.02] novacon:active:scale-[0.98]',\n 'novacon:focus:outline-none novacon:focus:ring-2 novacon:focus:ring-offset-2 novacon:focus:ring-offset-[var(--tuwa-bg-primary)] novacon:focus:ring-[var(--tuwa-border-primary)]',\n 'novacon:bg-[var(--tuwa-bg-secondary)] novacon:text-[var(--tuwa-text-primary)] novacon:hover:bg-[var(--tuwa-bg-muted)]',\n {\n 'novacon:ring-2 novacon:ring-[var(--tuwa-text-accent)] novacon:border novacon:border-transparent':\n isChainsListOpen,\n 'novacon:border novacon:border-[var(--tuwa-border-primary)]': !isChainsListOpen,\n },\n 'novacon:[&_img]:w-4 novacon:[&_img]:h-4',\n );\n }, [customization, isMobile, isChainsListOpen, hasMultipleChains]);\n\n const innerContentClasses = useMemo(() => {\n if (customization?.classNames?.innerContent) {\n return customization.classNames.innerContent({ isMobile, isOpen: isChainsListOpen });\n }\n return 'novacon:inline-flex novacon:items-center novacon:justify-center novacon:gap-2 novacon:px-2 sm:novacon:px-4 novacon:min-w-[60px] novacon:min-h-[42px] novacon:py-1';\n }, [customization, isMobile, isChainsListOpen]);\n\n /**\n * Creates the inner content with the correct motion wrapper.\n */\n const innerContent = useMemo(() => {\n const iconElement = <Icon chainId={currentFormattedChainId} aria-hidden={true} />;\n const arrowElement = <Arrow isOpen={isChainsListOpen} aria-hidden={true} />;\n\n return (\n <motion.div\n layout\n className={innerContentClasses}\n transition={{ layout: { duration: innerContentAnimation.duration } }}\n >\n <Content\n icon={iconElement}\n chainName={chainName}\n isMobile={isMobile}\n isOpen={isChainsListOpen}\n currentFormattedChainId={currentFormattedChainId}\n />\n\n {isMobile ? (\n <div aria-hidden=\"true\">{arrowElement}</div>\n ) : (\n <Select.Icon asChild>\n <div aria-hidden=\"true\">{arrowElement}</div>\n </Select.Icon>\n )}\n </motion.div>\n );\n }, [\n Icon,\n Arrow,\n Content,\n currentFormattedChainId,\n isChainsListOpen,\n chainName,\n isMobile,\n innerContentClasses,\n innerContentAnimation,\n ]);\n\n /**\n * Accessibility attributes for screen readers.\n */\n const ariaLabel = `${labels.chainSelector}: ${labels.currentChain} ${chainName}. ${labels.openChainSelector}`;\n const ariaExpanded = isChainsListOpen;\n const ariaHaspopup = 'listbox' as const;\n\n // Merge button props\n const mobileButtonProps = useMemo(\n () => ({\n ...customization?.buttonProps,\n type: 'button' as const,\n 'aria-label': ariaLabel,\n 'aria-expanded': ariaExpanded,\n 'aria-haspopup': ariaHaspopup,\n className: buttonClasses,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n }),\n [customization?.buttonProps, ariaLabel, ariaExpanded, buttonClasses, handleClick, handleKeyDown],\n );\n\n const selectTriggerProps = useMemo(\n () => ({\n ...customization?.selectTriggerProps,\n 'aria-label': ariaLabel,\n className: buttonClasses,\n onKeyDown: handleKeyDown,\n }),\n [customization?.selectTriggerProps, ariaLabel, buttonClasses, handleKeyDown],\n );\n\n return (\n <motion.div layout className={wrapperClasses} transition={{ layout: layoutAnimation } as Transition}>\n {isMobile ? (\n <button {...mobileButtonProps}>{innerContent}</button>\n ) : (\n <Select.Trigger {...selectTriggerProps}>{innerContent}</Select.Trigger>\n )}\n </motion.div>\n );\n};\n\n/**\n * Props for the ChainSelector component.\n */\nexport interface ChainSelectorProps extends InitialChains, Pick<ConnectButtonProps, 'store'> {\n /** Comprehensive customization options */\n customization?: ChainSelectorCustomization;\n /** Custom CSS classes for the main container */\n className?: string;\n /** Custom ARIA label for the selector */\n 'aria-label'?: string;\n}\n\n/**\n * The main chain selector component.\n * Supports both desktop (dropdown) and mobile (dialog modal) interfaces.\n *\n * @param props - Props for the ChainSelector component\n * @returns The chain selector component or null if no wallet is connected\n */\nexport function ChainSelector({\n appChains,\n solanaRPCUrls,\n store,\n customization,\n className,\n 'aria-label': ariaLabel,\n}: ChainSelectorProps) {\n const labels = useNovaConnectLabels();\n const { activeWallet } = useNovaConnect();\n const { isChainsListOpen, setIsChainsListOpen, isChainsListOpenMobile, setIsChainsListOpenMobile } = useNovaConnect();\n\n // State to manage dynamic chain loading\n const [chainsList, setChainsList] = useState<(string | number)[]>([]);\n const [isLoadingChains, setIsLoadingChains] = useState(false);\n\n // Use refs to track loading state and prevent parallel fetches\n const loadingRef = useRef(false);\n const walletTypeRef = useRef<string | null>(null);\n\n // Extract custom components\n const {\n LoadingState = DefaultLoadingState,\n SingleChainDisplay = DefaultSingleChainDisplay,\n DesktopSelector = DefaultDesktopSelector,\n MobileSelector = DefaultMobileSelector,\n DialogHeader = DefaultDialogHeader,\n } = customization?.components ?? {};\n\n const {\n onChainChange: customChainChangeHandler = defaultChainChangeHandler,\n onDialogClose: customDialogCloseHandler = defaultDialogCloseHandler,\n } = customization?.handlers ?? {};\n\n // Generate all classes and styles upfront to avoid conditional useMemo\n const containerClasses = useMemo(() => {\n if (customization?.classNames?.container) {\n return customization.classNames.container({\n hasMultipleChains: chainsList.length > 1,\n isLoading: isLoadingChains,\n });\n }\n return className;\n // eslint-disable-next-line\n }, [customization?.classNames?.container, chainsList.length, isLoadingChains, className]);\n\n const loadingStateClasses = useMemo(() => {\n if (customization?.classNames?.loadingState) {\n return customization.classNames.loadingState();\n }\n return 'novacon:flex novacon:items-center novacon:space-x-2 novacon:[&_img]:w-6 novacon:[&_img]:h-6 novacon:animate-pulse';\n // eslint-disable-next-line\n }, [customization?.classNames?.loadingState]);\n\n const singleChainDisplayClasses = useMemo(() => {\n if (customization?.classNames?.singleChainDisplay) {\n return customization.classNames.singleChainDisplay();\n }\n return 'novacon:flex novacon:items-center novacon:space-x-2 novacon:[&_img]:w-6 novacon:[&_img]:h-6';\n // eslint-disable-next-line\n }, [customization?.classNames?.singleChainDisplay]);\n\n const desktopWrapperClasses = useMemo(() => {\n if (customization?.classNames?.desktopWrapper) {\n return customization.classNames.desktopWrapper({ chainCount: chainsList.length });\n }\n return 'novacon:hidden novacon:sm:block';\n // eslint-disable-next-line\n }, [customization?.classNames?.desktopWrapper, chainsList.length]);\n\n const mobileWrapperClasses = useMemo(() => {\n if (customization?.classNames?.mobileWrapper) {\n return customization.classNames.mobileWrapper({ chainCount: chainsList.length });\n }\n return 'novacon:sm:hidden';\n // eslint-disable-next-line\n }, [customization?.classNames?.mobileWrapper, chainsList.length]);\n\n const dialogContentClasses = useMemo(() => {\n if (customization?.classNames?.dialogContent) {\n return customization.classNames.dialogContent({ chainCount: chainsList.length });\n }\n return cn('novacon:w-full novacon:sm:max-w-md');\n // eslint-disable-next-line\n }, [customization?.classNames?.dialogContent, chainsList.length]);\n\n const dialogInnerContainerClasses = useMemo(() => {\n if (customization?.classNames?.dialogInnerContainer) {\n return customization.classNames.dialogInnerContainer();\n }\n return cn('novacon:relative novacon:flex novacon:w-full novacon:flex-col');\n // eslint-disable-next-line\n }, [customization?.classNames?.dialogInnerContainer]);\n\n /**\n * Handles switching networks when the user selects a different chain.\n */\n const handleChainChange = useCallback(\n (newChainId: string) => {\n const originalHandler = (chainId: string) => {\n store?.getState().switchNetwork(chainId);\n };\n\n customChainChangeHandler(originalHandler, newChainId);\n },\n [store, customChainChangeHandler],\n );\n\n /**\n * Retrieves chain formatting data for display purposes.\n */\n const getChainData = useCallback(\n (chain: string | number) => {\n if (!activeWallet) return { formattedChainId: chain, chain };\n\n return {\n formattedChainId: formatWalletChainId(chain, getAdapterFromWalletType(activeWallet.walletType)),\n chain,\n };\n },\n [activeWallet],\n );\n\n /**\n * Loads the chain list dynamically with async and fallback support.\n */\n useEffect(() => {\n // Reset state on wallet change/disconnect\n if (!activeWallet) {\n setChainsList([]);\n setIsLoadingChains(false);\n loadingRef.current = false;\n walletTypeRef.current = null;\n return;\n }\n\n // Don't fetch if same wallet type and already loading/loaded\n if (walletTypeRef.current === activeWallet.walletType && (loadingRef.current || chainsList.length > 0)) {\n return;\n }\n\n // Setup loading state\n if (loadingRef.current) return;\n loadingRef.current = true;\n walletTypeRef.current = activeWallet.walletType;\n setIsLoadingChains(true);\n\n // Safely extract wallet chains using common utility\n const walletChains = getWalletChains(activeWallet);\n\n const loadChains = async () => {\n try {\n // Try async version first for better functionality\n const asyncChains = await getChainsListByWalletTypeAsync({\n walletType: activeWallet.walletType,\n appChains,\n solanaRPCUrls,\n chains: walletChains,\n });\n\n if (asyncChains.length > 0) {\n setChainsList(asyncChains);\n return;\n }\n } catch (asyncError) {\n console.warn('Async chain loading failed, falling back to sync method:', asyncError);\n }\n\n // Fallback to sync version\n try {\n const syncChains = getChainsListByWalletType({\n walletType: activeWallet.walletType,\n appChains,\n solanaRPCUrls,\n chains: walletChains,\n });\n\n setChainsList(syncChains);\n } catch (syncError) {\n console.error('Both async and sync chain loading failed:', syncError);\n setChainsList([]); // Ensure valid array\n } finally {\n setIsLoadingChains(false);\n loadingRef.current = false;\n }\n };\n\n loadChains();\n }, [activeWallet, appChains, solanaRPCUrls, chainsList.length]);\n\n /**\n * Handles closing the mobile dialog.\n */\n const handleDialogClose = useCallback(() => {\n const originalHandler = () => setIsChainsListOpenMobile(false);\n customDialogCloseHandler(originalHandler);\n }, [customDialogCloseHandler, setIsChainsListOpenMobile]);\n\n /**\n * Memoized loading state check.\n */\n const isLoading = useMemo(() => isLoadingChains && chainsList.length === 0, [isLoadingChains, chainsList.length]);\n\n // Early return if no wallet is connected\n if (!activeWallet) return null;\n\n // Current chain info\n const currentFormattedChainId = formatWalletChainId(\n activeWallet.chainId,\n getAdapterFromWalletType(activeWallet.walletType),\n );\n\n const selectValue = String(currentFormattedChainId);\n const chainName = getChainName(currentFormattedChainId);\n\n // Show loading state while chains are fetching\n if (isLoading) {\n return <LoadingState className={loadingStateClasses} aria-label={`${labels.loading}...`} />;\n }\n\n // Display single chain - no selector needed\n if (chainsList.length <= 1) {\n return (\n <SingleChainDisplay\n chainId={currentFormattedChainId}\n chainName={chainName}\n className={singleChainDisplayClasses}\n aria-label={`${labels.currentChain}: ${chainName}`}\n />\n );\n }\n\n const finalAriaLabel = ariaLabel || labels.chainSelector;\n\n // Main selector UI for multiple chains\n return (\n <div className={containerClasses}>\n {/* Desktop View - Dropdown */}\n <DesktopSelector className={desktopWrapperClasses} aria-label={finalAriaLabel}>\n <Select.Root\n value={selectValue}\n onValueChange={handleChainChange}\n open={isChainsListOpen}\n onOpenChange={setIsChainsListOpen}\n >\n <ChainTriggerButton\n currentFormattedChainId={currentFormattedChainId}\n isChainsListOpen={isChainsListOpen}\n onToggle={() => setIsChainsListOpen(!isChainsListOpen)}\n selectValue={selectValue}\n isMobile={false}\n hasMultipleChains={chainsList.length > 1}\n customization={customization?.triggerButton}\n />\n <SelectContentAnimated className=\"novacon:w-[210px]\" {...customization?.selectContent}>\n <ChainListRenderer\n chainsList={chainsList}\n selectValue={selectValue}\n handleValueChange={handleChainChange}\n getChainData={getChainData}\n onClose={() => setIsChainsListOpen(false)}\n isMobile={false}\n customization={customization?.chainListRenderer}\n />\n </SelectContentAnimated>\n </Select.Root>\n </DesktopSelector>\n\n {/* Mobile View - Dialog Modal */}\n <MobileSelector className={mobileWrapperClasses} aria-label={finalAriaLabel}>\n <ChainTriggerButton\n currentFormattedChainId={currentFormattedChainId}\n isChainsListOpen={isChainsListOpenMobile}\n onToggle={() => setIsChainsListOpenMobile(true)}\n selectValue={selectValue}\n isMobile={true}\n hasMultipleChains={chainsList.length > 1}\n customization={customization?.triggerButton}\n />\n\n <Dialog open={isChainsListOpenMobile} onOpenChange={setIsChainsListOpenMobile}>\n <DialogContent className={dialogContentClasses} aria-describedby=\"chain-selector-description\">\n <div className={dialogInnerContainerClasses}>\n <DialogHeader title={labels.switchNetworks} onClose={handleDialogClose} />\n\n <div id=\"chain-selector-description\" className=\"novacon:sr-only\">\n {labels.selectChain}\n </div>\n\n <ScrollableChainList\n chainsList={chainsList}\n selectValue={selectValue}\n handleValueChange={handleChainChange}\n getChainData={getChainData}\n onClose={() => setIsChainsListOpenMobile(false)}\n customization={customization?.scrollableChainList}\n />\n </div>\n </DialogContent>\n </Dialog>\n </MobileSelector>\n </div>\n );\n}\n","import { textCenterEllipsis } from '@tuwaio/nova-core';\nimport { getAdapterFromWalletType, OrbitAdapter } from '@tuwaio/orbit-core';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { NovaConnectProviderProps, NovaConnectProviderType } from './useNovaConnect';\n\nexport interface WalletNameAndAvatarData {\n /** The resolved name from the Name Service (e.g., ENS, like \"alice.eth\"), or null if not found. */\n ensName: string | null;\n /** The URL of the avatar associated with the name, or null if not found. */\n ensAvatar: string | null;\n /** True while the name service data is being fetched. */\n isLoading: boolean;\n /** A truncated version of the name for display, or the abbreviated address if no name. */\n ensNameAbbreviated: string | undefined;\n /** Error message if the name resolution failed. */\n error: string | null;\n /** Function to retry the name resolution manually. */\n retry: () => void;\n}\n\ninterface UseGetWalletNameAndAvatarOptions\n extends Pick<NovaConnectProviderProps, 'store'>,\n Pick<NovaConnectProviderType, 'activeWallet'> {\n /** Number of characters to show on each side when abbreviating (default: 12) */\n abbreviateSymbols?: number;\n /** Maximum length before abbreviation is applied (default: 30) */\n maxNameLength?: number;\n /** Whether to automatically retry on failure (default: false) */\n autoRetry?: boolean;\n /** Retry delay in milliseconds (default: 3000) */\n retryDelay?: number;\n}\n\n/**\n * A custom hook to fetch the Name Service (e.g., ENS) name and avatar\n * for the currently active wallet.\n *\n * This hook automatically detects the active wallet and its corresponding\n * adapter via the `useSatelliteConnectStore` and attempts to resolve the\n * wallet address to a human-readable name and avatar.\n *\n * @param options Configuration options for the hook\n * @returns An object containing the resolved name, avatar, loading state, and utility functions\n *\n * @example\n * ```typescript\n * import { useGetWalletNameAndAvatar } from './useGetWalletNameAndAvatar';\n *\n * function DisplayWalletInfo() {\n * const { ensName, ensAvatar, isLoading, ensNameAbbreviated, error, retry } = useGetWalletNameAndAvatar({\n * abbreviateSymbols: 8,\n * maxNameLength: 25\n * });\n *\n * if (isLoading) {\n * return <div>Resolving name...</div>;\n * }\n *\n * if (error) {\n * return <div>Error: {error} <button onClick={retry}>Retry</button></div>;\n * }\n *\n * return (\n * <div className=\"wallet-info\">\n * {ensAvatar && <img src={ensAvatar} alt=\"Wallet Avatar\" />}\n * <p title={ensName || ''}>{ensNameAbbreviated || 'No Name Found'}</p>\n * </div>\n * );\n * }\n * ```\n */\nexport function useGetWalletNameAndAvatar(options: UseGetWalletNameAndAvatarOptions): WalletNameAndAvatarData {\n const { abbreviateSymbols = 12, maxNameLength = 30, autoRetry = false, retryDelay = 3000, store } = options;\n\n // Store state selectors - memoized for performance\n const getAdapter = store.getState().getAdapter;\n\n // Memoize wallet address and adapter for dependency tracking\n const walletAddress = useMemo(() => options.activeWallet?.address, [options.activeWallet?.address]);\n const walletType = useMemo(() => options.activeWallet?.walletType, [options.activeWallet?.walletType]);\n\n const foundAdapter = useMemo(() => {\n if (!walletType) return null;\n return getAdapter(getAdapterFromWalletType(walletType ?? `${OrbitAdapter.EVM}:not-connected`));\n }, [getAdapter, walletType]);\n\n // State variables\n const [ensName, setEnsName] = useState<string | null>(null);\n const [ensAvatar, setEnsAvatar] = useState<string | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n // Refs for cleanup and retry functionality\n const abortControllerRef = useRef<AbortController | null>(null);\n const retryTimeoutRef = useRef<number | null>(null);\n\n // Memoize adapter capabilities\n const adapterCapabilities = useMemo(() => {\n if (!foundAdapter) {\n return { hasNameResolver: false, hasAvatarResolver: false };\n }\n\n const hasNameResolver = 'getName' in foundAdapter && typeof foundAdapter.getName === 'function';\n const hasAvatarResolver = 'getAvatar' in foundAdapter && typeof foundAdapter.getAvatar === 'function';\n\n return { hasNameResolver, hasAvatarResolver };\n }, [foundAdapter]);\n\n // Cleanup function\n const cleanup = useCallback(() => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n abortControllerRef.current = null;\n }\n if (retryTimeoutRef.current !== null) {\n clearTimeout(retryTimeoutRef.current);\n retryTimeoutRef.current = null;\n }\n }, []);\n\n // Main fetch function\n const fetchNameData = useCallback(async () => {\n cleanup();\n\n // Exit conditions\n if (!walletAddress || !foundAdapter || !adapterCapabilities.hasNameResolver) {\n setEnsName(null);\n setEnsAvatar(null);\n setIsLoading(false);\n setError(null);\n return;\n }\n\n // Create new abort controller for this request\n abortControllerRef.current = new AbortController();\n const { signal } = abortControllerRef.current;\n\n // Start loading\n setIsLoading(true);\n setError(null);\n setEnsName(null);\n setEnsAvatar(null);\n\n try {\n // Check if request was aborted\n if (signal.aborted) return;\n\n // Attempt to resolve the name\n const name = await foundAdapter.getName?.(walletAddress);\n\n if (signal.aborted) return;\n\n if (name) {\n setEnsName(name);\n\n // If avatar resolution is supported, fetch the avatar\n if (adapterCapabilities.hasAvatarResolver) {\n try {\n const avatar = await foundAdapter.getAvatar?.(name);\n if (!signal.aborted) {\n // Handle undefined case by converting to null\n setEnsAvatar(avatar ?? null);\n }\n } catch (avatarError) {\n // Avatar fetch failed, but name succeeded - not critical\n console.warn('Failed to fetch avatar:', avatarError);\n if (!signal.aborted) {\n setEnsAvatar(null);\n }\n }\n }\n }\n } catch (error) {\n if (signal.aborted) return;\n\n const errorMessage = error instanceof Error ? error.message : 'Failed to fetch name service data';\n console.error('Failed to fetch name service data:', error);\n\n setError(errorMessage);\n setEnsName(null);\n setEnsAvatar(null);\n\n // Auto retry if enabled\n if (autoRetry) {\n retryTimeoutRef.current = setTimeout(() => {\n fetchNameData();\n }, retryDelay) as unknown as number;\n }\n } finally {\n if (!signal.aborted) {\n setIsLoading(false);\n }\n }\n }, [walletAddress, foundAdapter, adapterCapabilities, autoRetry, retryDelay, cleanup]);\n\n // Manual retry function\n const retry = useCallback(() => {\n setError(null);\n fetchNameData();\n }, [fetchNameData]);\n\n // Effect to fetch data when dependencies change\n useEffect(() => {\n fetchNameData();\n return cleanup;\n }, [fetchNameData, cleanup]);\n\n // Cleanup on unmount\n useEffect(() => {\n return cleanup;\n }, [cleanup]);\n\n // Memoized abbreviated name computation\n const ensNameAbbreviated = useMemo(() => {\n if (ensName) {\n return ensName.length > maxNameLength\n ? textCenterEllipsis(ensName, abbreviateSymbols, abbreviateSymbols)\n : ensName;\n }\n\n return walletAddress ? textCenterEllipsis(walletAddress, abbreviateSymbols, abbreviateSymbols) : undefined;\n }, [ensName, walletAddress, maxNameLength, abbreviateSymbols]);\n\n return {\n ensName,\n ensAvatar,\n isLoading,\n ensNameAbbreviated,\n error,\n retry,\n };\n}\n","import { getAdapterFromWalletType } from '@tuwaio/orbit-core';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { NovaConnectProviderProps, NovaConnectProviderType } from './useNovaConnect';\n\n/**\n * @interface NativeBalanceResult\n * Represents the native token balance returned by the adapter.\n * The value is already formatted for human readability.\n * @property {string} value The native token balance formatted to standard decimals (e.g., \"1.5\").\n * @property {string} symbol The symbol of the native token (e.g., \"ETH\").\n */\nexport interface NativeBalanceResult {\n value: string;\n symbol: string;\n}\n\n// Type for the balance state within the hook (the fetched data or null).\ntype NativeBalanceState = NativeBalanceResult | null;\n\n// Type for the local cache: \"walletAddress-chainId\" -> { value, symbol }.\ntype BalanceCache = Record<string, NativeBalanceResult>;\n\n/**\n * @interface NativeBalanceData\n * The object returned by the useWalletNativeBalance hook.\n * @property {NativeBalanceState} balance The native token balance and symbol, or null.\n * @property {boolean} isLoading True while the balance is being fetched for the current wallet/chain combination.\n * @property {() => void} refetch Function to manually trigger a balance refresh.\n */\ninterface NativeBalanceData {\n balance: NativeBalanceState;\n isLoading: boolean;\n refetch: () => void;\n}\n\n/**\n * Custom hook to fetch the native token balance for the currently connected wallet\n * on the active chain. It includes a local cache layer to prevent redundant network calls\n * when switching between components or on re-renders for the same wallet/chain.\n *\n * @returns {NativeBalanceData} An object containing the balance data and loading state.\n *\n * @example\n * ```typescript\n * import { useWalletNativeBalance } from './useWalletNativeBalance';\n *\n * function NativeTokenDisplay() {\n * const { balance, isLoading, refetch } = useWalletNativeBalance();\n *\n * if (isLoading) {\n * return <p>Loading balance...</p>;\n * }\n *\n * // Display the formatted balance and symbol\n * return (\n * <div>\n * <p>Balance: {balance ? `${balance.value} ${balance.symbol}` : '0.00'}</p>\n * <button onClick={refetch}>Refresh</button>\n * </div>\n * );\n * }\n * ```\n */\nexport function useWalletNativeBalance({\n store,\n activeWallet,\n}: Pick<NovaConnectProviderProps, 'store'> & Pick<NovaConnectProviderType, 'activeWallet'>): NativeBalanceData {\n // --- 1. STATE & CACHE SETUP ---\n\n // Local cache storage. Keys combine wallet address and chain ID.\n const [balanceCache, setBalanceCache] = useState<BalanceCache>({});\n\n // Local loading state, managed alongside the cache check.\n const [isLoading, setIsLoading] = useState<boolean>(false);\n\n // Track the current fetch operation to prevent race conditions\n const fetchOperationRef = useRef<string | null>(null);\n\n // Store state selectors - memoized for performance\n const getAdapter = store.getState().getAdapter;\n\n // --- 2. COMPUTED INPUTS ---\n\n // Create the unique key for cache lookups: \"address-chainId\".\n const cacheKey = useMemo(() => {\n return activeWallet?.chainId && activeWallet?.address ? `${activeWallet.address}-${activeWallet.chainId}` : null;\n }, [activeWallet?.chainId, activeWallet?.address]);\n\n // Find the actual adapter object from the adapter map.\n const foundAdapter = useMemo(() => {\n if (!activeWallet?.walletType) return null;\n return getAdapter(getAdapterFromWalletType(activeWallet.walletType));\n }, [getAdapter, activeWallet?.walletType]);\n\n // Check if the adapter has balance functionality\n const hasBalanceResolver = useMemo(() => {\n return foundAdapter && 'getBalance' in foundAdapter && typeof foundAdapter.getBalance === 'function';\n }, [foundAdapter]);\n\n // --- 3. BALANCE FETCHING LOGIC ---\n\n const fetchBalance = useCallback(\n async (forceRefresh = false) => {\n // Exit early if essential data is missing (not connected).\n if (!activeWallet?.address || !foundAdapter || !activeWallet?.chainId || !cacheKey || !hasBalanceResolver) {\n setIsLoading(false);\n return;\n }\n\n // Set the current operation ID to prevent race conditions\n const operationId = `${cacheKey}-${Date.now()}`;\n fetchOperationRef.current = operationId;\n\n // Check cache unless forcing a refresh\n if (!forceRefresh) {\n const cachedBalance = balanceCache[cacheKey];\n if (cachedBalance) {\n setIsLoading(false);\n return;\n }\n }\n\n setIsLoading(true);\n\n try {\n // Call the adapter's getBalance method\n const balanceResult: NativeBalanceResult = await foundAdapter.getBalance(\n activeWallet.address,\n activeWallet.chainId,\n );\n\n // Only update if this operation is still the latest one\n if (fetchOperationRef.current === operationId) {\n setBalanceCache((prevCache) => ({\n ...prevCache,\n [cacheKey]: balanceResult,\n }));\n }\n } catch (error) {\n console.error(`Failed to fetch native balance for ${cacheKey}:`, error);\n\n // Optionally clear cache entry on error (if you want to retry on next call)\n if (forceRefresh && fetchOperationRef.current === operationId) {\n setBalanceCache((prevCache) => {\n const newCache = { ...prevCache };\n delete newCache[cacheKey];\n return newCache;\n });\n }\n } finally {\n // Only update loading state if this operation is still current\n if (fetchOperationRef.current === operationId) {\n setIsLoading(false);\n }\n }\n },\n [activeWallet?.address, foundAdapter, activeWallet?.chainId, cacheKey, hasBalanceResolver, balanceCache],\n );\n\n // Memoized refetch function that forces a refresh\n const refetch = useCallback(() => {\n fetchBalance(true);\n }, [fetchBalance]);\n\n // --- 4. EFFECT FOR INITIAL FETCH ---\n\n useEffect(() => {\n // Only fetch if we have all required data and no cached result\n if (cacheKey && hasBalanceResolver && !balanceCache[cacheKey]) {\n fetchBalance(false);\n } else if (!cacheKey || !hasBalanceResolver) {\n // Reset loading state if we can't fetch\n setIsLoading(false);\n }\n }, [cacheKey, hasBalanceResolver, balanceCache, fetchBalance]);\n\n // --- 5. CLEANUP EFFECT ---\n\n useEffect(() => {\n return () => {\n // Cancel any ongoing operations when component unmounts\n fetchOperationRef.current = null;\n };\n }, []);\n\n // --- 6. RETURNED DATA ---\n\n // The definitive balance is always derived from the cache based on the current key.\n const balance: NativeBalanceState = useMemo(() => {\n return cacheKey ? balanceCache[cacheKey] || null : null;\n }, [cacheKey, balanceCache]);\n\n // Return the fetched balance data and the loading status.\n return {\n balance, // { value: \"1.5\", symbol: \"ETH\" } or null\n isLoading,\n refetch,\n };\n}\n","/**\n * @file ConnectedModalFooter component with comprehensive customization options and wallet control actions.\n */\n\nimport { cn, standardButtonClasses } from '@tuwaio/nova-core';\nimport { getAdapterFromWalletType } from '@tuwaio/orbit-core';\nimport { type Easing, motion, type Variants } from 'framer-motion';\nimport { ComponentPropsWithoutRef, ComponentType, forwardRef, ReactNode, useCallback, useMemo } from 'react';\n\nimport { useNovaConnect } from '../../hooks/useNovaConnect';\nimport { useNovaConnectLabels } from '../../hooks/useNovaConnectLabels';\nimport { ConnectButtonProps } from '../ConnectButton/ConnectButton';\n\n// --- Default Motion Variants ---\nconst DEFAULT_PATH_ANIMATION_VARIANTS: Variants = {\n hidden: { pathLength: 0, opacity: 0 },\n visible: { pathLength: 1, opacity: 1 },\n};\n\n// --- Types for Customization ---\ntype CustomDisconnectButtonProps = {\n onClick: (event: React.MouseEvent<HTMLButtonElement>) => void;\n labels: Record<string, string>;\n className?: string;\n 'data-testid'?: string;\n 'aria-describedby'?: string;\n disabled?: boolean;\n};\n\ntype CustomExplorerLinkProps = {\n href: string;\n labels: Record<string, string>;\n walletAddress: string;\n isValidUrl: boolean;\n className?: string;\n 'data-testid'?: string;\n 'aria-describedby'?: string;\n onClick?: (event: React.MouseEvent<HTMLAnchorElement>) => void;\n};\n\ntype CustomDisconnectIconProps = {\n pathData: string;\n variants?: Variants;\n className?: string;\n strokeWidth?: string | number;\n strokeLinecap?: 'butt' | 'round' | 'square';\n strokeLinejoin?: 'miter' | 'bevel' | 'round';\n animation?: {\n duration?: number;\n ease?: Easing | Easing[];\n delay?: number;\n };\n};\n\ntype CustomExplorerIconProps = {\n pathData: string;\n variants?: Variants;\n className?: string;\n strokeWidth?: string | number;\n strokeLinecap?: 'butt' | 'round' | 'square';\n strokeLinejoin?: 'miter' | 'bevel' | 'round';\n isAnimated?: boolean;\n animation?: {\n duration?: number;\n ease?: Easing | Easing[];\n delay?: number;\n };\n};\n\ntype CustomFooterContentProps = {\n disconnectButton: ReactNode;\n explorerLink: ReactNode;\n isValidExplorerUrl: boolean;\n walletAddress: string;\n labels: Record<string, string>;\n};\n\n/**\n * Customization options for ConnectedModalFooter component\n */\nexport type ConnectedModalFooterCustomization = {\n /** Override container element props */\n containerProps?: Partial<ComponentPropsWithoutRef<'footer'>>;\n /** Custom components */\n components?: {\n /** Custom disconnect button component */\n DisconnectButton?: ComponentType<CustomDisconnectButtonProps>;\n /** Custom explorer link component */\n ExplorerLink?: ComponentType<CustomExplorerLinkProps>;\n /** Custom disconnect icon component */\n DisconnectIcon?: ComponentType<CustomDisconnectIconProps>;\n /** Custom explorer icon component */\n ExplorerIcon?: ComponentType<CustomExplorerIconProps>;\n /** Custom footer content component (wraps everything) */\n FooterContent?: ComponentType<CustomFooterContentProps>;\n };\n /** Custom class name generators */\n classNames?: {\n /** Function to generate container classes */\n container?: (params: { isValidExplorerUrl: boolean; walletAddress: string }) => string;\n /** Function to generate disconnect button classes */\n disconnectButton?: (params: { disabled?: boolean }) => string;\n /** Function to generate explorer link classes */\n explorerLink?: (params: { isValidUrl: boolean; disabled?: boolean }) => string;\n /** Function to generate disconnect icon container classes */\n disconnectIconContainer?: () => string;\n /** Function to generate explorer icon container classes */\n explorerIconContainer?: () => string;\n /** Function to generate disconnect icon classes */\n disconnectIcon?: () => string;\n /** Function to generate explorer icon classes */\n explorerIcon?: (params: { isValidUrl: boolean }) => string;\n /** Function to generate button text classes */\n buttonText?: (params: { buttonType: 'disconnect' | 'explorer' }) => string;\n /** Function to generate screen reader text classes */\n screenReaderText?: () => string;\n };\n /** Custom animation variants */\n variants?: {\n /** Disconnect icon animation variants */\n disconnectIcon?: Variants;\n /** Explorer icon animation variants */\n explorerIcon?: Variants;\n };\n /** Custom animation configuration */\n animation?: {\n /** Disconnect icon animation configuration */\n disconnectIcon?: {\n /** Animation duration in seconds */\n duration?: number;\n /** Animation easing curve */\n ease?: Easing | Easing[];\n /** Animation delay in seconds */\n delay?: number;\n };\n /** Explorer icon animation configuration */\n explorerIcon?: {\n /** Animation duration in seconds */\n duration?: number;\n /** Animation easing curve */\n ease?: Easing | Easing[];\n /** Animation delay in seconds */\n delay?: number;\n };\n };\n /** Custom SVG properties */\n svg?: {\n /** Custom disconnect icon path */\n disconnectIconPath?: string;\n /** Custom explorer icon path */\n explorerIconPath?: string;\n /** Custom disconnect icon viewBox */\n disconnectIconViewBox?: string;\n /** Custom explorer icon viewBox */\n explorerIconViewBox?: string;\n /** Custom disconnect icon stroke width */\n disconnectIconStrokeWidth?: string | number;\n /** Custom explorer icon stroke width */\n explorerIconStrokeWidth?: string | number;\n /** Custom disconnect icon stroke linecap */\n disconnectIconStrokeLinecap?: 'butt' | 'round' | 'square';\n /** Custom explorer icon stroke linecap */\n explorerIconStrokeLinecap?: 'butt' | 'round' | 'square';\n /** Custom disconnect icon stroke linejoin */\n disconnectIconStrokeLinejoin?: 'miter' | 'bevel' | 'round';\n /** Custom explorer icon stroke linejoin */\n explorerIconStrokeLinejoin?: 'miter' | 'bevel' | 'round';\n };\n /** Custom event handlers */\n handlers?: {\n /** Custom handler for disconnect button click */\n onDisconnectClick?: (originalHandler: () => void, event: React.MouseEvent<HTMLButtonElement>) => void;\n /** Custom handler for explorer link click */\n onExplorerClick?: (explorerUrl: string, walletAddress: string, event: React.MouseEvent<HTMLAnchorElement>) => void;\n /** Custom handler before disconnect */\n onBeforeDisconnect?: () => boolean | Promise<boolean>;\n /** Custom handler after disconnect */\n onAfterDisconnect?: () => void;\n };\n /** Custom text and aria labels */\n labels?: {\n /** Custom disconnect button text */\n disconnectText?: string;\n /** Custom explorer link text */\n explorerText?: string;\n /** Custom disconnect description for screen readers */\n disconnectDescription?: string;\n /** Custom explorer description for screen readers */\n explorerDescription?: string;\n /** Custom footer aria label */\n footerAriaLabel?: string;\n /** Custom explorer unavailable message */\n explorerUnavailableMessage?: string;\n };\n /** Configuration options */\n config?: {\n /** Whether to disable animations */\n disableAnimation?: boolean;\n /** Whether to reduce motion for accessibility */\n reduceMotion?: boolean;\n /** Whether to show disconnect button */\n showDisconnectButton?: boolean;\n /** Whether to show explorer link */\n showExplorerLink?: boolean;\n /** Custom disconnect button test id */\n disconnectButtonTestId?: string;\n /** Custom explorer link test id */\n explorerLinkTestId?: string;\n /** Whether to close modal after disconnect */\n closeModalAfterDisconnect?: boolean;\n /** Custom explorer URL fallback */\n explorerUrlFallback?: string;\n };\n};\n\n/**\n * Props for the ConnectedModalFooter component\n */\nexport interface ConnectedModalFooterProps extends Pick<ConnectButtonProps, 'store'> {\n /** Callback to control modal visibility */\n setIsOpen: (isOpen: boolean) => void;\n /** Custom CSS classes for the container */\n className?: string;\n /** Custom aria-label for the container */\n 'aria-label'?: string;\n /** Customization options */\n customization?: ConnectedModalFooterCustomization;\n}\n\n// --- Default Sub-Components ---\nconst DefaultDisconnectButton: React.FC<\n CustomDisconnectButtonProps & Omit<ComponentPropsWithoutRef<'button'>, 'onClick' | 'style'>\n> = ({\n onClick,\n labels,\n className,\n 'data-testid': testId,\n 'aria-describedby': ariaDescribedBy,\n disabled = false,\n ...props\n}) => {\n const iconPath =\n 'M8.25 9V5.25A2.25 2.25 0 0 1 10.5 3h6a2.25 2.25 0 0 1 2.25 2.25v13.5A2.25 2.25 0 0 1 16.5 21h-6a2.25 2.25 0 0 1-2.25-2.25V15m-3 0-3-3m0 0 3-3m-3 3H15';\n\n return (\n <button\n type=\"button\"\n className={cn(standardButtonClasses, className)}\n onClick={onClick}\n aria-describedby={ariaDescribedBy}\n data-testid={testId}\n disabled={disabled}\n {...props}\n >\n <DefaultDisconnectIcon pathData={iconPath} />\n <span id={ariaDescribedBy} className=\"novacon:sr-only\">\n {labels.disconnect} wallet and close modal\n </span>\n {labels.disconnect}\n </button>\n );\n};\n\nconst DefaultExplorerLink: React.FC<\n CustomExplorerLinkProps &\n Omit<ComponentPropsWithoutRef<'a'>, 'onClick' | 'style'> &\n Pick<ComponentPropsWithoutRef<'button'>, 'type'>\n> = ({\n href,\n labels,\n walletAddress,\n isValidUrl,\n className,\n 'data-testid': testId,\n 'aria-describedby': ariaDescribedBy,\n onClick,\n type,\n ...props\n}) => {\n const iconPath =\n 'M13.5 6H5.25A2.25 2.25 0 0 0 3 8.25v10.5A2.25 2.25 0 0 0 5.25 21h10.5A2.25 2.25 0 0 0 18 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25';\n\n if (isValidUrl) {\n return (\n <a\n href={href}\n className={cn(standardButtonClasses, className)}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n aria-describedby={ariaDescribedBy}\n data-testid={testId}\n onClick={onClick}\n {...props}\n >\n <span className=\"novacon:flex novacon:items-center novacon:gap-2\">\n {labels.viewOnExplorer}\n <DefaultExplorerIcon pathData={iconPath} isAnimated={true} />\n </span>\n <span id={ariaDescribedBy} className=\"novacon:sr-only\">\n Opens in new tab - View wallet address {walletAddress} on blockchain explorer\n </span>\n </a>\n );\n }\n\n return (\n <button\n type={type ?? 'button'}\n className={cn(standardButtonClasses, 'novacon:opacity-50 novacon:cursor-not-allowed', className)}\n disabled\n aria-describedby={ariaDescribedBy}\n title=\"Explorer not available for this network\"\n >\n <span className=\"novacon:flex novacon:items-center novacon:gap-2\">\n {labels.viewOnExplorer}\n <DefaultExplorerIcon pathData={iconPath} isAnimated={false} />\n </span>\n <span id={ariaDescribedBy} className=\"novacon:sr-only\">\n Blockchain explorer is not available for this network\n </span>\n </button>\n );\n};\n\nconst DefaultDisconnectIcon: React.FC<CustomDisconnectIconProps & Omit<ComponentPropsWithoutRef<'svg'>, 'style'>> = ({\n pathData,\n variants = DEFAULT_PATH_ANIMATION_VARIANTS,\n className,\n strokeWidth = 1.5,\n strokeLinecap = 'round',\n strokeLinejoin = 'round',\n animation,\n ...props\n}) => {\n const animationConfig = {\n duration: animation?.duration ?? 0.5,\n ease: animation?.ease ?? 'easeInOut',\n delay: animation?.delay ?? 0,\n };\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={cn('novacon:w-5 novacon:h-5', className)}\n aria-hidden=\"true\"\n {...props}\n >\n <motion.path\n d={pathData}\n strokeLinecap={strokeLinecap}\n strokeLinejoin={strokeLinejoin}\n variants={variants}\n initial=\"hidden\"\n animate=\"visible\"\n transition={animationConfig}\n />\n </svg>\n );\n};\n\nconst DefaultExplorerIcon: React.FC<CustomExplorerIconProps & Omit<ComponentPropsWithoutRef<'svg'>, 'style'>> = ({\n pathData,\n variants = DEFAULT_PATH_ANIMATION_VARIANTS,\n className,\n strokeWidth = 1.5,\n strokeLinecap = 'round',\n strokeLinejoin = 'round',\n isAnimated = true,\n animation,\n ...props\n}) => {\n const animationConfig = {\n duration: animation?.duration ?? 0.5,\n ease: animation?.ease ?? 'easeInOut',\n delay: animation?.delay ?? 0,\n };\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={cn('novacon:w-4 novacon:h-4', className)}\n aria-hidden=\"true\"\n {...props}\n >\n {isAnimated ? (\n <motion.path\n d={pathData}\n strokeLinecap={strokeLinecap}\n strokeLinejoin={strokeLinejoin}\n variants={variants}\n initial=\"hidden\"\n animate=\"visible\"\n transition={animationConfig}\n />\n ) : (\n <path d={pathData} strokeLinecap={strokeLinecap} strokeLinejoin={strokeLinejoin} />\n )}\n </svg>\n );\n};\n\nconst DefaultFooterContent: React.FC<Pick<CustomFooterContentProps, 'disconnectButton' | 'explorerLink'>> = ({\n disconnectButton,\n explorerLink,\n}) => {\n return (\n <>\n {disconnectButton}\n {explorerLink}\n </>\n );\n};\n\n/**\n * ConnectedModalFooter provides wallet control actions with comprehensive customization options.\n * Displays disconnect button and explorer link with full accessibility support and animation capabilities.\n *\n * Features:\n * - Disconnect button with animated icon and modal closure\n * - Explorer link with external indicator and validation\n * - Comprehensive customization for all UI elements and behaviors\n * - Full accessibility support with ARIA labels and screen reader descriptions\n * - Responsive design with mobile-first approach\n * - Custom event handlers for enhanced interactivity\n * - Animation customization with reduced motion support\n * - Custom SVG icons and paths\n * - Error handling for explorer URL generation\n * - Disabled state for unavailable explorer links\n * - Performance-optimized with memoized calculations\n *\n * @example Basic usage\n * ```tsx\n * <ConnectedModalFooter\n * setIsOpen={(open) => setModalOpen(open)}\n * store={walletStore}\n * />\n * ```\n *\n * @example With full customization\n * ```tsx\n * <ConnectedModalFooter\n * setIsOpen={setModalOpen}\n * store={walletStore}\n * customization={{\n * classNames: {\n * container: ({ isValidExplorerUrl }) =>\n * `custom-footer ${isValidExplorerUrl ? 'with-explorer' : 'no-explorer'}`,\n * disconnectButton: () => \"custom-disconnect-btn bg-red-500 text-white\",\n * explorerLink: ({ isValidUrl }) =>\n * `custom-explorer-link ${isValidUrl ? 'active' : 'disabled'}`,\n * },\n * components: {\n * DisconnectButton: ({ onClick, labels, className }) =>\n * <button className={className} onClick={onClick}>Custom {labels.disconnect}</button>,\n * },\n * handlers: {\n * onDisconnectClick: (originalHandler, event) => {\n * console.log(\"Disconnecting...\");\n * originalHandler();\n * },\n * onBeforeDisconnect: async () => {\n * const confirmed = await showConfirmDialog();\n * return confirmed;\n * },\n * onAfterDisconnect: () => {\n * showNotification(\"Wallet disconnected\");\n * },\n * },\n * animation: {\n * disconnectIcon: { duration: 0.8, ease: \"easeOut\" },\n * explorerIcon: { duration: 0.6, delay: 0.1 },\n * },\n * svg: {\n * disconnectIconPath: \"M12 2L2 7v10l10 5 10-5V7L12 2z\",\n * explorerIconPath: \"M8 2L2 8v8l6 6h8l6-6V8L16 2H8z\",\n * disconnectIconStrokeWidth: 2,\n * },\n * config: {\n * closeModalAfterDisconnect: false,\n * showDisconnectButton: true,\n * showExplorerLink: true,\n * reduceMotion: false,\n * },\n * }}\n * />\n * ```\n */\nexport const ConnectedModalFooter = forwardRef<HTMLElement, ConnectedModalFooterProps>(\n ({ setIsOpen, store, className, 'aria-label': ariaLabel, customization, ...props }, ref) => {\n const labels = useNovaConnectLabels();\n const { activeWallet } = useNovaConnect();\n\n // Get wallet state and actions from store\n const getAdapter = store.getState().getAdapter;\n const disconnect = store.getState().disconnect;\n\n // Extract custom components and config\n const {\n DisconnectButton = DefaultDisconnectButton,\n ExplorerLink = DefaultExplorerLink,\n FooterContent = DefaultFooterContent,\n } = customization?.components ?? {};\n\n const {\n showDisconnectButton = true,\n showExplorerLink = true,\n disconnectButtonTestId = 'disconnect-button',\n explorerLinkTestId = 'explorer-link',\n closeModalAfterDisconnect = true,\n explorerUrlFallback = '#',\n } = customization?.config ?? {};\n\n // Memoize custom labels\n const finalLabels = useMemo(\n () => ({\n ...labels,\n ...(customization?.labels && {\n disconnect: customization.labels.disconnectText ?? labels.disconnect,\n viewOnExplorer: customization.labels.explorerText ?? labels.viewOnExplorer,\n walletControls: customization.labels.footerAriaLabel ?? labels.walletControls,\n }),\n }),\n [labels, customization?.labels],\n );\n\n /**\n * Generate explorer URL for the current wallet address\n * Memoized to prevent unnecessary recalculations\n */\n const explorerUrl = useMemo(() => {\n if (!activeWallet) return explorerUrlFallback;\n\n try {\n const adapter = getAdapter(getAdapterFromWalletType(activeWallet.walletType));\n return adapter?.getExplorerUrl(`/address/${activeWallet.address}`, activeWallet.chainId) || explorerUrlFallback;\n } catch (error) {\n console.warn('Failed to generate explorer URL:', error);\n return explorerUrlFallback;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeWallet?.walletType, activeWallet?.address, activeWallet?.chainId, getAdapter, explorerUrlFallback]);\n\n /**\n * Check if explorer URL is valid for link functionality\n */\n const isValidExplorerUrl = useMemo(\n () => explorerUrl !== '#' && explorerUrl !== explorerUrlFallback,\n [explorerUrl, explorerUrlFallback],\n );\n\n /**\n * Handle wallet disconnection with custom hooks\n */\n const handleDisconnect = useCallback(\n async (event: React.MouseEvent<HTMLButtonElement>) => {\n try {\n // Custom before disconnect handler\n if (customization?.handlers?.onBeforeDisconnect) {\n const shouldProceed = await customization.handlers.onBeforeDisconnect();\n if (!shouldProceed) return;\n }\n\n // Custom disconnect click handler\n const originalHandler = () => {\n disconnect();\n if (closeModalAfterDisconnect) {\n setIsOpen(false);\n }\n };\n\n if (customization?.handlers?.onDisconnectClick) {\n customization.handlers.onDisconnectClick(originalHandler, event);\n } else {\n originalHandler();\n }\n\n // Custom after disconnect handler\n if (customization?.handlers?.onAfterDisconnect) {\n customization.handlers.onAfterDisconnect();\n }\n } catch (error) {\n console.error('Error during disconnect:', error);\n }\n },\n [disconnect, setIsOpen, customization, closeModalAfterDisconnect],\n );\n\n /**\n * Handle explorer link click with custom handler\n */\n const handleExplorerClick = useCallback(\n (event: React.MouseEvent<HTMLAnchorElement>) => {\n if (customization?.handlers?.onExplorerClick && activeWallet) {\n customization.handlers.onExplorerClick(explorerUrl, activeWallet.address, event);\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [customization?.handlers?.onExplorerClick, explorerUrl, activeWallet?.address],\n );\n\n // Generate container classes\n const containerClasses = useMemo(() => {\n if (customization?.classNames?.container && activeWallet) {\n return customization.classNames.container({\n isValidExplorerUrl,\n walletAddress: activeWallet.address,\n });\n }\n return cn(\n 'novacon:flex novacon:flex-wrap novacon:gap-4 novacon:w-full novacon:items-center novacon:justify-between novacon:border-t novacon:border-[var(--tuwa-border-primary)] novacon:p-4 novacon:flex-col-reverse novacon:sm:flex-row',\n className,\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customization?.classNames?.container, isValidExplorerUrl, activeWallet?.address, className]);\n\n // Generate disconnect button element\n const disconnectButtonElement = useMemo(() => {\n if (!showDisconnectButton || !activeWallet) return null;\n\n return (\n <DisconnectButton\n onClick={handleDisconnect}\n labels={finalLabels}\n className={customization?.classNames?.disconnectButton?.({})}\n data-testid={disconnectButtonTestId}\n aria-describedby=\"disconnect-description\"\n />\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n showDisconnectButton,\n activeWallet,\n DisconnectButton,\n handleDisconnect,\n finalLabels,\n customization?.classNames?.disconnectButton,\n disconnectButtonTestId,\n ]);\n\n // Generate explorer link element\n const explorerLinkElement = useMemo(() => {\n if (!showExplorerLink || !activeWallet) return null;\n\n return (\n <ExplorerLink\n href={explorerUrl}\n labels={finalLabels}\n walletAddress={activeWallet.address}\n isValidUrl={isValidExplorerUrl}\n className={customization?.classNames?.explorerLink?.({\n isValidUrl: isValidExplorerUrl,\n disabled: !isValidExplorerUrl,\n })}\n data-testid={explorerLinkTestId}\n aria-describedby=\"explorer-description\"\n onClick={handleExplorerClick}\n />\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n showExplorerLink,\n activeWallet,\n ExplorerLink,\n explorerUrl,\n finalLabels,\n isValidExplorerUrl,\n customization?.classNames?.explorerLink,\n explorerLinkTestId,\n handleExplorerClick,\n ]);\n\n // Merge container props\n const containerProps = useMemo(\n () => ({\n ...customization?.containerProps,\n ...props,\n ref,\n className: containerClasses,\n role: 'contentinfo',\n 'aria-label': ariaLabel || finalLabels.walletControls,\n }),\n [customization?.containerProps, props, ref, containerClasses, ariaLabel, finalLabels],\n );\n\n // Early return if no active wallet\n if (!activeWallet) return null;\n\n return (\n <footer {...containerProps}>\n <FooterContent\n disconnectButton={disconnectButtonElement}\n explorerLink={explorerLinkElement}\n isValidExplorerUrl={isValidExplorerUrl}\n walletAddress={activeWallet.address}\n labels={finalLabels}\n />\n </footer>\n );\n },\n);\n\nConnectedModalFooter.displayName = 'ConnectedModalFooter';\n","/**\n * @file This file contains the `WalletAvatar` component, a customizable user avatar renderer with ENS support and blockie fallback.\n */\n\nimport { cn } from '@tuwaio/nova-core';\nimport makeBlockie from 'ethereum-blockies-base64';\nimport { ComponentPropsWithoutRef, ComponentType, forwardRef, useCallback, useMemo, useState } from 'react';\n\nimport { useNovaConnectLabels } from '../hooks/useNovaConnectLabels';\n\n// --- Types for Customization ---\ntype CustomLoadingOverlayProps = {\n isLoading: boolean;\n showLoading: boolean;\n disableAnimation: boolean;\n size: WalletAvatarSize;\n};\n\ntype CustomAvatarImageProps = {\n src: string;\n isLoading: boolean;\n onLoad: () => void;\n onError: (event: React.SyntheticEvent<HTMLImageElement, Event>) => void;\n address: string;\n ensAvatar?: string | null;\n size: WalletAvatarSize;\n};\n\ntype CustomFallbackContentProps = {\n address: string;\n formattedAddress: string;\n size: WalletAvatarSize;\n};\n\nexport type WalletAvatarSize = 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * Customization options for WalletAvatar component\n */\nexport type WalletAvatarCustomization = {\n /** Override container element props */\n containerProps?: Partial<ComponentPropsWithoutRef<'div'>>;\n /** Override image element props */\n imageProps?: Partial<ComponentPropsWithoutRef<'img'>>;\n /** Custom components */\n components?: {\n /** Custom loading overlay component */\n LoadingOverlay?: ComponentType<CustomLoadingOverlayProps>;\n /** Custom avatar image component */\n AvatarImage?: ComponentType<CustomAvatarImageProps>;\n /** Custom fallback content component for extreme error cases */\n FallbackContent?: ComponentType<CustomFallbackContentProps>;\n };\n /** Custom class name generators */\n classNames?: {\n /** Function to generate container classes */\n container?: (params: { size: WalletAvatarSize; bgColor: string; address: string }) => string;\n /** Function to generate loading overlay classes */\n loadingOverlay?: (params: { isLoading: boolean; showLoading: boolean; disableAnimation: boolean }) => string;\n /** Function to generate image classes */\n image?: (params: { isLoading: boolean; size: WalletAvatarSize; hasError: boolean }) => string;\n /** Function to generate fallback content classes */\n fallbackContent?: (params: { size: WalletAvatarSize; address: string }) => string;\n };\n /** Custom utilities */\n utils?: {\n /** Custom blockie generator function */\n generateBlockie?: (address: string) => string | null;\n /** Custom background color generator function */\n generateBgColor?: (address: string) => string;\n /** Custom address formatter function */\n formatAddress?: (address: string, labels: any) => string;\n };\n};\n\nexport interface WalletAvatarProps extends Omit<ComponentPropsWithoutRef<'div'>, 'role'> {\n /** The user's wallet address, used for the blockie fallback and background color. */\n address: string;\n /** An optional URL for the user's ENS avatar image. */\n ensAvatar?: string | null;\n /** Custom alt text for the avatar image */\n altText?: string;\n /** Size variant for the avatar */\n size?: WalletAvatarSize;\n /** Whether to show loading animation */\n showLoading?: boolean;\n /** Callback fired when image loads successfully */\n onImageLoad?: () => void;\n /** Callback fired when image fails to load */\n onImageError?: (error: Event) => void;\n /** Whether to disable the pulse animation */\n disableAnimation?: boolean;\n /** Customization options */\n customization?: WalletAvatarCustomization;\n}\n\n// --- Utility Functions ---\nfunction isHex(value: unknown, { strict = true }: { strict?: boolean | undefined } = {}): value is `0x${string}` {\n if (!value) return false;\n if (typeof value !== 'string') return false;\n return strict ? /^0x[0-9a-fA-F]*$/.test(value) : value.startsWith('0x');\n}\n\nconst zeroAddress = '0x0000000000000000000000000000000000000000';\n\n// Size mapping for different avatar sizes\nconst sizeClasses = {\n sm: 'novacon:h-4 novacon:w-4',\n md: 'novacon:h-6 novacon:w-6',\n lg: 'novacon:h-8 novacon:w-8',\n xl: 'novacon:h-12 novacon:w-12',\n} as const;\n\n// --- Default Sub-Components ---\nconst DefaultLoadingOverlay = ({ isLoading, showLoading, disableAnimation }: CustomLoadingOverlayProps) => {\n const loadingClasses = cn(\n 'novacon:absolute novacon:inset-0 novacon:rounded-full novacon:bg-[var(--tuwa-bg-muted)]',\n {\n 'novacon:animate-pulse': !disableAnimation && showLoading && isLoading,\n 'novacon:opacity-0': !isLoading || !showLoading,\n },\n 'novacon:transition-opacity novacon:duration-300',\n );\n\n return <div className={loadingClasses} aria-hidden=\"true\" />;\n};\n\nconst DefaultAvatarImage = ({ src, isLoading, onLoad, onError, address, ensAvatar }: CustomAvatarImageProps) => {\n return (\n <img\n key={`${ensAvatar || 'blockie'}-${address}`}\n className={cn(\n 'novacon:h-full novacon:w-full novacon:rounded-full novacon:object-cover novacon:relative novacon:z-10',\n 'novacon:transition-opacity novacon:duration-300 novacon:opacity-100',\n {\n 'novacon:opacity-0': isLoading,\n },\n )}\n src={src}\n alt=\"\"\n onLoad={onLoad}\n onError={onError}\n loading=\"lazy\"\n decoding=\"async\"\n draggable={false}\n />\n );\n};\n\nconst DefaultFallbackContent = ({ formattedAddress }: CustomFallbackContentProps) => {\n return (\n <div\n className=\"novacon:absolute novacon:inset-0 novacon:flex novacon:items-center novacon:justify-center novacon:text-white novacon:text-xs novacon:font-mono\"\n aria-hidden=\"true\"\n >\n {formattedAddress.slice(0, 2)}\n </div>\n );\n};\n\n// --- Default Utility Functions ---\nconst defaultGenerateBlockie = (address: string): string | null => {\n try {\n return makeBlockie(isHex(address) ? address : zeroAddress);\n } catch (error) {\n console.warn('Failed to generate blockie for address:', address, error);\n return null;\n }\n};\n\nconst defaultGenerateBgColor = (address: string): string => {\n try {\n if (!isHex(address)) return '#6B7280';\n const colorHex = address.slice(2, 8);\n return colorHex.length === 6 ? `#${colorHex}` : '#6B7280';\n } catch {\n return '#6B7280';\n }\n};\n\nconst defaultFormatAddress = (address: string, labels: any): string => {\n if (!address) return labels.unknownWallet;\n return `${address.slice(0, 6)}...${address.slice(-4)}`;\n};\n\n/**\n * A highly customizable wallet avatar component with ENS support, blockie fallback, and extensive styling options.\n * Provides comprehensive customization for container, image, loading states, and fallback content while maintaining accessibility.\n */\nexport const WalletAvatar = forwardRef<HTMLDivElement, WalletAvatarProps>(\n (\n {\n address,\n ensAvatar,\n className,\n altText,\n size = 'md',\n showLoading = true,\n onImageLoad,\n onImageError,\n disableAnimation = false,\n customization,\n ...props\n },\n ref,\n ) => {\n const labels = useNovaConnectLabels();\n\n // State management\n const [imageSrc, setImageSrc] = useState<string | null>(ensAvatar ?? null);\n const [isLoading, setIsLoading] = useState(Boolean(ensAvatar));\n const [hasError, setHasError] = useState(false);\n\n // Extract custom components and utilities\n const {\n LoadingOverlay = DefaultLoadingOverlay,\n AvatarImage = DefaultAvatarImage,\n FallbackContent = DefaultFallbackContent,\n } = customization?.components ?? {};\n\n const {\n generateBlockie = defaultGenerateBlockie,\n generateBgColor = defaultGenerateBgColor,\n formatAddress = defaultFormatAddress,\n } = customization?.utils ?? {};\n\n // Generate blockie using custom or default function\n const blockie = useMemo(() => generateBlockie(address), [address, generateBlockie]);\n\n // Generate background color using custom or default function\n const bgColor = useMemo(() => generateBgColor(address), [address, generateBgColor]);\n\n // Format address using custom or default function\n const formattedAddress = useMemo(() => formatAddress(address, labels), [address, labels, formatAddress]);\n\n // Generate alt text for accessibility\n const imageAltText = useMemo(() => {\n if (altText) return altText;\n if (hasError || !ensAvatar) {\n return `${labels.walletAvatar} ${formattedAddress}`;\n }\n return `${labels.ensAvatar} ${formattedAddress}`;\n }, [altText, hasError, ensAvatar, formattedAddress, labels.walletAvatar, labels.ensAvatar]);\n\n // Reset image source when ensAvatar changes\n const currentEnsAvatar = useMemo(() => ensAvatar ?? null, [ensAvatar]);\n\n useMemo(() => {\n setImageSrc(currentEnsAvatar);\n setIsLoading(Boolean(currentEnsAvatar));\n setHasError(false);\n }, [currentEnsAvatar]);\n\n // Handle image load success\n const handleImageLoad = useCallback(() => {\n setIsLoading(false);\n setHasError(false);\n onImageLoad?.();\n }, [onImageLoad]);\n\n // Handle image load error\n const handleImageError = useCallback(\n (event: React.SyntheticEvent<HTMLImageElement, Event>) => {\n setIsLoading(false);\n setHasError(true);\n setImageSrc(blockie);\n onImageError?.(event.nativeEvent);\n },\n [blockie, onImageError],\n );\n\n // Generate container classes\n const containerClasses = useMemo(() => {\n if (customization?.classNames?.container) {\n return customization.classNames.container({ size, bgColor, address });\n }\n return cn(\n sizeClasses[size],\n 'novacon:flex-shrink-0 novacon:rounded-full novacon:relative novacon:overflow-hidden',\n 'novacon:ring-1 novacon:ring-[var(--tuwa-border-primary)]',\n 'novacon:focus-within:ring-2 novacon:focus-within:ring-[var(--tuwa-text-accent)]',\n className,\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customization?.classNames?.container, size, bgColor, address, className]);\n\n // Get current image source with fallback\n const currentImageSrc = imageSrc || blockie || '';\n\n // Merge container props\n const containerProps = useMemo(\n () => ({\n ...customization?.containerProps,\n ...props,\n ref,\n className: containerClasses,\n role: 'img' as const,\n 'aria-label': imageAltText,\n title: imageAltText,\n }),\n [customization?.containerProps, props, ref, containerClasses, imageAltText],\n );\n\n return (\n <div {...containerProps}>\n {/* Loading overlay */}\n <LoadingOverlay\n isLoading={isLoading}\n showLoading={showLoading}\n disableAnimation={disableAnimation}\n size={size}\n />\n\n {/* Avatar image */}\n {currentImageSrc && (\n <AvatarImage\n src={currentImageSrc}\n isLoading={isLoading}\n onLoad={handleImageLoad}\n onError={handleImageError}\n address={address}\n ensAvatar={ensAvatar}\n size={size}\n />\n )}\n\n {/* Fallback content for extreme error cases */}\n {!currentImageSrc && <FallbackContent address={address} formattedAddress={formattedAddress} size={size} />}\n </div>\n );\n },\n);\n\nWalletAvatar.displayName = 'WalletAvatar';\n","/**\n * @file ConnectedModalNameAndBalance component with comprehensive customization options for wallet name and balance display.\n */\n\nimport { CheckIcon, DocumentDuplicateIcon } from '@heroicons/react/24/solid';\nimport { cn, useCopyToClipboard } from '@tuwaio/nova-core';\nimport { AnimatePresence, type Easing, motion, type Variants } from 'framer-motion';\nimport React, { ComponentPropsWithoutRef, ComponentType, forwardRef, useCallback, useMemo } from 'react';\n\nimport { useNovaConnect } from '../../hooks/useNovaConnect';\nimport { useNovaConnectLabels } from '../../hooks/useNovaConnectLabels';\nimport { ConnectedModalMainContentProps } from './ConnectedModalMainContent';\n\n// --- Default Motion Variants ---\nconst DEFAULT_CONTAINER_ANIMATION_VARIANTS: Variants = {\n initial: { opacity: 0, y: 8 },\n animate: { opacity: 1, y: 0, transition: { duration: 0.3, ease: 'easeOut' } },\n exit: { opacity: 0, y: -8, transition: { duration: 0.2, ease: 'easeIn' } },\n};\n\nconst DEFAULT_COPY_ICON_ANIMATION_VARIANTS: Variants = {\n initial: { scale: 0.6, opacity: 0, rotate: 90 },\n animate: { scale: 1, opacity: 1, rotate: 0, transition: { duration: 0.2, ease: 'easeInOut' } },\n exit: { scale: 0.6, opacity: 0, rotate: -90, transition: { duration: 0.2, ease: 'easeInOut' } },\n};\n\nconst DEFAULT_CHECK_ICON_ANIMATION_VARIANTS: Variants = {\n initial: { scale: 0.6, opacity: 0, rotate: -90 },\n animate: { scale: 1, opacity: 1, rotate: 0, transition: { duration: 0.2, ease: 'easeInOut' } },\n exit: { scale: 0.6, opacity: 0, rotate: 90, transition: { duration: 0.2, ease: 'easeInOut' } },\n};\n\nconst DEFAULT_LOADING_ANIMATION_VARIANTS: Variants = {\n initial: { opacity: 0, scale: 0.95 },\n animate: { opacity: 1, scale: 1, transition: { duration: 0.2, ease: 'easeOut' } },\n exit: { opacity: 0, scale: 0.95, transition: { duration: 0.15, ease: 'easeIn' } },\n};\n\n// --- Types for Customization ---\ntype WalletNameDisplayProps = {\n ensNameAbbreviated?: string;\n activeWallet: NonNullable<ReturnType<typeof useNovaConnect>['activeWallet']>;\n labels: Record<string, string>;\n className?: string;\n};\n\ntype CopyButtonProps = {\n isCopied: boolean;\n onCopy: () => Promise<void>;\n activeWallet: NonNullable<ReturnType<typeof useNovaConnect>['activeWallet']>;\n labels: Record<string, string>;\n className?: string;\n disabled?: boolean;\n};\n\ntype BalanceDisplayProps = {\n balance?: ConnectedModalMainContentProps['balance'];\n balanceLoading: boolean;\n labels: Record<string, string>;\n className?: string;\n};\n\ntype ScreenReaderFeedbackProps = {\n isCopied: boolean;\n activeWallet: NonNullable<ReturnType<typeof useNovaConnect>['activeWallet']>;\n labels: Record<string, string>;\n className?: string;\n};\n\ntype LiveRegionProps = {\n balanceLoading: boolean;\n balance?: ConnectedModalMainContentProps['balance'];\n labels: Record<string, string>;\n className?: string;\n};\n\n/**\n * Customization options for ConnectedModalNameAndBalance component\n */\nexport type ConnectedModalNameAndBalanceCustomization = {\n /** Override root container props */\n containerProps?: Partial<\n Omit<\n ComponentPropsWithoutRef<'section'>,\n | 'popover'\n | 'onDrag'\n | 'onDragEnd'\n | 'onDragExit'\n | 'onDragStart'\n | 'onDragStartCapture'\n | 'onAnimationStart'\n | 'onAnimationEnd'\n | 'onAnimationStartCapture'\n | 'onAnimationEndCapture'\n | 'onAnimationIteration'\n | 'onAnimationIterationCapture'\n >\n >;\n /** Custom components */\n components?: {\n /** Custom wallet name display component */\n WalletNameDisplay?: ComponentType<WalletNameDisplayProps>;\n /** Custom copy button component */\n CopyButton?: ComponentType<CopyButtonProps>;\n /** Custom balance display component */\n BalanceDisplay?: ComponentType<BalanceDisplayProps>;\n /** Custom screen reader feedback component */\n ScreenReaderFeedback?: ComponentType<ScreenReaderFeedbackProps>;\n /** Custom live region component */\n LiveRegion?: ComponentType<LiveRegionProps>;\n };\n /** Custom class name generators */\n classNames?: {\n /** Function to generate container classes */\n container?: (params: {\n hasActiveWallet: boolean;\n isCopied: boolean;\n balanceLoading: boolean;\n hasBalance: boolean;\n }) => string;\n /** Function to generate wallet name header container classes */\n walletNameHeaderContainer?: () => string;\n /** Function to generate wallet name display classes */\n walletNameDisplay?: (params: { ensNameAbbreviated?: string }) => string;\n /** Function to generate copy button classes */\n copyButton?: (params: { isCopied: boolean; disabled: boolean }) => string;\n /** Function to generate copy icon classes */\n copyIcon?: () => string;\n /** Function to generate check icon classes */\n checkIcon?: () => string;\n /** Function to generate balance container classes */\n balanceContainer?: () => string;\n /** Function to generate balance loading classes */\n balanceLoading?: () => string;\n /** Function to generate balance display classes */\n balanceDisplay?: () => string;\n /** Function to generate balance value classes */\n balanceValue?: () => string;\n /** Function to generate balance symbol classes */\n balanceSymbol?: () => string;\n /** Function to generate no balance classes */\n noBalance?: () => string;\n /** Function to generate screen reader feedback classes */\n screenReaderFeedback?: () => string;\n /** Function to generate live region classes */\n liveRegion?: () => string;\n };\n /** Custom animation variants */\n variants?: {\n /** Container animation variants */\n container?: Variants;\n /** Copy icon animation variants */\n copyIcon?: Variants;\n /** Check icon animation variants */\n checkIcon?: Variants;\n /** Loading animation variants */\n loading?: Variants;\n };\n /** Custom animation configuration */\n animation?: {\n /** Container animation configuration */\n container?: {\n /** Animation duration in seconds */\n duration?: number;\n /** Animation easing curve */\n ease?: Easing | Easing[];\n /** Animation delay in seconds */\n delay?: number;\n };\n /** Icon animation configuration */\n icon?: {\n /** Animation duration in seconds */\n duration?: number;\n /** Animation easing curve */\n ease?: Easing | Easing[];\n /** Animation delay in seconds */\n delay?: number;\n };\n /** Loading animation configuration */\n loading?: {\n /** Animation duration in seconds */\n duration?: number;\n /** Animation easing curve */\n ease?: Easing | Easing[];\n /** Animation delay in seconds */\n delay?: number;\n };\n };\n /** Custom event handlers */\n handlers?: {\n /** Custom handler for copy success */\n onCopySuccess?: (address: string) => void;\n /** Custom handler for copy error */\n onCopyError?: (error: Error, address: string) => void;\n /** Custom handler for balance format */\n onBalanceFormat?: (balance: ConnectedModalMainContentProps['balance']) => string | null;\n /** Custom handler for keyboard interactions */\n onKeyboardInteraction?: (event: React.KeyboardEvent, action: 'copy') => void;\n };\n /** Configuration options */\n config?: {\n /** Whether to disable animations */\n disableAnimation?: boolean;\n /** Whether to reduce motion for accessibility */\n reduceMotion?: boolean;\n /** Custom copy button position */\n copyButtonPosition?: 'right' | 'left' | 'top' | 'bottom';\n /** Custom ARIA labels for different states */\n ariaLabels?: {\n container?: string;\n walletNameHeader?: string;\n walletNameDisplay?: string;\n copyButton?: string;\n balanceContainer?: string;\n balanceLoading?: string;\n balanceDisplay?: string;\n noBalance?: string;\n screenReaderFeedback?: string;\n liveRegion?: string;\n };\n };\n};\n\n/**\n * Props for the ConnectedModalNameAndBalance component\n */\nexport interface ConnectedModalNameAndBalanceProps\n extends Pick<ConnectedModalMainContentProps, 'balanceLoading' | 'ensNameAbbreviated' | 'balance'> {\n /** Additional CSS classes for the container */\n className?: string;\n /** Custom aria-label for the container */\n 'aria-label'?: string;\n /** Customization options */\n customization?: ConnectedModalNameAndBalanceCustomization;\n}\n\n// --- Default Sub-Components ---\nconst DefaultWalletNameDisplay: React.FC<WalletNameDisplayProps> = ({ ensNameAbbreviated, className }) => {\n return (\n <h3\n className={cn('novacon:text-xl novacon:font-bold', className)}\n role=\"heading\"\n aria-level={3}\n aria-label={`Wallet name: ${ensNameAbbreviated || 'Loading wallet name'}`}\n >\n {ensNameAbbreviated}\n </h3>\n );\n};\n\nconst DefaultCopyButton: React.FC<CopyButtonProps> = ({\n isCopied,\n onCopy,\n activeWallet,\n labels,\n className,\n disabled,\n}) => {\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n void onCopy();\n }\n },\n [onCopy],\n );\n\n const getCopyButtonAriaLabel = useCallback(() => {\n const baseLabel = isCopied ? labels.copied : `Copy ${labels.walletAddress}`;\n const addressInfo = activeWallet?.address ? ` (${activeWallet.address})` : '';\n return `${baseLabel}${addressInfo}`;\n }, [isCopied, labels, activeWallet]);\n\n return (\n <button\n type=\"button\"\n onClick={() => void onCopy()}\n onKeyDown={handleKeyDown}\n className={cn(\n 'novacon:cursor-pointer novacon:flex novacon:items-center novacon:justify-center novacon:text-sm novacon:transition-all novacon:duration-200 novacon:absolute novacon:right-[-40px]',\n 'novacon:rounded-md novacon:p-1.5 novacon:focus:outline-none novacon:focus:ring-2 novacon:focus:ring-[var(--tuwa-text-accent)] novacon:focus:ring-opacity-50',\n 'novacon:hover:scale-110 novacon:active:scale-95',\n isCopied\n ? [\n 'novacon:text-[var(--tuwa-success-text)]',\n 'novacon:hover:text-[var(--tuwa-success-text)]',\n 'novacon:bg-[var(--tuwa-success-text)] novacon:bg-opacity-10',\n ]\n : [\n 'novacon:text-[var(--tuwa-text-tertiary)]',\n 'novacon:hover:text-[var(--tuwa-text-primary)]',\n 'novacon:hover:bg-[var(--tuwa-bg-muted)]',\n ],\n className,\n )}\n aria-label={getCopyButtonAriaLabel()}\n aria-describedby=\"copy-feedback\"\n disabled={disabled}\n data-testid=\"copy-address-button\"\n >\n {/* Animated Icon Transition */}\n <AnimatePresence mode=\"wait\" initial={false}>\n {isCopied ? (\n <motion.div\n key=\"check-icon\"\n variants={DEFAULT_CHECK_ICON_ANIMATION_VARIANTS}\n initial=\"initial\"\n animate=\"animate\"\n exit=\"exit\"\n >\n <CheckIcon className=\"novacon:w-5 novacon:h-5\" aria-hidden=\"true\" />\n </motion.div>\n ) : (\n <motion.div\n key=\"copy-icon\"\n variants={DEFAULT_COPY_ICON_ANIMATION_VARIANTS}\n initial=\"initial\"\n animate=\"animate\"\n exit=\"exit\"\n >\n <DocumentDuplicateIcon className=\"novacon:w-5 novacon:h-5\" aria-hidden=\"true\" />\n </motion.div>\n )}\n </AnimatePresence>\n </button>\n );\n};\n\nconst DefaultBalanceDisplay: React.FC<BalanceDisplayProps> = ({ balance, balanceLoading, labels, className }) => {\n const balanceDisplay = useMemo(() => {\n if (!balance?.value || !balance?.symbol) return null;\n return `${balance.value} ${balance.symbol}`;\n }, [balance]);\n\n if (balanceLoading) {\n return (\n <motion.div\n variants={DEFAULT_LOADING_ANIMATION_VARIANTS}\n initial=\"initial\"\n animate=\"animate\"\n exit=\"exit\"\n className={cn(\n 'novacon:animate-pulse novacon:rounded-xl novacon:h-5 novacon:w-24 novacon:bg-[var(--tuwa-bg-muted)]',\n className,\n )}\n role=\"status\"\n aria-label={labels.loading}\n >\n <span className=\"novacon:sr-only\">\n {labels.loading} {labels.walletBalance}\n </span>\n </motion.div>\n );\n }\n\n if (balanceDisplay) {\n return (\n <p\n className={cn(\n 'novacon:flex novacon:items-center novacon:gap-1 novacon:text-sm novacon:text-[var(--tuwa-text-tertiary)]',\n className,\n )}\n role=\"text\"\n aria-label={`${labels.walletBalance}: ${balanceDisplay}`}\n >\n <span aria-hidden=\"true\">{balance?.value}</span>\n <span aria-hidden=\"true\">{balance?.symbol}</span>\n\n {/* Screen reader friendly version */}\n <span className=\"novacon:sr-only\">\n {labels.walletBalance}: {balanceDisplay}\n </span>\n </p>\n );\n }\n\n return (\n <p\n className={cn('novacon:text-sm novacon:text-[var(--tuwa-text-tertiary)] novacon:opacity-75', className)}\n role=\"text\"\n aria-label=\"No balance information available\"\n >\n <span aria-hidden=\"true\">—</span>\n <span className=\"novacon:sr-only\">No balance information available</span>\n </p>\n );\n};\n\nconst DefaultScreenReaderFeedback: React.FC<ScreenReaderFeedbackProps> = ({\n isCopied,\n activeWallet,\n labels,\n className,\n}) => {\n return (\n <span id=\"copy-feedback\" className={cn('novacon:sr-only', className)} aria-live=\"polite\" role=\"status\">\n {isCopied ? `${labels.copied} ${activeWallet.address}` : ''}\n </span>\n );\n};\n\nconst DefaultLiveRegion: React.FC<LiveRegionProps> = ({ balanceLoading, balance, className }) => {\n const balanceDisplay = useMemo(() => {\n if (!balance?.value || !balance?.symbol) return null;\n return `${balance.value} ${balance.symbol}`;\n }, [balance]);\n\n return (\n <div className={cn('novacon:sr-only', className)} aria-live=\"polite\" aria-atomic=\"true\" role=\"status\">\n {/* This will announce balance updates to screen readers */}\n {!balanceLoading && balanceDisplay && `Balance updated: ${balanceDisplay}`}\n </div>\n );\n};\n\n/**\n * Component that displays wallet name/ENS and balance information with copy functionality and comprehensive customization options.\n *\n * This component provides a comprehensive display of wallet identification and balance:\n * - ENS name or abbreviated wallet address\n * - Animated copy button with visual feedback\n * - Loading states for balance information\n * - Proper accessibility support with ARIA labels\n * - Smooth animations for state transitions\n * - Comprehensive customization for all UI elements and behaviors\n * - Animation support with reduced motion options\n * - Custom event handlers for enhanced interactivity\n * - Performance-optimized with memoized calculations\n *\n * The component automatically handles wallet address copying with visual feedback\n * and provides screen reader friendly content throughout all interactions.\n *\n * @example Basic usage\n * ```tsx\n * <ConnectedModalNameAndBalance\n * ensNameAbbreviated=\"wallet.eth\"\n * balanceLoading={false}\n * balance={{ value: \"1.23\", symbol: \"ETH\" }}\n * />\n * ```\n *\n * @example With full customization\n * ```tsx\n * <ConnectedModalNameAndBalance\n * ensNameAbbreviated=\"wallet.eth\"\n * balanceLoading={false}\n * balance={{ value: \"1.23\", symbol: \"ETH\" }}\n * customization={{\n * classNames: {\n * container: ({ hasActiveWallet }) =>\n * `custom-container ${hasActiveWallet ? 'has-wallet' : 'no-wallet'}`,\n * walletNameDisplay: () => \"text-2xl font-bold text-blue-600\",\n * copyButton: ({ isCopied }) =>\n * `copy-btn ${isCopied ? 'success' : 'default'}`,\n * },\n * components: {\n * WalletNameDisplay: ({ ensNameAbbreviated, className }) =>\n * <h2 className={className}>{ensNameAbbreviated}</h2>,\n * },\n * handlers: {\n * onCopySuccess: (address) => console.log(`Copied: ${address}`),\n * onCopyError: (error, address) =>\n * console.error(`Failed to copy ${address}:`, error),\n * },\n * config: {\n * copyButtonPosition: 'left',\n * ariaLabels: {\n * container: 'Wallet information section',\n * },\n * },\n * }}\n * />\n * ```\n */\nexport const ConnectedModalNameAndBalance = forwardRef<HTMLElement, ConnectedModalNameAndBalanceProps>(\n (\n { ensNameAbbreviated, balanceLoading, balance, className, 'aria-label': ariaLabel, customization, ...props },\n ref,\n ) => {\n const labels = useNovaConnectLabels();\n const { activeWallet } = useNovaConnect();\n const { copy, isCopied } = useCopyToClipboard();\n\n // Extract custom components and config\n const {\n WalletNameDisplay = DefaultWalletNameDisplay,\n CopyButton = DefaultCopyButton,\n BalanceDisplay = DefaultBalanceDisplay,\n ScreenReaderFeedback = DefaultScreenReaderFeedback,\n LiveRegion = DefaultLiveRegion,\n } = customization?.components ?? {};\n\n const { disableAnimation = false, reduceMotion = false, ariaLabels } = customization?.config ?? {};\n\n /**\n * Memoized calculations for state\n */\n const hasActiveWallet = useMemo(() => Boolean(activeWallet?.isConnected), [activeWallet?.isConnected]);\n const hasBalance = useMemo(() => Boolean(balance?.value && balance?.symbol), [balance]);\n\n /**\n * Handle copying wallet address with proper error handling and custom handlers\n */\n const handleCopyAddress = useCallback(async () => {\n if (!activeWallet?.address) {\n console.warn('No wallet address available to copy');\n return;\n }\n\n try {\n await copy(activeWallet.address);\n customization?.handlers?.onCopySuccess?.(activeWallet.address);\n } catch (error) {\n console.error('Failed to copy wallet address:', error);\n customization?.handlers?.onCopyError?.(error as Error, activeWallet.address);\n }\n }, [activeWallet?.address, copy, customization?.handlers]);\n\n /**\n * Generate container classes with custom generator\n */\n const containerClasses = useMemo(() => {\n if (customization?.classNames?.container) {\n return customization.classNames.container({\n hasActiveWallet,\n isCopied,\n balanceLoading,\n hasBalance,\n });\n }\n return cn(\n 'novacon:flex novacon:w-full novacon:flex-col novacon:items-center novacon:justify-start novacon:gap-2 novacon:min-h-[60px]',\n className,\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customization?.classNames?.container, hasActiveWallet, isCopied, balanceLoading, hasBalance, className]);\n\n /**\n * Animation variants\n */\n const containerVariants = customization?.variants?.container || DEFAULT_CONTAINER_ANIMATION_VARIANTS;\n\n /**\n * Merge container props\n */\n const containerProps = useMemo(\n () => ({\n ...customization?.containerProps,\n ...props,\n ref,\n className: containerClasses,\n role: 'region',\n 'aria-label':\n ariaLabel || ariaLabels?.container || `${labels.walletBalance} and ${labels.walletAddress} information`,\n }),\n [\n customization?.containerProps,\n props,\n ref,\n containerClasses,\n ariaLabel,\n ariaLabels?.container,\n labels.walletBalance,\n labels.walletAddress,\n ],\n );\n\n // Early return if no active wallet\n if (!hasActiveWallet || !activeWallet) {\n return null;\n }\n\n const content = (\n <>\n {/* Wallet Name/ENS and Copy Button */}\n <div\n className={cn(\n 'novacon:flex novacon:items-center novacon:gap-3 novacon:relative novacon:text-[var(--tuwa-text-primary)]',\n customization?.classNames?.walletNameHeaderContainer?.(),\n )}\n role=\"group\"\n aria-label={`${labels.walletAddress}: ${ensNameAbbreviated || 'Loading...'}`}\n >\n {/* Wallet Name/ENS Display */}\n <WalletNameDisplay\n ensNameAbbreviated={ensNameAbbreviated}\n activeWallet={activeWallet}\n labels={labels}\n className={customization?.classNames?.walletNameDisplay?.({ ensNameAbbreviated })}\n />\n\n {/* Copy Address Button */}\n <CopyButton\n isCopied={isCopied}\n onCopy={handleCopyAddress}\n activeWallet={activeWallet}\n labels={labels}\n className={customization?.classNames?.copyButton?.({\n isCopied,\n disabled: !activeWallet?.address,\n })}\n disabled={!activeWallet?.address}\n />\n\n {/* Screen Reader Only Feedback */}\n <ScreenReaderFeedback\n isCopied={isCopied}\n activeWallet={activeWallet}\n labels={labels}\n className={customization?.classNames?.screenReaderFeedback?.()}\n />\n </div>\n\n {/* Balance Information */}\n <div\n className={cn(\n 'novacon:flex novacon:items-center novacon:justify-center',\n customization?.classNames?.balanceContainer?.(),\n )}\n role=\"group\"\n aria-label={labels.walletBalance}\n >\n <BalanceDisplay\n balance={balance}\n balanceLoading={balanceLoading}\n labels={labels}\n className={customization?.classNames?.balanceDisplay?.()}\n />\n </div>\n\n {/* Hidden Live Region for Dynamic Updates */}\n <LiveRegion\n balanceLoading={balanceLoading}\n balance={balance}\n labels={labels}\n className={customization?.classNames?.liveRegion?.()}\n />\n </>\n );\n\n if (disableAnimation || reduceMotion) {\n return <section {...containerProps}>{content}</section>;\n }\n\n return (\n <motion.section\n {...containerProps}\n variants={containerVariants}\n initial=\"initial\"\n animate=\"animate\"\n exit=\"exit\"\n transition={{\n duration: customization?.animation?.container?.duration ?? 0.3,\n ease: customization?.animation?.container?.ease ?? 'easeOut',\n delay: customization?.animation?.container?.delay ?? 0,\n }}\n >\n {content}\n </motion.section>\n );\n },\n);\n\nConnectedModalNameAndBalance.displayName = 'ConnectedModalNameAndBalance';\n","/**\n * @file This file contains the `WalletIcon` component, a customizable wallet icon renderer with fallback support.\n */\n\nimport { Web3Icon } from '@bgd-labs/react-web3-icons';\nimport { cn } from '@tuwaio/nova-core';\nimport { formatWalletName } from '@tuwaio/orbit-core';\nimport { ComponentPropsWithoutRef, ComponentType, forwardRef, useCallback, useMemo, useState } from 'react';\n\nimport { useNovaConnectLabels } from '../hooks/useNovaConnectLabels';\n\n// --- Types for Customization ---\ntype CustomLoadingOverlayProps = {\n size: number;\n isLoading: boolean;\n};\n\ntype CustomErrorIndicatorProps = {\n walletName: string;\n hasError: boolean;\n};\n\ntype CustomFallbackIconProps = {\n walletName: string;\n size: number;\n className?: string;\n};\n\n/**\n * Customization options for WalletIcon component\n */\nexport type WalletIconCustomization = {\n /** Override container element props */\n containerProps?: Partial<ComponentPropsWithoutRef<'div'>>;\n /** Override image element props */\n imageProps?: Partial<ComponentPropsWithoutRef<'img'>>;\n /** Custom components */\n components?: {\n /** Custom loading overlay component */\n LoadingOverlay?: ComponentType<CustomLoadingOverlayProps>;\n /** Custom error indicator component (only shown in development) */\n ErrorIndicator?: ComponentType<CustomErrorIndicatorProps>;\n /** Custom fallback icon component */\n FallbackIcon?: ComponentType<CustomFallbackIconProps>;\n };\n /** Custom class name generators */\n classNames?: {\n /** Function to generate container classes */\n container?: (params: { isLoading: boolean; showLoading: boolean; size: number }) => string;\n /** Function to generate image classes */\n image?: (params: { isLoading: boolean; showLoading: boolean; hasError: boolean }) => string;\n };\n};\n\nexport interface WalletIconProps extends Omit<ComponentPropsWithoutRef<'div'>, 'role'> {\n /** Custom icon URL for the wallet */\n icon?: string;\n /** Name of the wallet */\n name: string;\n /** Size of the icon in pixels */\n size?: number;\n /** Custom alt text for the icon */\n altText?: string;\n /** Whether to show loading state */\n showLoading?: boolean;\n /** Callback fired when image loads successfully */\n onImageLoad?: () => void;\n /** Callback fired when image fails to load */\n onImageError?: () => void;\n /** Enable lazy loading for non-critical images */\n lazy?: boolean;\n /** Customization options */\n customization?: WalletIconCustomization;\n}\n\n// --- Default Sub-Components ---\nconst DefaultLoadingOverlay = ({ isLoading }: CustomLoadingOverlayProps) => {\n if (!isLoading) return null;\n\n return (\n <div\n className=\"novacon:absolute novacon:inset-0 novacon:bg-[var(--tuwa-bg-muted)] novacon:animate-pulse novacon:rounded-full\"\n aria-hidden=\"true\"\n />\n );\n};\n\nconst DefaultErrorIndicator = ({ walletName, hasError }: CustomErrorIndicatorProps) => {\n if (!hasError || process.env.NODE_ENV !== 'development') return null;\n\n return (\n <div\n className=\"novacon:absolute novacon:top-0 novacon:right-0 novacon:w-2 novacon:h-2 novacon:bg-red-500 novacon:rounded-full\"\n title={`Failed to load icon for ${walletName}`}\n aria-hidden=\"true\"\n />\n );\n};\n\nconst DefaultFallbackIcon = ({ walletName, className }: CustomFallbackIconProps) => {\n return <Web3Icon walletKey={walletName} className={cn('novacon:flex-shrink-0', className)} />;\n};\n\n/**\n * A highly customizable wallet icon component with loading states, error handling, and fallback support.\n * Provides extensive customization options for container, image, and sub-components while maintaining accessibility.\n */\nexport const WalletIcon = forwardRef<HTMLDivElement, WalletIconProps>(\n (\n {\n icon,\n name,\n size = 32,\n className,\n altText,\n showLoading = false,\n onImageLoad,\n onImageError,\n lazy = false,\n customization,\n ...props\n },\n ref,\n ) => {\n const labels = useNovaConnectLabels();\n const [hasError, setHasError] = useState(false);\n const [isLoading, setIsLoading] = useState(Boolean(icon));\n\n // Extract custom components\n const {\n LoadingOverlay = DefaultLoadingOverlay,\n ErrorIndicator = DefaultErrorIndicator,\n FallbackIcon = DefaultFallbackIcon,\n } = customization?.components ?? {};\n\n // Format wallet name for consistency\n const walletName = useMemo(() => formatWalletName(name), [name]);\n\n // Generate alt text for accessibility\n const imageAltText = useMemo(() => {\n if (altText) return altText;\n return `${walletName} ${labels.walletIcon}`;\n }, [altText, walletName, labels.walletIcon]);\n\n // Clean and validate icon URL\n const cleanIconUrl = useMemo(() => {\n if (!icon) return null;\n\n try {\n const trimmedIcon = icon.trim();\n if (!trimmedIcon) return null;\n\n // Basic URL validation\n if (\n trimmedIcon.startsWith('http://') ||\n trimmedIcon.startsWith('https://') ||\n trimmedIcon.startsWith('/') ||\n trimmedIcon.startsWith('data:')\n ) {\n return trimmedIcon;\n }\n\n return null;\n } catch {\n return null;\n }\n }, [icon]);\n\n // Handle image load success\n const handleImageLoad = useCallback(() => {\n setIsLoading(false);\n setHasError(false);\n onImageLoad?.();\n }, [onImageLoad]);\n\n // Handle image load error\n const handleImageError = useCallback(() => {\n setIsLoading(false);\n setHasError(true);\n onImageError?.();\n }, [onImageError]);\n\n // Generate container classes\n const containerClasses = useMemo(() => {\n if (customization?.classNames?.container) {\n return customization.classNames.container({ isLoading, showLoading, size });\n }\n return cn(\n 'novacon:relative novacon:inline-flex novacon:items-center novacon:justify-center novacon:flex-shrink-0',\n 'novacon:overflow-hidden',\n {\n 'novacon:animate-pulse novacon:bg-[var(--tuwa-bg-muted)]': showLoading && isLoading,\n },\n className,\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customization?.classNames?.container, isLoading, showLoading, size, className]);\n\n // Generate image classes\n const imageClasses = useMemo(() => {\n if (customization?.classNames?.image) {\n return customization.classNames.image({ isLoading, showLoading, hasError });\n }\n\n return cn(\n 'novacon:object-cover novacon:transition-opacity novacon:duration-200',\n 'novacon:max-w-full novacon:max-h-full',\n 'novacon:opacity-100',\n {\n 'novacon:opacity-0': isLoading && showLoading,\n },\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customization?.classNames?.image, isLoading, showLoading, hasError]);\n\n // Image style object\n const imageStyle = useMemo(\n () => ({\n width: size,\n height: size,\n }),\n [size],\n );\n\n // Merge container props\n const containerProps = useMemo(\n () => ({\n ...customization?.containerProps,\n ...props,\n ref,\n className: containerClasses,\n role: 'img' as const,\n 'aria-label': imageAltText,\n title: imageAltText,\n style: { lineHeight: 0, ...customization?.containerProps?.style, ...props.style },\n }),\n [customization?.containerProps, props, ref, containerClasses, imageAltText],\n );\n\n // Merge image props\n const imageProps = useMemo(\n () => ({\n ...customization?.imageProps,\n src: cleanIconUrl!,\n alt: '', // Empty alt since parent div has role=\"img\" and aria-label\n className: cn(imageClasses, customization?.imageProps?.className),\n style: { ...imageStyle, ...customization?.imageProps?.style },\n onLoad: handleImageLoad,\n onError: handleImageError,\n loading: (lazy ? 'lazy' : 'eager') as 'lazy' | 'eager',\n decoding: 'async' as const,\n crossOrigin: 'anonymous' as const,\n referrerPolicy: 'no-referrer' as const,\n }),\n [customization?.imageProps, cleanIconUrl, imageClasses, imageStyle, handleImageLoad, handleImageError, lazy],\n );\n\n return (\n <div {...containerProps}>\n {/* Loading overlay */}\n <LoadingOverlay size={size} isLoading={showLoading && isLoading} />\n\n {/* Custom icon with error fallback */}\n {cleanIconUrl && !hasError ? (\n <img {...imageProps} />\n ) : (\n <FallbackIcon walletName={walletName} size={size} className={imageClasses} />\n )}\n\n {/* Error state indicator */}\n <ErrorIndicator walletName={walletName} hasError={hasError} />\n </div>\n );\n },\n);\n\nWalletIcon.displayName = 'WalletIcon';\n","/**\n * @file IconButton component with comprehensive customization options for wallet and chain interactions.\n */\n\nimport { Web3Icon } from '@bgd-labs/react-web3-icons';\nimport { ChevronArrowWithAnim, cn } from '@tuwaio/nova-core';\nimport { OrbitAdapter } from '@tuwaio/orbit-core';\nimport { type Easing, motion, type Variants } from 'framer-motion';\nimport { ComponentPropsWithoutRef, ComponentType, forwardRef, ReactNode, useCallback, useMemo } from 'react';\n\nimport { useNovaConnectLabels } from '../../hooks/useNovaConnectLabels';\nimport { WalletIcon, type WalletIconCustomization } from '../WalletIcon';\n\n// --- Default Motion Variants ---\nconst DEFAULT_BUTTON_ANIMATION_VARIANTS: Variants = {\n idle: { scale: 1, rotate: 0 },\n hover: { scale: 1.05, transition: { duration: 0.2 } },\n tap: { scale: 0.95, transition: { duration: 0.1 } },\n loading: { rotate: 360, transition: { duration: 2, repeat: Infinity, ease: 'linear' } },\n};\n\n// --- Types for Customization ---\ntype CustomWalletIconContainerProps = {\n walletName?: string;\n walletIcon?: string;\n showLoading: boolean;\n labels: Record<string, string>;\n className?: string;\n};\n\ntype CustomChainIconContainerProps = {\n chainId: string | number;\n walletChainId?: string | number;\n className?: string;\n};\n\ntype CustomChevronContainerProps = {\n isOpen: boolean;\n className?: string;\n};\n\ntype CustomLoadingOverlayProps = {\n loading: boolean;\n className?: string;\n};\n\ntype CustomButtonContentProps = {\n walletIconContainer: ReactNode;\n chainIconContainer: ReactNode;\n chevronContainer: ReactNode;\n loadingOverlay: ReactNode;\n hasWalletIcon: boolean;\n hasChainIcon: boolean;\n hasChevron: boolean;\n loading: boolean;\n disabled: boolean;\n isClickable: boolean;\n};\n\n/**\n * Customization options for IconButton component\n */\nexport type IconButtonCustomization = {\n /** Override button element props */\n buttonProps?: Partial<\n Omit<\n ComponentPropsWithoutRef<'button'>,\n | 'popover'\n | 'onDrag'\n | 'onDragEnd'\n | 'onDragExit'\n | 'onDragStart'\n | 'onDragStartCapture'\n | 'onAnimationStart'\n | 'onAnimationEnd'\n | 'onAnimationStartCapture'\n | 'onAnimationEndCapture'\n | 'onAnimationIteration'\n | 'onAnimationIterationCapture'\n >\n >;\n /** Custom components */\n components?: {\n /** Custom wallet icon container component */\n WalletIconContainer?: ComponentType<CustomWalletIconContainerProps>;\n /** Custom chain icon container component */\n ChainIconContainer?: ComponentType<CustomChainIconContainerProps>;\n /** Custom chevron container component */\n ChevronContainer?: ComponentType<CustomChevronContainerProps>;\n /** Custom loading overlay component */\n LoadingOverlay?: ComponentType<CustomLoadingOverlayProps>;\n /** Custom button content wrapper component */\n ButtonContent?: ComponentType<CustomButtonContentProps>;\n };\n /** Custom class name generators */\n classNames?: {\n /** Function to generate button classes */\n button?: (params: {\n isClickable: boolean;\n disabled: boolean;\n loading: boolean;\n hasMultipleIcons: boolean;\n }) => string;\n /** Function to generate wallet icon container classes */\n walletIconContainer?: (params: { showLoading: boolean; hasWalletIcon: boolean }) => string;\n /** Function to generate chain icon container classes */\n chainIconContainer?: (params: { hasChainIcon: boolean }) => string;\n /** Function to generate chevron container classes */\n chevronContainer?: (params: { isOpen: boolean; isClickable: boolean }) => string;\n /** Function to generate loading overlay classes */\n loadingOverlay?: (params: { loading: boolean }) => string;\n /** Function to generate loading spinner classes */\n loadingSpinner?: () => string;\n };\n /** Customization options for child components */\n childCustomizations?: {\n /** WalletIcon customization */\n walletIcon?: WalletIconCustomization;\n };\n /** Custom animation variants */\n variants?: {\n /** Button animation variants */\n button?: Variants;\n /** Chevron animation variants */\n chevron?: Variants;\n };\n /** Custom animation configuration */\n animation?: {\n /** Button animation configuration */\n button?: {\n /** Animation duration in seconds */\n duration?: number;\n /** Animation easing curve */\n ease?: Easing | Easing[];\n /** Animation delay in seconds */\n delay?: number;\n };\n /** Chevron animation configuration */\n chevron?: {\n /** Animation duration in seconds */\n duration?: number;\n /** Animation easing curve */\n ease?: Easing | Easing[];\n /** Animation delay in seconds */\n delay?: number;\n };\n };\n /** Custom event handlers */\n handlers?: {\n /** Custom handler for button click */\n onClick?: (originalHandler: () => void, event: React.MouseEvent<HTMLButtonElement>) => void;\n /** Custom handler for button hover */\n onHover?: (isHovering: boolean, event: React.MouseEvent<HTMLButtonElement>) => void;\n /** Custom handler for button focus */\n onFocus?: (event: React.FocusEvent<HTMLButtonElement>) => void;\n /** Custom handler for button blur */\n onBlur?: (event: React.FocusEvent<HTMLButtonElement>) => void;\n };\n /** Custom aria labels and accessibility */\n accessibility?: {\n /** Custom aria-label generator */\n ariaLabel?: (params: {\n walletName?: string;\n walletChainId?: string | number;\n isClickable: boolean;\n loading: boolean;\n disabled: boolean;\n }) => string;\n /** Custom tooltip generator */\n tooltip?: (params: {\n walletName?: string;\n walletChainId?: string | number;\n isClickable: boolean;\n loading: boolean;\n disabled: boolean;\n }) => string;\n /** Custom role attribute */\n role?: string;\n /** Custom aria-describedby */\n ariaDescribedBy?: string;\n };\n /** Configuration options */\n config?: {\n /** Whether to disable animations */\n disableAnimation?: boolean;\n /** Whether to reduce motion for accessibility */\n reduceMotion?: boolean;\n /** Custom chain ID formatting */\n chainIdFormatter?: (chainId: string | number) => string | number;\n /** Whether to show wallet icon */\n showWalletIcon?: boolean;\n /** Whether to show chain icon */\n showChainIcon?: boolean;\n /** Whether to show chevron */\n showChevron?: boolean;\n /** Whether to show loading overlay */\n showLoadingOverlay?: boolean;\n /** Custom button test id */\n buttonTestId?: string;\n };\n};\n\n/**\n * Props for the IconButton component\n */\nexport interface IconButtonProps {\n /** Custom icon URL for the wallet */\n walletIcon?: string;\n /** Name of the wallet */\n walletName?: string;\n /** Chain ID for the network icon */\n walletChainId?: string | number;\n /** Number of available items/options (shows chevron if > 1) */\n items?: number;\n /** Click handler for the button */\n onClick?: () => void;\n /** Additional CSS classes for styling */\n className?: string;\n /** Whether the button is currently disabled */\n disabled?: boolean;\n /** Whether to show loading state */\n loading?: boolean;\n /** Custom aria-label for accessibility */\n 'aria-label'?: string;\n /** Custom tooltip text */\n title?: string;\n /** Whether chevron should show as open */\n isOpen?: boolean;\n /** Custom button id */\n id?: string;\n /** Customization options */\n customization?: IconButtonCustomization;\n}\n\n// --- Default Sub-Components ---\nconst DefaultWalletIconContainer: React.FC<CustomWalletIconContainerProps> = ({\n walletName,\n walletIcon,\n showLoading,\n labels,\n className,\n}) => {\n if (!walletName) return null;\n\n return (\n <div className={cn('novacon:flex-shrink-0 novacon:leading-[0]', className)}>\n <WalletIcon\n name={walletName}\n icon={walletIcon}\n altText={`${walletName} ${labels.walletIcon}`}\n showLoading={showLoading}\n />\n </div>\n );\n};\n\nconst DefaultChainIconContainer: React.FC<CustomChainIconContainerProps> = ({ chainId, walletChainId, className }) => {\n return (\n <div className={cn('novacon:flex-shrink-0 novacon:leading-[0]', className)}>\n <Web3Icon chainId={chainId} title={`Network: ${walletChainId}`} className=\"novacon:w-6 novacon:h-6\" />\n </div>\n );\n};\n\nconst DefaultChevronContainer: React.FC<CustomChevronContainerProps> = ({ isOpen, className }) => {\n return (\n <div className={cn('novacon:flex-shrink-0 novacon:leading-[0]', className)}>\n <ChevronArrowWithAnim isOpen={isOpen} className=\"novacon:w-4 novacon:h-4\" aria-hidden=\"true\" />\n </div>\n );\n};\n\nconst DefaultLoadingOverlay: React.FC<CustomLoadingOverlayProps> = ({ loading, className }) => {\n if (!loading) return null;\n\n return (\n <div\n className={cn(\n 'novacon:absolute novacon:inset-0 novacon:bg-[var(--tuwa-bg-primary)]/50 novacon:rounded-full novacon:flex novacon:items-center novacon:justify-center',\n className,\n )}\n aria-hidden=\"true\"\n >\n <div className=\"novacon:w-3 novacon:h-3 novacon:border-2 novacon:border-[var(--tuwa-text-accent)] novacon:border-t-transparent novacon:rounded-full novacon:animate-spin\" />\n </div>\n );\n};\n\nconst DefaultButtonContent: React.FC<CustomButtonContentProps> = ({\n walletIconContainer,\n chainIconContainer,\n chevronContainer,\n loadingOverlay,\n}) => {\n return (\n <>\n {walletIconContainer}\n {chainIconContainer}\n {chevronContainer}\n {loadingOverlay}\n </>\n );\n};\n\n/**\n * Multi-purpose icon button component for wallets and chains with comprehensive customization.\n *\n * This component provides a unified interface for displaying wallet and chain information:\n * - Displays wallet icon with fallback to Web3Icon\n * - Shows chain/network icon when chain ID is provided\n * - Conditional chevron arrow for dropdown indicators\n * - Full WCAG accessibility support with proper ARIA labels\n * - Loading and disabled states with visual feedback\n * - Hover, active, and focus animations\n * - Comprehensive customization for all UI elements and behaviors\n * - Responsive design with consistent sizing\n * - Custom event handlers for enhanced interactivity\n * - Animation customization with reduced motion support\n * - Performance-optimized with memoized calculations\n *\n * The button automatically becomes interactive when onClick is provided and items > 1.\n * It supports both EVM chain IDs (numbers) and Solana network identifiers (strings).\n *\n * @example Basic usage\n * ```tsx\n * <IconButton\n * walletName=\"MetaMask\"\n * walletIcon=\"https://example.com/metamask-icon.png\"\n * />\n * ```\n *\n * @example Interactive chain selector with customization\n * ```tsx\n * <IconButton\n * walletName=\"Phantom\"\n * walletChainId=\"mainnet-beta\"\n * items={3}\n * onClick={handleChainSelect}\n * isOpen={isDropdownOpen}\n * customization={{\n * classNames: {\n * button: ({ isClickable }) =>\n * `custom-button ${isClickable ? 'clickable' : 'static'}`,\n * chevronContainer: ({ isOpen }) =>\n * `custom-chevron ${isOpen ? 'open' : 'closed'}`,\n * },\n * handlers: {\n * onClick: (originalHandler, event) => {\n * console.log(\"Button clicked\");\n * originalHandler();\n * },\n * onHover: (isHovering) => {\n * setTooltipVisible(isHovering);\n * },\n * },\n * animation: {\n * button: { duration: 0.3, ease: \"easeOut\" },\n * chevron: { duration: 0.2 },\n * },\n * config: {\n * showLoadingOverlay: true,\n * reduceMotion: false,\n * },\n * }}\n * />\n * ```\n */\nexport const IconButton = forwardRef<Omit<HTMLButtonElement, 'style'>, IconButtonProps>(\n (\n {\n walletIcon,\n walletName,\n walletChainId,\n items = 0,\n onClick,\n className,\n disabled = false,\n loading = false,\n 'aria-label': ariaLabel,\n title,\n isOpen = false,\n id,\n customization,\n },\n ref,\n ) => {\n const labels = useNovaConnectLabels();\n\n // Extract custom components and config\n const {\n WalletIconContainer = DefaultWalletIconContainer,\n ChainIconContainer = DefaultChainIconContainer,\n ChevronContainer = DefaultChevronContainer,\n LoadingOverlay = DefaultLoadingOverlay,\n ButtonContent = DefaultButtonContent,\n } = customization?.components ?? {};\n\n const {\n showWalletIcon = true,\n showChainIcon = true,\n showChevron = true,\n showLoadingOverlay = true,\n buttonTestId = 'icon-button',\n chainIdFormatter,\n disableAnimation = false,\n reduceMotion = false,\n } = customization?.config ?? {};\n\n /**\n * Determine if the button should be interactive\n */\n const isClickable = useMemo(\n () => Boolean(onClick && !disabled && !loading && items > 1),\n [onClick, disabled, loading, items],\n );\n\n /**\n * Generate chain ID for Web3Icon with custom formatting\n */\n const formattedChainId = useMemo(() => {\n if (!walletChainId) return undefined;\n\n if (chainIdFormatter) {\n return chainIdFormatter(walletChainId);\n }\n\n // If it's a string, assume it's a Solana network identifier\n if (typeof walletChainId === 'string') {\n return `${OrbitAdapter.SOLANA}:${walletChainId}`;\n }\n\n // If it's a number, use it directly as EVM chain ID\n return walletChainId;\n }, [walletChainId, chainIdFormatter]);\n\n /**\n * Check which icons are present\n */\n const hasWalletIcon = Boolean(walletName && showWalletIcon);\n const hasChainIcon = Boolean(formattedChainId && showChainIcon);\n const hasChevron = Boolean(isClickable && showChevron);\n const hasMultipleIcons = [hasWalletIcon, hasChainIcon, hasChevron].filter(Boolean).length > 1;\n\n /**\n * Generate accessible label with custom generator\n */\n const accessibleLabel = useMemo(() => {\n const customAriaLabel = customization?.accessibility?.ariaLabel;\n if (customAriaLabel) {\n return customAriaLabel({\n walletName,\n walletChainId,\n isClickable,\n loading,\n disabled,\n });\n }\n\n if (ariaLabel) return ariaLabel;\n\n const parts: string[] = [];\n\n if (walletName) parts.push(`${walletName} wallet`);\n if (walletChainId) parts.push('network selector');\n if (isClickable) parts.push('button');\n if (loading) parts.push('loading');\n if (disabled) parts.push('disabled');\n\n return parts.join(', ') || 'Wallet controls';\n }, [customization?.accessibility?.ariaLabel, ariaLabel, walletName, walletChainId, isClickable, loading, disabled]);\n\n /**\n * Generate tooltip text with custom generator\n */\n const tooltipText = useMemo(() => {\n const customTooltip = customization?.accessibility?.tooltip;\n if (customTooltip) {\n return customTooltip({\n walletName,\n walletChainId,\n isClickable,\n loading,\n disabled,\n });\n }\n\n if (title) return title;\n if (loading) return 'Loading...';\n if (disabled) return 'Button is disabled';\n if (isClickable) return `Click to select ${walletName ? walletName + ' ' : ''}options`;\n return walletName ? `${walletName} wallet` : 'Wallet information';\n }, [customization?.accessibility?.tooltip, title, loading, disabled, isClickable, walletName, walletChainId]);\n\n /**\n * Generate button classes with custom generator\n */\n const buttonClasses = useMemo(() => {\n const customButtonClasses = customization?.classNames?.button;\n if (customButtonClasses) {\n return customButtonClasses({\n isClickable,\n disabled,\n loading,\n hasMultipleIcons,\n });\n }\n\n return cn(\n // Base styles\n 'novacon:flex novacon:items-center novacon:justify-center novacon:gap-1 novacon:rounded-full novacon:leading-[0]',\n 'novacon:bg-[var(--tuwa-bg-primary)] novacon:border novacon:border-[var(--tuwa-border-primary)]',\n 'novacon:p-1.5 novacon:transition-all novacon:duration-200 novacon:relative',\n\n // Icon sizing\n 'novacon:[&_img]:w-6! novacon:[&_img]:h-6! novacon:[&_img]:transition-transform novacon:[&_img]:duration-200',\n\n // Interactive states\n {\n 'novacon:cursor-pointer novacon:hover:[&_img]:scale-95 novacon:active:[&_img]:scale-85 novacon:hover:shadow-sm':\n isClickable,\n 'novacon:cursor-not-allowed novacon:opacity-50': disabled && !loading,\n 'novacon:cursor-wait novacon:opacity-75': loading,\n 'novacon:cursor-default': !isClickable && !disabled && !loading,\n },\n\n // Focus states for accessibility\n 'novacon:focus-visible:outline-none novacon:focus-visible:ring-2 novacon:focus-visible:ring-[var(--tuwa-border-accent)] novacon:focus-visible:ring-offset-2',\n\n className,\n );\n }, [customization?.classNames?.button, isClickable, disabled, loading, hasMultipleIcons, className]);\n\n /**\n * Event handlers with customization support\n */\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n if (isClickable && onClick) {\n const originalHandler = () => onClick();\n\n const customClickHandler = customization?.handlers?.onClick;\n if (customClickHandler) {\n customClickHandler(originalHandler, event);\n } else {\n originalHandler();\n }\n }\n },\n [isClickable, onClick, customization?.handlers?.onClick],\n );\n\n const handleMouseEnter = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n const customHoverHandler = customization?.handlers?.onHover;\n if (customHoverHandler) {\n customHoverHandler(true, event);\n }\n },\n [customization?.handlers?.onHover],\n );\n\n const handleMouseLeave = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n const customHoverHandler = customization?.handlers?.onHover;\n if (customHoverHandler) {\n customHoverHandler(false, event);\n }\n },\n [customization?.handlers?.onHover],\n );\n\n const handleFocus = useCallback(\n (event: React.FocusEvent<HTMLButtonElement>) => {\n const customFocusHandler = customization?.handlers?.onFocus;\n if (customFocusHandler) {\n customFocusHandler(event);\n }\n },\n [customization?.handlers?.onFocus],\n );\n\n const handleBlur = useCallback(\n (event: React.FocusEvent<HTMLButtonElement>) => {\n const customBlurHandler = customization?.handlers?.onBlur;\n if (customBlurHandler) {\n customBlurHandler(event);\n }\n },\n [customization?.handlers?.onBlur],\n );\n\n /**\n * Generate child components\n */\n const walletIconContainer = useMemo(() => {\n if (!hasWalletIcon) return null;\n\n const walletIconCustomClasses = customization?.classNames?.walletIconContainer;\n\n return (\n <WalletIconContainer\n walletName={walletName}\n walletIcon={walletIcon}\n showLoading={loading}\n labels={labels}\n className={walletIconCustomClasses?.({\n showLoading: loading,\n hasWalletIcon,\n })}\n />\n );\n }, [\n hasWalletIcon,\n WalletIconContainer,\n walletName,\n walletIcon,\n loading,\n labels,\n customization?.classNames?.walletIconContainer,\n ]);\n\n const chainIconContainer = useMemo(() => {\n if (!hasChainIcon || !formattedChainId) return null;\n\n const chainIconCustomClasses = customization?.classNames?.chainIconContainer;\n\n return (\n <ChainIconContainer\n chainId={formattedChainId}\n walletChainId={walletChainId}\n className={chainIconCustomClasses?.({ hasChainIcon })}\n />\n );\n }, [\n hasChainIcon,\n formattedChainId,\n ChainIconContainer,\n walletChainId,\n customization?.classNames?.chainIconContainer,\n ]);\n\n const chevronContainer = useMemo(() => {\n if (!hasChevron) return null;\n const chevronCustomClasses = customization?.classNames?.chevronContainer;\n return <ChevronContainer isOpen={isOpen} className={chevronCustomClasses?.({ isOpen, isClickable })} />;\n }, [hasChevron, ChevronContainer, isOpen, isClickable, customization?.classNames?.chevronContainer]);\n\n const loadingOverlay = useMemo(() => {\n if (!showLoadingOverlay) return null;\n const loadingCustomClasses = customization?.classNames?.loadingOverlay;\n return <LoadingOverlay loading={loading} className={loadingCustomClasses?.({ loading })} />;\n }, [showLoadingOverlay, LoadingOverlay, loading, customization?.classNames?.loadingOverlay]);\n\n /**\n * Animation variants\n */\n const buttonVariants = customization?.variants?.button || DEFAULT_BUTTON_ANIMATION_VARIANTS;\n\n /**\n * Base button props without motion-specific properties\n */\n const baseButtonProps = useMemo(\n () => ({\n type: 'button' as const,\n id,\n className: buttonClasses,\n onClick: handleClick,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n onFocus: handleFocus,\n onBlur: handleBlur,\n disabled: disabled || loading,\n 'aria-label': accessibleLabel,\n 'aria-describedby': customization?.accessibility?.ariaDescribedBy,\n title: tooltipText,\n role: customization?.accessibility?.role || 'button',\n tabIndex: disabled || loading ? -1 : 0,\n 'data-testid': buttonTestId,\n ...customization?.buttonProps,\n }),\n [\n id,\n buttonClasses,\n handleClick,\n handleMouseEnter,\n handleMouseLeave,\n handleFocus,\n handleBlur,\n disabled,\n loading,\n accessibleLabel,\n customization?.accessibility?.ariaDescribedBy,\n tooltipText,\n customization?.accessibility?.role,\n buttonTestId,\n customization?.buttonProps,\n ],\n );\n\n const buttonContent = (\n <ButtonContent\n walletIconContainer={walletIconContainer}\n chainIconContainer={chainIconContainer}\n chevronContainer={chevronContainer}\n loadingOverlay={loadingOverlay}\n hasWalletIcon={hasWalletIcon}\n hasChainIcon={hasChainIcon}\n hasChevron={hasChevron}\n loading={loading}\n disabled={disabled}\n isClickable={isClickable}\n />\n );\n\n if (disableAnimation || reduceMotion) {\n return (\n <button ref={ref as React.ForwardedRef<HTMLButtonElement>} {...baseButtonProps}>\n {buttonContent}\n </button>\n );\n }\n\n return (\n <motion.button\n ref={ref as React.ForwardedRef<HTMLButtonElement>}\n {...baseButtonProps}\n variants={buttonVariants}\n initial=\"idle\"\n whileHover={isClickable ? 'hover' : 'idle'}\n whileTap={isClickable ? 'tap' : 'idle'}\n animate={loading ? 'loading' : 'idle'}\n transition={{\n duration: customization?.animation?.button?.duration ?? 0.2,\n ease: customization?.animation?.button?.ease ?? 'easeInOut',\n delay: customization?.animation?.button?.delay ?? 0,\n }}\n >\n {buttonContent}\n </motion.button>\n );\n },\n);\n\nIconButton.displayName = 'IconButton';\n","/**\n * @file ConnectedModalMainContent component with comprehensive customization options for all child components.\n */\n\nimport { cn, standardButtonClasses } from '@tuwaio/nova-core';\nimport { getAdapterFromWalletType } from '@tuwaio/orbit-core';\nimport { Transaction } from '@tuwaio/pulsar-core';\nimport { AnimatePresence, type Easing, motion, type Variants } from 'framer-motion';\nimport React, { ComponentPropsWithoutRef, ComponentType, forwardRef, useCallback, useMemo } from 'react';\n\nimport { NativeBalanceResult } from '../../hooks';\nimport { useNovaConnect } from '../../hooks/useNovaConnect';\nimport { useNovaConnectLabels } from '../../hooks/useNovaConnectLabels';\nimport { ConnectButtonProps } from '../ConnectButton/ConnectButton';\nimport { WalletAvatar, WalletAvatarProps } from '../WalletAvatar';\nimport {\n ConnectedModalNameAndBalance,\n ConnectedModalNameAndBalanceCustomization,\n ConnectedModalNameAndBalanceProps,\n} from './ConnectedModalNameAndBalance';\nimport { IconButton, IconButtonProps } from './IconButton';\n\n// --- Default Motion Variants ---\nconst DEFAULT_CONTAINER_ANIMATION_VARIANTS: Variants = {\n initial: { opacity: 0, scale: 0.95, y: 20 },\n animate: {\n opacity: 1,\n scale: 1,\n y: 0,\n transition: { duration: 0.4, ease: 'easeOut', staggerChildren: 0.1 },\n },\n exit: {\n opacity: 0,\n scale: 0.95,\n y: -20,\n transition: { duration: 0.3, ease: 'easeIn' },\n },\n};\n\nconst DEFAULT_LOADING_ANIMATION_VARIANTS: Variants = {\n initial: { scale: 0.6, opacity: 0 },\n animate: { scale: 1, opacity: 1, transition: { duration: 0.4 } },\n exit: { scale: 0.6, opacity: 0, transition: { duration: 0.3 } },\n};\n\nconst DEFAULT_AVATAR_SECTION_ANIMATION_VARIANTS: Variants = {\n initial: { opacity: 0, y: 10 },\n animate: { opacity: 1, y: 0, transition: { duration: 0.3, delay: 0.1 } },\n exit: { opacity: 0, y: -10, transition: { duration: 0.2 } },\n};\n\nconst DEFAULT_INFO_SECTION_ANIMATION_VARIANTS: Variants = {\n initial: { opacity: 0, y: 10 },\n animate: { opacity: 1, y: 0, transition: { duration: 0.3, delay: 0.2 } },\n exit: { opacity: 0, y: -10, transition: { duration: 0.2 } },\n};\n\nconst DEFAULT_TRANSACTIONS_ANIMATION_VARIANTS: Variants = {\n initial: { opacity: 0, y: 10 },\n animate: { opacity: 1, y: 0, transition: { duration: 0.3, delay: 0.3 } },\n exit: { opacity: 0, y: -10, transition: { duration: 0.2 } },\n};\n\n// --- Types for Customization ---\ntype LoadingIndicatorProps = {\n isLoading: boolean;\n labels: Record<string, string>;\n className?: string;\n};\n\ntype AvatarSectionProps = {\n activeWallet: NonNullable<ReturnType<typeof useNovaConnect>['activeWallet']>;\n ensAvatar: string | null;\n walletName: string;\n connectorsCount: number;\n chainsList: (string | number)[];\n labels: Record<string, string>;\n onSwitchWallet: () => void;\n onSwitchNetwork: () => void;\n className?: string;\n};\n\ntype InfoSectionProps = {\n balanceLoading: boolean;\n balance: NativeBalanceResult | null;\n ensNameAbbreviated: string | undefined;\n labels: Record<string, string>;\n className?: string;\n};\n\ntype TransactionsSectionProps = {\n walletTransactions: Transaction[];\n hasPendingTransactions: boolean;\n labels: Record<string, string>;\n onViewTransactions: () => void;\n showPendingIndicators?: boolean;\n className?: string;\n};\n\ntype NoTransactionsIndicatorProps = {\n className?: string;\n};\n\n/**\n * Customization options for ConnectedModalMainContent component\n */\nexport type ConnectedModalMainContentCustomization = {\n /** Override root container props */\n containerProps?: Partial<\n Omit<\n ComponentPropsWithoutRef<'div'>,\n | 'popover'\n | 'onDrag'\n | 'onDragEnd'\n | 'onDragExit'\n | 'onDragStart'\n | 'onDragStartCapture'\n | 'onAnimationStart'\n | 'onAnimationEnd'\n | 'onAnimationStartCapture'\n | 'onAnimationEndCapture'\n | 'onAnimationIteration'\n | 'onAnimationIterationCapture'\n >\n >;\n /** Custom components */\n components?: {\n /** Custom loading indicator component */\n LoadingIndicator?: ComponentType<LoadingIndicatorProps>;\n /** Custom avatar section component */\n AvatarSection?: ComponentType<AvatarSectionProps>;\n /** Custom wallet avatar component */\n WalletAvatar?: ComponentType<WalletAvatarProps>;\n /** Custom switch wallet icon button component */\n SwitchWalletButton?: ComponentType<IconButtonProps>;\n /** Custom switch network icon button component */\n SwitchNetworkButton?: ComponentType<IconButtonProps>;\n /** Custom info section component */\n InfoSection?: ComponentType<InfoSectionProps>;\n /** Custom name and balance component */\n NameAndBalance?: ComponentType<ConnectedModalNameAndBalanceProps>;\n /** Custom transactions section component */\n TransactionsSection?: ComponentType<TransactionsSectionProps>;\n /** Custom no transactions indicator component */\n NoTransactionsIndicator?: ComponentType<NoTransactionsIndicatorProps>;\n };\n /** Custom class name generators */\n classNames?: {\n /** Function to generate container classes */\n container?: (params: {\n hasActiveWallet: boolean;\n isLoading: boolean;\n hasTransactions: boolean;\n hasPendingTransactions: boolean;\n }) => string;\n /** Function to generate loading indicator classes */\n loadingIndicator?: (params: { isLoading: boolean }) => string;\n /** Function to generate loading spinner classes */\n loadingSpinner?: () => string;\n /** Function to generate avatar section classes */\n avatarSection?: () => string;\n /** Function to generate wallet avatar classes */\n walletAvatar?: (params: { ensAvatar: string | null }) => string;\n /** Function to generate switch wallet button classes */\n switchWalletButton?: (params: { connectorsCount: number }) => string;\n /** Function to generate switch network button classes */\n switchNetworkButton?: (params: { chainsCount: number }) => string;\n /** Function to generate info section classes */\n infoSection?: () => string;\n /** Function to generate transactions section classes */\n transactionsSection?: (params: { transactionsCount: number; hasPendingTransactions: boolean }) => string;\n /** Function to generate transactions button classes */\n transactionsButton?: () => string;\n /** Function to generate pending indicator classes */\n pendingIndicator?: () => string;\n /** Function to generate pending spinner classes */\n pendingSpinner?: () => string;\n /** Function to generate no transactions classes */\n noTransactions?: () => string;\n };\n /** Custom animation variants */\n variants?: {\n /** Container animation variants */\n container?: Variants;\n /** Loading animation variants */\n loading?: Variants;\n /** Avatar section animation variants */\n avatarSection?: Variants;\n /** Info section animation variants */\n infoSection?: Variants;\n /** Transactions animation variants */\n transactions?: Variants;\n };\n /** Custom animation configuration */\n animation?: {\n /** Container animation configuration */\n container?: {\n /** Animation duration in seconds */\n duration?: number;\n /** Animation easing curve */\n ease?: Easing | Easing[];\n /** Animation delay in seconds */\n delay?: number;\n /** Children stagger delay */\n staggerChildren?: number;\n };\n /** Loading animation configuration */\n loading?: {\n /** Animation duration in seconds */\n duration?: number;\n /** Animation easing curve */\n ease?: Easing | Easing[];\n /** Animation delay in seconds */\n delay?: number;\n };\n /** Sections animation configuration */\n sections?: {\n /** Animation duration in seconds */\n duration?: number;\n /** Animation easing curve */\n ease?: Easing | Easing[];\n /** Animation delay in seconds */\n delay?: number;\n };\n };\n /** Custom event handlers */\n handlers?: {\n /** Custom handler for wallet switch */\n onSwitchWallet?: () => void;\n /** Custom handler for network switch */\n onSwitchNetwork?: () => void;\n /** Custom handler for view transactions */\n onViewTransactions?: () => void;\n /** Custom handler for loading state changes */\n onLoadingStateChange?: (isLoading: boolean) => void;\n /** Custom handler for transaction updates */\n onTransactionsUpdate?: (transactions: Transaction[], pendingCount: number) => void;\n };\n /** Child component customizations */\n childCustomizations?: {\n /** Customization for ConnectedModalNameAndBalance component */\n nameAndBalance?: ConnectedModalNameAndBalanceCustomization;\n /** Customization for WalletAvatar component */\n walletAvatar?: Partial<WalletAvatarProps>;\n /** Customization for switch wallet IconButton */\n switchWalletButton?: Partial<IconButtonProps>;\n /** Customization for switch network IconButton */\n switchNetworkButton?: Partial<IconButtonProps>;\n };\n /** Configuration options */\n config?: {\n /** Whether to disable animations */\n disableAnimation?: boolean;\n /** Whether to reduce motion for accessibility */\n reduceMotion?: boolean;\n /** Whether to show loading indicators */\n showLoadingIndicators?: boolean;\n /** Whether to show pending transaction indicators */\n showPendingIndicators?: boolean;\n /** Custom ARIA labels for different states */\n ariaLabels?: {\n container?: string;\n loadingIndicator?: string;\n avatarSection?: string;\n infoSection?: string;\n transactionsSection?: string;\n noTransactions?: string;\n };\n };\n};\n\n/**\n * Props for the ConnectedModalMainContent component\n */\nexport interface ConnectedModalMainContentProps extends Pick<ConnectButtonProps, 'transactionPool' | 'store'> {\n /** List of available chains for the current wallet */\n chainsList: (string | number)[];\n ensAvatar: string | null;\n avatarIsLoading: boolean;\n balanceLoading: boolean;\n ensNameAbbreviated: string | undefined;\n balance: NativeBalanceResult | null;\n /** Additional CSS classes for the container */\n className?: string;\n /** Custom aria-label for the container */\n 'aria-label'?: string;\n /** Customization options */\n customization?: ConnectedModalMainContentCustomization;\n}\n\n// --- Default Sub-Components ---\nconst DefaultLoadingIndicator: React.FC<LoadingIndicatorProps> = ({ isLoading, labels, className }) => {\n if (!isLoading) return null;\n\n return (\n <motion.div\n variants={DEFAULT_LOADING_ANIMATION_VARIANTS}\n initial=\"initial\"\n animate=\"animate\"\n exit=\"exit\"\n className={cn('novacon:absolute novacon:right-5 novacon:top-2 novacon:w-5 novacon:h-5', className)}\n role=\"status\"\n aria-label={labels.loading}\n >\n <div className=\"Toastify__spinner\" aria-hidden=\"true\" />\n <span className=\"novacon:sr-only\">{labels.loading}</span>\n </motion.div>\n );\n};\n\nconst DefaultAvatarSection: React.FC<AvatarSectionProps> = ({\n activeWallet,\n ensAvatar,\n walletName,\n connectorsCount,\n chainsList,\n labels,\n onSwitchWallet,\n onSwitchNetwork,\n className,\n}) => {\n return (\n <motion.div\n variants={DEFAULT_AVATAR_SECTION_ANIMATION_VARIANTS}\n className={cn('novacon:mb-6 novacon:relative', className)}\n role=\"group\"\n aria-label={labels.walletControls}\n >\n {/* Wallet Switch Button */}\n <IconButton\n className=\"novacon:absolute novacon:z-[11] novacon:bottom-[-10px] novacon:left-[-10px]\"\n walletIcon={activeWallet.walletIcon}\n walletName={walletName}\n items={connectorsCount}\n onClick={onSwitchWallet}\n aria-label={`${labels.connectWallet} - ${connectorsCount} ${labels.connectWallet.toLowerCase()} available`}\n data-testid=\"switch-wallet-button\"\n />\n\n {/* Network Switch Button */}\n <IconButton\n className=\"novacon:absolute novacon:z-[11] novacon:bottom-[-10px] novacon:right-[-10px]\"\n walletChainId={activeWallet.chainId}\n items={chainsList.length}\n onClick={onSwitchNetwork}\n aria-label={`${labels.switchNetwork} - ${chainsList.length} ${labels.listOfNetworks.toLowerCase()} available`}\n data-testid=\"switch-network-button\"\n />\n\n {/* Main Wallet Avatar */}\n <WalletAvatar\n ensAvatar={ensAvatar}\n address={activeWallet.address}\n className=\"novacon:w-28 novacon:h-28 novacon:sm:w-32 novacon:sm:h-32\"\n aria-describedby=\"wallet-info\"\n />\n </motion.div>\n );\n};\n\nconst DefaultInfoSection: React.FC<InfoSectionProps> = ({\n balanceLoading,\n balance,\n ensNameAbbreviated,\n labels,\n className,\n}) => {\n return (\n <motion.div\n variants={DEFAULT_INFO_SECTION_ANIMATION_VARIANTS}\n id=\"wallet-info\"\n className={className}\n role=\"region\"\n aria-label={labels.walletBalance}\n >\n <ConnectedModalNameAndBalance\n balanceLoading={balanceLoading}\n balance={balance}\n ensNameAbbreviated={ensNameAbbreviated}\n />\n </motion.div>\n );\n};\n\nconst DefaultTransactionsSection: React.FC<TransactionsSectionProps> = ({\n walletTransactions,\n hasPendingTransactions,\n labels,\n onViewTransactions,\n showPendingIndicators = true,\n className,\n}) => {\n if (walletTransactions.length === 0) return null;\n\n return (\n <motion.div\n variants={DEFAULT_TRANSACTIONS_ANIMATION_VARIANTS}\n className={cn(\n 'novacon:relative novacon:flex novacon:items-center novacon:justify-center novacon:gap-2',\n className,\n )}\n role=\"group\"\n aria-label={`${labels.transactionsInApp} - ${walletTransactions.length} transactions`}\n >\n <button\n type=\"button\"\n className={standardButtonClasses}\n onClick={onViewTransactions}\n aria-describedby=\"transaction-count\"\n data-testid=\"view-transactions-button\"\n >\n {labels.viewTransactions}\n\n <span id=\"transaction-count\" className=\"novacon:sr-only\">\n {walletTransactions.length} transactions available\n {hasPendingTransactions && `, ${labels.transactionLoading}`}\n </span>\n </button>\n\n {/* Pending Transactions Indicator */}\n {showPendingIndicators && (\n <AnimatePresence>\n {hasPendingTransactions && (\n <motion.div\n initial={{ scale: 0.6, opacity: 0 }}\n animate={{ scale: 1, opacity: 1 }}\n exit={{ scale: 0.6, opacity: 0 }}\n transition={{ duration: 0.4 }}\n className=\"novacon:block novacon:absolute novacon:left-[110%] novacon:w-4 novacon:h-4\"\n role=\"status\"\n aria-label={labels.transactionLoading}\n >\n <span className=\"novacon:block Toastify__spinner\" aria-hidden=\"true\" />\n <span className=\"novacon:sr-only\">{labels.transactionLoading}</span>\n </motion.div>\n )}\n </AnimatePresence>\n )}\n </motion.div>\n );\n};\n\nconst DefaultNoTransactionsIndicator: React.FC<NoTransactionsIndicatorProps> = ({ className }) => {\n return (\n <div className={cn('novacon:sr-only', className)} role=\"status\" aria-live=\"polite\">\n No transactions found for this wallet\n </div>\n );\n};\n\n/**\n * Main content component for the connected wallet modal with comprehensive customization options.\n *\n * This component displays the primary interface for connected wallet management:\n * - Large wallet avatar with ENS support\n * - Wallet and network switching controls via IconButton components\n * - Loading indicators for avatar and balance states\n * - Transaction history access when transactions are available\n * - Animated pending transaction indicator\n * - Comprehensive customization for all UI elements and behaviors\n * - Animation support with reduced motion options\n * - Custom event handlers for enhanced interactivity\n * - Performance-optimized with memoized calculations\n * - Full customization of child components through parent\n *\n * The component provides full WCAG compliance with proper ARIA labels,\n * semantic HTML structure, and keyboard navigation support.\n *\n * @example Basic usage\n * ```tsx\n * <ConnectedModalMainContent\n * transactionPool={transactionPool}\n * chainsList={availableChains}\n * ensAvatar={ensAvatar}\n * avatarIsLoading={false}\n * balanceLoading={false}\n * ensNameAbbreviated=\"wallet.eth\"\n * balance={{ value: \"1.23\", symbol: \"ETH\" }}\n * store={store}\n * />\n * ```\n *\n * @example With full customization\n * ```tsx\n * <ConnectedModalMainContent\n * transactionPool={transactionPool}\n * chainsList={availableChains}\n * ensAvatar={ensAvatar}\n * avatarIsLoading={false}\n * balanceLoading={false}\n * ensNameAbbreviated=\"wallet.eth\"\n * balance={{ value: \"1.23\", symbol: \"ETH\" }}\n * store={store}\n * customization={{\n * classNames: {\n * container: ({ hasActiveWallet }) =>\n * `custom-container ${hasActiveWallet ? 'has-wallet' : 'no-wallet'}`,\n * avatarSection: () => \"custom-avatar-section\",\n * transactionsSection: ({ transactionsCount }) =>\n * `transactions-section transactions-count-${transactionsCount}`,\n * },\n * components: {\n * LoadingIndicator: ({ isLoading }) =>\n * isLoading ? <div className=\"custom-spinner\" /> : null,\n * AvatarSection: ({ activeWallet, onSwitchWallet }) => (\n * <div onClick={onSwitchWallet}>Custom Avatar: {activeWallet.address}</div>\n * ),\n * },\n * childCustomizations: {\n * nameAndBalance: {\n * classNames: {\n * container: () => \"custom-name-balance-container\",\n * },\n * components: {\n * WalletNameDisplay: ({ ensNameAbbreviated }) =>\n * <h2>{ensNameAbbreviated}</h2>,\n * },\n * },\n * walletAvatar: {\n * className: \"custom-wallet-avatar\",\n * },\n * },\n * handlers: {\n * onSwitchWallet: () => console.log('Custom wallet switch'),\n * onViewTransactions: () => console.log('Custom view transactions'),\n * onTransactionsUpdate: (transactions, pendingCount) =>\n * console.log(`Transactions: ${transactions.length}, Pending: ${pendingCount}`),\n * },\n * config: {\n * showLoadingIndicators: true,\n * showPendingIndicators: true,\n * ariaLabels: {\n * container: 'Wallet management interface',\n * },\n * },\n * }}\n * />\n * ```\n */\nexport const ConnectedModalMainContent = forwardRef<HTMLDivElement, ConnectedModalMainContentProps>(\n (\n {\n transactionPool,\n chainsList,\n ensAvatar,\n avatarIsLoading,\n balanceLoading,\n ensNameAbbreviated,\n balance,\n store,\n className,\n 'aria-label': ariaLabel,\n customization,\n ...props\n },\n ref,\n ) => {\n // Get localized labels for UI text\n const labels = useNovaConnectLabels();\n // Get modal controls and state from hook\n const { setConnectedModalContentType, setIsConnectedModalOpen, setIsConnectModalOpen, activeWallet } =\n useNovaConnect();\n\n // Get wallet state from store\n const getConnectors = store.getState().getConnectors;\n\n // Extract custom components and config with stable references\n const customComponents = customization?.components;\n const customConfig = customization?.config;\n const customHandlers = customization?.handlers;\n\n const {\n LoadingIndicator = DefaultLoadingIndicator,\n AvatarSection = DefaultAvatarSection,\n InfoSection = DefaultInfoSection,\n TransactionsSection = DefaultTransactionsSection,\n NoTransactionsIndicator = DefaultNoTransactionsIndicator,\n } = customComponents ?? {};\n\n const {\n disableAnimation = false,\n reduceMotion = false,\n showLoadingIndicators = true,\n showPendingIndicators = true,\n ariaLabels,\n } = customConfig ?? {};\n\n /**\n * Handle wallet switching by closing connected modal and opening connect modal\n * Provides seamless transition between modal views\n */\n const handleSwitchWallet = useCallback(() => {\n if (customHandlers?.onSwitchWallet) {\n customHandlers.onSwitchWallet();\n } else {\n setIsConnectedModalOpen(false);\n setIsConnectModalOpen(true);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customHandlers?.onSwitchWallet, setIsConnectedModalOpen, setIsConnectModalOpen]);\n\n /**\n * Handle network switching by changing to chains view\n */\n const handleSwitchNetwork = useCallback(() => {\n if (customHandlers?.onSwitchNetwork) {\n customHandlers.onSwitchNetwork();\n } else {\n setConnectedModalContentType('chains');\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customHandlers?.onSwitchNetwork, setConnectedModalContentType]);\n\n /**\n * Handle viewing transactions by changing to transactions view\n */\n const handleViewTransactions = useCallback(() => {\n if (customHandlers?.onViewTransactions) {\n customHandlers.onViewTransactions();\n } else {\n setConnectedModalContentType('transactions');\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customHandlers?.onViewTransactions, setConnectedModalContentType]);\n\n /**\n * Memoized connectors to prevent unnecessary recalculations\n */\n const connectors = useMemo(() => getConnectors(), [getConnectors]);\n\n /**\n * Memoized wallet transactions filtered by current wallet address\n * Only includes transactions from the currently connected wallet\n */\n const walletTransactions = useMemo(() => {\n if (!activeWallet || !transactionPool) return [];\n return Object.values(transactionPool).filter(\n (tx) => tx.from.toLowerCase() === activeWallet.address.toLowerCase(),\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeWallet?.address, transactionPool]);\n\n /**\n * Check if there are pending transactions for loading indicator\n */\n const hasPendingTransactions = useMemo(() => {\n return walletTransactions.some((tx) => tx.pending);\n }, [walletTransactions]);\n\n /**\n * Get number of available connectors for the current wallet type\n */\n const connectorsCount = useMemo(() => {\n if (!activeWallet) return 0;\n return connectors[getAdapterFromWalletType(activeWallet.walletType)]?.length || 0;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeWallet?.walletType, connectors]);\n\n /**\n * Get wallet name from wallet type for display\n */\n const walletName = useMemo(() => {\n return activeWallet?.walletType?.split(':')[1] || labels.unknownWallet;\n }, [activeWallet?.walletType, labels.unknownWallet]);\n\n /**\n * Memoized calculations for state\n */\n const hasActiveWallet = useMemo(() => Boolean(activeWallet?.isConnected), [activeWallet?.isConnected]);\n const isLoading = useMemo(() => avatarIsLoading || balanceLoading, [avatarIsLoading, balanceLoading]);\n const hasTransactions = useMemo(() => walletTransactions.length > 0, [walletTransactions]);\n\n /**\n * Effect for transaction updates\n */\n const pendingCount = useMemo(() => {\n return walletTransactions.filter((tx) => tx.pending).length;\n }, [walletTransactions]);\n\n // Call transaction update handler when transactions change\n React.useEffect(() => {\n if (customHandlers?.onTransactionsUpdate) {\n customHandlers.onTransactionsUpdate(walletTransactions, pendingCount);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [walletTransactions, pendingCount, customHandlers?.onTransactionsUpdate]);\n\n // Call loading state change handler when loading state changes\n React.useEffect(() => {\n if (customHandlers?.onLoadingStateChange) {\n customHandlers.onLoadingStateChange(isLoading);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isLoading, customHandlers?.onLoadingStateChange]);\n\n /**\n * Generate container classes with custom generator\n */\n const containerClasses = useMemo(() => {\n if (customization?.classNames?.container) {\n return customization.classNames.container({\n hasActiveWallet,\n isLoading,\n hasTransactions,\n hasPendingTransactions,\n });\n }\n\n return cn(\n 'novacon:flex novacon:flex-col novacon:items-center novacon:justify-center novacon:gap-2 novacon:p-4',\n className,\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n customization?.classNames?.container,\n hasActiveWallet,\n isLoading,\n hasTransactions,\n hasPendingTransactions,\n className,\n ]);\n\n /**\n * Animation variants\n */\n const containerVariants = customization?.variants?.container || DEFAULT_CONTAINER_ANIMATION_VARIANTS;\n\n /**\n * Merge container props\n */\n const containerProps = useMemo(\n () => ({\n ...customization?.containerProps,\n ...props,\n ref,\n className: containerClasses,\n role: 'main',\n 'aria-label': ariaLabel || ariaLabels?.container || `${labels.walletConnected} - ${walletName}`,\n }),\n [\n customization?.containerProps,\n props,\n ref,\n containerClasses,\n ariaLabel,\n ariaLabels?.container,\n labels.walletConnected,\n walletName,\n ],\n );\n\n // Early return if no active wallet\n if (!hasActiveWallet || !activeWallet) {\n return null;\n }\n\n const content = (\n <>\n {/* Loading Indicator */}\n {showLoadingIndicators && (\n <AnimatePresence>\n <LoadingIndicator\n isLoading={isLoading}\n labels={labels}\n className={customization?.classNames?.loadingIndicator?.({ isLoading })}\n />\n </AnimatePresence>\n )}\n\n {/* Wallet Avatar with Control Buttons */}\n <AvatarSection\n activeWallet={activeWallet}\n ensAvatar={ensAvatar}\n walletName={walletName}\n connectorsCount={connectorsCount}\n chainsList={chainsList}\n labels={labels}\n onSwitchWallet={handleSwitchWallet}\n onSwitchNetwork={handleSwitchNetwork}\n className={customization?.classNames?.avatarSection?.()}\n />\n\n {/* Wallet Name and Balance */}\n <InfoSection\n balanceLoading={balanceLoading}\n balance={balance}\n ensNameAbbreviated={ensNameAbbreviated}\n labels={labels}\n className={customization?.classNames?.infoSection?.()}\n />\n\n {/* Transactions Section */}\n <TransactionsSection\n walletTransactions={walletTransactions}\n hasPendingTransactions={hasPendingTransactions}\n labels={labels}\n onViewTransactions={handleViewTransactions}\n showPendingIndicators={showPendingIndicators}\n className={customization?.classNames?.transactionsSection?.({\n transactionsCount: walletTransactions.length,\n hasPendingTransactions,\n })}\n />\n\n {/* No Transactions State */}\n {walletTransactions.length === 0 && (\n <NoTransactionsIndicator className={customization?.classNames?.noTransactions?.()} />\n )}\n </>\n );\n\n if (disableAnimation || reduceMotion) {\n return <div {...containerProps}>{content}</div>;\n }\n\n return (\n <motion.div\n {...containerProps}\n variants={containerVariants}\n initial=\"initial\"\n animate=\"animate\"\n exit=\"exit\"\n transition={{\n duration: customization?.animation?.container?.duration ?? 0.4,\n ease: customization?.animation?.container?.ease ?? 'easeOut',\n delay: customization?.animation?.container?.delay ?? 0,\n staggerChildren: customization?.animation?.container?.staggerChildren ?? 0.1,\n }}\n >\n {content}\n </motion.div>\n );\n },\n);\n\nConnectedModalMainContent.displayName = 'ConnectedModalMainContent';\n","/**\n * @file ConnectedModalTxHistory component with comprehensive customization options for transaction history display.\n */\n\nimport { ExclamationTriangleIcon, PuzzlePieceIcon } from '@heroicons/react/24/solid';\nimport { cn } from '@tuwaio/nova-core';\nimport { type Easing, motion, type Variants } from 'framer-motion';\nimport React, {\n Component,\n ComponentPropsWithoutRef,\n ComponentType,\n forwardRef,\n lazy,\n ReactNode,\n Suspense,\n useCallback,\n useMemo,\n} from 'react';\n\nimport { useNovaConnect } from '../../hooks/useNovaConnect';\nimport { useNovaConnectLabels } from '../../hooks/useNovaConnectLabels';\nimport { ConnectButtonProps } from '../ConnectButton/ConnectButton';\n\n// --- Default Motion Variants ---\nconst DEFAULT_CONTAINER_ANIMATION_VARIANTS: Variants = {\n initial: { opacity: 0, y: 10 },\n animate: { opacity: 1, y: 0, transition: { duration: 0.3, ease: 'easeOut' } },\n exit: { opacity: 0, y: -10, transition: { duration: 0.2, ease: 'easeIn' } },\n};\n\nconst DEFAULT_ERROR_ANIMATION_VARIANTS: Variants = {\n initial: { opacity: 0, scale: 0.95 },\n animate: { opacity: 1, scale: 1, transition: { duration: 0.2, ease: 'easeOut' } },\n exit: { opacity: 0, scale: 0.95, transition: { duration: 0.15, ease: 'easeIn' } },\n};\n\n// --- Types for Customization ---\ntype CustomLoadingContainerProps = {\n labels: Record<string, string>;\n className?: string;\n};\n\ntype CustomErrorContainerProps = {\n className?: string;\n};\n\ntype CustomNoWalletContainerProps = {\n className?: string;\n};\n\ntype CustomTransactionsHistoryWrapperProps = {\n children: ReactNode;\n activeWalletAddress: string;\n transactionPool: NonNullable<ConnectButtonProps['transactionPool']>;\n pulsarAdapter: NonNullable<ConnectButtonProps['pulsarAdapter']>;\n labels: Record<string, string>;\n className?: string;\n};\n\n/**\n * Customization options for ConnectedModalTxHistory component\n */\nexport type ConnectedModalTxHistoryCustomization = {\n /** Override root container props */\n containerProps?: Partial<\n Omit<\n ComponentPropsWithoutRef<'div'>,\n | 'popover'\n | 'onDrag'\n | 'onDragEnd'\n | 'onDragExit'\n | 'onDragStart'\n | 'onDragStartCapture'\n | 'onAnimationStart'\n | 'onAnimationEnd'\n | 'onAnimationStartCapture'\n | 'onAnimationEndCapture'\n | 'onAnimationIteration'\n | 'onAnimationIterationCapture'\n >\n >;\n /** Custom components */\n components?: {\n /** Custom loading container component */\n LoadingContainer?: ComponentType<CustomLoadingContainerProps>;\n /** Custom error container component */\n ErrorContainer?: ComponentType<CustomErrorContainerProps>;\n /** Custom no wallet container component */\n NoWalletContainer?: ComponentType<CustomNoWalletContainerProps>;\n /** Custom transactions history wrapper component */\n TransactionsHistoryWrapper?: ComponentType<CustomTransactionsHistoryWrapperProps>;\n };\n /** Custom class name generators */\n classNames?: {\n /** Function to generate container classes */\n container?: (params: { hasActiveWallet: boolean; hasValidAdapter: boolean }) => string;\n /** Function to generate loading container classes */\n loadingContainer?: () => string;\n /** Function to generate loading spinner classes */\n loadingSpinner?: () => string;\n /** Function to generate loading text classes */\n loadingText?: () => string;\n /** Function to generate error container classes */\n errorContainer?: () => string;\n /** Function to generate error icon container classes */\n errorIconContainer?: () => string;\n /** Function to generate error icon classes */\n errorIcon?: () => string;\n /** Function to generate error content classes */\n errorContent?: () => string;\n /** Function to generate error title classes */\n errorTitle?: () => string;\n /** Function to generate error description classes */\n errorDescription?: () => string;\n /** Function to generate no wallet container classes */\n noWalletContainer?: () => string;\n /** Function to generate no wallet text classes */\n noWalletText?: () => string;\n /** Function to generate pulsar required container classes */\n pulsarRequiredContainer?: () => string;\n /** Function to generate pulsar required icon container classes */\n pulsarRequiredIconContainer?: () => string;\n /** Function to generate pulsar required icon classes */\n pulsarRequiredIcon?: () => string;\n /** Function to generate pulsar required content classes */\n pulsarRequiredContent?: () => string;\n /** Function to generate pulsar required title classes */\n pulsarRequiredTitle?: () => string;\n /** Function to generate pulsar required description classes */\n pulsarRequiredDescription?: () => string;\n /** Function to generate transactions history wrapper classes */\n transactionsHistoryWrapper?: () => string;\n };\n /** Custom animation variants */\n variants?: {\n /** Container animation variants */\n container?: Variants;\n /** Error animation variants */\n error?: Variants;\n /** Loading animation variants */\n loading?: Variants;\n };\n /** Custom animation configuration */\n animation?: {\n /** Container animation configuration */\n container?: {\n /** Animation duration in seconds */\n duration?: number;\n /** Animation easing curve */\n ease?: Easing | Easing[];\n /** Animation delay in seconds */\n delay?: number;\n };\n /** Error animation configuration */\n error?: {\n /** Animation duration in seconds */\n duration?: number;\n /** Animation easing curve */\n ease?: Easing | Easing[];\n /** Animation delay in seconds */\n delay?: number;\n };\n /** Loading animation configuration */\n loading?: {\n /** Animation duration in seconds */\n duration?: number;\n /** Animation easing curve */\n ease?: Easing | Easing[];\n /** Animation delay in seconds */\n delay?: number;\n };\n };\n /** Custom event handlers */\n handlers?: {\n /** Custom handler for error retry actions */\n onErrorRetry?: (error: Error, event: React.MouseEvent<HTMLButtonElement>) => void;\n /** Custom handler for package loading failure */\n onPackageLoadingFailure?: (packageName: string, error: Error) => void;\n };\n /** Configuration options */\n config?: {\n /** Whether to disable animations */\n disableAnimation?: boolean;\n /** Whether to reduce motion for accessibility */\n reduceMotion?: boolean;\n /** Custom package name for error messages */\n packageName?: string;\n /** Custom aria labels for different states */\n ariaLabels?: {\n loading?: string;\n error?: string;\n noWallet?: string;\n pulsarRequired?: string;\n transactionsHistory?: string;\n };\n };\n};\n\n/**\n * Props for the ConnectedModalTxHistory component\n */\nexport interface ConnectedModalTxHistoryProps extends Pick<ConnectButtonProps, 'transactionPool' | 'pulsarAdapter'> {\n /** Additional CSS classes for the container */\n className?: string;\n /** Custom aria-label for the container */\n 'aria-label'?: string;\n /** Customization options */\n customization?: ConnectedModalTxHistoryCustomization;\n}\n\n/**\n * Lazy import of TransactionsHistory component with error handling\n * This allows the component to work even if the @tuwaio/nova-transactions package is not available\n */\nconst TransactionsHistory = lazy(() => {\n try {\n return import('@tuwaio/nova-transactions').then((module) => ({\n default: module.TransactionsHistory,\n }));\n } catch (error) {\n console.warn('Failed to load @tuwaio/nova-transactions package:', error);\n // Return a promise that never resolves to trigger error boundary\n return new Promise(() => {});\n }\n});\n\n// --- Default Sub-Components ---\nconst DefaultLoadingContainer: React.FC<CustomLoadingContainerProps> = ({ labels, className }) => {\n return (\n <div\n className={cn(\n 'novacon:flex novacon:flex-col novacon:items-center novacon:justify-center novacon:p-8 novacon:gap-4',\n className,\n )}\n role=\"status\"\n aria-live=\"polite\"\n >\n <div className=\"novacon:animate-spin novacon:rounded-full novacon:h-8 novacon:w-8 novacon:border-2 novacon:border-[var(--tuwa-text-accent)] novacon:border-t-transparent\" />\n <p className=\"novacon:text-sm novacon:text-[var(--tuwa-text-secondary)]\">\n {labels.loading} {labels.transactionsInApp.toLowerCase()}...\n </p>\n </div>\n );\n};\n\nconst DefaultErrorContainer: React.FC<CustomErrorContainerProps> = ({ className }) => {\n return (\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.3, ease: 'easeOut' }}\n className={cn(\n 'novacon:flex novacon:flex-col novacon:items-center novacon:justify-center novacon:text-center novacon:gap-4 novacon:p-6',\n className,\n )}\n role=\"alert\"\n aria-live=\"assertive\"\n >\n <div className=\"novacon:w-12 novacon:h-12 novacon:p-2 novacon:rounded-full novacon:bg-[var(--tuwa-warning-bg)] novacon:text-[var(--tuwa-warning-text)]\">\n <ExclamationTriangleIcon className=\"novacon:w-full novacon:h-full\" />\n </div>\n\n <div className=\"novacon:space-y-2\">\n <h2 className=\"novacon:text-lg novacon:font-semibold novacon:text-[var(--tuwa-text-primary)]\">\n Transaction History Not Available\n </h2>\n <p className=\"novacon:text-sm novacon:text-[var(--tuwa-text-secondary)] novacon:max-w-md\">\n Transaction history is not supported by this application at the moment. The required package is not installed\n or configured.\n </p>\n </div>\n </motion.div>\n );\n};\n\nconst DefaultNoWalletContainer: React.FC<CustomNoWalletContainerProps> = ({ className }) => {\n return (\n <div\n className={cn('novacon:flex novacon:flex-col novacon:items-center novacon:justify-center novacon:p-6', className)}\n role=\"status\"\n >\n <p className=\"novacon:text-sm novacon:text-[var(--tuwa-text-secondary)]\">No wallet connected</p>\n </div>\n );\n};\n\nconst DefaultTransactionsHistoryWrapper: React.FC<CustomTransactionsHistoryWrapperProps> = ({\n children,\n activeWalletAddress,\n labels,\n className,\n}) => {\n return (\n <div\n className={cn('novacon:w-full', className)}\n aria-label={`${labels.transactionsInApp} for ${activeWalletAddress}`}\n >\n {children}\n </div>\n );\n};\n\n/**\n * Pulsar adapter required fallback component\n */\nfunction PulsarAdapterRequired({\n labels,\n customization,\n}: {\n labels: Record<string, string>;\n customization?: ConnectedModalTxHistoryCustomization;\n}) {\n const containerClasses =\n customization?.classNames?.pulsarRequiredContainer?.() ??\n 'novacon:flex novacon:flex-col novacon:items-center novacon:justify-center novacon:text-center novacon:gap-4 novacon:p-6';\n const iconContainerClasses =\n customization?.classNames?.pulsarRequiredIconContainer?.() ??\n 'novacon:w-12 novacon:h-12 novacon:p-2 novacon:rounded-full novacon:bg-gradient-to-r novacon:from-[var(--tuwa-button-gradient-from)] novacon:to-[var(--tuwa-button-gradient-to)] novacon:text-[var(--tuwa-text-on-accent)]';\n const iconClasses = customization?.classNames?.pulsarRequiredIcon?.() ?? 'novacon:w-full novacon:h-full';\n const contentClasses = customization?.classNames?.pulsarRequiredContent?.() ?? 'novacon:space-y-2';\n const titleClasses =\n customization?.classNames?.pulsarRequiredTitle?.() ??\n 'novacon:text-lg novacon:font-semibold novacon:text-[var(--tuwa-text-primary)]';\n const descriptionClasses =\n customization?.classNames?.pulsarRequiredDescription?.() ??\n 'novacon:text-sm novacon:text-[var(--tuwa-text-secondary)] novacon:max-w-md novacon:leading-relaxed';\n\n const errorVariants = customization?.variants?.error || DEFAULT_ERROR_ANIMATION_VARIANTS;\n const disableAnimation = customization?.config?.disableAnimation || customization?.config?.reduceMotion;\n\n const content = (\n <div className={containerClasses} role=\"alert\">\n <div className={iconContainerClasses}>\n <PuzzlePieceIcon className={iconClasses} />\n </div>\n\n <div className={contentClasses}>\n <h2 className={titleClasses}>{labels.pulsarAdapterRequired}</h2>\n <p className={descriptionClasses}>{labels.pulsarAdapterDescription}</p>\n </div>\n </div>\n );\n\n if (disableAnimation) {\n return content;\n }\n\n return (\n <motion.div\n variants={errorVariants}\n initial=\"initial\"\n animate=\"animate\"\n exit=\"exit\"\n transition={{\n duration: customization?.animation?.error?.duration ?? 0.2,\n ease: customization?.animation?.error?.ease ?? 'easeOut',\n delay: customization?.animation?.error?.delay ?? 0,\n }}\n >\n {content}\n </motion.div>\n );\n}\n\n/**\n * Simple Error Boundary component for handling TransactionsHistory loading errors\n */\ninterface ErrorBoundaryState {\n hasError: boolean;\n error?: Error;\n}\n\ninterface ErrorBoundaryProps {\n children: React.ReactNode;\n fallback: React.ReactNode;\n onError?: (error: Error, errorInfo: React.ErrorInfo) => void;\n}\n\nclass ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n constructor(props: ErrorBoundaryProps) {\n super(props);\n this.state = { hasError: false };\n }\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return { hasError: true, error };\n }\n\n componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {\n console.warn('TransactionsHistory component failed to load:', error, errorInfo);\n\n if (this.props.onError) {\n this.props.onError(error, errorInfo);\n }\n }\n\n render() {\n if (this.state.hasError) {\n return this.props.fallback;\n }\n\n return this.props.children;\n }\n}\n\n/**\n * Component for displaying transaction history with comprehensive customization options.\n *\n * This component provides comprehensive transaction history functionality:\n * - Conditional loading of the @tuwaio/nova-transactions package\n * - Graceful fallback when the package is not available\n * - Loading states with proper accessibility support\n * - Error handling for missing configuration\n * - Full WCAG compliance with ARIA labels\n * - Comprehensive customization for all UI elements and behaviors\n * - Animation support with reduced motion options\n * - Custom event handlers for enhanced interactivity\n * - Performance-optimized with memoized calculations\n *\n * The component automatically detects if the required dependencies are available\n * and provides appropriate fallbacks for different scenarios.\n *\n * @example Basic usage\n * ```tsx\n * <ConnectedModalTxHistory\n * transactionPool={txPool}\n * pulsarAdapter={adapter}\n * className=\"custom-styling\"\n * />\n * ```\n *\n * @example With full customization\n * ```tsx\n * <ConnectedModalTxHistory\n * transactionPool={txPool}\n * pulsarAdapter={adapter}\n * customization={{\n * classNames: {\n * container: ({ hasActiveWallet }) =>\n * `custom-container ${hasActiveWallet ? 'has-wallet' : 'no-wallet'}`,\n * loadingContainer: () => \"custom-loading bg-blue-100\",\n * errorContainer: () => \"custom-error bg-red-100\",\n * },\n * components: {\n * LoadingContainer: ({ className }) =>\n * <div className={cn(\"custom-spinner\", className)} />,\n * },\n * handlers: {\n * onPackageLoadingFailure: (packageName, error) =>\n * console.error(`Failed to load ${packageName}:`, error),\n * },\n * config: {\n * packageName: '@custom/transactions',\n * ariaLabels: {\n * loading: 'Loading transaction history...',\n * error: 'Error loading transactions',\n * },\n * },\n * animation: {\n * container: { duration: 0.3, ease: 'easeOut' },\n * error: { duration: 0.2, ease: 'easeIn' },\n * },\n * }}\n * />\n * ```\n */\nexport const ConnectedModalTxHistory = forwardRef<HTMLDivElement, ConnectedModalTxHistoryProps>(\n ({ transactionPool, pulsarAdapter, className, 'aria-label': ariaLabel, customization, ...props }, ref) => {\n const labels = useNovaConnectLabels();\n const { activeWallet } = useNovaConnect();\n\n // Extract custom components and config\n const {\n LoadingContainer = DefaultLoadingContainer,\n ErrorContainer = DefaultErrorContainer,\n NoWalletContainer = DefaultNoWalletContainer,\n TransactionsHistoryWrapper = DefaultTransactionsHistoryWrapper,\n } = customization?.components ?? {};\n\n const {\n disableAnimation = false,\n reduceMotion = false,\n packageName = '@tuwaio/nova-transactions',\n ariaLabels,\n } = customization?.config ?? {};\n\n /**\n * Memoized check for active wallet availability\n */\n const hasActiveWallet = useMemo(() => Boolean(activeWallet?.isConnected), [activeWallet?.isConnected]);\n\n /**\n * Memoized check for adapter availability\n */\n const hasValidAdapter = useMemo(() => Boolean(transactionPool && pulsarAdapter), [transactionPool, pulsarAdapter]);\n\n /**\n * Generate container classes with custom generator\n */\n const containerClasses = useMemo(() => {\n if (customization?.classNames?.container) {\n return customization.classNames.container({ hasActiveWallet, hasValidAdapter });\n }\n return cn('novacon:flex novacon:flex-col novacon:items-center novacon:justify-center novacon:p-4', className);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customization?.classNames?.container, hasActiveWallet, hasValidAdapter, className]);\n\n /**\n * Error handler callbacks\n */\n const handlePackageLoadingFailure = useCallback(\n (error: Error) => {\n if (customization?.handlers?.onPackageLoadingFailure) {\n customization.handlers.onPackageLoadingFailure(packageName, error);\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [customization?.handlers?.onPackageLoadingFailure, packageName],\n );\n\n /**\n * Animation variants\n */\n const containerVariants = customization?.variants?.container || DEFAULT_CONTAINER_ANIMATION_VARIANTS;\n\n /**\n * Merge container props\n */\n const containerProps = useMemo(\n () => ({\n ...customization?.containerProps,\n ...props,\n ref,\n className: containerClasses,\n 'aria-label': ariaLabel || ariaLabels?.transactionsHistory || `${labels.transactionsInApp}`,\n }),\n [\n customization?.containerProps,\n props,\n ref,\n containerClasses,\n ariaLabel,\n ariaLabels?.transactionsHistory,\n labels.transactionsInApp,\n ],\n );\n\n /**\n * Loading component with customization\n */\n const loadingComponent = useMemo(\n () => <LoadingContainer labels={labels} className={customization?.classNames?.loadingContainer?.()} />,\n [LoadingContainer, labels, customization?.classNames],\n );\n\n /**\n * Error fallback component with customization\n */\n const errorComponent = useMemo(\n () => <ErrorContainer className={customization?.classNames?.errorContainer?.()} />,\n [ErrorContainer, customization?.classNames],\n );\n\n /**\n * No wallet component with customization\n */\n const noWalletComponent = useMemo(\n () => <NoWalletContainer className={customization?.classNames?.noWalletContainer?.()} />,\n [NoWalletContainer, customization?.classNames],\n );\n\n const content = useMemo(() => {\n // Early return if no active wallet\n if (!hasActiveWallet) {\n return noWalletComponent;\n }\n\n if (hasValidAdapter && transactionPool && pulsarAdapter) {\n return (\n <Suspense fallback={loadingComponent}>\n <ErrorBoundary fallback={errorComponent} onError={handlePackageLoadingFailure}>\n <TransactionsHistoryWrapper\n activeWalletAddress={activeWallet!.address}\n transactionPool={transactionPool}\n pulsarAdapter={pulsarAdapter}\n labels={labels}\n className={customization?.classNames?.transactionsHistoryWrapper?.()}\n >\n <TransactionsHistory\n transactionsPool={transactionPool}\n adapter={pulsarAdapter}\n connectedWalletAddress={activeWallet!.address}\n className=\"novacon:w-full\"\n />\n </TransactionsHistoryWrapper>\n </ErrorBoundary>\n </Suspense>\n );\n }\n\n return <PulsarAdapterRequired labels={labels} customization={customization} />;\n }, [\n hasActiveWallet,\n hasValidAdapter,\n transactionPool,\n pulsarAdapter,\n activeWallet,\n noWalletComponent,\n loadingComponent,\n errorComponent,\n handlePackageLoadingFailure,\n TransactionsHistoryWrapper,\n labels,\n customization,\n ]);\n\n if (disableAnimation || reduceMotion) {\n return <div {...containerProps}>{content}</div>;\n }\n\n return (\n <motion.div\n {...containerProps}\n variants={containerVariants}\n initial=\"initial\"\n animate=\"animate\"\n exit=\"exit\"\n transition={{\n duration: customization?.animation?.container?.duration ?? 0.3,\n ease: customization?.animation?.container?.ease ?? 'easeOut',\n delay: customization?.animation?.container?.delay ?? 0,\n }}\n >\n {content}\n </motion.div>\n );\n },\n);\n\nConnectedModalTxHistory.displayName = 'ConnectedModalTxHistory';\n","/**\n * @file ConnectedModal component with comprehensive customization options for all child components.\n */\n\nimport { ChevronLeftIcon } from '@heroicons/react/24/solid';\nimport { CloseIcon, cn, Dialog, DialogClose, DialogContent, DialogHeader, DialogTitle } from '@tuwaio/nova-core';\nimport { formatWalletChainId, getAdapterFromWalletType, OrbitAdapter, WalletType } from '@tuwaio/orbit-core';\nimport { type Easing, motion, type Transition, type Variants } from 'framer-motion';\nimport React, { ComponentPropsWithoutRef, ComponentType, forwardRef, useCallback, useEffect, useMemo } from 'react';\n\nimport { NativeBalanceResult, useGetWalletNameAndAvatar, useWalletNativeBalance } from '../../hooks';\nimport { NovaConnectProviderType, useNovaConnect } from '../../hooks/useNovaConnect';\nimport { useNovaConnectLabels } from '../../hooks/useNovaConnectLabels';\nimport { getChainsListByWalletType, getWalletChains } from '../../utils';\nimport { ScrollableChainList, type ScrollableChainListProps } from '../Chains/ScrollableChainList';\nimport { ConnectButtonProps } from '../ConnectButton/ConnectButton';\nimport { ConnectedModalFooter, type ConnectedModalFooterProps } from './ConnectedModalFooter';\nimport {\n ConnectedModalMainContent,\n type ConnectedModalMainContentCustomization,\n type ConnectedModalMainContentProps,\n} from './ConnectedModalMainContent';\nimport { ConnectedModalTxHistory, type ConnectedModalTxHistoryProps } from './ConnectedModalTxHistory';\n\n// --- Default Motion Variants ---\nconst DEFAULT_MODAL_ANIMATION_VARIANTS: Variants = {\n initial: { opacity: 0, scale: 0.95, y: 10 },\n animate: {\n opacity: 1,\n scale: 1,\n y: 0,\n transition: { duration: 0.3, ease: 'easeOut' },\n },\n exit: {\n opacity: 0,\n scale: 0.95,\n y: -10,\n transition: { duration: 0.2, ease: 'easeIn' },\n },\n};\n\n// --- Content Types ---\ntype ConnectedModalContentType = 'main' | 'transactions' | 'chains';\n\n// --- Component Props Types ---\ntype HeaderProps = {\n contentType: ConnectedModalContentType;\n title: string;\n onBack: () => void;\n onClose: () => void;\n labels: Record<string, string>;\n className?: string;\n};\n\ntype BackButtonProps = {\n onBack: () => void;\n labels: Record<string, string>;\n className?: string;\n};\n\ntype TitleProps = {\n title: string;\n className?: string;\n};\n\ntype CloseButtonProps = {\n onClose: () => void;\n labels: Record<string, string>;\n className?: string;\n};\n\ntype MainContentProps = Pick<ConnectButtonProps, 'transactionPool' | 'store' | 'pulsarAdapter'> &\n Pick<NovaConnectProviderType, 'activeWallet'> & {\n contentType: ConnectedModalContentType;\n balance: NativeBalanceResult | null;\n ensNameAbbreviated: string | undefined;\n avatarIsLoading: boolean;\n balanceLoading: boolean;\n ensAvatar: string | null;\n chainsList: (string | number)[];\n onChainChange: (chainId: string) => void;\n onBack: () => void;\n getChainData: (chain: string | number) => { formattedChainId: string | number; chain: string | number };\n className?: string;\n };\n\n// --- Wallet Name Hook Config Type ---\ntype WalletNameConfig = {\n abbreviateSymbols?: number;\n maxNameLength?: number;\n autoRetry?: boolean;\n retryDelay?: number;\n};\n\n/**\n * Customization options for ConnectedModal component\n */\nexport type ConnectedModalCustomization = {\n /** Override root dialog props */\n dialogProps?: Partial<ComponentPropsWithoutRef<typeof Dialog>>;\n /** Override dialog content props */\n dialogContentProps?: Partial<ComponentPropsWithoutRef<typeof DialogContent>>;\n /** Custom components */\n components?: {\n /** Custom dialog component */\n Dialog?: ComponentType<ComponentPropsWithoutRef<typeof Dialog>>;\n /** Custom dialog content component */\n DialogContent?: ComponentType<ComponentPropsWithoutRef<typeof DialogContent>>;\n /** Custom dialog header component */\n DialogHeader?: ComponentType<ComponentPropsWithoutRef<'div'>>;\n /** Custom dialog title component */\n DialogTitle?: ComponentType<ComponentPropsWithoutRef<'h2'>>;\n /** Custom header component */\n Header?: ComponentType<HeaderProps>;\n /** Custom back button component */\n BackButton?: ComponentType<BackButtonProps>;\n /** Custom title component */\n Title?: ComponentType<TitleProps>;\n /** Custom close button component */\n CloseButton?: ComponentType<CloseButtonProps>;\n /** Custom main content component */\n MainContent?: ComponentType<MainContentProps>;\n /** Custom main content renderer for main view */\n MainContentRenderer?: ComponentType<ConnectedModalMainContentProps>;\n /** Custom transactions content renderer */\n TransactionsContentRenderer?: ComponentType<ConnectedModalTxHistoryProps>;\n /** Custom chains content renderer */\n ChainsContentRenderer?: ComponentType<ScrollableChainListProps>;\n /** Custom footer component */\n Footer?: ComponentType<ConnectedModalFooterProps>;\n /** Custom motion container */\n MotionContainer?: ComponentType<ComponentPropsWithoutRef<typeof motion.div>>;\n };\n /** Custom class name generators */\n classNames?: {\n /** Function to generate dialog classes */\n dialog?: () => string;\n /** Function to generate dialog content classes */\n dialogContent?: (params: { contentType: ConnectedModalContentType; hasActiveWallet: boolean }) => string;\n /** Function to generate motion container classes */\n motionContainer?: () => string;\n /** Function to generate content container classes */\n contentContainer?: (params: { contentType: ConnectedModalContentType }) => string;\n /** Function to generate header classes */\n header?: (params: { contentType: ConnectedModalContentType }) => string;\n /** Function to generate back button classes */\n backButton?: () => string;\n /** Function to generate title classes */\n title?: (params: { contentType: ConnectedModalContentType }) => string;\n /** Function to generate close button classes */\n closeButton?: () => string;\n /** Function to generate main content classes */\n mainContent?: (params: { contentType: ConnectedModalContentType }) => string;\n /** Function to generate footer classes */\n footer?: () => string;\n };\n /** Custom animation variants */\n variants?: {\n /** Modal animation variants */\n modal?: Variants;\n /** Content animation variants */\n content?: Variants;\n };\n /** Custom animation configuration */\n animation?: {\n /** Modal animation configuration */\n modal?: {\n /** Animation duration in seconds */\n duration?: number;\n /** Animation easing curve */\n ease?: Easing | Easing[];\n /** Animation delay in seconds */\n delay?: number;\n };\n /** Content animation configuration */\n content?: {\n /** Animation duration in seconds */\n duration?: number;\n /** Animation easing curve */\n ease?: Easing | Easing[];\n /** Animation delay in seconds */\n delay?: number;\n };\n /** Layout animation configuration */\n layout?: {\n /** Animation duration in seconds */\n duration?: number;\n /** Animation easing curve */\n ease?: Easing | Easing[];\n };\n };\n /** Custom event handlers */\n handlers?: {\n /** Custom handler for modal open state change */\n onOpenChange?: (open: boolean) => void;\n /** Custom handler for back navigation */\n onBack?: () => void;\n /** Custom handler for modal close */\n onClose?: () => void;\n /** Custom handler for chain change */\n onChainChange?: (chainId: string) => void;\n /** Custom handler for content type change */\n onContentTypeChange?: (type: ConnectedModalContentType) => void;\n };\n /** Child component customizations */\n childCustomizations?: {\n /** Customization for ConnectedModalMainContent component */\n mainContent?: ConnectedModalMainContentCustomization;\n /** Customization for ConnectedModalTxHistory component */\n txHistory?: Record<string, unknown>; // Will be properly typed when that component is updated\n /** Customization for ScrollableChainList component */\n chainList?: Record<string, unknown>; // Will be properly typed when that component is updated\n /** Customization for ConnectedModalFooter component */\n footer?: Record<string, unknown>; // Will be properly typed when that component is updated\n };\n /** Configuration options */\n config?: {\n /** Whether to disable animations */\n disableAnimation?: boolean;\n /** Whether to reduce motion for accessibility */\n reduceMotion?: boolean;\n /** Whether to auto-reset to main view when opening */\n autoResetToMain?: boolean;\n /** Custom ARIA labels for different states */\n ariaLabels?: {\n dialog?: string;\n header?: string;\n backButton?: string;\n closeButton?: string;\n mainContent?: string;\n };\n /** Hook configurations */\n hooks?: {\n /** Configuration for wallet name and avatar hook */\n walletNameAndAvatar?: WalletNameConfig;\n };\n };\n};\n\n/**\n * Props for the ConnectedModal component\n */\nexport interface ConnectedModalProps extends Omit<ConnectButtonProps, 'className' | 'customization'> {\n /** Additional CSS classes for the modal */\n className?: string;\n /** Customization options */\n customization?: ConnectedModalCustomization;\n}\n\n// --- Default Sub-Components ---\nconst DefaultBackButton: React.FC<BackButtonProps> = ({ onBack, labels, className }) => (\n <button\n type=\"button\"\n onClick={onBack}\n aria-label={labels.back}\n className={cn(\n 'novacon:cursor-pointer novacon:rounded-full novacon:p-1',\n 'novacon:text-[var(--tuwa-text-tertiary)] novacon:transition-colors',\n 'novacon:hover:bg-[var(--tuwa-bg-muted)] novacon:hover:text-[var(--tuwa-text-primary)]',\n 'novacon:focus:outline-none novacon:focus:ring-2 novacon:focus:ring-[var(--tuwa-border-primary)]',\n className,\n )}\n >\n <ChevronLeftIcon className=\"novacon:h-5 novacon:w-5\" />\n </button>\n);\n\nconst DefaultTitle: React.FC<TitleProps> = ({ title, className }) => (\n <span className={cn('novacon:flex-1 novacon:text-center novacon:font-semibold', className)}>{title}</span>\n);\n\nconst DefaultCloseButton: React.FC<CloseButtonProps> = ({ onClose, labels, className }) => (\n <DialogClose asChild>\n <button\n type=\"button\"\n onClick={onClose}\n aria-label={labels.closeModal}\n className={cn(\n 'novacon:cursor-pointer novacon:rounded-full novacon:p-1',\n 'novacon:text-[var(--tuwa-text-tertiary)] novacon:transition-colors',\n 'novacon:hover:bg-[var(--tuwa-bg-muted)] novacon:hover:text-[var(--tuwa-text-primary)]',\n 'novacon:focus:outline-none novacon:focus:ring-2 novacon:focus:ring-[var(--tuwa-border-primary)]',\n className,\n )}\n >\n <CloseIcon />\n </button>\n </DialogClose>\n);\n\nconst DefaultHeader: React.FC<HeaderProps> = ({ contentType, title, onBack, onClose, labels, className }) => (\n <DialogHeader className={className}>\n <DialogTitle>\n <div className=\"novacon:flex novacon:items-center novacon:justify-between novacon:gap-2\">\n {contentType !== 'main' && <DefaultBackButton onBack={onBack} labels={labels} />}\n <DefaultTitle title={title} />\n </div>\n </DialogTitle>\n <DefaultCloseButton onClose={onClose} labels={labels} />\n </DialogHeader>\n);\n\nconst DefaultMainContent: React.FC<MainContentProps> = ({\n contentType,\n balance,\n ensNameAbbreviated,\n avatarIsLoading,\n balanceLoading,\n store,\n ensAvatar,\n chainsList,\n transactionPool,\n pulsarAdapter,\n activeWallet,\n onChainChange,\n onBack,\n getChainData,\n className,\n}) => {\n const renderContent = () => {\n switch (contentType) {\n case 'main':\n return (\n <ConnectedModalMainContent\n balance={balance}\n ensNameAbbreviated={ensNameAbbreviated}\n avatarIsLoading={avatarIsLoading}\n balanceLoading={balanceLoading}\n store={store}\n ensAvatar={ensAvatar}\n chainsList={chainsList}\n transactionPool={transactionPool}\n />\n );\n case 'transactions':\n return <ConnectedModalTxHistory transactionPool={transactionPool} pulsarAdapter={pulsarAdapter} />;\n case 'chains':\n if (!activeWallet) return null;\n return (\n <ScrollableChainList\n chainsList={chainsList}\n selectValue={String(\n formatWalletChainId(\n (activeWallet as { chainId: string | number }).chainId,\n getAdapterFromWalletType((activeWallet as { walletType: WalletType }).walletType),\n ),\n )}\n handleValueChange={onChainChange}\n getChainData={getChainData}\n onClose={onBack}\n />\n );\n default:\n return null;\n }\n };\n\n return (\n <main\n className={cn('novacon:relative', className)}\n id=\"connected-modal-description\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {renderContent()}\n </main>\n );\n};\n\n/**\n * Modal component that displays wallet connection status and provides access to wallet controls with comprehensive customization options.\n *\n * This modal serves as the main interface for connected wallet management, offering:\n * - Wallet connection status and information\n * - Network switching capabilities\n * - Transaction history viewing\n * - Wallet disconnection controls\n * - Comprehensive customization for all UI elements and behaviors\n * - Animation support with reduced motion options\n * - Custom event handlers for enhanced interactivity\n * - Performance-optimized with memoized calculations\n * - Full customization of child components through parent\n *\n * The modal adapts its content based on the current view state and provides\n * full WCAG compliance with proper ARIA labels and keyboard navigation support.\n *\n * @example Basic usage\n * ```tsx\n * <ConnectedModal\n * solanaRPCUrls={solanaConfig}\n * transactionPool={txPool}\n * pulsarAdapter={adapter}\n * appChains={chainConfig}\n * store={store}\n * />\n * ```\n */\nexport const ConnectedModal = forwardRef<HTMLDivElement, ConnectedModalProps>(\n ({ solanaRPCUrls, transactionPool, pulsarAdapter, appChains, className, store, customization }, ref) => {\n // Get localized labels for UI text\n const labels = useNovaConnectLabels();\n\n // Get modal state and controls from hook\n const {\n setConnectedModalContentType,\n isConnectedModalOpen,\n setIsConnectedModalOpen,\n connectedModalContentType,\n activeWallet,\n } = useNovaConnect();\n\n // Extract customization options with stable references\n const {\n Dialog: CustomDialog = Dialog,\n DialogContent: CustomDialogContent = DialogContent,\n Header: CustomHeader = DefaultHeader,\n MainContent: CustomMainContent = DefaultMainContent,\n Footer: CustomFooter = ConnectedModalFooter,\n MotionContainer = motion.div,\n } = customization?.components ?? {};\n\n const {\n disableAnimation = false,\n reduceMotion = false,\n autoResetToMain = true,\n ariaLabels,\n hooks: hooksConfig,\n } = customization?.config ?? {};\n\n // Memoize handler references\n const customHandlers = useMemo(() => customization?.handlers, [customization?.handlers]);\n\n // Hook configurations\n const walletNameConfig: WalletNameConfig = useMemo(\n () =>\n hooksConfig?.walletNameAndAvatar ?? {\n abbreviateSymbols: 6,\n maxNameLength: 30,\n autoRetry: false,\n retryDelay: 3000,\n },\n [hooksConfig?.walletNameAndAvatar],\n );\n\n const {\n ensAvatar,\n ensNameAbbreviated,\n isLoading: avatarIsLoading,\n } = useGetWalletNameAndAvatar({\n activeWallet,\n store,\n ...walletNameConfig,\n });\n\n const { balance, isLoading: balanceLoading } = useWalletNativeBalance({ store, activeWallet });\n\n /**\n * Handles network switching when user selects a different chain\n */\n const handleChainChange = useCallback(\n (newChainId: string) => {\n if (customHandlers?.onChainChange) {\n customHandlers.onChainChange(newChainId);\n } else {\n (store?.getState() as { switchNetwork: (chainId: string) => void })?.switchNetwork(newChainId);\n }\n },\n [customHandlers, store],\n );\n\n /**\n * Handle modal open state changes\n */\n const handleOpenChange = useCallback(\n (open: boolean) => {\n if (customHandlers?.onOpenChange) {\n customHandlers.onOpenChange(open);\n } else {\n setIsConnectedModalOpen(open);\n }\n },\n [customHandlers, setIsConnectedModalOpen],\n );\n\n /**\n * Reset modal content to main view when modal opens\n * This ensures consistent initial state every time the modal is opened\n */\n useEffect(() => {\n if (isConnectedModalOpen && autoResetToMain) {\n setConnectedModalContentType('main');\n }\n }, [isConnectedModalOpen, autoResetToMain, setConnectedModalContentType]);\n\n /**\n * Memoized chains list to prevent unnecessary recalculations\n * Only recalculates when wallet type or configuration changes\n */\n const chainsList = useMemo(() => {\n if (!activeWallet) {\n return getChainsListByWalletType({\n walletType: `${OrbitAdapter.EVM}:not-connected`,\n appChains,\n solanaRPCUrls,\n chains: [],\n });\n }\n\n // Safely extract wallet chains using shared utility\n const walletChains = getWalletChains(activeWallet);\n\n return getChainsListByWalletType({\n walletType: (activeWallet as { walletType: WalletType }).walletType,\n appChains,\n solanaRPCUrls,\n chains: walletChains,\n });\n }, [activeWallet, appChains, solanaRPCUrls]);\n\n /**\n * Helper function to format chain data for display and selection\n * @param chain - Chain identifier (string or number)\n * @returns Object with formatted chain ID and original chain value\n */\n const getChainData = useCallback(\n (chain: string | number) => {\n if (!activeWallet) {\n return { formattedChainId: chain, chain };\n }\n\n return {\n formattedChainId: formatWalletChainId(\n chain,\n getAdapterFromWalletType((activeWallet as { walletType: WalletType }).walletType),\n ),\n chain,\n };\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [activeWallet?.walletType],\n );\n\n /**\n * Get localized title based on current modal content type\n * @returns Appropriate title string from labels\n */\n const getTitle = useCallback((): string => {\n switch (connectedModalContentType) {\n case 'transactions':\n return labels.transactionsInApp;\n case 'chains':\n return labels.switchNetwork;\n default:\n return labels.connected;\n }\n }, [connectedModalContentType, labels]);\n\n /**\n * Navigate back to main modal content\n * Used by back button in sub-views\n */\n const handleBackToMain = useCallback(() => {\n if (customHandlers?.onBack) {\n customHandlers.onBack();\n } else {\n setConnectedModalContentType('main');\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customHandlers?.onBack, setConnectedModalContentType]);\n\n /**\n * Close the entire modal\n * Resets state and closes modal dialog\n */\n const handleCloseModal = useCallback(() => {\n if (customHandlers?.onClose) {\n customHandlers.onClose();\n } else {\n setIsConnectedModalOpen(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customHandlers?.onClose, setIsConnectedModalOpen]);\n\n /**\n * Memoized state calculations\n */\n const hasActiveWallet = useMemo(\n () => Boolean(activeWallet && (activeWallet as { isConnected?: boolean }).isConnected),\n [activeWallet],\n );\n const currentTitle = useMemo(() => getTitle(), [getTitle]);\n\n /**\n * Generate dialog content classes\n */\n const dialogContentClasses = useMemo(() => {\n if (customization?.classNames?.dialogContent) {\n return customization.classNames.dialogContent({\n contentType: connectedModalContentType,\n hasActiveWallet,\n });\n }\n return cn('novacon:w-full novacon:sm:max-w-md', className);\n }, [customization, connectedModalContentType, hasActiveWallet, className]);\n\n /**\n * Animation variants\n */\n const modalVariants = useMemo(\n () => customization?.variants?.modal || DEFAULT_MODAL_ANIMATION_VARIANTS,\n [customization?.variants?.modal],\n );\n\n /**\n * Motion props configuration\n */\n const motionProps = useMemo(() => {\n if (disableAnimation || reduceMotion) {\n return {};\n }\n\n const layoutTransition: Transition = {\n duration: customization?.animation?.layout?.duration ?? 0.0001,\n ease: customization?.animation?.layout?.ease,\n };\n\n return {\n layout: true,\n variants: modalVariants,\n initial: 'initial' as const,\n animate: 'animate' as const,\n exit: 'exit' as const,\n transition: {\n layout: layoutTransition,\n duration: customization?.animation?.modal?.duration ?? 0.3,\n ease: customization?.animation?.modal?.ease ?? 'easeOut',\n delay: customization?.animation?.modal?.delay ?? 0,\n },\n };\n }, [disableAnimation, reduceMotion, modalVariants, customization]);\n\n // Early return if no active wallet - prevents rendering empty modal\n if (!hasActiveWallet || !activeWallet) {\n return null;\n }\n\n const content = (\n <>\n {/* Modal header with navigation and close controls */}\n <CustomHeader\n contentType={connectedModalContentType}\n title={currentTitle}\n onBack={handleBackToMain}\n onClose={handleCloseModal}\n labels={labels}\n className={customization?.classNames?.header?.({ contentType: connectedModalContentType })}\n />\n\n {/* Main content area - changes based on current view */}\n <CustomMainContent\n contentType={connectedModalContentType}\n balance={balance}\n ensNameAbbreviated={ensNameAbbreviated}\n avatarIsLoading={avatarIsLoading}\n balanceLoading={balanceLoading}\n store={store}\n ensAvatar={ensAvatar}\n chainsList={chainsList}\n transactionPool={transactionPool}\n pulsarAdapter={pulsarAdapter}\n activeWallet={activeWallet}\n onChainChange={handleChainChange}\n onBack={handleBackToMain}\n getChainData={getChainData}\n className={customization?.classNames?.mainContent?.({ contentType: connectedModalContentType })}\n />\n\n {/* Footer with additional controls */}\n <CustomFooter\n store={store}\n setIsOpen={setIsConnectedModalOpen}\n className={customization?.classNames?.footer?.()}\n />\n </>\n );\n\n return (\n <CustomDialog open={isConnectedModalOpen} onOpenChange={handleOpenChange} {...customization?.dialogProps}>\n <CustomDialogContent\n ref={ref}\n className={dialogContentClasses}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={ariaLabels?.dialog}\n {...customization?.dialogContentProps}\n >\n <MotionContainer className={customization?.classNames?.motionContainer?.()} {...motionProps}>\n <div\n className={\n customization?.classNames?.contentContainer?.({ contentType: connectedModalContentType })\n ? customization?.classNames?.contentContainer?.({ contentType: connectedModalContentType })\n : cn('novacon:relative novacon:flex novacon:w-full novacon:flex-col')\n }\n >\n {content}\n </div>\n </MotionContainer>\n </CustomDialogContent>\n </CustomDialog>\n );\n },\n);\n\nConnectedModal.displayName = 'ConnectedModal';\n","export const digitalPassportImage =\n 'data:image/png;base64,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';\n","export const walletImage =\n 'data:image/png;base64,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';\n","/**\n * @file AboutWallets component with comprehensive customization options and touch support.\n */\n\nimport { cn, StarsBackground } from '@tuwaio/nova-core';\nimport { AnimatePresence, motion, type Transition, type Variants } from 'framer-motion';\nimport React, {\n ComponentPropsWithoutRef,\n ComponentType,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nimport { useNovaConnectLabels } from '../../hooks/useNovaConnectLabels';\nimport { digitalPassportImage } from './images/digitalPassportImage';\nimport { walletImage } from './images/walletImage';\n\n// --- Types ---\ntype SlideConfig = {\n id: number;\n image: string;\n titleKey: keyof Record<string, string>;\n descriptionKey: keyof Record<string, string>;\n};\n\ntype SlideDirection = -1 | 0 | 1;\n\ntype TouchState = {\n isDragging: boolean;\n startX: number;\n currentX: number;\n threshold: number;\n};\n\n// --- Component Props Types ---\ntype SectionProps = {\n className?: string;\n children: React.ReactNode;\n onKeyDown?: (event: React.KeyboardEvent) => void;\n tabIndex?: number;\n role?: string;\n 'aria-label'?: string;\n 'aria-roledescription'?: string;\n} & React.RefAttributes<HTMLElement>;\n\ntype SlideContainerProps = {\n className?: string;\n children: React.ReactNode;\n 'aria-live'?: 'polite' | 'assertive' | 'off';\n 'aria-atomic'?: boolean;\n};\n\ntype SlideProps = {\n slide: SlideConfig;\n slideIndex: number;\n totalSlides: number;\n direction: SlideDirection;\n imageLoadedStates: Record<number, boolean>;\n onImageLoad: (slideIndex: number) => void;\n onImageError: (slideIndex: number) => void;\n className?: string;\n labels: Record<string, string>;\n slideVariants?: Variants;\n slideTransition?: Transition;\n};\n\ntype ImageSectionProps = {\n slide: SlideConfig;\n imageLoaded: boolean;\n onImageLoad: () => void;\n onImageError: () => void;\n slideIndex: number;\n className?: string;\n labels: Record<string, string>;\n};\n\ntype ContentSectionProps = {\n slide: SlideConfig;\n slideIndex: number;\n className?: string;\n labels: Record<string, string>;\n};\n\ntype NavigationProps = {\n slides: SlideConfig[];\n currentSlide: number;\n onSlideChange: (index: number) => void;\n className?: string;\n labels: Record<string, string>;\n};\n\ntype IndicatorProps = {\n slide: SlideConfig;\n index: number;\n isActive: boolean;\n onClick: () => void;\n className?: string;\n labels: Record<string, string>;\n};\n\ntype StatusProps = {\n currentSlide: number;\n totalSlides: number;\n currentSlideData: SlideConfig;\n isAutoPlaying: boolean;\n className?: string;\n labels: Record<string, string>;\n};\n\n// --- Default slide configuration ---\nconst DEFAULT_SLIDES_CONFIG: SlideConfig[] = [\n {\n id: 1,\n image: digitalPassportImage,\n titleKey: 'keyToNewInternet',\n descriptionKey: 'keyToNewInternetDescription',\n },\n {\n id: 2,\n image: walletImage,\n titleKey: 'logInWithoutHassle',\n descriptionKey: 'logInWithoutHassleDescription',\n },\n];\n\n// --- Default motion variants ---\nconst DEFAULT_SLIDE_VARIANTS: Variants = {\n enter: (direction: SlideDirection) => ({\n x: direction > 0 ? '35%' : '-35%',\n opacity: 0,\n }),\n center: {\n zIndex: 1,\n x: '0%',\n opacity: 1,\n },\n exit: (direction: SlideDirection) => ({\n zIndex: 0,\n x: direction < 0 ? '35%' : '-35%',\n opacity: 0,\n top: 0,\n left: 0,\n right: 0,\n }),\n};\n\nconst DEFAULT_IMAGE_VARIANTS: Variants = {\n initial: { opacity: 0, scale: 0.4 },\n animate: { opacity: 1, scale: 1 },\n exit: { opacity: 0, scale: 0.4 },\n};\n\n// --- Touch configuration ---\nconst TOUCH_CONFIG = {\n threshold: 50,\n velocityThreshold: 500,\n dampingFactor: 0.3,\n} as const;\n\n// --- Animation configuration ---\nconst ANIMATION_CONFIG = {\n autoPlayInterval: 25000,\n resumeDelay: 10000,\n slideTransition: {\n x: { type: 'spring' as const, stiffness: 200, damping: 20, duration: 0.1 },\n opacity: { duration: 0.2 },\n } as Transition,\n imageTransition: {\n duration: 0.2,\n } as Transition,\n} as const;\n\n/**\n * Customization options for AboutWallets component\n */\nexport type AboutWalletsCustomization = {\n /** Override slide configuration */\n slidesConfig?: SlideConfig[];\n /** Custom components */\n components?: {\n /** Custom section wrapper */\n Section?: ComponentType<SectionProps>;\n /** Custom slide container */\n SlideContainer?: ComponentType<SlideContainerProps>;\n /** Custom slide component */\n Slide?: ComponentType<SlideProps>;\n /** Custom image section */\n ImageSection?: ComponentType<ImageSectionProps>;\n /** Custom content section */\n ContentSection?: ComponentType<ContentSectionProps>;\n /** Custom navigation */\n Navigation?: ComponentType<NavigationProps>;\n /** Custom indicator */\n Indicator?: ComponentType<IndicatorProps>;\n /** Custom status announcer */\n Status?: ComponentType<StatusProps>;\n /** Custom stars background */\n StarsBackground?: ComponentType<ComponentPropsWithoutRef<typeof StarsBackground>>;\n /** Custom motion container */\n MotionDiv?: ComponentType<ComponentPropsWithoutRef<typeof motion.div>>;\n };\n /** Custom class name generators */\n classNames?: {\n /** Function to generate section classes */\n section?: () => string;\n /** Function to generate slide container classes */\n slideContainer?: () => string;\n /** Function to generate slide classes */\n slide?: (params: { slideIndex: number; totalSlides: number }) => string;\n /** Function to generate image section classes */\n imageSection?: (params: { slideIndex: number }) => string;\n /** Function to generate image classes */\n image?: (params: { slideIndex: number; imageLoaded: boolean }) => string;\n /** Function to generate content section classes */\n contentSection?: (params: { slideIndex: number }) => string;\n /** Function to generate title classes */\n title?: (params: { slideIndex: number }) => string;\n /** Function to generate description classes */\n description?: (params: { slideIndex: number }) => string;\n /** Function to generate navigation classes */\n navigation?: () => string;\n /** Function to generate indicator classes */\n indicator?: (params: { index: number; isActive: boolean }) => string;\n /** Function to generate status classes */\n status?: () => string;\n };\n /** Custom animation variants */\n variants?: {\n /** Slide animation variants */\n slide?: Variants;\n /** Image animation variants */\n image?: Variants;\n };\n /** Custom animation configuration */\n animation?: {\n /** Auto-play interval in milliseconds */\n autoPlayInterval?: number;\n /** Resume delay after user interaction in milliseconds */\n resumeDelay?: number;\n /** Slide transition configuration */\n slideTransition?: Transition;\n /** Image transition configuration */\n imageTransition?: Transition;\n };\n /** Touch interaction configuration */\n touch?: {\n /** Enable/disable touch interactions */\n enabled?: boolean;\n /** Minimum distance to trigger slide change */\n threshold?: number;\n /** Minimum velocity for quick swipe */\n velocityThreshold?: number;\n /** How much to dampen the drag */\n dampingFactor?: number;\n };\n /** Custom event handlers */\n handlers?: {\n /** Custom handler for slide change */\n onSlideChange?: (index: number) => void;\n /** Custom handler for auto-play state change */\n onAutoPlayChange?: (isPlaying: boolean) => void;\n /** Custom handler for user interaction */\n onUserInteraction?: () => void;\n /** Custom handler for image load */\n onImageLoad?: (slideIndex: number) => void;\n /** Custom handler for image error */\n onImageError?: (slideIndex: number) => void;\n };\n /** Configuration options */\n config?: {\n /** Whether to disable auto-play */\n disableAutoPlay?: boolean;\n /** Initial slide index */\n initialSlide?: number;\n /** Custom ARIA labels */\n ariaLabels?: {\n carousel?: string;\n slide?: (slideIndex: number, totalSlides: number) => string;\n navigation?: string;\n indicator?: (slideIndex: number, slideTitle: string) => string;\n };\n };\n};\n\n/**\n * Props for the AboutWallets component\n */\nexport interface AboutWalletsProps {\n /** Additional CSS classes */\n className?: string;\n /** Customization options */\n customization?: AboutWalletsCustomization;\n}\n\n// --- Default Sub-Components ---\nconst DefaultSection = forwardRef<HTMLElement, SectionProps>(({ children, className, ...props }, ref) => (\n <section ref={ref} className={cn('novacon:relative novacon:m-[-16px]', className)} {...props}>\n {children}\n </section>\n));\nDefaultSection.displayName = 'DefaultSection';\n\nconst DefaultSlideContainer: React.FC<SlideContainerProps> = ({ children, className, ...props }) => (\n <div className={cn('novacon:relative novacon:z-1 novacon:overflow-hidden novacon:h-full', className)} {...props}>\n <StarsBackground starsCount={250} />\n <div\n className=\"novacon:absolute novacon:inset-0 novacon:z-1 novacon:bg-[radial-gradient(ellipse_80%_80%_at_50%_-20%,rgba(120,119,198,0.15),rgba(255,255,255,0))]\"\n aria-hidden=\"true\"\n />\n\n <div className=\"novacon:relative novacon:z-2 novacon:h-full\">{children}</div>\n </div>\n);\n\nconst DefaultImageSection: React.FC<ImageSectionProps> = ({\n slide,\n imageLoaded,\n onImageLoad,\n onImageError,\n slideIndex,\n className,\n labels,\n}) => (\n <div className={cn('novacon:flex novacon:justify-center novacon:relative novacon:pt-4', className)}>\n <AnimatePresence mode=\"wait\">\n <motion.div\n key={`image-${slideIndex}`}\n variants={DEFAULT_IMAGE_VARIANTS}\n initial=\"initial\"\n animate=\"animate\"\n exit=\"exit\"\n transition={ANIMATION_CONFIG.imageTransition}\n className=\"novacon:relative\"\n >\n <div className=\"novacon:relative\">\n <img\n src={slide.image}\n alt={labels[slide.titleKey as string]}\n width={250}\n height={250}\n className={cn(\n 'novacon:rounded-full novacon:transition-opacity novacon:duration-300',\n 'novacon:object-cover',\n imageLoaded ? 'novacon:opacity-100' : 'novacon:opacity-0',\n )}\n style={{ width: 250, height: 250 }}\n onLoad={onImageLoad}\n onError={onImageError}\n loading=\"eager\"\n decoding=\"async\"\n />\n\n {!imageLoaded && (\n <div\n className=\"novacon:absolute novacon:inset-0 novacon:bg-[var(--tuwa-bg-muted)] novacon:animate-pulse novacon:rounded-full novacon:flex novacon:items-center novacon:justify-center\"\n style={{ width: 250, height: 250 }}\n aria-hidden=\"true\"\n >\n <div className=\"novacon:w-12 novacon:h-12 novacon:border-2 novacon:border-[var(--tuwa-text-accent)] novacon:border-t-transparent novacon:rounded-full novacon:animate-spin\" />\n </div>\n )}\n </div>\n </motion.div>\n </AnimatePresence>\n </div>\n);\n\nconst DefaultContentSection: React.FC<ContentSectionProps> = ({ slide, slideIndex, className, labels }) => (\n <div className={cn('novacon:text-center novacon:relative novacon:p-4', className)}>\n <h2\n className=\"novacon:text-xl novacon:font-bold novacon:text-[var(--tuwa-text-primary)] novacon:mb-2\"\n id={`slide-title-${slideIndex}`}\n >\n {labels[slide.titleKey as string]}\n </h2>\n <p\n className=\"novacon:text-[var(--tuwa-text-secondary)] novacon:leading-relaxed\"\n aria-describedby={`slide-title-${slideIndex}`}\n >\n {labels[slide.descriptionKey as string]}\n </p>\n </div>\n);\n\nconst DefaultIndicator: React.FC<IndicatorProps> = ({ slide, index, isActive, onClick, className, labels }) => (\n <button\n onClick={onClick}\n className={cn(\n 'novacon:cursor-pointer novacon:h-2 novacon:rounded-full novacon:transition-all novacon:duration-300',\n 'novacon:focus:outline-none novacon:focus:ring-2 novacon:focus:ring-[var(--tuwa-text-accent)] novacon:focus:ring-offset-2',\n 'novacon:bg-[var(--tuwa-border-primary)] novacon:w-2 novacon:hover:bg-[var(--tuwa-text-accent)]',\n {\n 'novacon:bg-[var(--tuwa-text-accent)] novacon:w-6': isActive,\n },\n className,\n )}\n role=\"tab\"\n aria-selected={isActive}\n aria-controls={`slide-${index}`}\n aria-label={`Go to slide ${index + 1}: ${labels[slide.titleKey as string]}`}\n tabIndex={isActive ? 0 : -1}\n />\n);\n\nconst DefaultNavigation: React.FC<NavigationProps> = ({ slides, currentSlide, onSlideChange, className, labels }) => (\n <nav\n className={cn(\n 'novacon:flex novacon:justify-center novacon:space-x-2 novacon:mt-6 novacon:relative novacon:z-3 novacon:mx-4 novacon:mb-4',\n className,\n )}\n role=\"tablist\"\n aria-label={`${labels.aboutWallets} navigation`}\n >\n <div\n className=\"novacon:absolute novacon:left-1/2 novacon:top-1/2 novacon:transform novacon:-translate-x-1/2 novacon:-translate-y-1/2 novacon:z-1 novacon:h-[2px] novacon:w-full novacon:bg-[var(--tuwa-border-primary)]\"\n aria-hidden=\"true\"\n />\n <div className=\"novacon:flex novacon:gap-2 novacon:px-4 novacon:bg-[var(--tuwa-bg-primary)] novacon:relative novacon:z-2\">\n {slides.map((slide, index) => (\n <DefaultIndicator\n key={slide.id}\n slide={slide}\n index={index}\n isActive={currentSlide === index}\n onClick={() => onSlideChange(index)}\n labels={labels}\n />\n ))}\n </div>\n </nav>\n);\n\nconst DefaultSlide: React.FC<SlideProps> = ({\n slide,\n slideIndex,\n totalSlides,\n direction,\n imageLoadedStates,\n onImageLoad,\n onImageError,\n className,\n labels,\n slideVariants = DEFAULT_SLIDE_VARIANTS,\n slideTransition = ANIMATION_CONFIG.slideTransition,\n}) => (\n <motion.div\n key={slideIndex}\n custom={direction}\n variants={slideVariants}\n initial=\"enter\"\n animate=\"center\"\n exit=\"exit\"\n transition={slideTransition}\n className={cn('novacon:flex novacon:flex-col novacon:justify-start novacon:w-full novacon:h-full', className)}\n role=\"tabpanel\"\n aria-label={`Slide ${slideIndex + 1} of ${totalSlides}`}\n >\n <DefaultImageSection\n slide={slide}\n imageLoaded={imageLoadedStates[slideIndex] || false}\n onImageLoad={() => onImageLoad(slideIndex)}\n onImageError={() => onImageError(slideIndex)}\n slideIndex={slideIndex}\n labels={labels}\n />\n <DefaultContentSection slide={slide} slideIndex={slideIndex} labels={labels} />\n </motion.div>\n);\n\nconst DefaultStatus: React.FC<StatusProps> = ({\n currentSlide,\n totalSlides,\n currentSlideData,\n isAutoPlaying,\n className,\n labels,\n}) => (\n <div className={cn('novacon:sr-only', className)} aria-live=\"polite\" role=\"status\">\n {`Slide ${currentSlide + 1} of ${totalSlides}: ${labels[currentSlideData.titleKey as string]}`}\n {isAutoPlaying ? ' (Auto-playing)' : ' (Paused)'}\n </div>\n);\n\n/**\n * Educational carousel component about wallet functionality with comprehensive customization and touch support.\n *\n * This component provides an interactive slideshow explaining wallet benefits:\n * - Animated slide transitions with Framer Motion\n * - Touch/swipe gestures for mobile navigation\n * - Keyboard navigation support for accessibility\n * - Auto-play functionality with pause on user interaction\n * - Internationalization support with translation keys\n * - WCAG compliant with proper ARIA labels and semantics\n * - Responsive design with embedded base64 images\n * - Visual indicators for current slide position\n * - Full customization of all child components\n * - Performance-optimized with memoized calculations\n *\n * @example Basic usage\n * ```tsx\n * <AboutWallets />\n * ```\n */\nexport const AboutWallets = forwardRef<HTMLElement, AboutWalletsProps>(({ className, customization }, ref) => {\n const labels = useNovaConnectLabels();\n\n // Extract customization options\n const slidesConfig = customization?.slidesConfig ?? DEFAULT_SLIDES_CONFIG;\n const slideVariants = customization?.variants?.slide ?? DEFAULT_SLIDE_VARIANTS;\n const {\n Section: CustomSection = DefaultSection,\n SlideContainer: CustomSlideContainer = DefaultSlideContainer,\n Slide: CustomSlide = DefaultSlide,\n Navigation: CustomNavigation = DefaultNavigation,\n Status: CustomStatus = DefaultStatus,\n } = customization?.components ?? {};\n\n const { disableAutoPlay = false, initialSlide = 0, ariaLabels } = customization?.config ?? {};\n\n const touchConfig = { enabled: true, ...TOUCH_CONFIG, ...customization?.touch };\n const animationConfig = { ...ANIMATION_CONFIG, ...customization?.animation };\n const customHandlers = customization?.handlers;\n\n // State management\n const [currentSlide, setCurrentSlide] = useState(initialSlide);\n const [direction, setDirection] = useState<SlideDirection>(0);\n const [isAutoPlaying, setIsAutoPlaying] = useState(!disableAutoPlay);\n const [userInteracted, setUserInteracted] = useState(false);\n const [imageLoadedStates, setImageLoadedStates] = useState<Record<number, boolean>>({});\n const [touchState, setTouchState] = useState<TouchState>({\n isDragging: false,\n startX: 0,\n currentX: 0,\n threshold: touchConfig.threshold,\n });\n\n // Refs for cleanup\n const autoPlayIntervalRef = useRef<number | null>(null);\n const resumeTimeoutRef = useRef<number | null>(null);\n\n /**\n * Navigate to a specific slide with proper direction calculation\n */\n const goToSlide = useCallback(\n (index: number) => {\n if (index === currentSlide || index < 0 || index >= slidesConfig.length) return;\n\n const newDirection: SlideDirection = index > currentSlide ? 1 : -1;\n setDirection(newDirection);\n setCurrentSlide(index);\n setUserInteracted(true);\n setIsAutoPlaying(false);\n\n customHandlers?.onSlideChange?.(index);\n customHandlers?.onUserInteraction?.();\n },\n [currentSlide, slidesConfig.length, customHandlers],\n );\n\n /**\n * Navigate to the next slide in sequence\n */\n const goToNextSlide = useCallback(() => {\n const nextIndex = (currentSlide + 1) % slidesConfig.length;\n goToSlide(nextIndex);\n }, [currentSlide, slidesConfig.length, goToSlide]);\n\n /**\n * Navigate to the previous slide in sequence\n */\n const goToPreviousSlide = useCallback(() => {\n const prevIndex = currentSlide === 0 ? slidesConfig.length - 1 : currentSlide - 1;\n goToSlide(prevIndex);\n }, [currentSlide, slidesConfig.length, goToSlide]);\n\n /**\n * Handle keyboard navigation for accessibility\n */\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowUp':\n event.preventDefault();\n goToPreviousSlide();\n break;\n case 'ArrowRight':\n case 'ArrowDown':\n event.preventDefault();\n goToNextSlide();\n break;\n case 'Home':\n event.preventDefault();\n goToSlide(0);\n break;\n case 'End':\n event.preventDefault();\n goToSlide(slidesConfig.length - 1);\n break;\n case ' ':\n case 'Enter':\n event.preventDefault();\n setIsAutoPlaying((prev) => {\n const newValue = !prev;\n customHandlers?.onAutoPlayChange?.(newValue);\n return newValue;\n });\n break;\n }\n },\n [goToPreviousSlide, goToNextSlide, goToSlide, slidesConfig.length, customHandlers],\n );\n\n /**\n * Handle image loading by slide index\n */\n const handleImageLoad = useCallback(\n (slideIndex: number) => {\n setImageLoadedStates((prev) => ({\n ...prev,\n [slideIndex]: true,\n }));\n customHandlers?.onImageLoad?.(slideIndex);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [customHandlers?.onImageLoad],\n );\n\n /**\n * Handle image error by slide index\n */\n const handleImageError = useCallback(\n (slideIndex: number) => {\n console.warn(`Failed to load slide image for slide ${slideIndex + 1}`);\n setImageLoadedStates((prev) => ({\n ...prev,\n [slideIndex]: true,\n }));\n customHandlers?.onImageError?.(slideIndex);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [customHandlers?.onImageError],\n );\n\n /**\n * Auto-play functionality\n */\n useEffect(() => {\n if (autoPlayIntervalRef.current !== null) {\n window.clearInterval(autoPlayIntervalRef.current);\n autoPlayIntervalRef.current = null;\n }\n\n if (!isAutoPlaying || userInteracted || disableAutoPlay) return;\n\n autoPlayIntervalRef.current = window.setInterval(() => {\n setCurrentSlide((prev) => {\n const next = (prev + 1) % slidesConfig.length;\n setDirection(1);\n return next;\n });\n }, animationConfig.autoPlayInterval);\n\n return () => {\n if (autoPlayIntervalRef.current !== null) {\n window.clearInterval(autoPlayIntervalRef.current);\n autoPlayIntervalRef.current = null;\n }\n };\n }, [isAutoPlaying, userInteracted, disableAutoPlay, slidesConfig.length, animationConfig.autoPlayInterval]);\n\n /**\n * Resume auto-play after user interaction\n */\n useEffect(() => {\n if (resumeTimeoutRef.current !== null) {\n window.clearTimeout(resumeTimeoutRef.current);\n resumeTimeoutRef.current = null;\n }\n\n if (!userInteracted) return;\n\n resumeTimeoutRef.current = window.setTimeout(() => {\n setUserInteracted(false);\n setIsAutoPlaying(true);\n }, animationConfig.resumeDelay);\n\n return () => {\n if (resumeTimeoutRef.current !== null) {\n window.clearTimeout(resumeTimeoutRef.current);\n resumeTimeoutRef.current = null;\n }\n };\n }, [userInteracted, animationConfig.resumeDelay]);\n\n /**\n * Cleanup on unmount\n */\n useEffect(() => {\n return () => {\n if (autoPlayIntervalRef.current !== null) {\n window.clearInterval(autoPlayIntervalRef.current);\n }\n if (resumeTimeoutRef.current !== null) {\n window.clearTimeout(resumeTimeoutRef.current);\n }\n };\n }, []);\n\n const currentSlideData = slidesConfig[currentSlide];\n\n return (\n <CustomSection\n ref={ref}\n className={customization?.classNames?.section?.() ?? className}\n role=\"region\"\n aria-label={ariaLabels?.carousel ?? labels.aboutWallets}\n aria-roledescription=\"carousel\"\n onKeyDown={handleKeyDown}\n tabIndex={0}\n >\n <CustomSlideContainer\n className={customization?.classNames?.slideContainer?.()}\n aria-live=\"polite\"\n aria-atomic={false}\n >\n <div\n className=\"novacon:h-full novacon:touch-pan-x\"\n onTouchStart={(e) => {\n if (!touchConfig.enabled) return;\n const touch = e.touches[0];\n setTouchState((prev) => ({\n ...prev,\n isDragging: true,\n startX: touch.clientX,\n currentX: touch.clientX,\n }));\n customHandlers?.onUserInteraction?.();\n }}\n onTouchMove={(e) => {\n if (!touchConfig.enabled || !touchState.isDragging) return;\n const touch = e.touches[0];\n setTouchState((prev) => ({\n ...prev,\n currentX: touch.clientX,\n }));\n }}\n onTouchEnd={() => {\n if (!touchConfig.enabled || !touchState.isDragging) return;\n\n const deltaX = touchState.currentX - touchState.startX;\n const shouldChangeSlide = Math.abs(deltaX) > touchConfig.threshold;\n\n if (shouldChangeSlide) {\n if (deltaX > 0) {\n goToPreviousSlide();\n } else {\n goToNextSlide();\n }\n }\n\n setTouchState((prev) => ({\n ...prev,\n isDragging: false,\n startX: 0,\n currentX: 0,\n }));\n }}\n >\n <AnimatePresence initial={false} custom={direction} mode=\"wait\">\n <CustomSlide\n key={currentSlide}\n slide={currentSlideData}\n slideIndex={currentSlide}\n totalSlides={slidesConfig.length}\n direction={direction}\n imageLoadedStates={imageLoadedStates}\n onImageLoad={handleImageLoad}\n onImageError={handleImageError}\n slideVariants={slideVariants}\n slideTransition={animationConfig.slideTransition}\n className={customization?.classNames?.slide?.({\n slideIndex: currentSlide,\n totalSlides: slidesConfig.length,\n })}\n labels={labels}\n />\n </AnimatePresence>\n </div>\n </CustomSlideContainer>\n\n <CustomNavigation\n slides={slidesConfig}\n currentSlide={currentSlide}\n onSlideChange={goToSlide}\n className={customization?.classNames?.navigation?.()}\n labels={labels}\n />\n\n <CustomStatus\n currentSlide={currentSlide}\n totalSlides={slidesConfig.length}\n currentSlideData={currentSlideData}\n isAutoPlaying={isAutoPlaying}\n className={customization?.classNames?.status?.()}\n labels={labels}\n />\n\n <div className=\"novacon:sr-only\">\n Use arrow keys to navigate slides, Space or Enter to pause/resume auto-play, Home to go to first slide, End to\n go to last slide. Swipe left or right to navigate on touch devices.\n </div>\n </CustomSection>\n );\n});\n\nAboutWallets.displayName = 'AboutWallets';\n","/**\n * @file Connecting component with comprehensive customization options and connection status display.\n */\n\nimport { CheckCircleIcon, ExclamationCircleIcon } from '@heroicons/react/24/solid';\nimport { cn } from '@tuwaio/nova-core';\nimport { formatWalletName, OrbitAdapter } from '@tuwaio/orbit-core';\nimport React, { ComponentType, forwardRef, memo, useEffect, useMemo, useRef } from 'react';\n\nimport { useNovaConnect } from '../../hooks/useNovaConnect';\nimport { useNovaConnectLabels } from '../../hooks/useNovaConnectLabels';\nimport { WalletIcon } from '../WalletIcon';\nimport { GroupedConnector } from './ConnectModal';\n\n// --- Types ---\n\n/**\n * Connection states\n */\nexport type ConnectionState = 'connecting' | 'success' | 'error';\n\n/**\n * Connection status data\n */\nexport interface ConnectingStatusData {\n /** Connection state */\n state: ConnectionState;\n /** Display message */\n message: string;\n /** Error message if any */\n errorMessage: string | null;\n /** Currently active connector */\n activeConnector: string | undefined;\n /** Selected adapter */\n selectedAdapter: OrbitAdapter | undefined;\n /** Current connector configuration */\n currentConnector: GroupedConnector | null;\n /** Whether to show detailed error */\n showDetailedError: boolean;\n /** Raw error object */\n rawError: unknown;\n}\n\n// --- Component Props Types ---\ntype ContainerProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n 'aria-label'?: string;\n 'aria-live'?: 'polite' | 'assertive' | 'off';\n 'aria-atomic'?: boolean;\n statusData: ConnectingStatusData;\n} & React.RefAttributes<HTMLElement>;\n\ntype StatusContainerProps = {\n className?: string;\n children: React.ReactNode;\n statusData: ConnectingStatusData;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype SpinnerProps = {\n className?: string;\n role?: string;\n 'aria-label'?: string;\n 'aria-describedby'?: string;\n statusData: ConnectingStatusData;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype StatusIconProps = {\n className?: string;\n role?: string;\n 'aria-label'?: string;\n statusData: ConnectingStatusData;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype WalletIconContainerProps = {\n className?: string;\n children: React.ReactNode;\n statusData: ConnectingStatusData;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype MessageContainerProps = {\n className?: string;\n children: React.ReactNode;\n statusData: ConnectingStatusData;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype StatusMessageProps = {\n className?: string;\n children: React.ReactNode;\n id?: string;\n role?: string;\n 'aria-level'?: number;\n statusData: ConnectingStatusData;\n} & React.RefAttributes<HTMLHeadingElement>;\n\ntype ErrorMessageProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n 'aria-describedby'?: string;\n statusData: ConnectingStatusData;\n} & React.RefAttributes<HTMLParagraphElement>;\n\ntype ErrorDetailsProps = {\n className?: string;\n children: React.ReactNode;\n statusData: ConnectingStatusData;\n} & React.RefAttributes<HTMLDetailsElement>;\n\ntype LoadingPlaceholderProps = {\n className?: string;\n role?: string;\n 'aria-label'?: string;\n statusData: ConnectingStatusData;\n} & React.RefAttributes<HTMLDivElement>;\n\n/**\n * Customization options for Connecting component\n */\nexport type ConnectingCustomization = {\n /** Custom components */\n components?: {\n /** Custom container wrapper */\n Container?: ComponentType<ContainerProps>;\n /** Custom status container */\n StatusContainer?: ComponentType<StatusContainerProps>;\n /** Custom loading spinner */\n Spinner?: ComponentType<SpinnerProps>;\n /** Custom status icon */\n StatusIcon?: ComponentType<StatusIconProps>;\n /** Custom wallet icon container */\n WalletIconContainer?: ComponentType<WalletIconContainerProps>;\n /** Custom message container */\n MessageContainer?: ComponentType<MessageContainerProps>;\n /** Custom status message */\n StatusMessage?: ComponentType<StatusMessageProps>;\n /** Custom error message */\n ErrorMessage?: ComponentType<ErrorMessageProps>;\n /** Custom error details */\n ErrorDetails?: ComponentType<ErrorDetailsProps>;\n /** Custom loading placeholder */\n LoadingPlaceholder?: ComponentType<LoadingPlaceholderProps>;\n };\n /** Custom class name generators */\n classNames?: {\n /** Function to generate container classes */\n container?: (params: { statusData: ConnectingStatusData }) => string;\n /** Function to generate status container classes */\n statusContainer?: (params: { statusData: ConnectingStatusData }) => string;\n /** Function to generate spinner classes */\n spinner?: (params: { statusData: ConnectingStatusData }) => string;\n /** Function to generate status icon classes */\n statusIcon?: (params: { statusData: ConnectingStatusData }) => string;\n /** Function to generate wallet icon container classes */\n walletIconContainer?: (params: { statusData: ConnectingStatusData }) => string;\n /** Function to generate message container classes */\n messageContainer?: (params: { statusData: ConnectingStatusData }) => string;\n /** Function to generate status message classes */\n statusMessage?: (params: { statusData: ConnectingStatusData }) => string;\n /** Function to generate error message classes */\n errorMessage?: (params: { statusData: ConnectingStatusData }) => string;\n /** Function to generate error details classes */\n errorDetails?: (params: { statusData: ConnectingStatusData }) => string;\n /** Function to generate loading placeholder classes */\n loadingPlaceholder?: (params: { statusData: ConnectingStatusData }) => string;\n };\n /** Custom event handlers */\n handlers?: {\n /** Custom handler for state change */\n onStateChange?: (state: ConnectionState, statusData: ConnectingStatusData) => void;\n /** Custom handler for error occurrence */\n onError?: (error: unknown, statusData: ConnectingStatusData) => void;\n /** Custom handler for successful connection */\n onSuccess?: (statusData: ConnectingStatusData) => void;\n /** Custom handler for connection start */\n onConnectingStart?: (statusData: ConnectingStatusData) => void;\n /** Custom cleanup handler called on unmount */\n onCleanup?: (statusData: ConnectingStatusData) => void;\n };\n /** Configuration options */\n config?: {\n /** Custom ARIA labels */\n ariaLabels?: {\n container?: string;\n spinner?: string;\n successIcon?: string;\n errorIcon?: string;\n loading?: string;\n };\n /** Custom animation settings */\n animation?: {\n spinnerDuration?: string;\n transitionDuration?: string;\n };\n /** Custom icon settings */\n icons?: {\n showSuccessIcon?: boolean;\n showErrorIcon?: boolean;\n customSuccessIcon?: ComponentType<{ className?: string }>;\n customErrorIcon?: ComponentType<{ className?: string }>;\n };\n };\n};\n\n/**\n * Connection status component props interface\n */\nexport interface ConnectingProps {\n /** Currently active connector identifier */\n activeConnector: string | undefined;\n /** Selected orbit adapter for the connection */\n selectedAdapter: OrbitAdapter | undefined;\n /** Array of available wallet connectors */\n connectors: GroupedConnector[];\n /** Whether the wallet connection is successfully established */\n isConnected: boolean;\n /** Optional custom error message to display */\n customErrorMessage?: string;\n /** Whether to show detailed error information */\n showDetailedError?: boolean;\n /** Custom CSS classes for styling the container */\n className?: string;\n /** Customization options */\n customization?: ConnectingCustomization;\n}\n\n// --- Default Sub-Components ---\nconst DefaultContainer = forwardRef<HTMLElement, ContainerProps>(({ children, className, ...props }, ref) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { statusData: _statusData, ...restProps } = props;\n return (\n <section ref={ref} className={className} {...restProps}>\n {children}\n </section>\n );\n});\nDefaultContainer.displayName = 'DefaultContainer';\n\nconst DefaultStatusContainer = forwardRef<HTMLDivElement, StatusContainerProps>(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ({ children, className, statusData: _statusData }, ref) => (\n <div ref={ref} className={className}>\n {children}\n </div>\n ),\n);\nDefaultStatusContainer.displayName = 'DefaultStatusContainer';\n\nconst DefaultSpinner = forwardRef<HTMLDivElement, SpinnerProps>(({ className, ...props }, ref) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { statusData: _statusData, ...restProps } = props;\n return (\n <div ref={ref} className={className} {...restProps}>\n <span className=\"novacon:sr-only\">Loading...</span>\n </div>\n );\n});\nDefaultSpinner.displayName = 'DefaultSpinner';\n\nconst DefaultStatusIcon = forwardRef<HTMLDivElement, StatusIconProps>(({ className, statusData, ...props }, ref) => {\n const isSuccess = statusData.state === 'success';\n const IconComponent = isSuccess ? CheckCircleIcon : ExclamationCircleIcon;\n\n return (\n <div ref={ref} className={className} {...props}>\n <IconComponent className=\"novacon:w-6 novacon:h-6 novacon:text-white\" aria-hidden=\"true\" />\n </div>\n );\n});\nDefaultStatusIcon.displayName = 'DefaultStatusIcon';\n\nconst DefaultWalletIconContainer = forwardRef<HTMLDivElement, WalletIconContainerProps>(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ({ children, className, statusData: _statusData }, ref) => (\n <div ref={ref} className={className}>\n {children}\n </div>\n ),\n);\nDefaultWalletIconContainer.displayName = 'DefaultWalletIconContainer';\n\nconst DefaultMessageContainer = forwardRef<HTMLDivElement, MessageContainerProps>(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ({ children, className, statusData: _statusData }, ref) => (\n <div ref={ref} className={className}>\n {children}\n </div>\n ),\n);\nDefaultMessageContainer.displayName = 'DefaultMessageContainer';\n\nconst DefaultStatusMessage = forwardRef<HTMLHeadingElement, StatusMessageProps>(\n ({ children, className, ...props }, ref) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { statusData: _statusData, ...restProps } = props;\n return (\n <h2 ref={ref} className={className} {...restProps}>\n {children}\n </h2>\n );\n },\n);\nDefaultStatusMessage.displayName = 'DefaultStatusMessage';\n\nconst DefaultErrorMessage = forwardRef<HTMLParagraphElement, ErrorMessageProps>(\n ({ children, className, ...props }, ref) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { statusData: _statusData, ...restProps } = props;\n return (\n <p ref={ref} className={className} {...restProps}>\n {children}\n </p>\n );\n },\n);\nDefaultErrorMessage.displayName = 'DefaultErrorMessage';\n\nconst DefaultErrorDetails = forwardRef<HTMLDetailsElement, ErrorDetailsProps>(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ({ children, className, statusData: _statusData }, ref) => (\n <details ref={ref} className={className}>\n {children}\n </details>\n ),\n);\nDefaultErrorDetails.displayName = 'DefaultErrorDetails';\n\nconst DefaultLoadingPlaceholder = forwardRef<HTMLDivElement, LoadingPlaceholderProps>(\n ({ className, ...props }, ref) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { statusData: _statusData, ...restProps } = props;\n return (\n <div ref={ref} className={className} {...restProps}>\n <div className=\"novacon:animate-pulse novacon:rounded-xl novacon:h-32 novacon:w-32 novacon:bg-[var(--tuwa-bg-muted)]\" />\n <div className=\"novacon:animate-pulse novacon:rounded-xl novacon:h-6 novacon:w-48 novacon:bg-[var(--tuwa-bg-muted)]\" />\n </div>\n );\n },\n);\nDefaultLoadingPlaceholder.displayName = 'DefaultLoadingPlaceholder';\n\n/**\n * Connection status display component for wallet connection flow\n *\n * This component provides comprehensive visual feedback during wallet connection:\n * - Animated loading spinner for connection in progress\n * - Success state with checkmark icon for completed connections\n * - Error state with warning icon and detailed error messages\n * - Fully internationalized text content with translation support\n * - WCAG compliant accessibility with proper ARIA labels and live regions\n * - Responsive design that adapts to different screen sizes\n * - Visual status indicators with semantic colors and icons\n * - Screen reader announcements for state changes\n *\n * The component automatically detects connection state and displays appropriate\n * visual feedback with proper semantic markup for accessibility tools.\n *\n * @param activeConnector - Identifier of the currently connecting wallet\n * @param selectedAdapter - Orbit adapter instance for the connection\n * @param connectors - Array of available wallet connector options\n * @param isConnected - Boolean flag indicating successful connection\n * @param customErrorMessage - Optional custom error message override\n * @param showDetailedError - Flag to show detailed error information\n * @returns JSX element displaying connection status with visual feedback\n *\n * @example\n * ```tsx\n * <Connecting\n * activeConnector=\"metamask\"\n * selectedAdapter={ethereumAdapter}\n * connectors={availableConnectors}\n * isConnected={false}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With custom error handling\n * <Connecting\n * activeConnector=\"walletconnect\"\n * selectedAdapter={polygonAdapter}\n * connectors={connectors}\n * isConnected={false}\n * customErrorMessage=\"Custom connection error occurred\"\n * showDetailedError={true}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Successful connection state\n * <Connecting\n * activeConnector=\"phantom\"\n * selectedAdapter={solanaAdapter}\n * connectors={solanaConnectors}\n * isConnected={true}\n * />\n * ```\n *\n * @public\n */\nexport const Connecting = memo(\n forwardRef<HTMLDivElement, ConnectingProps>(\n (\n {\n activeConnector,\n selectedAdapter,\n connectors,\n isConnected,\n customErrorMessage,\n showDetailedError = false,\n className,\n customization,\n },\n ref,\n ) => {\n const labels = useNovaConnectLabels();\n const { walletConnectionError } = useNovaConnect();\n\n const isMountedRef = useRef(true);\n const prevStateRef = useRef<ConnectionState | null>(null);\n const prevStatusDataRef = useRef<ConnectingStatusData | null>(null);\n const cleanupCalled = useRef(false);\n\n // Extract customization options\n const {\n Container: CustomContainer = DefaultContainer,\n StatusContainer: CustomStatusContainer = DefaultStatusContainer,\n Spinner: CustomSpinner = DefaultSpinner,\n StatusIcon: CustomStatusIcon = DefaultStatusIcon,\n WalletIconContainer: CustomWalletIconContainer = DefaultWalletIconContainer,\n MessageContainer: CustomMessageContainer = DefaultMessageContainer,\n StatusMessage: CustomStatusMessage = DefaultStatusMessage,\n ErrorMessage: CustomErrorMessage = DefaultErrorMessage,\n ErrorDetails: CustomErrorDetails = DefaultErrorDetails,\n LoadingPlaceholder: CustomLoadingPlaceholder = DefaultLoadingPlaceholder,\n } = customization?.components ?? {};\n\n const customHandlers = customization?.handlers;\n const customConfig = customization?.config;\n\n /**\n * Find the current connector configuration\n */\n const currentConnector = useMemo(() => {\n if (!activeConnector) {\n performDefaultCleanup();\n return null;\n }\n return connectors.find((connector) => formatWalletName(connector.name) === activeConnector) || null;\n }, [connectors, activeConnector]);\n\n /**\n * Determine current connection state\n */\n const connectionState = useMemo((): ConnectionState => {\n if (walletConnectionError || customErrorMessage) return 'error';\n if (isConnected) return 'success';\n return 'connecting';\n }, [walletConnectionError, customErrorMessage, isConnected]);\n\n /**\n * Memoized display message\n */\n const displayMessage = useMemo(() => {\n switch (connectionState) {\n case 'error':\n return customErrorMessage || labels.connectionError;\n case 'success':\n return labels.connectedSuccessfully;\n case 'connecting':\n default:\n return activeConnector ? `${labels.connectingTo} ${activeConnector}...` : labels.connectingEllipsis;\n }\n }, [connectionState, customErrorMessage, labels, activeConnector]);\n\n /**\n * Memoized error message\n */\n const errorMessage = useMemo(() => {\n if (connectionState !== 'error') return null;\n\n if (customErrorMessage && showDetailedError) {\n return customErrorMessage;\n }\n\n return labels.cannotConnectWallet;\n }, [connectionState, customErrorMessage, showDetailedError, labels]);\n\n /**\n * Memoized status data\n */\n const statusData = useMemo(\n (): ConnectingStatusData => ({\n state: connectionState,\n message: displayMessage,\n errorMessage,\n activeConnector,\n selectedAdapter,\n currentConnector,\n showDetailedError,\n rawError: walletConnectionError,\n }),\n [\n connectionState,\n displayMessage,\n errorMessage,\n activeConnector,\n selectedAdapter,\n currentConnector,\n showDetailedError,\n walletConnectionError,\n ],\n );\n\n /**\n * Memoized container classes\n */\n const containerClasses = useMemo(\n () =>\n customization?.classNames?.container?.({ statusData }) ??\n cn(\n 'novacon:flex novacon:flex-col novacon:gap-4 novacon:items-center novacon:justify-center novacon:w-full',\n className,\n ),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [customization?.classNames?.container, statusData, className],\n );\n\n /**\n * Memoized status container classes based on connection state\n */\n const statusContainerClasses = useMemo(() => {\n if (customization?.classNames?.statusContainer) {\n return customization.classNames.statusContainer({ statusData });\n }\n\n const baseClasses = [\n 'novacon:relative novacon:flex novacon:items-center novacon:justify-center',\n 'novacon:min-w-[110px] novacon:min-h-[110px] novacon:md:min-w-[150px] novacon:md:min-h-[150px]',\n 'novacon:border-2 novacon:rounded-full',\n 'novacon:p-4 novacon:md:p-6',\n 'novacon:transition-all novacon:duration-300 novacon:ease-in-out',\n ];\n\n const stateClasses = {\n error: [\n 'novacon:border-[var(--tuwa-error-text)]',\n 'novacon:bg-[var(--tuwa-error-text)] novacon:bg-opacity-5',\n ],\n success: [\n 'novacon:border-[var(--tuwa-success-text)]',\n 'novacon:bg-[var(--tuwa-success-text)] novacon:bg-opacity-5',\n ],\n connecting: ['novacon:border-[var(--tuwa-border-primary)]', 'novacon:bg-[var(--tuwa-bg-primary)]'],\n };\n\n return cn(baseClasses, stateClasses[statusData.state]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customization?.classNames?.statusContainer, statusData]);\n\n const performDefaultCleanup = () => {\n if (cleanupCalled.current) return;\n\n cleanupCalled.current = true;\n\n isMountedRef.current = false;\n prevStateRef.current = null;\n prevStatusDataRef.current = null;\n\n if (typeof window !== 'undefined') {\n const element = document.querySelector('[data-connecting-component]');\n if (element) {\n element.getAnimations?.().forEach((animation) => animation.cancel());\n }\n }\n };\n\n useEffect(() => {\n if (!isMountedRef.current) return;\n\n if (prevStateRef.current !== connectionState) {\n customHandlers?.onStateChange?.(connectionState, statusData);\n\n if (connectionState === 'error') {\n customHandlers?.onError?.(walletConnectionError, statusData);\n } else if (connectionState === 'success') {\n customHandlers?.onSuccess?.(statusData);\n } else if (connectionState === 'connecting') {\n customHandlers?.onConnectingStart?.(statusData);\n }\n\n prevStateRef.current = connectionState;\n }\n\n prevStatusDataRef.current = statusData;\n }, [connectionState, statusData, customHandlers, walletConnectionError]);\n\n useEffect(() => {\n isMountedRef.current = true;\n cleanupCalled.current = false;\n\n // Cleanup function\n return () => {\n if (customHandlers?.onCleanup && prevStatusDataRef.current) {\n try {\n customHandlers.onCleanup(prevStatusDataRef.current);\n } catch (error) {\n console.warn('Error in custom cleanup handler:', error);\n }\n }\n performDefaultCleanup();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customHandlers?.onCleanup]);\n\n useEffect(() => {\n return () => {\n if (!cleanupCalled.current && customHandlers?.onCleanup && prevStatusDataRef.current) {\n try {\n customHandlers.onCleanup(prevStatusDataRef.current);\n } catch (error) {\n console.warn('Error in custom cleanup handler on dependency change:', error);\n }\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customHandlers?.onCleanup]);\n\n // Early return for missing required data\n if (!selectedAdapter || !activeConnector || !currentConnector) {\n return (\n <CustomLoadingPlaceholder\n ref={ref}\n className={\n customization?.classNames?.loadingPlaceholder?.({ statusData }) ??\n cn(\n 'novacon:flex novacon:flex-col novacon:gap-4 novacon:items-center novacon:justify-center novacon:w-full novacon:py-8',\n )\n }\n role=\"status\"\n aria-label={customConfig?.ariaLabels?.loading ?? labels.loading}\n statusData={statusData}\n data-connecting-component=\"true\"\n />\n );\n }\n\n const containerAriaLabel = customConfig?.ariaLabels?.container ?? `Connection status: ${displayMessage}`;\n\n return (\n <CustomContainer\n ref={ref as React.ForwardedRef<HTMLElement>}\n className={containerClasses}\n role=\"status\"\n aria-label={containerAriaLabel}\n aria-live=\"polite\"\n aria-atomic={true}\n statusData={statusData}\n data-connecting-component=\"true\"\n >\n {/* Connection Status Container */}\n <CustomStatusContainer className={statusContainerClasses} statusData={statusData}>\n {/* Loading Spinner for Connecting State */}\n {connectionState === 'connecting' && (\n <CustomSpinner\n className={\n customization?.classNames?.spinner?.({ statusData }) ??\n cn(\n 'novacon:absolute novacon:animate-spin novacon:rounded-full novacon:-inset-[2px]',\n 'novacon:w-[calc(100%_+_4px)] novacon:h-[calc(100%_+_4px)]',\n 'novacon:border-2 novacon:border-[var(--tuwa-pending-text)]',\n 'novacon:border-t-transparent',\n )\n }\n role=\"progressbar\"\n aria-label={customConfig?.ariaLabels?.spinner ?? labels.connecting}\n aria-describedby=\"connecting-message\"\n statusData={statusData}\n />\n )}\n\n {/* Success/Error Icons */}\n {(connectionState === 'success' || connectionState === 'error') && (\n <CustomStatusIcon\n className={\n customization?.classNames?.statusIcon?.({ statusData }) ??\n cn(\n 'novacon:absolute novacon:-top-2 novacon:-right-2 novacon:w-8 novacon:h-8 novacon:rounded-full novacon:flex novacon:items-center novacon:justify-center novacon:bg-[var(--tuwa-error-text)]',\n {\n 'novacon:bg-[var(--tuwa-success-text)]': connectionState === 'success',\n },\n )\n }\n role=\"img\"\n aria-label={\n connectionState === 'success'\n ? (customConfig?.ariaLabels?.successIcon ?? labels.successIcon)\n : (customConfig?.ariaLabels?.errorIcon ?? labels.errorIcon)\n }\n statusData={statusData}\n />\n )}\n\n {/* Wallet Icon */}\n <CustomWalletIconContainer\n className={\n customization?.classNames?.walletIconContainer?.({ statusData }) ??\n cn('novacon:[&_img]:w-[60px]! novacon:[&_img]:h-[auto]! novacon:md:[&_img]:w-[80px]!')\n }\n statusData={statusData}\n >\n <WalletIcon\n icon={currentConnector.icon}\n name={activeConnector}\n altText={`${activeConnector} ${labels.walletIcon}`}\n showLoading={connectionState === 'connecting'}\n />\n </CustomWalletIconContainer>\n </CustomStatusContainer>\n\n {/* Status Message */}\n <CustomMessageContainer\n className={\n customization?.classNames?.messageContainer?.({ statusData }) ??\n cn('novacon:text-center novacon:space-y-2 novacon:max-w-md')\n }\n statusData={statusData}\n >\n <CustomStatusMessage\n id=\"connecting-message\"\n className={\n customization?.classNames?.statusMessage?.({ statusData }) ??\n cn('novacon:text-lg novacon:font-semibold novacon:transition-colors novacon:duration-300', {\n 'novacon:text-[var(--tuwa-error-text)]': connectionState === 'error',\n 'novacon:text-[var(--tuwa-success-text)]': connectionState === 'success',\n 'novacon:text-[var(--tuwa-text-primary)]': connectionState === 'connecting',\n })\n }\n role=\"heading\"\n aria-level={2}\n statusData={statusData}\n >\n {displayMessage}\n </CustomStatusMessage>\n\n {/* Error Details */}\n {errorMessage && (\n <CustomErrorMessage\n className={\n customization?.classNames?.errorMessage?.({ statusData }) ??\n cn(\n 'novacon:text-sm novacon:text-[var(--tuwa-error-text)] novacon:text-center novacon:leading-relaxed',\n )\n }\n role=\"alert\"\n aria-describedby=\"connecting-message\"\n statusData={statusData}\n >\n {errorMessage}\n </CustomErrorMessage>\n )}\n\n {/* Additional Error Information */}\n {connectionState === 'error' && showDetailedError && walletConnectionError && (\n <CustomErrorDetails\n className={\n customization?.classNames?.errorDetails?.({ statusData }) ?? cn('novacon:mt-3 novacon:text-left')\n }\n statusData={statusData}\n >\n <summary className=\"novacon:text-sm novacon:text-[var(--tuwa-text-secondary)] novacon:cursor-pointer novacon:hover:text-[var(--tuwa-text-primary)] novacon:transition-colors\">\n {labels.copyRawError}\n </summary>\n <pre className=\"novacon:mt-2 novacon:p-3 novacon:bg-[var(--tuwa-bg-muted)] novacon:rounded-md novacon:text-xs novacon:font-mono novacon:text-[var(--tuwa-text-secondary)] novacon:overflow-auto novacon:max-h-32\">\n {JSON.stringify(walletConnectionError, null, 2)}\n </pre>\n </CustomErrorDetails>\n )}\n </CustomMessageContainer>\n\n {/* Screen Reader Announcements */}\n <div className=\"novacon:sr-only\" aria-live=\"assertive\" role=\"status\">\n {connectionState === 'connecting' && `${labels.connecting} ${activeConnector}`}\n {connectionState === 'success' && `${labels.connectedSuccessfully} ${activeConnector}`}\n {connectionState === 'error' && `${labels.connectionError} ${activeConnector}`}\n </div>\n\n {/* Hidden Content for Screen Readers */}\n <div className=\"novacon:sr-only\">\n <p>\n Wallet: {activeConnector}, Network: {selectedAdapter}, Status: {connectionState}\n </p>\n </div>\n </CustomContainer>\n );\n },\n ),\n);\n\nConnecting.displayName = 'Connecting';\n","/**\n * @file RecentBadge component with comprehensive customization options and animated gradient border.\n */\n\nimport { cn, isTouchDevice } from '@tuwaio/nova-core';\nimport { motion } from 'framer-motion';\nimport React, { ComponentType, forwardRef, memo, useCallback, useMemo } from 'react';\n\n// --- Types ---\n\n/**\n * Animation configuration for the gradient border effect\n */\nexport interface BadgeAnimationConfig {\n /** Animation duration in seconds */\n duration: number;\n /** Animation easing function - using valid framer-motion easing values */\n ease:\n | 'linear'\n | 'easeIn'\n | 'easeOut'\n | 'easeInOut'\n | 'circIn'\n | 'circOut'\n | 'circInOut'\n | 'backIn'\n | 'backOut'\n | 'backInOut'\n | 'anticipate';\n /** Whether animation should repeat infinitely */\n repeat: boolean;\n /** Initial background position */\n initialPosition: string;\n /** Final background position */\n finalPosition: string;\n}\n\n/**\n * Gradient configuration for the border effect\n */\nexport interface BadgeGradientConfig {\n /** Direction of the gradient (e.g., '90deg', '45deg') */\n direction: string;\n /** Color stops for the gradient */\n stops: Array<{\n /** Position percentage (0-100) */\n position: number;\n /** Color value (CSS color, CSS variable, or rgba) */\n color: string;\n }>;\n /** Background size for animation effect */\n backgroundSize: string;\n}\n\n// --- Component Props Types ---\ntype ContainerProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n 'aria-label'?: string;\n} & React.RefAttributes<HTMLSpanElement>;\n\ntype AnimatedGradientProps = {\n className?: string;\n animated: boolean;\n animationConfig: BadgeAnimationConfig;\n gradientConfig: BadgeGradientConfig;\n};\n\ntype BackgroundOverlayProps = {\n className?: string;\n};\n\ntype ContentProps = {\n className?: string;\n children: React.ReactNode;\n};\n\n/**\n * Customization options for RecentBadge component\n */\nexport type RecentBadgeCustomization = {\n /** Custom components */\n components?: {\n /** Custom container wrapper */\n Container?: ComponentType<ContainerProps>;\n /** Custom animated gradient component */\n AnimatedGradient?: ComponentType<AnimatedGradientProps>;\n /** Custom background overlay */\n BackgroundOverlay?: ComponentType<BackgroundOverlayProps>;\n /** Custom content wrapper */\n Content?: ComponentType<ContentProps>;\n };\n /** Custom class name generators */\n classNames?: {\n /** Function to generate container classes */\n container?: (params: { isTouch: boolean; animated: boolean }) => string;\n /** Function to generate animated gradient classes */\n animatedGradient?: () => string;\n /** Function to generate background overlay classes */\n backgroundOverlay?: () => string;\n /** Function to generate content classes */\n content?: () => string;\n };\n /** Custom event handlers */\n handlers?: {\n /** Custom handler for animation start */\n onAnimationStart?: () => void;\n /** Custom handler for animation complete */\n onAnimationComplete?: () => void;\n /** Custom handler for component mount */\n onMount?: () => void;\n /** Custom handler for component unmount */\n onUnmount?: () => void;\n };\n /** Configuration options */\n config?: {\n /** Custom animation configuration */\n animation?: Partial<BadgeAnimationConfig>;\n /** Custom gradient configuration */\n gradient?: Partial<BadgeGradientConfig>;\n /** Custom ARIA labels */\n ariaLabels?: {\n container?: string;\n };\n /** Touch device detection override */\n touchDevice?: boolean;\n };\n};\n\n/**\n * Props for the RecentBadge component\n */\nexport interface RecentBadgeProps {\n /** Custom CSS classes for styling the container */\n className?: string;\n /** Content to display inside the badge */\n children?: React.ReactNode;\n /** Whether the gradient animation should be enabled */\n animated?: boolean;\n /** Custom ARIA label for accessibility */\n 'aria-label'?: string;\n /** Customization options */\n customization?: RecentBadgeCustomization;\n}\n\n/**\n * Default animation configuration\n */\nconst defaultAnimationConfig: BadgeAnimationConfig = {\n duration: 4,\n ease: 'linear',\n repeat: true,\n initialPosition: '100%',\n finalPosition: '-100%',\n};\n\n/**\n * Default gradient configuration\n */\nconst defaultGradientConfig: BadgeGradientConfig = {\n direction: '90deg',\n stops: [\n { position: 0, color: 'rgba(255, 255, 255, 0)' },\n { position: 20, color: 'var(--tuwa-text-secondary)' },\n { position: 40, color: 'rgba(255, 255, 255, 0)' },\n ],\n backgroundSize: '200% 100%',\n};\n\n// --- Default Sub-Components ---\nconst DefaultContainer = forwardRef<HTMLSpanElement, ContainerProps>(({ children, className, ...props }, ref) => (\n <span ref={ref} className={className} {...props}>\n {children}\n </span>\n));\nDefaultContainer.displayName = 'DefaultContainer';\n\nconst DefaultAnimatedGradient: React.FC<AnimatedGradientProps> = ({\n className,\n animated,\n animationConfig,\n gradientConfig,\n}) => {\n const gradientBackground = useMemo(() => {\n const stops = gradientConfig.stops.map((stop) => `${stop.color} ${stop.position}%`).join(', ');\n return `linear-gradient(${gradientConfig.direction}, ${stops})`;\n }, [gradientConfig.direction, gradientConfig.stops]);\n\n const animatedStyle = useMemo(\n () => ({\n background: gradientBackground,\n backgroundSize: gradientConfig.backgroundSize,\n }),\n [gradientBackground, gradientConfig.backgroundSize],\n );\n\n if (!animated) {\n return <span className={className} style={animatedStyle} />;\n }\n\n return (\n <motion.span\n className={className}\n style={animatedStyle}\n initial={{ backgroundPositionX: animationConfig.initialPosition }}\n animate={{ backgroundPositionX: animationConfig.finalPosition }}\n transition={{\n duration: animationConfig.duration,\n ease: animationConfig.ease,\n repeat: animationConfig.repeat ? Infinity : 0,\n }}\n />\n );\n};\n\nconst DefaultBackgroundOverlay: React.FC<BackgroundOverlayProps> = ({ className }) => <span className={className} />;\n\nconst DefaultContent: React.FC<ContentProps> = ({ children, className }) => (\n <span className={className}>{children}</span>\n);\n\n/**\n * Badge component with animated gradient border effect and comprehensive customization\n *\n * This component provides a visually appealing badge with:\n * - Animated gradient border effect with customizable timing and colors\n * - Touch-device responsive sizing for optimal mobile experience\n * - Full accessibility support with proper ARIA labeling\n * - Performance optimizations with memoized calculations\n * - Customizable animations and gradient configurations\n * - Full customization of all child components\n * - Proper semantic HTML structure\n *\n * Visual features:\n * - Smooth animated gradient border effect\n * - Touch-responsive sizing (smaller on touch devices)\n * - Customizable gradient colors and direction\n * - Configurable animation timing and easing\n * - Proper z-index layering for visual effects\n *\n * Accessibility features:\n * - Proper ARIA role and labels\n * - Screen reader friendly content structure\n * - Semantic HTML with appropriate roles\n * - Motion reduction respect (can be controlled via customization)\n *\n * @example Basic usage\n * ```tsx\n * <RecentBadge>Recent</RecentBadge>\n * ```\n *\n * @example With custom animation\n * ```tsx\n * <RecentBadge\n * animated={false}\n * customization={{\n * config: {\n * animation: {\n * duration: 2,\n * ease: 'easeInOut'\n * }\n * }\n * }}\n * >\n * Custom\n * </RecentBadge>\n * ```\n *\n * @example With full customization\n * ```tsx\n * <RecentBadge\n * customization={{\n * components: {\n * AnimatedGradient: CustomGradient,\n * Content: CustomContent\n * },\n * config: {\n * gradient: {\n * direction: '45deg',\n * stops: [\n * { position: 0, color: 'transparent' },\n * { position: 50, color: 'rgba(59, 130, 246, 0.8)' },\n * { position: 100, color: 'transparent' }\n * ]\n * }\n * }\n * }}\n * >\n * Premium\n * </RecentBadge>\n * ```\n */\nexport const RecentBadge = memo(\n forwardRef<HTMLSpanElement, RecentBadgeProps>(\n ({ className, children = 'Recent', animated = true, 'aria-label': ariaLabel, customization }, ref) => {\n // Extract customization options\n const {\n Container: CustomContainer = DefaultContainer,\n AnimatedGradient: CustomAnimatedGradient = DefaultAnimatedGradient,\n BackgroundOverlay: CustomBackgroundOverlay = DefaultBackgroundOverlay,\n Content: CustomContent = DefaultContent,\n } = customization?.components ?? {};\n\n const customHandlers = customization?.handlers;\n const customConfig = customization?.config;\n\n // Detect touch device with customization override\n const isTouch = useMemo(() => customConfig?.touchDevice ?? isTouchDevice(), [customConfig?.touchDevice]);\n\n /**\n * Memoized animation configuration with customization\n */\n const animationConfig = useMemo(\n (): BadgeAnimationConfig => ({\n ...defaultAnimationConfig,\n ...customConfig?.animation,\n }),\n [customConfig?.animation],\n );\n\n /**\n * Memoized gradient configuration with customization\n */\n const gradientConfig = useMemo(\n (): BadgeGradientConfig => ({\n ...defaultGradientConfig,\n ...customConfig?.gradient,\n stops: customConfig?.gradient?.stops ?? defaultGradientConfig.stops,\n }),\n [customConfig?.gradient],\n );\n\n /**\n * Generate container classes with proper memoization dependencies\n */\n const getContainerClasses = useCallback(() => {\n if (customization?.classNames?.container) {\n return customization.classNames.container({ isTouch, animated });\n }\n\n const sizeClasses = isTouch\n ? 'novacon:px-1.5 novacon:py-0 novacon:text-[10px]'\n : 'novacon:px-2.5 novacon:py-0.5 novacon:text-xs';\n\n return cn(\n 'novacon:inline-flex novacon:items-center novacon:rounded-full novacon:font-medium novacon:relative novacon:overflow-hidden',\n 'novacon:text-[var(--tuwa-text-secondary)] novacon:border novacon:border-[var(--tuwa-border-primary)]',\n sizeClasses,\n className,\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isTouch, animated, customization?.classNames?.container, className]);\n\n /**\n * Memoized container classes\n */\n const containerClasses = useMemo(getContainerClasses, [getContainerClasses]);\n\n /**\n * Memoized animated gradient classes\n */\n const animatedGradientClasses = useMemo(\n () =>\n customization?.classNames?.animatedGradient?.() ??\n 'novacon:absolute novacon:inset-0 novacon:z-0 novacon:pointer-events-none novacon:rounded-full',\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [customization?.classNames?.animatedGradient],\n );\n\n /**\n * Memoized background overlay classes\n */\n const backgroundOverlayClasses = useMemo(\n () =>\n customization?.classNames?.backgroundOverlay?.() ??\n 'novacon:absolute novacon:z-10 novacon:pointer-events-none novacon:rounded-full novacon:bg-[var(--tuwa-bg-primary)] novacon:inset-[1px]',\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [customization?.classNames?.backgroundOverlay],\n );\n\n /**\n * Memoized content classes\n */\n const contentClasses = useMemo(\n () => customization?.classNames?.content?.() ?? 'novacon:relative novacon:z-20 novacon:whitespace-nowrap',\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [customization?.classNames?.content],\n );\n\n /**\n * Generate ARIA label with proper memoization dependencies\n */\n const getAriaLabel = useCallback(() => {\n if (customConfig?.ariaLabels?.container) return customConfig.ariaLabels.container;\n if (ariaLabel) return ariaLabel;\n if (typeof children === 'string') return children;\n return 'Recent';\n }, [customConfig?.ariaLabels?.container, ariaLabel, children]);\n\n /**\n * Memoized ARIA label\n */\n const finalAriaLabel = useMemo(() => getAriaLabel(), [getAriaLabel]);\n\n // Handle mount/unmount effects\n React.useEffect(() => {\n customHandlers?.onMount?.();\n return () => customHandlers?.onUnmount?.();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customHandlers?.onMount, customHandlers?.onUnmount]);\n\n return (\n <CustomContainer ref={ref} className={containerClasses} role=\"status\" aria-label={finalAriaLabel}>\n {/* Animated gradient border */}\n <CustomAnimatedGradient\n className={animatedGradientClasses}\n animated={animated}\n animationConfig={animationConfig}\n gradientConfig={gradientConfig}\n />\n\n {/* Background overlay */}\n <CustomBackgroundOverlay className={backgroundOverlayClasses} />\n\n {/* Content */}\n <CustomContent className={contentClasses}>{children}</CustomContent>\n </CustomContainer>\n );\n },\n ),\n);\n\nRecentBadge.displayName = 'RecentBadge';\n","/**\n * @file ConnectCard component with comprehensive customization options for wallet connection cards.\n */\n\nimport { Web3Icon } from '@bgd-labs/react-web3-icons';\nimport { InformationCircleIcon } from '@heroicons/react/24/outline';\nimport { ChevronRightIcon } from '@heroicons/react/24/solid';\nimport { cn, isTouchDevice } from '@tuwaio/nova-core';\nimport { OrbitAdapter } from '@tuwaio/orbit-core';\nimport React, { ComponentType, forwardRef, memo, useCallback, useMemo } from 'react';\n\nimport { useNovaConnectLabels } from '../../hooks/useNovaConnectLabels';\nimport { getNetworkIcon } from '../../utils';\nimport { RecentBadge } from './RecentBadge';\n\n// --- Types ---\n\n/**\n * Network data for display\n */\ninterface NetworkData {\n /** Network adapter */\n adapter: OrbitAdapter;\n /** Chain ID for icon display */\n chainId?: number | string;\n /** Network display name */\n name?: string;\n /** Network index in list */\n index: number;\n}\n\n/**\n * Connect card data\n */\nexport interface ConnectCardData {\n /** Primary title/name */\n title: string;\n /** Optional subtitle */\n subtitle?: string;\n /** Whether card is recent */\n isRecent: boolean;\n /** Whether touch device */\n isTouch: boolean;\n /** Info link URL */\n infoLink?: string;\n /** Network adapters */\n adapters?: OrbitAdapter[];\n /** Whether only one network */\n isOnlyOneNetwork?: boolean;\n /** Network count for overflow */\n networkCount: number;\n /** Visible networks */\n visibleNetworks: NetworkData[];\n /** Overflow count */\n overflowCount: number;\n}\n\n// --- Network Icons Component Props ---\ntype NetworkIconsContainerProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n 'aria-label'?: string;\n cardData: ConnectCardData;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype NetworkIconProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n 'aria-label'?: string;\n networkData: NetworkData;\n cardData: ConnectCardData;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype NetworkOverflowProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n 'aria-label'?: string;\n overflowCount: number;\n cardData: ConnectCardData;\n} & React.RefAttributes<HTMLDivElement>;\n\n/**\n * NetworkIcons customization options\n */\nexport type NetworkIconsCustomization = {\n /** Custom components */\n components?: {\n /** Custom container wrapper */\n Container?: ComponentType<NetworkIconsContainerProps>;\n /** Custom network icon */\n NetworkIcon?: ComponentType<NetworkIconProps>;\n /** Custom overflow indicator */\n OverflowIndicator?: ComponentType<NetworkOverflowProps>;\n };\n /** Custom class name generators */\n classNames?: {\n /** Function to generate container classes */\n container?: (params: { cardData: ConnectCardData }) => string;\n /** Function to generate network icon classes */\n networkIcon?: (params: { networkData: NetworkData; cardData: ConnectCardData }) => string;\n /** Function to generate overflow indicator classes */\n overflowIndicator?: (params: { overflowCount: number; cardData: ConnectCardData }) => string;\n };\n};\n\n/**\n * Props for the NetworkIcons component\n */\ninterface NetworkIconsProps {\n /** Array of network adapters to display as icons */\n adapters?: OrbitAdapter[];\n /** Whether only one network is available */\n isOnlyOneNetwork?: boolean;\n /** Card data for context */\n cardData: ConnectCardData;\n /** Customization options */\n customization?: NetworkIconsCustomization;\n}\n\n// --- Connect Card Component Props ---\ntype CardContainerProps = {\n className?: string;\n children: React.ReactNode;\n type?: 'button';\n onClick?: () => void;\n 'aria-label'?: string;\n 'aria-describedby'?: string;\n cardData: ConnectCardData;\n} & React.RefAttributes<HTMLButtonElement>;\n\ntype CardContentProps = {\n className?: string;\n children: React.ReactNode;\n cardData: ConnectCardData;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype IconContainerProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n 'aria-label'?: string;\n cardData: ConnectCardData;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype IconWrapperProps = {\n className?: string;\n children: React.ReactNode;\n cardData: ConnectCardData;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype TextContainerProps = {\n className?: string;\n children: React.ReactNode;\n cardData: ConnectCardData;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype TitleProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n 'aria-level'?: number;\n cardData: ConnectCardData;\n} & React.RefAttributes<HTMLSpanElement>;\n\ntype SubtitleProps = {\n className?: string;\n children: React.ReactNode;\n id?: string;\n role?: string;\n cardData: ConnectCardData;\n} & React.RefAttributes<HTMLSpanElement>;\n\ntype InfoLinkProps = {\n className?: string;\n children: React.ReactNode;\n onClick?: (e: React.MouseEvent) => void;\n href?: string;\n target?: string;\n rel?: string;\n 'aria-label'?: string;\n cardData: ConnectCardData;\n} & React.RefAttributes<HTMLAnchorElement>;\n\ntype RecentBadgeWrapperProps = {\n className?: string;\n children: React.ReactNode;\n 'aria-label'?: string;\n cardData: ConnectCardData;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype ChevronProps = {\n className?: string;\n children: React.ReactNode;\n 'aria-hidden'?: boolean;\n cardData: ConnectCardData;\n} & React.RefAttributes<HTMLDivElement>;\n\n/**\n * ConnectCard customization options\n */\nexport type ConnectCardCustomization = {\n /** Custom components */\n components?: {\n /** Custom card container */\n Container?: ComponentType<CardContainerProps>;\n /** Custom card content */\n Content?: ComponentType<CardContentProps>;\n /** Custom icon container */\n IconContainer?: ComponentType<IconContainerProps>;\n /** Custom icon wrapper */\n IconWrapper?: ComponentType<IconWrapperProps>;\n /** Custom text container */\n TextContainer?: ComponentType<TextContainerProps>;\n /** Custom title */\n Title?: ComponentType<TitleProps>;\n /** Custom subtitle */\n Subtitle?: ComponentType<SubtitleProps>;\n /** Custom info link */\n InfoLink?: ComponentType<InfoLinkProps>;\n /** Custom recent badge wrapper */\n RecentBadgeWrapper?: ComponentType<RecentBadgeWrapperProps>;\n /** Custom chevron */\n Chevron?: ComponentType<ChevronProps>;\n };\n /** Custom class name generators */\n classNames?: {\n /** Function to generate container classes */\n container?: (params: { cardData: ConnectCardData }) => string;\n /** Function to generate content classes */\n content?: (params: { cardData: ConnectCardData }) => string;\n /** Function to generate icon container classes */\n iconContainer?: (params: { cardData: ConnectCardData }) => string;\n /** Function to generate icon wrapper classes */\n iconWrapper?: (params: { cardData: ConnectCardData }) => string;\n /** Function to generate text container classes */\n textContainer?: (params: { cardData: ConnectCardData }) => string;\n /** Function to generate title classes */\n title?: (params: { cardData: ConnectCardData }) => string;\n /** Function to generate subtitle classes */\n subtitle?: (params: { cardData: ConnectCardData }) => string;\n /** Function to generate info link classes */\n infoLink?: (params: { cardData: ConnectCardData }) => string;\n /** Function to generate recent badge wrapper classes */\n recentBadgeWrapper?: (params: { cardData: ConnectCardData }) => string;\n /** Function to generate chevron classes */\n chevron?: (params: { cardData: ConnectCardData }) => string;\n };\n /** Custom event handlers */\n handlers?: {\n /** Custom click handler */\n onClick?: (cardData: ConnectCardData, originalHandler: () => void) => void;\n /** Custom info link click handler */\n onInfoClick?: (cardData: ConnectCardData, event: React.MouseEvent) => void;\n /** Custom hover handler */\n onHover?: (cardData: ConnectCardData, isHovering: boolean) => void;\n };\n /** Configuration options */\n config?: {\n /** Custom ARIA labels */\n ariaLabels?: {\n card?: (cardData: ConnectCardData) => string;\n icon?: (cardData: ConnectCardData) => string;\n infoLink?: (cardData: ConnectCardData) => string;\n recentBadge?: (cardData: ConnectCardData) => string;\n };\n /** Custom animation settings */\n animation?: {\n hoverScale?: string;\n transitionDuration?: string;\n chevronTransform?: string;\n };\n };\n /** NetworkIcons customization */\n networkIcons?: NetworkIconsCustomization;\n};\n\n/**\n * Props for the ConnectCard component\n */\ninterface ConnectCardProps {\n /** Click handler for the connect card */\n onClick: () => void;\n /** Icon element to display for the wallet/connector */\n icon: React.ReactNode;\n /** Primary title/name of the wallet/connector */\n title: string;\n /** Optional subtitle/description text */\n subtitle?: string;\n /** Optional URL for additional information */\n infoLink?: string;\n /** Whether this connector was recently used */\n isRecent?: boolean;\n /** Array of network adapters to display as icons */\n adapters?: OrbitAdapter[];\n /** Whether only one network is available */\n isOnlyOneNetwork?: boolean;\n /** Custom CSS classes for styling the container */\n className?: string;\n /** Customization options */\n customization?: ConnectCardCustomization;\n}\n\n// --- Default NetworkIcons Sub-Components ---\nconst DefaultNetworkIconsContainer = forwardRef<HTMLDivElement, NetworkIconsContainerProps>(\n // eslint-disable-next-line\n ({ children, className, cardData, ...props }, ref) => (\n <div ref={ref} className={className} {...props}>\n {children}\n </div>\n ),\n);\nDefaultNetworkIconsContainer.displayName = 'DefaultNetworkIconsContainer';\n\nconst DefaultNetworkIcon = forwardRef<HTMLDivElement, NetworkIconProps>(\n // eslint-disable-next-line\n ({ children, className, cardData, networkData, ...props }, ref) => (\n <div ref={ref} className={className} {...props}>\n {children}\n </div>\n ),\n);\nDefaultNetworkIcon.displayName = 'DefaultNetworkIcon';\n\nconst DefaultNetworkOverflow = forwardRef<HTMLDivElement, NetworkOverflowProps>(\n // eslint-disable-next-line\n ({ children, className, cardData, ...props }, ref) => (\n <div ref={ref} className={className} {...props}>\n {children}\n </div>\n ),\n);\nDefaultNetworkOverflow.displayName = 'DefaultNetworkOverflow';\n\n/**\n * NetworkIcons component - Displays network chain icons for supported networks with full customization\n *\n * Shows up to 3 network icons with an overflow indicator for additional networks.\n * Hidden when only one network is available or no adapters are provided.\n * Supports complete customization of all child components and styling.\n *\n * @example Basic usage\n * ```tsx\n * <NetworkIcons\n * adapters={[ethereum, polygon]}\n * isOnlyOneNetwork={false}\n * cardData={cardData}\n * />\n * ```\n *\n * @example With customization\n * ```tsx\n * <NetworkIcons\n * adapters={networkAdapters}\n * isOnlyOneNetwork={false}\n * cardData={cardData}\n * customization={{\n * components: {\n * NetworkIcon: CustomNetworkIcon\n * },\n * classNames: {\n * container: ({ cardData }) => `custom-networks ${cardData.isTouch ? 'touch' : 'mouse'}`\n * }\n * }}\n * />\n * ```\n */\nconst NetworkIcons = memo(\n forwardRef<HTMLDivElement, NetworkIconsProps>(({ adapters, isOnlyOneNetwork, cardData, customization }, ref) => {\n const labels = useNovaConnectLabels();\n\n // Extract customization options\n const {\n Container: CustomContainer = DefaultNetworkIconsContainer,\n NetworkIcon: CustomNetworkIcon = DefaultNetworkIcon,\n OverflowIndicator: CustomOverflowIndicator = DefaultNetworkOverflow,\n } = customization?.components ?? {};\n\n /**\n * Generate visible networks data\n */\n const visibleNetworksData = useMemo(() => {\n if (!adapters?.length) return [];\n return adapters.slice(0, 3).map(\n (adapter, index): NetworkData => ({\n adapter,\n chainId: getNetworkIcon(adapter)?.chainId,\n name: getNetworkIcon(adapter)?.name,\n index,\n }),\n );\n }, [adapters]);\n\n /**\n * Calculate overflow count\n */\n // eslint-disable-next-line\n const overflowCount = useMemo(() => {\n return adapters?.length ? Math.max(0, adapters.length - 3) : 0;\n }, [adapters?.length]);\n\n // Early returns\n if (!adapters?.length) return null;\n if (isOnlyOneNetwork) return null;\n\n return (\n <CustomContainer\n ref={ref}\n className={\n customization?.classNames?.container?.({ cardData }) ??\n cn(\n 'novacon:absolute novacon:-bottom-1 novacon:-right-1 novacon:w-full novacon:flex novacon:items-center novacon:justify-end',\n )\n }\n role=\"group\"\n aria-label={labels.listOfNetworks}\n cardData={cardData}\n >\n {visibleNetworksData.map((networkData) => (\n <CustomNetworkIcon\n key={networkData.adapter}\n className={\n customization?.classNames?.networkIcon?.({ networkData, cardData }) ??\n cn(\n 'novacon:w-4 novacon:h-4 novacon:rounded-full novacon:border novacon:border-[var(--tuwa-border-primary)] novacon:bg-[var(--tuwa-bg-primary)] novacon:flex novacon:items-center novacon:justify-center',\n {\n 'novacon:-ml-2': networkData.index > 0,\n },\n )\n }\n role=\"img\"\n aria-label={`Network ${networkData.chainId || networkData.adapter}`}\n networkData={networkData}\n cardData={cardData}\n >\n <Web3Icon chainId={networkData.chainId} />\n </CustomNetworkIcon>\n ))}\n {overflowCount > 0 && (\n <CustomOverflowIndicator\n className={\n customization?.classNames?.overflowIndicator?.({ overflowCount, cardData }) ??\n cn(\n 'novacon:w-4 novacon:h-4 novacon:rounded-full novacon:border novacon:border-[var(--tuwa-border-primary)] novacon:bg-[var(--tuwa-bg-primary)] novacon:-ml-2 novacon:flex novacon:items-center novacon:justify-center novacon:text-[8px]',\n )\n }\n role=\"img\"\n aria-label={`${overflowCount} additional networks`}\n overflowCount={overflowCount}\n cardData={cardData}\n >\n +{overflowCount}\n </CustomOverflowIndicator>\n )}\n </CustomContainer>\n );\n }),\n);\nNetworkIcons.displayName = 'NetworkIcons';\n\n// --- Default ConnectCard Sub-Components ---\nconst DefaultCardContainer = forwardRef<HTMLButtonElement, CardContainerProps>(\n // eslint-disable-next-line\n ({ children, className, cardData, ...props }, ref) => (\n <button ref={ref} className={className} {...props}>\n {children}\n </button>\n ),\n);\nDefaultCardContainer.displayName = 'DefaultCardContainer';\n\nconst DefaultCardContent = forwardRef<HTMLDivElement, CardContentProps>(\n // eslint-disable-next-line\n ({ children, className, cardData }, ref) => (\n <div ref={ref} className={className}>\n {children}\n </div>\n ),\n);\nDefaultCardContent.displayName = 'DefaultCardContent';\n\nconst DefaultIconContainer = forwardRef<HTMLDivElement, IconContainerProps>(\n // eslint-disable-next-line\n ({ children, className, cardData, ...props }, ref) => (\n <div ref={ref} className={className} {...props}>\n {children}\n </div>\n ),\n);\nDefaultIconContainer.displayName = 'DefaultIconContainer';\n\nconst DefaultIconWrapper = forwardRef<HTMLDivElement, IconWrapperProps>(\n // eslint-disable-next-line\n ({ children, className, cardData }, ref) => (\n <div ref={ref} className={className}>\n {children}\n </div>\n ),\n);\nDefaultIconWrapper.displayName = 'DefaultIconWrapper';\n\nconst DefaultTextContainer = forwardRef<HTMLDivElement, TextContainerProps>(\n // eslint-disable-next-line\n ({ children, className, cardData }, ref) => (\n <div ref={ref} className={className}>\n {children}\n </div>\n ),\n);\nDefaultTextContainer.displayName = 'DefaultTextContainer';\n\nconst DefaultTitle = forwardRef<HTMLSpanElement, TitleProps>(\n // eslint-disable-next-line\n ({ children, className, cardData, ...props }, ref) => (\n <span ref={ref} className={className} {...props}>\n {children}\n </span>\n ),\n);\nDefaultTitle.displayName = 'DefaultTitle';\n\nconst DefaultSubtitle = forwardRef<HTMLSpanElement, SubtitleProps>(\n // eslint-disable-next-line\n ({ children, className, cardData, ...props }, ref) => (\n <span ref={ref} className={className} {...props}>\n {children}\n </span>\n ),\n);\nDefaultSubtitle.displayName = 'DefaultSubtitle';\n\nconst DefaultInfoLink = forwardRef<HTMLAnchorElement, InfoLinkProps>(\n // eslint-disable-next-line\n ({ children, className, cardData, ...props }, ref) => (\n <a ref={ref} className={className} {...props}>\n {children}\n </a>\n ),\n);\nDefaultInfoLink.displayName = 'DefaultInfoLink';\n\nconst DefaultRecentBadgeWrapper = forwardRef<HTMLDivElement, RecentBadgeWrapperProps>(\n // eslint-disable-next-line\n ({ children, className, cardData, ...props }, ref) => (\n <div ref={ref} className={className} {...props}>\n {children}\n </div>\n ),\n);\nDefaultRecentBadgeWrapper.displayName = 'DefaultRecentBadgeWrapper';\n\nconst DefaultChevron = forwardRef<HTMLDivElement, ChevronProps>(\n // eslint-disable-next-line\n ({ children, className, cardData, ...props }, ref) => (\n <div ref={ref} className={className} {...props}>\n {children}\n </div>\n ),\n);\nDefaultChevron.displayName = 'DefaultChevron';\n\n/**\n * ConnectCard component - Interactive card for wallet connection options with comprehensive customization\n *\n * This component provides a clickable card interface for wallet connectors with:\n * - Responsive design adapting to touch/mouse interfaces\n * - Network icons overlay showing supported networks\n * - Recent usage indicator badge\n * - Information link with external documentation\n * - Hover animations and visual feedback\n * - Full accessibility support with ARIA labels\n * - Keyboard navigation support\n * - Complete customization of all child components and styling\n *\n * @example Basic usage\n * ```tsx\n * <ConnectCard\n * onClick={() => connect('metamask')}\n * title=\"MetaMask\"\n * subtitle=\"Browser Extension\"\n * icon={<MetaMaskIcon />}\n * adapters={[evm]}\n * isRecent={true}\n * infoLink=\"https://metamask.io/learn\"\n * />\n * ```\n *\n * @example With full customization\n * ```tsx\n * <ConnectCard\n * onClick={() => connect('walletconnect')}\n * title=\"WalletConnect\"\n * icon={<WalletConnectIcon />}\n * adapters={[ethereum, polygon]}\n * customization={{\n * components: {\n * Container: CustomCardContainer,\n * Title: CustomTitle\n * },\n * classNames: {\n * container: ({ cardData }) => cardData.isTouch ? 'touch-card' : 'desktop-card'\n * },\n * handlers: {\n * onClick: (cardData, originalHandler) => {\n * analytics.track('card_clicked', { title: cardData.title });\n * originalHandler();\n * }\n * }\n * }}\n * />\n * ```\n */\nexport const ConnectCard = memo(\n forwardRef<HTMLButtonElement, ConnectCardProps>(\n (\n {\n onClick,\n title,\n icon,\n adapters,\n infoLink,\n subtitle,\n isRecent = false,\n isOnlyOneNetwork = false,\n className,\n customization,\n },\n ref,\n ) => {\n const labels = useNovaConnectLabels();\n\n // Extract customization options\n const {\n Container: CustomContainer = DefaultCardContainer,\n Content: CustomContent = DefaultCardContent,\n IconContainer: CustomIconContainer = DefaultIconContainer,\n IconWrapper: CustomIconWrapper = DefaultIconWrapper,\n TextContainer: CustomTextContainer = DefaultTextContainer,\n Title: CustomTitle = DefaultTitle,\n Subtitle: CustomSubtitle = DefaultSubtitle,\n InfoLink: CustomInfoLink = DefaultInfoLink,\n RecentBadgeWrapper: CustomRecentBadgeWrapper = DefaultRecentBadgeWrapper,\n Chevron: CustomChevron = DefaultChevron,\n } = customization?.components ?? {};\n\n const customHandlers = customization?.handlers;\n const customConfig = customization?.config;\n\n /**\n * Memoized touch device detection\n */\n const isTouch = useMemo(() => isTouchDevice(), []);\n\n /**\n * Memoized network data calculations\n */\n const networkStats = useMemo(() => {\n const networkCount = adapters?.length || 0;\n const visibleNetworks =\n adapters?.slice(0, 3).map(\n (adapter, index): NetworkData => ({\n adapter,\n chainId: getNetworkIcon(adapter)?.chainId,\n name: String(adapter),\n index,\n }),\n ) || [];\n const overflowCount = Math.max(0, networkCount - 3);\n\n return {\n networkCount,\n visibleNetworks,\n overflowCount,\n };\n }, [adapters]);\n\n /**\n * Memoized card data\n */\n const cardData = useMemo(\n (): ConnectCardData => ({\n title,\n subtitle,\n isRecent,\n isTouch,\n infoLink,\n adapters,\n isOnlyOneNetwork,\n ...networkStats,\n }),\n [title, subtitle, isRecent, isTouch, infoLink, adapters, isOnlyOneNetwork, networkStats],\n );\n\n /**\n * Memoized container classes\n */\n const containerClasses = useMemo(() => {\n if (customization?.classNames?.container) {\n return customization.classNames.container({ cardData });\n }\n\n const baseClasses =\n 'novacon:group novacon:cursor-pointer novacon:p-4 novacon:rounded-xl novacon:transition-colors novacon:relative novacon:border novacon:border-[var(--tuwa-border-primary)] novacon:disabled:opacity-50 novacon:disabled:cursor-not-allowed novacon:bg-[var(--tuwa-bg-secondary)] novacon:hover:bg-[var(--tuwa-bg-muted)]';\n\n const touchClasses =\n 'novacon:w-[125px] novacon:h-[125px] novacon:p-2 novacon:flex novacon:flex-col novacon:items-center novacon:justify-center novacon:text-center';\n\n const mouseClasses = [\n 'novacon:w-full novacon:h-auto',\n 'novacon:flex novacon:items-center novacon:justify-between',\n ];\n\n return cn(baseClasses, className, mouseClasses, { [touchClasses]: isTouch });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customization?.classNames?.container, cardData, className, isTouch]);\n\n /**\n * Memoized aria label\n */\n const cardAriaLabel = useMemo(() => {\n if (customConfig?.ariaLabels?.card) {\n return customConfig.ariaLabels.card(cardData);\n }\n\n const baseLabel = `${labels.connect} ${title}`;\n const recentText = isRecent ? ` (${labels.recent})` : '';\n const subtitleText = subtitle ? `, ${subtitle}` : '';\n const networkCount = adapters?.length ? `, supports ${adapters.length} networks` : '';\n\n return `${baseLabel}${recentText}${subtitleText}${networkCount}`;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n customConfig?.ariaLabels?.card,\n cardData,\n labels.connect,\n labels.recent,\n title,\n isRecent,\n subtitle,\n adapters?.length,\n ]);\n\n /**\n * Handle click with customization\n */\n const handleClick = useCallback(() => {\n if (customHandlers?.onClick) {\n customHandlers.onClick(cardData, onClick);\n } else {\n onClick();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customHandlers?.onClick, cardData, onClick]);\n\n /**\n * Handle info link click\n */\n const handleInfoClick = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n if (customHandlers?.onInfoClick) {\n customHandlers.onInfoClick(cardData, e);\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [customHandlers?.onInfoClick, cardData],\n );\n\n return (\n <CustomContainer\n ref={ref}\n type=\"button\"\n className={containerClasses}\n onClick={handleClick}\n aria-label={cardAriaLabel}\n aria-describedby={subtitle ? `${title}-subtitle` : undefined}\n cardData={cardData}\n >\n <CustomContent\n className={\n customization?.classNames?.content?.({ cardData }) ??\n cn(\n 'novacon:flex novacon:gap-3 novacon:transition novacon:duration-300 novacon:ease-in-out novacon:text-[var(--tuwa-text-primary)] novacon:group-hover:text-[var(--tuwa-text-accent)] novacon:items-center',\n {\n 'novacon:flex-col novacon:items-center novacon:gap-1': isTouch,\n },\n )\n }\n cardData={cardData}\n >\n <CustomIconContainer\n className={\n customization?.classNames?.iconContainer?.({ cardData }) ??\n cn(\n 'novacon:flex novacon:relative novacon:transition novacon:duration-300 novacon:ease-in-out group-hover:novacon:scale-115',\n )\n }\n role=\"img\"\n aria-label={\n customConfig?.ariaLabels?.icon\n ? customConfig.ariaLabels.icon(cardData)\n : `${title} ${labels.walletIcon}`\n }\n cardData={cardData}\n >\n <CustomIconWrapper\n className={\n customization?.classNames?.iconWrapper?.({ cardData }) ??\n cn('novacon:[&_img]:w-[42px]! novacon:[&_img]:h-[auto]! novacon:sm:[&_img]:w-[32px]!')\n }\n cardData={cardData}\n >\n {icon}\n </CustomIconWrapper>\n <NetworkIcons\n adapters={adapters}\n isOnlyOneNetwork={isOnlyOneNetwork}\n cardData={cardData}\n customization={customization?.networkIcons}\n />\n </CustomIconContainer>\n\n <CustomTextContainer\n className={\n customization?.classNames?.textContainer?.({ cardData }) ??\n cn('novacon:flex novacon:flex-col novacon:gap-0.5 novacon:items-start', {\n 'novacon:items-center novacon:text-sm': isTouch,\n })\n }\n cardData={cardData}\n >\n <CustomTitle\n className={customization?.classNames?.title?.({ cardData }) ?? cn({ 'novacon:font-medium': isTouch })}\n role=\"heading\"\n aria-level={3}\n cardData={cardData}\n >\n {title}\n </CustomTitle>\n {subtitle && (\n <CustomSubtitle\n className={\n customization?.classNames?.subtitle?.({ cardData }) ??\n cn('novacon:text-[var(--tuwa-text-secondary)] novacon:text-sm', {\n 'novacon:text-[10px]': isTouch,\n })\n }\n id={`${title}-subtitle`}\n role=\"text\"\n cardData={cardData}\n >\n {subtitle}\n </CustomSubtitle>\n )}\n </CustomTextContainer>\n </CustomContent>\n\n {infoLink && (\n <CustomInfoLink\n className={\n customization?.classNames?.infoLink?.({ cardData }) ??\n cn(\n 'novacon:absolute novacon:top-[2px] novacon:right-[2px] novacon:text-[var(--tuwa-text-secondary)] novacon:transition novacon:duration-300 novacon:ease-in-out novacon:active:scale-75 novacon:hover:scale-110 novacon:group-hover:text-[var(--tuwa-text-primary)]',\n )\n }\n onClick={handleInfoClick}\n href={infoLink}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n aria-label={\n customConfig?.ariaLabels?.infoLink\n ? customConfig.ariaLabels.infoLink(cardData)\n : `${labels.learnMore} ${labels.aboutWallets} ${title}`\n }\n cardData={cardData}\n >\n <InformationCircleIcon width={16} height={16} aria-hidden=\"true\" />\n </CustomInfoLink>\n )}\n\n {isRecent && (\n <CustomRecentBadgeWrapper\n className={\n customization?.classNames?.recentBadgeWrapper?.({ cardData }) ??\n cn(\n 'novacon:absolute novacon:top-0.5 novacon:right-0.5 novacon:transition novacon:group-hover:opacity-0 novacon:group-hover:scale-90',\n )\n }\n aria-label={\n customConfig?.ariaLabels?.recentBadge\n ? customConfig.ariaLabels.recentBadge(cardData)\n : `${title} ${labels.recent}`\n }\n cardData={cardData}\n >\n <RecentBadge>{labels.recent}</RecentBadge>\n </CustomRecentBadgeWrapper>\n )}\n\n {!isTouch && (\n <CustomChevron\n className={\n customization?.classNames?.chevron?.({ cardData }) ??\n cn(\n 'novacon:w-5 novacon:h-5 novacon:transition novacon:duration-300 novacon:ease-in-out novacon:translate-x-[-10px] novacon:opacity-0 novacon:group-hover:translate-x-0 novacon:group-hover:opacity-100 novacon:text-[var(--tuwa-text-secondary)]',\n )\n }\n aria-hidden={true}\n cardData={cardData}\n >\n <ChevronRightIcon />\n </CustomChevron>\n )}\n </CustomContainer>\n );\n },\n ),\n);\n\nConnectCard.displayName = 'ConnectCard';\n","/**\n * @file ConnectorsBlock component with comprehensive customization options and connector group display.\n */\n\nimport { cn, isTouchDevice } from '@tuwaio/nova-core';\nimport {\n delay,\n formatWalletName,\n getWalletTypeFromConnectorName,\n OrbitAdapter,\n recentConnectedWalletHelpers,\n waitFor,\n WalletType,\n} from '@tuwaio/orbit-core';\nimport React, { ComponentType, forwardRef, memo, useCallback, useMemo, useRef } from 'react';\n\nimport { getConnectChainId } from '../../utils';\nimport { ConnectButtonProps } from '../ConnectButton/ConnectButton';\nimport { WalletIcon } from '../WalletIcon';\nimport { ConnectCard, ConnectCardCustomization } from './ConnectCard';\nimport { GroupedConnector } from './ConnectModal';\nimport { ConnectorsSelectionsProps } from './ConnectorsSelections';\n\n// --- Types ---\n\n/**\n * Connector block data for customization context\n */\nexport interface ConnectorsBlockData {\n /** Currently selected network adapter */\n selectedAdapter: OrbitAdapter | undefined;\n /** Array of grouped wallet connectors to display */\n connectors: GroupedConnector[];\n /** Title text for the connector group */\n title: string;\n /** Whether to render the title in bold accent color */\n isTitleBold: boolean;\n /** Whether only one network is available */\n isOnlyOneNetwork: boolean;\n /** Whether device is touch-enabled */\n isTouch: boolean;\n /** Whether there are connectors to display */\n hasConnectors: boolean;\n /** Recent wallets data */\n recentWallets: Record<string, Record<string, boolean>> | null;\n /** Section ID for accessibility */\n sectionId: string;\n}\n\n/**\n * Individual connector item data\n */\nexport interface ConnectorItemData {\n /** Grouped connector configuration */\n group: GroupedConnector;\n /** Formatted wallet name */\n name: string;\n /** Whether this wallet was recently used */\n isRecent: boolean;\n /** Item index in the list */\n index: number;\n}\n\n// --- Component Props Types ---\ntype ContainerProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n 'aria-labelledby'?: string;\n 'aria-label'?: string;\n blockData: ConnectorsBlockData;\n} & React.RefAttributes<HTMLElement>;\n\ntype TitleProps = {\n className?: string;\n children: React.ReactNode;\n id?: string;\n role?: string;\n 'aria-level'?: number;\n onClick?: () => void;\n blockData: ConnectorsBlockData;\n} & React.RefAttributes<HTMLHeadingElement>;\n\ntype ConnectorsListProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n 'aria-label'?: string;\n blockData: ConnectorsBlockData;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype ConnectorItemProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n itemData: ConnectorItemData;\n blockData: ConnectorsBlockData;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype EmptyStateProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n 'aria-label'?: string;\n onClick?: () => void;\n blockData: ConnectorsBlockData;\n} & React.RefAttributes<HTMLDivElement>;\n\n/**\n * Customization options for ConnectorsBlock component\n */\nexport type ConnectorsBlockCustomization = {\n /** Custom components */\n components?: {\n /** Custom container wrapper */\n Container?: ComponentType<ContainerProps>;\n /** Custom title component */\n Title?: ComponentType<TitleProps>;\n /** Custom connectors list */\n ConnectorsList?: ComponentType<ConnectorsListProps>;\n /** Custom connector item wrapper */\n ConnectorItem?: ComponentType<ConnectorItemProps>;\n /** Custom empty state component */\n EmptyState?: ComponentType<EmptyStateProps>;\n };\n /** Custom class name generators */\n classNames?: {\n /** Function to generate container classes */\n container?: (params: { blockData: ConnectorsBlockData }) => string;\n /** Function to generate title classes */\n title?: (params: { blockData: ConnectorsBlockData }) => string;\n /** Function to generate connectors list classes */\n connectorsList?: (params: { blockData: ConnectorsBlockData }) => string;\n /** Function to generate connector item classes */\n connectorItem?: (params: { itemData: ConnectorItemData; blockData: ConnectorsBlockData }) => string;\n /** Function to generate empty state classes */\n emptyState?: (params: { blockData: ConnectorsBlockData }) => string;\n };\n /** Custom event handlers */\n handlers?: {\n /** Custom connector click handler */\n onConnectorClick?: (\n itemData: ConnectorItemData,\n blockData: ConnectorsBlockData,\n originalHandler: (group: GroupedConnector) => Promise<void>,\n ) => void;\n /** Custom title click handler */\n onTitleClick?: (blockData: ConnectorsBlockData) => void;\n /** Custom empty state action handler */\n onEmptyStateAction?: (blockData: ConnectorsBlockData) => void;\n };\n /** Configuration options */\n config?: {\n /** Custom ARIA labels */\n ariaLabels?: {\n container?: (blockData: ConnectorsBlockData) => string;\n connectorsList?: (blockData: ConnectorsBlockData) => string;\n emptyState?: (blockData: ConnectorsBlockData) => string;\n };\n /** Custom layout configuration */\n layout?: {\n /** Touch device gap between items */\n touchGap?: string;\n /** Mouse device gap between items */\n mouseGap?: string;\n /** Custom touch layout classes */\n touchClasses?: string[];\n /** Custom mouse layout classes */\n mouseClasses?: string[];\n };\n /** Show/hide features */\n features?: {\n /** Whether to show empty state */\n showEmptyState?: boolean;\n /** Whether to show title when no connectors */\n showTitleWhenEmpty?: boolean;\n /** Whether to show recent indicators */\n showRecentIndicators?: boolean;\n };\n };\n /** ConnectCard customization for each connector card */\n connectCard?: ConnectCardCustomization;\n};\n\n/**\n * Props for the ConnectorsBlock component\n */\ninterface ConnectorsBlockProps\n extends Pick<\n ConnectorsSelectionsProps,\n 'waitForPredict' | 'setIsOpen' | 'setIsConnected' | 'onClick' | 'appChains' | 'solanaRPCUrls'\n >,\n Pick<ConnectButtonProps, 'store'> {\n /** Currently selected network adapter */\n selectedAdapter: OrbitAdapter | undefined;\n /** Array of grouped wallet connectors to display */\n connectors: GroupedConnector[];\n /** Title text for the connector group */\n title: string;\n /** Whether to render the title in bold accent color */\n isTitleBold?: boolean;\n /** Whether only one network is available */\n isOnlyOneNetwork?: boolean;\n /** Customization options */\n customization?: ConnectorsBlockCustomization;\n}\n\n// --- Default Sub-Components ---\nconst DefaultContainer = forwardRef<HTMLElement, ContainerProps>(({ children, className, ...props }, ref) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { blockData: _blockData, ...restProps } = props;\n return (\n <section ref={ref} className={className} {...restProps}>\n {children}\n </section>\n );\n});\nDefaultContainer.displayName = 'DefaultContainer';\n\nconst DefaultTitle = forwardRef<HTMLHeadingElement, TitleProps>(({ children, className, ...props }, ref) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { blockData: _blockData, ...restProps } = props;\n return (\n <h3 ref={ref} className={className} {...restProps}>\n {children}\n </h3>\n );\n});\nDefaultTitle.displayName = 'DefaultTitle';\n\nconst DefaultConnectorsList = forwardRef<HTMLDivElement, ConnectorsListProps>(\n ({ children, className, ...props }, ref) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { blockData: _blockData, ...restProps } = props;\n return (\n <div ref={ref} className={className} {...restProps}>\n {children}\n </div>\n );\n },\n);\nDefaultConnectorsList.displayName = 'DefaultConnectorsList';\n\nconst DefaultConnectorItem = forwardRef<HTMLDivElement, ConnectorItemProps>(\n ({ children, className, ...props }, ref) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { itemData: _itemData, blockData: _blockData, ...restProps } = props;\n return (\n <div ref={ref} className={className} {...restProps}>\n {children}\n </div>\n );\n },\n);\nDefaultConnectorItem.displayName = 'DefaultConnectorItem';\n\nconst DefaultEmptyState = forwardRef<HTMLDivElement, EmptyStateProps>(({ children, className, ...props }, ref) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { blockData: _blockData, ...restProps } = props;\n return (\n <div ref={ref} className={className} {...restProps}>\n {children}\n </div>\n );\n});\nDefaultEmptyState.displayName = 'DefaultEmptyState';\n\n/**\n * ConnectorsBlock component - Displays a grouped section of wallet connectors with full customization\n *\n * This component renders a section of wallet connectors with:\n * - Responsive layout adapting to touch/mouse interfaces\n * - Support for multi-network wallet selection\n * - Automatic connection handling for single-network wallets\n * - Recent wallet indicators and prioritization\n * - Full accessibility support with proper labeling\n * - Error handling and connection retry logic\n * - Complete customization of all child components and styling\n *\n * Layout features:\n * - Touch devices: Horizontal scrolling layout with cards\n * - Mouse devices: Vertical stacked layout for better readability\n * - Dynamic title styling based on section importance\n * - Consistent spacing and visual hierarchy\n * - Customizable layout parameters and responsive behavior\n *\n * Connection flow:\n * - Single adapter: Direct connection attempt\n * - Multiple adapters without selection: Triggers network selection\n * - Selected adapter: Uses specific adapter for connection\n * - Recent wallets: Visual indicators for previously used wallets\n * - Error handling with retry mechanisms\n *\n * Accessibility features:\n * - Semantic heading structure with proper levels\n * - Group labeling for related connector sets\n * - Screen reader friendly section descriptions\n * - Proper focus management and keyboard navigation\n * - ARIA live regions for dynamic content updates\n *\n * @example Basic usage\n * ```tsx\n * <ConnectorsBlock\n * selectedAdapter={OrbitAdapter.EVM}\n * connectors={installedConnectors}\n * title=\"Installed\"\n * isTitleBold={true}\n * isOnlyOneNetwork={false}\n * onClick={(group) => handleWalletSelection(group)}\n * appChains={appConfiguration}\n * solanaRPCUrls={rpcConfig}\n * store={walletStore}\n * />\n * ```\n *\n * @example With full customization\n * ```tsx\n * <ConnectorsBlock\n * selectedAdapter={undefined}\n * connectors={popularConnectors}\n * title=\"Popular\"\n * isTitleBold={false}\n * isOnlyOneNetwork={true}\n * onClick={(group) => initiateConnection(group)}\n * customization={{\n * components: {\n * Container: CustomConnectorsContainer,\n * Title: CustomSectionTitle\n * },\n * classNames: {\n * connectorsList: ({ blockData }) =>\n * blockData.isTouch ? 'horizontal-scroll' : 'vertical-stack',\n * connectorItem: ({ itemData, blockData }) =>\n * itemData.isRecent ? 'recent-connector' : 'standard-connector'\n * },\n * handlers: {\n * onConnectorClick: (itemData, blockData, originalHandler) => {\n * analytics.track('connector_clicked', { wallet: itemData.name });\n * originalHandler(itemData.group);\n * }\n * },\n * connectCard: {\n * classNames: {\n * container: ({ cardData }) =>\n * cardData.isRecent ? 'bg-accent' : 'bg-default'\n * }\n * }\n * }}\n * />\n * ```\n */\nexport const ConnectorsBlock = memo(\n forwardRef<HTMLElement, ConnectorsBlockProps>(\n (\n {\n selectedAdapter,\n connectors,\n solanaRPCUrls,\n appChains,\n waitForPredict,\n setIsConnected,\n setIsOpen,\n onClick,\n title,\n isTitleBold = false,\n isOnlyOneNetwork = false,\n store,\n customization,\n },\n ref,\n ) => {\n const isMountedRef = useRef(true);\n const connectInProgressRef = useRef(false);\n\n // Extract customization options\n const {\n Container: CustomContainer = DefaultContainer,\n Title: CustomTitle = DefaultTitle,\n ConnectorsList: CustomConnectorsList = DefaultConnectorsList,\n ConnectorItem: CustomConnectorItem = DefaultConnectorItem,\n EmptyState: CustomEmptyState = DefaultEmptyState,\n } = customization?.components ?? {};\n\n const customHandlers = customization?.handlers;\n const customConfig = customization?.config;\n\n /**\n * Memoized touch device detection\n */\n const isTouch = useMemo(() => isTouchDevice(), []);\n\n /**\n * Memoized store functions\n */\n const connect = useMemo(() => store.getState().connect, [store]);\n\n /**\n * Memoized recent wallets data with proper type handling\n */\n const recentWallets = useMemo(() => {\n const result = recentConnectedWalletHelpers.getRecentConnectedWallet();\n return result ?? null;\n }, []);\n\n /**\n * Memoized section ID\n */\n const sectionId = useMemo(() => `connectors-${title.toLowerCase().replace(/\\s+/g, '-')}`, [title]);\n\n /**\n * Memoized block data\n */\n const blockData = useMemo(\n (): ConnectorsBlockData => ({\n selectedAdapter,\n connectors,\n title,\n isTitleBold,\n isOnlyOneNetwork,\n isTouch,\n hasConnectors: Boolean(connectors?.length),\n recentWallets,\n sectionId,\n }),\n [selectedAdapter, connectors, title, isTitleBold, isOnlyOneNetwork, isTouch, recentWallets, sectionId],\n );\n\n /**\n * Memoized CSS classes for layout\n */\n const layoutClasses = useMemo(() => {\n const touchClasses = customConfig?.layout?.touchClasses ?? [\n 'novacon:flex-row',\n customConfig?.layout?.touchGap ?? 'novacon:gap-3',\n ];\n\n const mouseClasses = customConfig?.layout?.mouseClasses ?? [\n 'novacon:flex-col',\n customConfig?.layout?.mouseGap ?? 'novacon:gap-2',\n ];\n\n return {\n touchClasses,\n mouseClasses,\n };\n }, [customConfig?.layout]);\n\n /**\n * Memoized connector items data\n */\n const connectorItems = useMemo((): ConnectorItemData[] => {\n if (!connectors?.length) return [];\n\n return connectors.map((group, index) => {\n const name = formatWalletName(group.name);\n const isRecent =\n customConfig?.features?.showRecentIndicators !== false\n ? Boolean(recentWallets && recentWallets[group.adapters[0]] && recentWallets[group.adapters[0]][name])\n : false;\n\n return {\n group,\n name,\n isRecent,\n index,\n };\n });\n }, [connectors, recentWallets, customConfig?.features?.showRecentIndicators]);\n\n /**\n * Handle connector click with connection logic\n */\n const handleConnectorClick = useCallback(\n async (group: GroupedConnector) => {\n if (!isMountedRef.current || connectInProgressRef.current) return;\n\n const name = formatWalletName(group.name);\n\n try {\n connectInProgressRef.current = true;\n\n // If multiple adapters available and no specific adapter selected, show network selection\n if (group.adapters.length > 1 && !selectedAdapter) {\n onClick(group);\n return;\n }\n\n // Use the selected adapter or the first available adapter\n const targetAdapter = selectedAdapter || group.adapters[0];\n const walletType = getWalletTypeFromConnectorName(targetAdapter, name) as WalletType;\n\n onClick(group);\n\n await connect({\n walletType,\n chainId: getConnectChainId({ appChains, selectedAdapter: targetAdapter, solanaRPCUrls }),\n });\n\n await waitFor(waitForPredict);\n setIsConnected(true);\n const modalCloseTime = setTimeout(() => setIsOpen(false), 400);\n const isConnectedTimer = setTimeout(() => setIsConnected(false), 500);\n await delay(null, 500);\n clearTimeout(modalCloseTime);\n clearTimeout(isConnectedTimer);\n } catch (error) {\n console.error('Connection error:', error);\n } finally {\n connectInProgressRef.current = false;\n }\n },\n [selectedAdapter, onClick, connect, appChains, solanaRPCUrls, waitForPredict, setIsConnected, setIsOpen],\n );\n\n /**\n * Wrapper for custom connector click handler\n */\n const handleConnectorClickWrapper = useCallback(\n (itemData: ConnectorItemData) => {\n if (customHandlers?.onConnectorClick) {\n customHandlers.onConnectorClick(itemData, blockData, handleConnectorClick);\n } else {\n handleConnectorClick(itemData.group);\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [customHandlers?.onConnectorClick, blockData, handleConnectorClick],\n );\n\n /**\n * Memoized CSS classes\n */\n const cssClasses = useMemo(\n () => ({\n container:\n customization?.classNames?.container?.({ blockData }) ?? 'novacon:flex novacon:flex-col novacon:gap-2',\n\n title:\n customization?.classNames?.title?.({ blockData }) ??\n cn('novacon:text-sm novacon:text-[var(--tuwa-text-secondary)]', {\n 'novacon:font-bold novacon:text-[var(--tuwa-text-accent)]': blockData.isTitleBold,\n }),\n\n connectorsList:\n customization?.classNames?.connectorsList?.({ blockData }) ??\n cn('novacon:flex', blockData.isTouch ? layoutClasses.touchClasses : layoutClasses.mouseClasses),\n\n emptyState:\n customization?.classNames?.emptyState?.({ blockData }) ??\n 'novacon:flex novacon:items-center novacon:justify-center novacon:p-4 novacon:text-sm novacon:text-[var(--tuwa-text-secondary)] novacon:bg-[var(--tuwa-bg-muted)] novacon:rounded-lg',\n }),\n [customization?.classNames, blockData, layoutClasses],\n );\n\n // Cleanup effect\n React.useEffect(() => {\n isMountedRef.current = true;\n\n return () => {\n isMountedRef.current = false;\n connectInProgressRef.current = false;\n };\n }, []);\n\n // Early return for empty state\n if (!blockData.hasConnectors) {\n if (customConfig?.features?.showEmptyState === false) {\n return null;\n }\n\n return (\n <CustomContainer\n ref={ref}\n className={cssClasses.container}\n role=\"group\"\n aria-labelledby={\n customConfig?.features?.showTitleWhenEmpty !== false ? `${blockData.sectionId}-title` : undefined\n }\n blockData={blockData}\n >\n {customConfig?.features?.showTitleWhenEmpty !== false && (\n <CustomTitle\n id={`${blockData.sectionId}-title`}\n className={cssClasses.title}\n role=\"heading\"\n aria-level={3}\n blockData={blockData}\n onClick={customHandlers?.onTitleClick ? () => customHandlers.onTitleClick!(blockData) : undefined}\n >\n {title}\n </CustomTitle>\n )}\n\n <CustomEmptyState\n className={cssClasses.emptyState}\n role=\"status\"\n aria-label={\n customConfig?.ariaLabels?.emptyState?.(blockData) ?? `No ${title.toLowerCase()} connectors available`\n }\n blockData={blockData}\n onClick={\n customHandlers?.onEmptyStateAction ? () => customHandlers.onEmptyStateAction!(blockData) : undefined\n }\n >\n No {title.toLowerCase()} wallets available\n </CustomEmptyState>\n </CustomContainer>\n );\n }\n\n const containerAriaLabel =\n customConfig?.ariaLabels?.container?.(blockData) ?? `${title} wallet connectors section`;\n const listAriaLabel = customConfig?.ariaLabels?.connectorsList?.(blockData) ?? `${title} wallet connectors`;\n\n return (\n <CustomContainer\n ref={ref}\n className={cssClasses.container}\n role=\"group\"\n aria-labelledby={`${blockData.sectionId}-title`}\n aria-label={containerAriaLabel}\n blockData={blockData}\n >\n <CustomTitle\n id={`${blockData.sectionId}-title`}\n className={cssClasses.title}\n role=\"heading\"\n aria-level={3}\n blockData={blockData}\n onClick={customHandlers?.onTitleClick ? () => customHandlers.onTitleClick!(blockData) : undefined}\n >\n {title}\n </CustomTitle>\n\n <CustomConnectorsList\n className={cssClasses.connectorsList}\n role=\"list\"\n aria-label={listAriaLabel}\n blockData={blockData}\n >\n {connectorItems.map((itemData) => {\n const itemClasses =\n customization?.classNames?.connectorItem?.({ itemData, blockData }) ??\n cn(blockData.isTouch && 'novacon:flex-shrink-0');\n\n return (\n <CustomConnectorItem\n key={`${itemData.name}-${itemData.group.adapters.join('-')}`}\n className={itemClasses}\n role=\"listitem\"\n itemData={itemData}\n blockData={blockData}\n >\n <ConnectCard\n icon={<WalletIcon icon={itemData.group.icon} name={itemData.name} />}\n adapters={!selectedAdapter ? itemData.group.adapters : undefined}\n onClick={() => handleConnectorClickWrapper(itemData)}\n title={itemData.group.name}\n isOnlyOneNetwork={isOnlyOneNetwork}\n isRecent={itemData.isRecent}\n customization={customization?.connectCard}\n />\n </CustomConnectorItem>\n );\n })}\n </CustomConnectorsList>\n </CustomContainer>\n );\n },\n ),\n);\n\nConnectorsBlock.displayName = 'ConnectorsBlock';\n","/**\n * @file Disclaimer component with comprehensive customization options.\n */\n\nimport { cn, standardButtonClasses } from '@tuwaio/nova-core';\nimport React, { ComponentType, forwardRef, useCallback, useId, useMemo } from 'react';\n\nimport { useNovaConnectLabels } from '../../hooks/useNovaConnectLabels';\n\n// --- Types ---\n/**\n * Type definition for button actions\n * Can be either a URL string for external links or a callback function\n */\ntype ButtonAction = string | (() => void);\n\n// --- Component Props Types ---\ntype ContainerProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n 'aria-label'?: string;\n 'aria-describedby'?: string;\n 'data-testid'?: string;\n 'aria-live'?: 'polite' | 'assertive' | 'off';\n} & React.RefAttributes<HTMLDivElement>;\n\ntype ContentSectionProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n 'aria-labelledby'?: string;\n};\n\ntype TitleProps = {\n id: string;\n className?: string;\n children: React.ReactNode;\n role?: string;\n 'aria-level'?: number;\n};\n\ntype DescriptionProps = {\n id: string;\n className?: string;\n children: React.ReactNode;\n role?: string;\n};\n\ntype AdditionalContentProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n 'aria-label'?: string;\n};\n\ntype ActionsProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n 'aria-label'?: string;\n};\n\ntype ButtonProps = {\n action: ButtonAction;\n children: React.ReactNode;\n 'aria-label'?: string;\n className?: string;\n 'data-testid'?: string;\n};\n\ntype StatusProps = {\n className?: string;\n children?: React.ReactNode;\n 'aria-live'?: 'polite' | 'assertive' | 'off';\n 'aria-atomic'?: boolean;\n role?: string;\n};\n\n/**\n * Customization options for Disclaimer component\n */\nexport type DisclaimerCustomization = {\n /** Custom components */\n components?: {\n /** Custom container wrapper */\n Container?: ComponentType<ContainerProps>;\n /** Custom content section */\n ContentSection?: ComponentType<ContentSectionProps>;\n /** Custom title component */\n Title?: ComponentType<TitleProps>;\n /** Custom description component */\n Description?: ComponentType<DescriptionProps>;\n /** Custom additional content wrapper */\n AdditionalContent?: ComponentType<AdditionalContentProps>;\n /** Custom actions section */\n Actions?: ComponentType<ActionsProps>;\n /** Custom link button */\n LinkButton?: ComponentType<ButtonProps>;\n /** Custom action button */\n ActionButton?: ComponentType<ButtonProps>;\n /** Custom status component */\n Status?: ComponentType<StatusProps>;\n };\n /** Custom class name generators */\n classNames?: {\n /** Function to generate container classes */\n container?: (params: { compact: boolean }) => string;\n /** Function to generate content section classes */\n contentSection?: (params: { compact: boolean }) => string;\n /** Function to generate title classes */\n title?: (params: { compact: boolean }) => string;\n /** Function to generate description classes */\n description?: () => string;\n /** Function to generate additional content classes */\n additionalContent?: () => string;\n /** Function to generate actions classes */\n actions?: () => string;\n /** Function to generate button classes */\n button?: (params: { isLink: boolean; isPrimary: boolean }) => string;\n /** Function to generate status classes */\n status?: () => string;\n };\n /** Custom event handlers */\n handlers?: {\n /** Custom handler for primary button action */\n onLearnMoreAction?: () => void;\n /** Custom handler for secondary button action */\n onListAction?: () => void;\n /** Custom handler for component mount */\n onMount?: () => void;\n /** Custom handler for component unmount */\n onUnmount?: () => void;\n };\n /** Configuration options */\n config?: {\n /** Custom button labels */\n buttonLabels?: {\n learnMore?: string;\n listAction?: string;\n };\n /** Custom ARIA labels */\n ariaLabels?: {\n container?: string;\n contentSection?: string;\n actions?: string;\n additionalContent?: string;\n };\n };\n};\n\n/**\n * Props for the Disclaimer component\n */\nexport interface DisclaimerProps {\n /** Main title text for the disclaimer */\n title: string;\n /** Descriptive text explaining the disclaimer content */\n description: string;\n /** Action for the primary \"Learn More\" button - can be URL or callback */\n learnMoreAction: ButtonAction;\n /** Optional action for the secondary \"List of Networks\" button */\n listAction?: ButtonAction;\n /** Custom CSS classes for styling the disclaimer container */\n className?: string;\n /** Optional custom ARIA label for enhanced accessibility */\n 'aria-label'?: string;\n /** Whether to show the disclaimer in compact mode */\n compact?: boolean;\n /** Additional content to display below the description */\n children?: React.ReactNode;\n /** Custom test ID for testing purposes */\n 'data-testid'?: string;\n /** Whether the disclaimer should be announced to screen readers */\n announceToScreenReader?: boolean;\n /** Customization options */\n customization?: DisclaimerCustomization;\n}\n\n/**\n * Type guard to determine if action is a URL string\n * @param action - The action to check\n * @returns True if action is a string (URL), false if it's a function\n */\nconst isLink = (action: ButtonAction): action is string => typeof action === 'string';\n\n// --- Default Sub-Components ---\nconst DefaultContainer = forwardRef<HTMLDivElement, ContainerProps>(({ children, className, ...props }, ref) => (\n <div ref={ref} className={className} {...props}>\n {children}\n </div>\n));\nDefaultContainer.displayName = 'DefaultContainer';\n\nconst DefaultContentSection: React.FC<ContentSectionProps> = ({ children, className, ...props }) => (\n <div className={className} {...props}>\n {children}\n </div>\n);\n\nconst DefaultTitle: React.FC<TitleProps> = ({ children, className, ...props }) => (\n <h3 className={className} {...props}>\n {children}\n </h3>\n);\n\nconst DefaultDescription: React.FC<DescriptionProps> = ({ children, className, ...props }) => (\n <p className={className} {...props}>\n {children}\n </p>\n);\n\nconst DefaultAdditionalContent: React.FC<AdditionalContentProps> = ({ children, className, ...props }) => (\n <div className={className} {...props}>\n {children}\n </div>\n);\n\nconst DefaultActions: React.FC<ActionsProps> = ({ children, className, ...props }) => (\n <div className={className} {...props}>\n {children}\n </div>\n);\n\nconst DefaultLinkButton: React.FC<ButtonProps> = ({\n action,\n children,\n 'aria-label': ariaLabel,\n className,\n 'data-testid': testId,\n}) => {\n const labels = useNovaConnectLabels();\n\n // Type guard to ensure action is string for href\n if (!isLink(action)) {\n console.error('LinkButton received non-string action:', action);\n return null;\n }\n\n return (\n <a\n href={action}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={className}\n aria-label={ariaLabel || `${children} (${labels.learnMore})`}\n data-testid={testId}\n role=\"button\"\n >\n {children}\n {/* Screen reader indication for external link */}\n <span className=\"novacon:sr-only\"> (opens in new tab)</span>\n </a>\n );\n};\n\nconst DefaultActionButton: React.FC<ButtonProps> = ({\n action,\n children,\n 'aria-label': ariaLabel,\n className,\n 'data-testid': testId,\n}) => {\n const handleClick = useCallback(() => {\n if (typeof action === 'function') {\n action();\n }\n }, [action]);\n\n return (\n <button type=\"button\" onClick={handleClick} className={className} aria-label={ariaLabel} data-testid={testId}>\n {children}\n </button>\n );\n};\n\nconst DefaultStatus: React.FC<StatusProps> = ({ children, className, ...props }) => (\n <div className={className} {...props}>\n {children}\n </div>\n);\n\n/**\n * Educational disclaimer component with call-to-action buttons\n *\n * This component provides educational content with actionable buttons for:\n * - Informational disclaimers about wallets, networks, or other concepts\n * - Educational content with \"Learn More\" functionality\n * - Network information with optional \"List of Networks\" access\n * - Responsive layout with proper spacing and visual hierarchy\n * - Full WCAG accessibility compliance with screen reader support\n * - Keyboard navigation with proper focus management\n * - Semantic HTML structure with comprehensive ARIA labeling\n * - Internationalization support for button labels\n * - Support for both internal callbacks and external links\n * - Flexible content areas with optional children support\n * - Full customization of all child components\n *\n * The component automatically handles different action types:\n * - **String actions**: Rendered as external links with security attributes\n * - **Function actions**: Rendered as buttons with callback execution\n * - **Mixed actions**: Can combine both types for different buttons\n *\n * @example Basic usage\n * ```tsx\n * <Disclaimer\n * title=\"What is a wallet?\"\n * description=\"Wallets are essential for managing your crypto...\"\n * learnMoreAction={() => setContentType('about')}\n * listAction=\"https://example.com/networks\"\n * />\n * ```\n *\n * @example With customization\n * ```tsx\n * <Disclaimer\n * title=\"Network Information\"\n * description=\"Choose the right network for your transactions\"\n * learnMoreAction={handleLearnMore}\n * compact\n * customization={{\n * classNames: {\n * container: ({ compact }) => compact ? 'custom-compact' : 'custom-full',\n * title: () => 'custom-title-styling'\n * },\n * components: {\n * LinkButton: CustomLinkButton\n * }\n * }}\n * />\n * ```\n */\nexport const Disclaimer = forwardRef<HTMLDivElement, DisclaimerProps>(\n (\n {\n title,\n description,\n learnMoreAction,\n listAction,\n className,\n 'aria-label': ariaLabel,\n compact = false,\n children,\n 'data-testid': testId,\n announceToScreenReader = false,\n customization,\n },\n ref,\n ) => {\n // Get localized labels for UI text\n const labels = useNovaConnectLabels();\n\n // Generate unique ID using React's useId hook\n const uniqueId = useId();\n\n // Extract customization options\n const {\n Container: CustomContainer = DefaultContainer,\n ContentSection: CustomContentSection = DefaultContentSection,\n Title: CustomTitle = DefaultTitle,\n Description: CustomDescription = DefaultDescription,\n AdditionalContent: CustomAdditionalContent = DefaultAdditionalContent,\n Actions: CustomActions = DefaultActions,\n LinkButton: CustomLinkButton = DefaultLinkButton,\n ActionButton: CustomActionButton = DefaultActionButton,\n Status: CustomStatus = DefaultStatus,\n } = customization?.components ?? {};\n\n const customHandlers = customization?.handlers;\n const customConfig = customization?.config;\n\n /**\n * Memoized container classes based on compact mode\n */\n const containerClasses = useMemo(\n () =>\n cn(\n customization?.classNames?.container?.({ compact }) ??\n cn(\n 'novacon:p-2 novacon:rounded-xl novacon:border novacon:border-[var(--tuwa-border-primary)] novacon:flex novacon:flex-col',\n compact\n ? 'novacon:gap-2 novacon:sm:p-3 novacon:sm:gap-3'\n : 'novacon:gap-2 novacon:sm:p-4 novacon:sm:gap-4',\n ),\n className,\n ),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [compact, className, customization?.classNames?.container],\n );\n\n /**\n * Memoized content classes based on compact mode\n */\n const contentClasses = useMemo(\n () =>\n customization?.classNames?.contentSection?.({ compact }) ??\n cn('novacon:flex novacon:flex-col', compact ? 'novacon:gap-1' : 'novacon:gap-2'),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [compact, customization?.classNames?.contentSection],\n );\n\n /**\n * Memoized title classes based on compact mode\n */\n const titleClasses = useMemo(\n () =>\n customization?.classNames?.title?.({ compact }) ??\n cn(\n 'novacon:font-bold novacon:text-[var(--tuwa-text-primary)]',\n compact ? 'novacon:text-base' : 'novacon:text-lg',\n ),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [compact, customization?.classNames?.title],\n );\n\n /**\n * Generate unique ID for the disclaimer content using React's useId\n */\n const disclaimerId = useMemo(() => {\n const sanitizedTitle = title.toLowerCase().replace(/\\s+/g, '-');\n return `disclaimer-${sanitizedTitle}-${uniqueId}`;\n }, [title, uniqueId]);\n\n /**\n * Generate button test IDs based on main test ID\n */\n const buttonTestIds = useMemo(\n () => ({\n learnMore: testId ? `${testId}-learn-more` : undefined,\n listAction: testId ? `${testId}-list-action` : undefined,\n }),\n [testId],\n );\n\n /**\n * Handle rendering of action buttons with proper type checking\n */\n const renderActionButton = useCallback(\n (action: ButtonAction, buttonText: string, ariaLabel: string, testId?: string, isPrimary = false) => {\n const isLinkAction = isLink(action);\n const buttonClasses = cn(\n customization?.classNames?.button?.({ isLink: isLinkAction, isPrimary }) ?? standardButtonClasses,\n );\n\n if (isLinkAction) {\n return (\n <CustomLinkButton action={action} aria-label={ariaLabel} data-testid={testId} className={buttonClasses}>\n {buttonText}\n </CustomLinkButton>\n );\n } else {\n return (\n <CustomActionButton action={action} aria-label={ariaLabel} data-testid={testId} className={buttonClasses}>\n {buttonText}\n </CustomActionButton>\n );\n }\n },\n [customization, CustomLinkButton, CustomActionButton],\n );\n\n // Handle mount/unmount effects\n React.useEffect(() => {\n customHandlers?.onMount?.();\n return () => customHandlers?.onUnmount?.();\n }, [customHandlers]);\n\n return (\n <CustomContainer\n ref={ref}\n className={containerClasses}\n role=\"complementary\"\n aria-label={customConfig?.ariaLabels?.container ?? ariaLabel ?? `${title} disclaimer`}\n aria-describedby={`${disclaimerId}-description`}\n data-testid={testId}\n {...(announceToScreenReader && { 'aria-live': 'polite' as const })}\n >\n {/* Content Section */}\n <CustomContentSection className={contentClasses} role=\"group\" aria-labelledby={`${disclaimerId}-title`}>\n {/* Title */}\n <CustomTitle id={`${disclaimerId}-title`} className={titleClasses} role=\"heading\" aria-level={3}>\n {title}\n </CustomTitle>\n\n {/* Description */}\n <CustomDescription\n id={`${disclaimerId}-description`}\n className={\n customization?.classNames?.description?.() ?? 'novacon:text-sm novacon:text-[var(--tuwa-text-secondary)]'\n }\n role=\"text\"\n >\n {description}\n </CustomDescription>\n\n {/* Additional Content */}\n {children && (\n <CustomAdditionalContent\n className={customization?.classNames?.additionalContent?.() ?? 'novacon:mt-1'}\n role=\"group\"\n aria-label={customConfig?.ariaLabels?.additionalContent ?? 'Additional disclaimer information'}\n >\n {children}\n </CustomAdditionalContent>\n )}\n </CustomContentSection>\n\n {/* Actions Section */}\n <CustomActions\n className={customization?.classNames?.actions?.() ?? 'novacon:flex novacon:gap-3 novacon:justify-end'}\n role=\"group\"\n aria-label={customConfig?.ariaLabels?.actions ?? 'Disclaimer actions'}\n >\n {/* Primary Learn More Button */}\n {renderActionButton(\n learnMoreAction,\n customConfig?.buttonLabels?.learnMore ?? labels.learnMore,\n `${customConfig?.buttonLabels?.learnMore ?? labels.learnMore} about ${title.toLowerCase()}`,\n buttonTestIds.learnMore,\n true,\n )}\n\n {/* Optional Secondary Action Button */}\n {listAction &&\n renderActionButton(\n listAction,\n customConfig?.buttonLabels?.listAction ?? labels.listOfNetworks,\n `View ${(customConfig?.buttonLabels?.listAction ?? labels.listOfNetworks).toLowerCase()}`,\n buttonTestIds.listAction,\n false,\n )}\n </CustomActions>\n\n {/* Screen reader summary */}\n <CustomStatus className={customization?.classNames?.status?.() ?? 'novacon:sr-only'}>\n Disclaimer about {title.toLowerCase()}. {description}\n {learnMoreAction && ` ${customConfig?.buttonLabels?.learnMore ?? labels.learnMore} action available.`}\n {listAction && ` ${customConfig?.buttonLabels?.listAction ?? labels.listOfNetworks} action available.`}\n </CustomStatus>\n\n {/* Hidden live region for dynamic content updates */}\n {announceToScreenReader && (\n <CustomStatus\n className={customization?.classNames?.status?.() ?? 'novacon:sr-only'}\n aria-live=\"polite\"\n aria-atomic={true}\n role=\"status\"\n >\n {/* This will announce content changes to screen readers */}\n </CustomStatus>\n )}\n </CustomContainer>\n );\n },\n);\n\nDisclaimer.displayName = 'Disclaimer';\n","/**\n * @file ConnectorsSelections component with comprehensive customization options and categorized connector display.\n */\n\nimport { ExclamationTriangleIcon } from '@heroicons/react/24/outline';\nimport { cn, isTouchDevice } from '@tuwaio/nova-core';\nimport { formatWalletName, isSafeApp, OrbitAdapter } from '@tuwaio/orbit-core';\nimport React, { ComponentType, forwardRef, memo, useCallback, useMemo } from 'react';\n\nimport { ConnectContentType } from '../../hooks/useNovaConnect';\nimport { useNovaConnectLabels } from '../../hooks/useNovaConnectLabels';\nimport { InitialChains } from '../../types';\nimport { ConnectButtonProps } from '../ConnectButton/ConnectButton';\nimport { WalletIcon } from '../WalletIcon';\nimport { ConnectCard, ConnectCardCustomization } from './ConnectCard';\nimport { GroupedConnector } from './ConnectModal';\nimport { ConnectorsBlock, ConnectorsBlockCustomization } from './ConnectorsBlock';\nimport { Disclaimer } from './Disclaimer';\n\n// --- Types ---\n\n/**\n * Connector selections data for customization context\n */\nexport interface ConnectorsSelectionsData {\n /** Currently selected network adapter */\n selectedAdapter: OrbitAdapter | undefined;\n /** All available connectors */\n connectors: GroupedConnector[];\n /** Whether only one network is available */\n isOnlyOneNetwork: boolean;\n /** Whether device is touch-enabled */\n isTouch: boolean;\n /** Whether impersonated wallet is available */\n hasImpersonatedConnector: boolean;\n /** Whether impersonated section should be shown */\n showImpersonated: boolean;\n /** Filtered connector groups */\n connectorGroups: {\n installed: GroupedConnector[];\n popular: GroupedConnector[];\n impersonated?: GroupedConnector;\n };\n /** Current labels from i18n */\n labels: ReturnType<typeof useNovaConnectLabels>;\n}\n\n/**\n * Impersonate section data\n */\nexport interface ImpersonateSectionData {\n /** The impersonated wallet connector */\n connector: GroupedConnector;\n /** Whether device is touch-enabled */\n isTouch: boolean;\n /** Current labels from i18n */\n labels: ReturnType<typeof useNovaConnectLabels>;\n /** Section data for context */\n sectionsData: ConnectorsSelectionsData;\n}\n\n// --- Component Props Types ---\ntype ContainerProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n 'aria-label'?: string;\n selectionsData: ConnectorsSelectionsData;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype ContentWrapperProps = {\n className?: string;\n children: React.ReactNode;\n selectionsData: ConnectorsSelectionsData;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype ConnectorsAreaProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n 'aria-label'?: string;\n selectionsData: ConnectorsSelectionsData;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype ImpersonateSectionProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n 'aria-label'?: string;\n impersonateData: ImpersonateSectionData;\n selectionsData: ConnectorsSelectionsData;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype ImpersonateTitleProps = {\n className?: string;\n children: React.ReactNode;\n impersonateData: ImpersonateSectionData;\n selectionsData: ConnectorsSelectionsData;\n} & React.RefAttributes<HTMLParagraphElement>;\n\ntype EmptyStateProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n 'aria-live'?: 'polite' | 'assertive' | 'off';\n onClick?: () => void;\n selectionsData: ConnectorsSelectionsData;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype DisclaimerSectionProps = {\n className?: string;\n children: React.ReactNode;\n selectionsData: ConnectorsSelectionsData;\n} & React.RefAttributes<HTMLDivElement>;\n\n/**\n * Customization options for ConnectorsSelections component\n */\nexport type ConnectorsSelectionsCustomization = {\n /** Custom components */\n components?: {\n /** Custom container wrapper */\n Container?: ComponentType<ContainerProps>;\n /** Custom content wrapper */\n ContentWrapper?: ComponentType<ContentWrapperProps>;\n /** Custom connectors area wrapper */\n ConnectorsArea?: ComponentType<ConnectorsAreaProps>;\n /** Custom impersonate section */\n ImpersonateSection?: ComponentType<ImpersonateSectionProps>;\n /** Custom impersonate title */\n ImpersonateTitle?: ComponentType<ImpersonateTitleProps>;\n /** Custom empty state */\n EmptyState?: ComponentType<EmptyStateProps>;\n /** Custom disclaimer section */\n DisclaimerSection?: ComponentType<DisclaimerSectionProps>;\n };\n /** Custom class name generators */\n classNames?: {\n /** Function to generate container classes */\n container?: (params: { selectionsData: ConnectorsSelectionsData }) => string;\n /** Function to generate content wrapper classes */\n contentWrapper?: (params: { selectionsData: ConnectorsSelectionsData }) => string;\n /** Function to generate connectors area classes */\n connectorsArea?: (params: { selectionsData: ConnectorsSelectionsData }) => string;\n /** Function to generate impersonate section classes */\n impersonateSection?: (params: {\n impersonateData: ImpersonateSectionData;\n selectionsData: ConnectorsSelectionsData;\n }) => string;\n /** Function to generate impersonate title classes */\n impersonateTitle?: (params: {\n impersonateData: ImpersonateSectionData;\n selectionsData: ConnectorsSelectionsData;\n }) => string;\n /** Function to generate empty state classes */\n emptyState?: (params: { selectionsData: ConnectorsSelectionsData }) => string;\n /** Function to generate disclaimer section classes */\n disclaimerSection?: (params: { selectionsData: ConnectorsSelectionsData }) => string;\n };\n /** Custom event handlers */\n handlers?: {\n /** Custom impersonate click handler */\n onImpersonateClick?: (\n impersonateData: ImpersonateSectionData,\n selectionsData: ConnectorsSelectionsData,\n originalHandler: () => void,\n ) => void;\n /** Custom empty state action handler */\n onEmptyStateAction?: (selectionsData: ConnectorsSelectionsData) => void;\n };\n /** Configuration options */\n config?: {\n /** Custom ARIA labels */\n ariaLabels?: {\n container?: (selectionsData: ConnectorsSelectionsData) => string;\n connectorsArea?: (selectionsData: ConnectorsSelectionsData) => string;\n impersonateSection?: (impersonateData: ImpersonateSectionData) => string;\n };\n /** Layout configuration */\n layout?: {\n /** Touch device classes for connectors area */\n touchConnectorsClasses?: string[];\n /** Mouse device classes for connectors area */\n mouseConnectorsClasses?: string[];\n /** Touch device classes for content wrapper */\n touchContentClasses?: string[];\n /** Mouse device classes for content wrapper */\n mouseContentClasses?: string[];\n };\n /** Show/hide features */\n features?: {\n /** Whether to show empty state */\n showEmptyState?: boolean;\n /** Whether to show disclaimer on touch devices */\n showDisclaimer?: boolean;\n /** Whether to show impersonate section */\n showImpersonate?: boolean;\n };\n };\n /** ConnectorsBlock customization for each connector block */\n connectorsBlock?: {\n /** Customization for installed connectors block */\n installed?: ConnectorsBlockCustomization;\n /** Customization for popular connectors block */\n popular?: ConnectorsBlockCustomization;\n };\n /** ConnectCard customization for impersonate card */\n impersonateCard?: ConnectCardCustomization;\n};\n\n/**\n * Props for the ConnectorsSelections component\n */\nexport interface ConnectorsSelectionsProps\n extends Pick<ConnectButtonProps, 'withImpersonated' | 'store'>,\n InitialChains {\n /** Currently selected network adapter */\n selectedAdapter: OrbitAdapter | undefined;\n /** Array of grouped wallet connectors */\n connectors: GroupedConnector[];\n /** Click handler for connector selection */\n onClick: (connector: GroupedConnector) => void;\n /** Function to set connection status */\n setIsConnected: (value: boolean) => void;\n /** Function to control modal open state */\n setIsOpen: (value: boolean) => void;\n /** Function to wait for connection prediction */\n waitForPredict: () => boolean | undefined;\n /** Function to set modal content type */\n setContentType: (contentType: ConnectContentType) => void;\n /** Whether only one network is available */\n isOnlyOneNetwork?: boolean;\n /** Customization options */\n customization?: ConnectorsSelectionsCustomization;\n}\n\n// --- Default Sub-Components ---\nconst DefaultContainer = forwardRef<HTMLDivElement, ContainerProps>(({ children, className, ...props }, ref) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { selectionsData: _selectionsData, ...restProps } = props;\n return (\n <div ref={ref} className={className} {...restProps}>\n {children}\n </div>\n );\n});\nDefaultContainer.displayName = 'DefaultContainer';\n\nconst DefaultContentWrapper = forwardRef<HTMLDivElement, ContentWrapperProps>(\n ({ children, className, ...props }, ref) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { selectionsData: _selectionsData, ...restProps } = props;\n return (\n <div ref={ref} className={className} {...restProps}>\n {children}\n </div>\n );\n },\n);\nDefaultContentWrapper.displayName = 'DefaultContentWrapper';\n\nconst DefaultConnectorsArea = forwardRef<HTMLDivElement, ConnectorsAreaProps>(\n ({ children, className, ...props }, ref) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { selectionsData: _selectionsData, ...restProps } = props;\n return (\n <div ref={ref} className={className} {...restProps}>\n {children}\n </div>\n );\n },\n);\nDefaultConnectorsArea.displayName = 'DefaultConnectorsArea';\n\nconst DefaultImpersonateSection = forwardRef<HTMLDivElement, ImpersonateSectionProps>(\n ({ children, className, ...props }, ref) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { impersonateData: _impersonateData, selectionsData: _selectionsData, ...restProps } = props;\n return (\n <div ref={ref} className={className} {...restProps}>\n {children}\n </div>\n );\n },\n);\nDefaultImpersonateSection.displayName = 'DefaultImpersonateSection';\n\nconst DefaultImpersonateTitle = forwardRef<HTMLParagraphElement, ImpersonateTitleProps>(\n ({ children, className, ...props }, ref) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { impersonateData: _impersonateData, selectionsData: _selectionsData, ...restProps } = props;\n return (\n <p ref={ref} className={className} {...restProps}>\n {children}\n </p>\n );\n },\n);\nDefaultImpersonateTitle.displayName = 'DefaultImpersonateTitle';\n\nconst DefaultEmptyState = forwardRef<HTMLDivElement, EmptyStateProps>(({ children, className, ...props }, ref) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { selectionsData: _selectionsData, onClick, ...restProps } = props;\n return (\n <div ref={ref} className={className} {...restProps} onClick={onClick}>\n {children}\n </div>\n );\n});\nDefaultEmptyState.displayName = 'DefaultEmptyState';\n\nconst DefaultDisclaimerSection = forwardRef<HTMLDivElement, DisclaimerSectionProps>(\n ({ children, className, ...props }, ref) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { selectionsData: _selectionsData, ...restProps } = props;\n return (\n <div ref={ref} className={className} {...restProps}>\n {children}\n </div>\n );\n },\n);\nDefaultDisclaimerSection.displayName = 'DefaultDisclaimerSection';\n\n/**\n * ConnectorsSelections component - Main wallet selection interface with categorized connectors\n *\n * This component provides the primary wallet selection interface with:\n * - Categorized wallet sections (Installed, Popular, Impersonate)\n * - Responsive layout adapting to touch/mouse interfaces\n * - Safe App environment detection and filtering\n * - Empty state handling for missing connectors\n * - Educational content integration for touch devices\n * - Full accessibility support with semantic structure\n * - Complete customization of all child components and styling\n *\n * Wallet categorization:\n * - Installed: Detected browser extension wallets (excluding popular ones)\n * - Popular: Coinbase Wallet and WalletConnect for broader compatibility\n * - Impersonate: Development/testing wallet for address simulation\n * - Safe App filtering: Conditional Safe Wallet display based on environment\n *\n * Layout features:\n * - Touch devices: Horizontal scrolling with educational disclaimer\n * - Mouse devices: Vertical scrolling with fixed height container\n * - Responsive grid adapting to screen size and device capabilities\n * - Custom scrollbar styling with NovaCustomScroll class\n * - Customizable layout parameters and responsive behavior\n *\n * Empty state handling:\n * - Clear error messaging when no connectors found\n * - Contextual help text explaining the issue\n * - Visual indicators with warning icons\n * - Proper error state accessibility\n * - Customizable empty state content and styling\n *\n * Accessibility features:\n * - Semantic HTML structure with proper headings\n * - ARIA labels for screen readers\n * - Role-based navigation support\n * - Focus management for keyboard users\n * - Error states with descriptive messaging\n * - Customizable ARIA labels and descriptions\n *\n * @example Basic usage\n * ```tsx\n * <ConnectorsSelections\n * selectedAdapter={OrbitAdapter.EVM}\n * connectors={availableConnectors}\n * onClick={(connector) => handleWalletSelection(connector)}\n * setIsConnected={setConnectionStatus}\n * setIsOpen={setModalOpen}\n * waitForPredict={() => checkConnectionState()}\n * setContentType={setModalContent}\n * withImpersonated={true}\n * isOnlyOneNetwork={false}\n * appChains={chainConfiguration}\n * solanaRPCUrls={solanaConfig}\n * store={walletStore}\n * />\n * ```\n *\n * @example With full customization\n * ```tsx\n * <ConnectorsSelections\n * selectedAdapter={undefined}\n * connectors={allConnectors}\n * onClick={(connector) => initiateConnection(connector)}\n * setIsConnected={updateConnectionState}\n * setIsOpen={toggleModal}\n * waitForPredict={predictConnection}\n * setContentType={changeContent}\n * withImpersonated={false}\n * isOnlyOneNetwork={true}\n * customization={{\n * components: {\n * Container: CustomSelectionsContainer,\n * EmptyState: CustomEmptyStateComponent\n * },\n * classNames: {\n * connectorsArea: ({ selectionsData }) =>\n * selectionsData.isTouch ? 'horizontal-scroll' : 'vertical-stack',\n * impersonateSection: ({ impersonateData }) =>\n * impersonateData.isTouch ? 'touch-impersonate' : 'mouse-impersonate'\n * },\n * handlers: {\n * onImpersonateClick: (impersonateData, selectionsData, originalHandler) => {\n * analytics.track('impersonate_clicked');\n * originalHandler();\n * }\n * },\n * connectorsBlock: {\n * installed: {\n * classNames: {\n * title: () => 'custom-installed-title'\n * }\n * }\n * }\n * }}\n * />\n * ```\n */\nexport const ConnectorsSelections = memo(\n forwardRef<HTMLDivElement, ConnectorsSelectionsProps>(\n (\n {\n setIsConnected,\n setIsOpen,\n selectedAdapter,\n connectors,\n onClick,\n appChains,\n solanaRPCUrls,\n waitForPredict,\n setContentType,\n withImpersonated,\n isOnlyOneNetwork = false,\n store,\n customization,\n },\n ref,\n ) => {\n // Extract customization options\n const {\n Container: CustomContainer = DefaultContainer,\n ContentWrapper: CustomContentWrapper = DefaultContentWrapper,\n ConnectorsArea: CustomConnectorsArea = DefaultConnectorsArea,\n ImpersonateSection: CustomImpersonateSection = DefaultImpersonateSection,\n ImpersonateTitle: CustomImpersonateTitle = DefaultImpersonateTitle,\n EmptyState: CustomEmptyState = DefaultEmptyState,\n DisclaimerSection: CustomDisclaimerSection = DefaultDisclaimerSection,\n } = customization?.components ?? {};\n\n const customHandlers = customization?.handlers;\n const customConfig = customization?.config;\n\n /**\n * Memoized labels and touch detection\n */\n const labels = useNovaConnectLabels();\n const isTouch = useMemo(() => isTouchDevice(), []);\n\n /**\n * Memoized connector filtering\n */\n const connectorGroups = useMemo(() => {\n const installedConnectorsInitial = connectors.filter((group) => {\n const formattedName = formatWalletName(group.name);\n return (\n formattedName !== 'impersonatedwallet' &&\n formattedName !== 'coinbasewallet' &&\n formattedName !== 'walletconnect'\n );\n });\n\n const installedConnectors = isSafeApp\n ? installedConnectorsInitial\n : installedConnectorsInitial.filter((group) => formatWalletName(group.name) !== 'safewallet');\n\n const popularConnectors = connectors.filter((group) => {\n const formattedName = formatWalletName(group.name);\n return formattedName === 'coinbasewallet' || formattedName === 'walletconnect';\n });\n\n const impersonatedConnector = connectors.find((group) => formatWalletName(group.name) === 'impersonatedwallet');\n\n return {\n installed: installedConnectors,\n popular: popularConnectors,\n impersonated: impersonatedConnector,\n };\n }, [connectors]);\n\n /**\n * Memoized selections data\n */\n const selectionsData = useMemo(\n (): ConnectorsSelectionsData => ({\n selectedAdapter,\n connectors,\n isOnlyOneNetwork,\n isTouch,\n hasImpersonatedConnector: Boolean(connectorGroups.impersonated),\n showImpersonated: Boolean(connectorGroups.impersonated && withImpersonated),\n connectorGroups,\n labels,\n }),\n [selectedAdapter, connectors, isOnlyOneNetwork, isTouch, connectorGroups, withImpersonated, labels],\n );\n\n /**\n * Memoized impersonate section data\n */\n const impersonateData = useMemo((): ImpersonateSectionData | undefined => {\n if (!connectorGroups.impersonated) return undefined;\n\n return {\n connector: connectorGroups.impersonated,\n isTouch,\n labels,\n sectionsData: selectionsData,\n };\n }, [connectorGroups.impersonated, isTouch, labels, selectionsData]);\n\n /**\n * Memoized layout classes\n */\n const layoutClasses = useMemo(() => {\n const touchConnectorsClasses = customConfig?.layout?.touchConnectorsClasses ?? [\n 'novacon:flex-row',\n 'novacon:overflow-x-auto',\n 'novacon:max-h-none',\n 'novacon:gap-3',\n 'novacon:pb-4',\n 'novacon:px-1',\n ];\n\n const mouseConnectorsClasses = customConfig?.layout?.mouseConnectorsClasses ?? [\n 'novacon:flex-col',\n 'novacon:overflow-y-auto',\n 'novacon:max-h-[310px]',\n 'novacon:gap-2',\n ];\n\n const touchContentClasses = customConfig?.layout?.touchContentClasses ?? [\n 'novacon:flex',\n 'novacon:flex-col',\n 'novacon:gap-2',\n 'novacon:flex-row',\n ];\n\n const mouseContentClasses = customConfig?.layout?.mouseContentClasses ?? [\n 'novacon:flex',\n 'novacon:flex-col',\n 'novacon:gap-2',\n ];\n\n return {\n touchConnectorsClasses,\n mouseConnectorsClasses,\n touchContentClasses,\n mouseContentClasses,\n };\n }, [customConfig?.layout]);\n\n /**\n * Handles click on impersonated wallet option\n */\n const handleImpersonateClick = useCallback(() => {\n if (!connectorGroups.impersonated) return;\n onClick(connectorGroups.impersonated);\n }, [connectorGroups.impersonated, onClick]);\n\n /**\n * Wrapper for custom impersonate click handler\n */\n const handleImpersonateClickWrapper = useCallback(() => {\n if (!impersonateData) return;\n\n if (customHandlers?.onImpersonateClick) {\n customHandlers.onImpersonateClick(impersonateData, selectionsData, handleImpersonateClick);\n } else {\n handleImpersonateClick();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customHandlers?.onImpersonateClick, impersonateData, selectionsData, handleImpersonateClick]);\n\n /**\n * Memoized CSS classes\n */\n const cssClasses = useMemo(\n () => ({\n container:\n customization?.classNames?.container?.({ selectionsData }) ?? 'novacon:flex novacon:flex-col novacon:gap-4',\n\n contentWrapper:\n customization?.classNames?.contentWrapper?.({ selectionsData }) ??\n cn(isTouch ? layoutClasses.touchContentClasses : layoutClasses.mouseContentClasses),\n\n connectorsArea:\n customization?.classNames?.connectorsArea?.({ selectionsData }) ??\n cn(\n 'novacon:flex NovaCustomScroll',\n isTouch ? layoutClasses.touchConnectorsClasses : layoutClasses.mouseConnectorsClasses,\n ),\n\n impersonateSection:\n (impersonateData && customization?.classNames?.impersonateSection?.({ impersonateData, selectionsData })) ??\n cn({ 'novacon:flex novacon:flex-col novacon:gap-2': isTouch }),\n\n impersonateTitle:\n (impersonateData && customization?.classNames?.impersonateTitle?.({ impersonateData, selectionsData })) ??\n cn('novacon:text-sm novacon:hidden', { 'novacon:block novacon:opacity-0': isTouch }),\n\n emptyState:\n customization?.classNames?.emptyState?.({ selectionsData }) ??\n 'novacon:flex novacon:flex-col novacon:items-center novacon:justify-center novacon:p-8 novacon:text-center novacon:border novacon:border-[var(--tuwa-border-primary)] novacon:rounded-xl novacon:bg-[var(--tuwa-bg-secondary)] novacon:text-[var(--tuwa-text-secondary)]',\n\n disclaimerSection: customization?.classNames?.disclaimerSection?.({ selectionsData }) ?? '',\n }),\n [customization?.classNames, selectionsData, impersonateData, isTouch, layoutClasses],\n );\n\n // Early return for empty state\n if (selectedAdapter && !connectors?.length) {\n if (customConfig?.features?.showEmptyState === false) {\n return null;\n }\n\n return (\n <CustomEmptyState\n ref={ref}\n className={cssClasses.emptyState}\n role=\"alert\"\n aria-live=\"polite\"\n selectionsData={selectionsData}\n onClick={\n customHandlers?.onEmptyStateAction ? () => customHandlers.onEmptyStateAction!(selectionsData) : undefined\n }\n >\n <ExclamationTriangleIcon\n width={32}\n height={32}\n className=\"novacon:text-[var(--tuwa-text-accent)] novacon:mb-3\"\n aria-hidden=\"true\"\n />\n <h2 className=\"novacon:text-lg novacon:font-semibold novacon:text-[var(--tuwa-text-primary)] novacon:mb-1\">\n {labels.noConnectorsFound}\n </h2>\n <p className=\"novacon:text-sm\">{labels.noConnectorsDescription}</p>\n </CustomEmptyState>\n );\n }\n\n const containerAriaLabel = customConfig?.ariaLabels?.container?.(selectionsData) ?? labels.connectWallet;\n const connectorsAreaAriaLabel =\n customConfig?.ariaLabels?.connectorsArea?.(selectionsData) ?? 'Available wallet connectors';\n const impersonateAriaLabel =\n (impersonateData && customConfig?.ariaLabels?.impersonateSection?.(impersonateData)) ?? labels.impersonate;\n\n return (\n <CustomContainer\n ref={ref}\n className={cssClasses.container}\n role=\"region\"\n aria-label={containerAriaLabel}\n selectionsData={selectionsData}\n >\n <CustomContentWrapper className={cssClasses.contentWrapper} selectionsData={selectionsData}>\n <CustomConnectorsArea\n className={cssClasses.connectorsArea}\n role=\"region\"\n aria-label={connectorsAreaAriaLabel}\n selectionsData={selectionsData}\n >\n <ConnectorsBlock\n connectors={connectorGroups.installed}\n title={labels.installed}\n selectedAdapter={selectedAdapter}\n onClick={onClick}\n waitForPredict={waitForPredict}\n solanaRPCUrls={solanaRPCUrls}\n setIsConnected={setIsConnected}\n setIsOpen={setIsOpen}\n appChains={appChains}\n isOnlyOneNetwork={isOnlyOneNetwork}\n isTitleBold\n store={store}\n customization={customization?.connectorsBlock?.installed}\n />\n {!!connectorGroups.popular.length && (\n <ConnectorsBlock\n connectors={connectorGroups.popular}\n title={labels.popular}\n selectedAdapter={selectedAdapter}\n onClick={onClick}\n waitForPredict={waitForPredict}\n solanaRPCUrls={solanaRPCUrls}\n setIsConnected={setIsConnected}\n setIsOpen={setIsOpen}\n appChains={appChains}\n isOnlyOneNetwork={isOnlyOneNetwork}\n store={store}\n customization={customization?.connectorsBlock?.popular}\n />\n )}\n </CustomConnectorsArea>\n\n {selectionsData.showImpersonated &&\n impersonateData &&\n customConfig?.features?.showImpersonate !== false && (\n <CustomImpersonateSection\n className={cssClasses.impersonateSection}\n role=\"region\"\n aria-label={impersonateAriaLabel}\n impersonateData={impersonateData}\n selectionsData={selectionsData}\n >\n <CustomImpersonateTitle\n className={cssClasses.impersonateTitle}\n impersonateData={impersonateData}\n selectionsData={selectionsData}\n >\n {labels.impersonate}\n </CustomImpersonateTitle>\n <ConnectCard\n icon={<WalletIcon name=\"impersonatedwallet\" />}\n adapters={!selectedAdapter ? [OrbitAdapter.EVM] : undefined}\n onClick={handleImpersonateClickWrapper}\n title={labels.impersonate}\n subtitle={labels.readOnlyMode}\n isOnlyOneNetwork={isOnlyOneNetwork}\n customization={customization?.impersonateCard}\n />\n </CustomImpersonateSection>\n )}\n </CustomContentWrapper>\n\n {isTouch && customConfig?.features?.showDisclaimer !== false && (\n <CustomDisclaimerSection className={cssClasses.disclaimerSection} selectionsData={selectionsData}>\n <Disclaimer\n title={labels.whatIsWallet}\n description={labels.walletDescription}\n learnMoreAction={() => setContentType('about')}\n />\n </CustomDisclaimerSection>\n )}\n </CustomContainer>\n );\n },\n ),\n);\n\nConnectorsSelections.displayName = 'ConnectorsSelections';\n","/**\n * @file GetWallet component with comprehensive customization options and staggered animations.\n */\n\nimport { Web3Icon } from '@bgd-labs/react-web3-icons';\nimport { cn, StarsBackground } from '@tuwaio/nova-core';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport React, { ComponentType, forwardRef, useMemo } from 'react';\n\nimport { useNovaConnectLabels } from '../../hooks/useNovaConnectLabels';\n\n// --- Types ---\n\n/**\n * Configuration for wallet icons in the animation\n */\nexport interface WalletIconConfig {\n /** Wallet key for Web3Icon component */\n walletKey: string;\n /** Position configuration using predefined position classes */\n position: {\n /** Top position class (e.g., 'top-[5%]', 'top-4') */\n top?: string;\n /** Bottom position class (e.g., 'bottom-[10%]', 'bottom-4') */\n bottom?: string;\n /** Left position class (e.g., 'left-[5%]', 'left-4') */\n left?: string;\n /** Right position class (e.g., 'right-[10%]', 'right-4') */\n right?: string;\n /** Transform classes for centering */\n transform?: string;\n };\n /** Size configuration using predefined size classes */\n size: {\n /** Width and height classes for mobile */\n mobile: {\n width: string;\n height: string;\n };\n /** Width and height classes for desktop */\n desktop: {\n width: string;\n height: string;\n };\n };\n /** Animation configuration */\n animation: {\n /** Animation duration in milliseconds */\n duration: number;\n /** Animation delay in milliseconds */\n delay: number;\n /** Whether to reverse animation direction */\n reverse?: boolean;\n /** Animation easing function */\n ease?: string;\n };\n /** ARIA label for the wallet icon */\n ariaLabel?: string;\n}\n\n// --- Component Props Types ---\ntype ContainerProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n 'aria-label'?: string;\n 'data-testid'?: string;\n} & React.RefAttributes<HTMLElement>;\n\ntype AnimationSectionProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n 'aria-label'?: string;\n};\n\ntype StarsBackgroundProps = {\n className?: string;\n show: boolean;\n 'aria-hidden'?: boolean;\n};\n\ntype GradientOverlayProps = {\n className?: string;\n 'aria-hidden'?: boolean;\n};\n\ntype AnimationWrapperProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n 'aria-label'?: string;\n enableAnimations: boolean;\n animationDelay?: number;\n animationDuration?: number;\n};\n\ntype WalletIconProps = {\n config: WalletIconConfig;\n enableAnimations: boolean;\n className?: string;\n};\n\ntype ContentSectionProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n};\n\ntype TitleProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n 'aria-level'?: number;\n};\n\ntype DescriptionProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n};\n\ntype ScreenReaderProps = {\n className?: string;\n children: React.ReactNode;\n};\n\n/**\n * Customization options for GetWallet component\n */\nexport type GetWalletCustomization = {\n /** Custom components */\n components?: {\n /** Custom container wrapper */\n Container?: ComponentType<ContainerProps>;\n /** Custom animation section */\n AnimationSection?: ComponentType<AnimationSectionProps>;\n /** Custom stars background */\n StarsBackground?: ComponentType<StarsBackgroundProps>;\n /** Custom gradient overlay */\n GradientOverlay?: ComponentType<GradientOverlayProps>;\n /** Custom animation wrapper */\n AnimationWrapper?: ComponentType<AnimationWrapperProps>;\n /** Custom wallet icon display */\n WalletIcon?: ComponentType<WalletIconProps>;\n /** Custom content section */\n ContentSection?: ComponentType<ContentSectionProps>;\n /** Custom title component */\n Title?: ComponentType<TitleProps>;\n /** Custom description component */\n Description?: ComponentType<DescriptionProps>;\n /** Custom screen reader component */\n ScreenReader?: ComponentType<ScreenReaderProps>;\n };\n /** Custom class name generators */\n classNames?: {\n /** Function to generate container classes */\n container?: (params: { compact: boolean }) => string;\n /** Function to generate animation section classes */\n animationSection?: (params: { compact: boolean }) => string;\n /** Function to generate stars background classes */\n starsBackground?: () => string;\n /** Function to generate gradient overlay classes */\n gradientOverlay?: () => string;\n /** Function to generate animation wrapper classes */\n animationWrapper?: () => string;\n /** Function to generate wallet icon classes */\n walletIcon?: (params: { config: WalletIconConfig; enableAnimations: boolean }) => string;\n /** Function to generate content section classes */\n contentSection?: (params: { compact: boolean }) => string;\n /** Function to generate title classes */\n title?: (params: { compact: boolean }) => string;\n /** Function to generate description classes */\n description?: () => string;\n /** Function to generate screen reader classes */\n screenReader?: () => string;\n };\n /** Custom event handlers */\n handlers?: {\n /** Custom handler for component mount */\n onMount?: () => void;\n /** Custom handler for component unmount */\n onUnmount?: () => void;\n /** Custom handler for animation start */\n onAnimationStart?: () => void;\n /** Custom handler for animation complete */\n onAnimationComplete?: () => void;\n };\n /** Configuration options */\n config?: {\n /** Custom ARIA labels */\n ariaLabels?: {\n container?: string;\n animationSection?: string;\n animationWrapper?: string;\n contentSection?: string;\n };\n /** Animation configuration overrides */\n animation?: {\n /** Global animation duration multiplier */\n durationMultiplier?: number;\n /** Global animation delay multiplier */\n delayMultiplier?: number;\n /** Default easing function */\n defaultEase?: string;\n };\n };\n};\n\n/**\n * Props for the GetWallet component\n */\nexport interface GetWalletProps {\n /** Custom CSS classes for styling the container */\n className?: string;\n /** Optional custom ARIA label for enhanced accessibility */\n 'aria-label'?: string;\n /** Custom test ID for testing purposes */\n 'data-testid'?: string;\n /** Whether to show the component in compact mode */\n compact?: boolean;\n /** Whether animations should be enabled */\n enableAnimations?: boolean;\n /** Custom wallet icons to display instead of defaults */\n customWalletIcons?: WalletIconConfig[];\n /** Whether to show the background stars animation */\n showStarsBackground?: boolean;\n /** Customization options */\n customization?: GetWalletCustomization;\n}\n\n/**\n * Default wallet icons configuration with staggered animations\n */\nconst defaultWalletIcons: WalletIconConfig[] = [\n {\n walletKey: 'metamask',\n position: {\n top: 'novacon:top-[5%]',\n left: 'novacon:left-[5%]',\n },\n size: {\n mobile: { width: 'novacon:w-20', height: 'novacon:h-20' },\n desktop: { width: 'novacon:md:w-24', height: 'novacon:md:h-24' },\n },\n animation: {\n duration: 3500,\n delay: 200,\n ease: 'ease-in-out',\n },\n ariaLabel: 'MetaMask wallet icon',\n },\n {\n walletKey: 'coinbasewallet',\n position: {\n top: 'novacon:top-[10%]',\n right: 'novacon:right-[10%]',\n },\n size: {\n mobile: { width: 'novacon:w-16', height: 'novacon:h-16' },\n desktop: { width: 'novacon:md:w-20', height: 'novacon:md:h-20' },\n },\n animation: {\n duration: 5000,\n delay: 800,\n reverse: true,\n ease: 'ease-out',\n },\n ariaLabel: 'Coinbase Wallet icon',\n },\n {\n walletKey: 'trustwallet',\n position: {\n top: 'novacon:top-[25%]',\n left: 'novacon:left-1/2',\n transform: 'novacon:-translate-x-1/2',\n },\n size: {\n mobile: { width: 'novacon:w-20', height: 'novacon:h-20' },\n desktop: { width: 'novacon:md:w-24', height: 'novacon:md:h-24' },\n },\n animation: {\n duration: 8000,\n delay: 4000,\n ease: 'ease-in-out',\n },\n ariaLabel: 'Trust Wallet icon',\n },\n {\n walletKey: 'bravewallet',\n position: {\n bottom: 'novacon:bottom-[10%]',\n left: 'novacon:left-[10%]',\n },\n size: {\n mobile: { width: 'novacon:w-20', height: 'novacon:h-20' },\n desktop: { width: 'novacon:md:w-20', height: 'novacon:md:h-20' },\n },\n animation: {\n duration: 4500,\n delay: 2500,\n reverse: true,\n ease: 'ease-in',\n },\n ariaLabel: 'Brave Wallet icon',\n },\n {\n walletKey: 'phantomwallet',\n position: {\n bottom: 'novacon:bottom-[15%]',\n right: 'novacon:right-[15%]',\n },\n size: {\n mobile: { width: 'novacon:w-14', height: 'novacon:h-14' },\n desktop: { width: 'novacon:md:w-18', height: 'novacon:md:h-18' },\n },\n animation: {\n duration: 4000,\n delay: 500,\n ease: 'ease-out',\n },\n ariaLabel: 'Phantom Wallet icon',\n },\n];\n\n// --- Default Sub-Components ---\nconst DefaultContainer = forwardRef<HTMLElement, ContainerProps>(({ children, className, ...props }, ref) => (\n <section ref={ref} className={className} {...props}>\n {children}\n </section>\n));\nDefaultContainer.displayName = 'DefaultContainer';\n\nconst DefaultAnimationSection: React.FC<AnimationSectionProps> = ({ children, className, ...props }) => (\n <div className={className} {...props}>\n {children}\n </div>\n);\n\nconst DefaultStarsBackground: React.FC<StarsBackgroundProps> = ({ className, show, ...props }) => (\n <>\n {show && (\n <div className={className} {...props}>\n <StarsBackground />\n </div>\n )}\n </>\n);\n\nconst DefaultGradientOverlay: React.FC<GradientOverlayProps> = ({ className, ...props }) => (\n <div className={className} {...props} />\n);\n\nconst DefaultAnimationWrapper: React.FC<AnimationWrapperProps> = ({\n children,\n className,\n enableAnimations,\n animationDelay = 0,\n animationDuration = 500,\n ...props\n}) => {\n if (!enableAnimations) {\n return (\n <div className={className} {...props}>\n {children}\n </div>\n );\n }\n\n return (\n <AnimatePresence>\n <motion.div\n animate={{ opacity: 1, scale: 1 }}\n initial={{ opacity: 0, scale: 0.1 }}\n transition={{\n duration: animationDuration / 1000,\n delay: animationDelay / 1000,\n ease: 'easeOut',\n }}\n className={className}\n {...props}\n >\n {children}\n </motion.div>\n </AnimatePresence>\n );\n};\n\nconst DefaultWalletIcon: React.FC<WalletIconProps> = ({ config, enableAnimations, className }) => {\n const { walletKey, position, size, animation, ariaLabel } = config;\n\n const positionClasses = useMemo(() => {\n const classes = ['novacon:absolute'];\n\n if (position.top) classes.push(position.top);\n if (position.bottom) classes.push(position.bottom);\n if (position.left) classes.push(position.left);\n if (position.right) classes.push(position.right);\n if (position.transform) classes.push(position.transform);\n\n return cn(classes);\n }, [position]);\n\n const sizeClasses = useMemo(() => {\n return cn(\n size.mobile.width,\n size.mobile.height,\n size.desktop.width,\n size.desktop.height,\n // Icon styling\n 'novacon:[&>img]:w-full!',\n 'novacon:[&>img]:h-full!',\n 'novacon:[&>svg]:w-full!',\n 'novacon:[&>svg]:h-full!',\n );\n }, [size]);\n\n const animationClasses = useMemo(() => {\n if (!enableAnimations) return '';\n return 'novacon:animate-[float_var(--float-duration,3000ms)_var(--float-ease,ease-in-out)_var(--float-delay,0ms)_infinite_var(--float-direction,normal)]';\n }, [enableAnimations]);\n\n const animationStyle = useMemo(() => {\n if (!enableAnimations) return {};\n\n return {\n '--float-duration': `${animation.duration}ms`,\n '--float-delay': `${animation.delay}ms`,\n '--float-ease': animation.ease || 'ease-in-out',\n '--float-direction': animation.reverse ? 'reverse' : 'normal',\n } as React.CSSProperties;\n }, [enableAnimations, animation]);\n\n return (\n <div\n className={cn(positionClasses, sizeClasses, animationClasses, className)}\n style={{ ...animationStyle }}\n role=\"img\"\n aria-label={ariaLabel || `${walletKey} wallet icon`}\n data-testid={`wallet-icon-${walletKey}`}\n >\n <Web3Icon walletKey={walletKey} />\n </div>\n );\n};\n\nconst DefaultContentSection: React.FC<ContentSectionProps> = ({ children, className, ...props }) => (\n <div className={className} {...props}>\n {children}\n </div>\n);\n\nconst DefaultTitle: React.FC<TitleProps> = ({ children, className, ...props }) => (\n <h2 className={className} {...props}>\n {children}\n </h2>\n);\n\nconst DefaultDescription: React.FC<DescriptionProps> = ({ children, className, ...props }) => (\n <p className={className} {...props}>\n {children}\n </p>\n);\n\nconst DefaultScreenReader: React.FC<ScreenReaderProps> = ({ children, className }) => (\n <div className={className}>{children}</div>\n);\n\n/**\n * Educational wallet introduction component with animated icons and comprehensive customization\n *\n * This component provides an engaging introduction to Web3 wallets featuring:\n * - Animated floating wallet icons with individual staggered animations and delays\n * - Educational content explaining Web3 wallet importance\n * - Responsive design with mobile-first approach\n * - Full accessibility support with proper ARIA labeling\n * - Internationalization support for all text content\n * - Performance optimizations with memoized calculations\n * - Customizable animations and icon configurations\n * - Semantic HTML structure for screen readers\n * - Proper focus management and keyboard navigation\n * - Full customization of all child components\n *\n * Animation features:\n * - Individual animation delays for each wallet icon using CSS custom properties\n * - Customizable duration, easing, and direction per icon\n * - Staggered floating animations for visual appeal\n * - Motion reduction respect (prefers-reduced-motion)\n * - Smooth entrance animations with framer-motion\n *\n * @example Basic usage\n * ```tsx\n * <GetWallet />\n * ```\n *\n * @example With customization\n * ```tsx\n * <GetWallet\n * compact\n * customization={{\n * classNames: {\n * container: ({ compact }) => compact ? 'custom-compact' : 'custom-full',\n * title: () => 'custom-title-styling'\n * },\n * components: {\n * WalletIcon: CustomWalletIcon\n * },\n * config: {\n * animation: {\n * durationMultiplier: 1.5,\n * delayMultiplier: 0.8\n * }\n * }\n * }}\n * />\n * ```\n */\nexport const GetWallet = forwardRef<HTMLElement, GetWalletProps>(\n (\n {\n className,\n 'aria-label': ariaLabel,\n 'data-testid': testId,\n compact = false,\n enableAnimations = true,\n customWalletIcons,\n showStarsBackground = true,\n customization,\n },\n ref,\n ) => {\n // Get localized labels for UI text\n const labels = useNovaConnectLabels();\n\n // Extract customization options\n const {\n Container: CustomContainer = DefaultContainer,\n AnimationSection: CustomAnimationSection = DefaultAnimationSection,\n StarsBackground: CustomStarsBackground = DefaultStarsBackground,\n GradientOverlay: CustomGradientOverlay = DefaultGradientOverlay,\n AnimationWrapper: CustomAnimationWrapper = DefaultAnimationWrapper,\n WalletIcon: CustomWalletIcon = DefaultWalletIcon,\n ContentSection: CustomContentSection = DefaultContentSection,\n Title: CustomTitle = DefaultTitle,\n Description: CustomDescription = DefaultDescription,\n ScreenReader: CustomScreenReader = DefaultScreenReader,\n } = customization?.components ?? {};\n\n const customHandlers = customization?.handlers;\n const customConfig = customization?.config;\n\n /**\n * Memoized wallet icons configuration with applied multipliers\n */\n const walletIcons = useMemo(() => {\n const icons = customWalletIcons || defaultWalletIcons;\n const durationMultiplier = customConfig?.animation?.durationMultiplier ?? 1;\n const delayMultiplier = customConfig?.animation?.delayMultiplier ?? 1;\n\n return icons.map((icon) => ({\n ...icon,\n animation: {\n ...icon.animation,\n duration: Math.round(icon.animation.duration * durationMultiplier),\n delay: Math.round(icon.animation.delay * delayMultiplier),\n ease: icon.animation.ease || customConfig?.animation?.defaultEase || 'ease-in-out',\n },\n }));\n }, [customWalletIcons, customConfig?.animation]);\n\n /**\n * Memoized container classes\n */\n const containerClasses = useMemo(() => {\n const defaultClasses = cn('novacon:m-[-16px]', className);\n return customization?.classNames?.container?.({ compact }) ?? defaultClasses;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [compact, className, customization?.classNames?.container]);\n\n /**\n * Memoized animation section classes\n */\n const animationSectionClasses = useMemo(() => {\n const defaultClasses = cn(\n 'novacon:relative novacon:w-full novacon:overflow-hidden novacon:p-4',\n compact ? 'novacon:h-48' : 'novacon:h-64',\n );\n return customization?.classNames?.animationSection?.({ compact }) ?? defaultClasses;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [compact, customization?.classNames?.animationSection]);\n\n /**\n * Memoized stars background classes\n */\n const starsBackgroundClasses = useMemo(\n () => customization?.classNames?.starsBackground?.() ?? '',\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [customization?.classNames?.starsBackground],\n );\n\n /**\n * Memoized gradient overlay classes\n */\n const gradientOverlayClasses = useMemo(() => {\n const defaultClasses = cn(\n 'novacon:absolute novacon:inset-0 novacon:z-1',\n 'novacon:bg-[radial-gradient(ellipse_80%_80%_at_50%_-20%,rgba(120,119,198,0.15),rgba(255,255,255,0))]',\n );\n return customization?.classNames?.gradientOverlay?.() ?? defaultClasses;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customization?.classNames?.gradientOverlay]);\n\n /**\n * Memoized animation wrapper classes\n */\n const animationWrapperClasses = useMemo(() => {\n const defaultClasses = cn(\n 'novacon:relative novacon:z-2 novacon:w-full novacon:h-full',\n 'novacon:px-2 md:novacon:px-4',\n );\n return customization?.classNames?.animationWrapper?.() ?? defaultClasses;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customization?.classNames?.animationWrapper]);\n\n /**\n * Memoized content section classes\n */\n const contentSectionClasses = useMemo(() => {\n const defaultClasses = cn(\n 'novacon:text-center',\n compact ? 'novacon:pb-3 novacon:px-2 novacon:md:px-3' : 'novacon:pb-4 novacon:px-2 novacon:md:px-4',\n );\n return customization?.classNames?.contentSection?.({ compact }) ?? defaultClasses;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [compact, customization?.classNames?.contentSection]);\n\n /**\n * Memoized title classes\n */\n const titleClasses = useMemo(() => {\n const defaultClasses = cn(\n 'novacon:font-bold novacon:mb-2 novacon:text-[var(--tuwa-text-primary)]',\n compact ? 'novacon:text-lg' : 'novacon:text-xl',\n );\n return customization?.classNames?.title?.({ compact }) ?? defaultClasses;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [compact, customization?.classNames?.title]);\n\n /**\n * Memoized description classes\n */\n const descriptionClasses = useMemo(\n () => customization?.classNames?.description?.() ?? 'novacon:text-[var(--tuwa-text-secondary)]',\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [customization?.classNames?.description],\n );\n\n /**\n * Memoized screen reader classes\n */\n const screenReaderClasses = useMemo(\n () => customization?.classNames?.screenReader?.() ?? 'novacon:sr-only',\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [customization?.classNames?.screenReader],\n );\n\n // Handle mount/unmount effects\n React.useEffect(() => {\n customHandlers?.onMount?.();\n return () => customHandlers?.onUnmount?.();\n }, [customHandlers]);\n\n return (\n <CustomContainer\n ref={ref}\n className={containerClasses}\n role=\"region\"\n aria-label={customConfig?.ariaLabels?.container ?? ariaLabel ?? labels.startExploringWeb3}\n data-testid={testId}\n >\n {/* Animated Header Section */}\n <CustomAnimationSection\n className={animationSectionClasses}\n role=\"banner\"\n aria-label={customConfig?.ariaLabels?.animationSection ?? 'Wallet icons animation'}\n >\n {/* Stars Background */}\n <CustomStarsBackground className={starsBackgroundClasses} show={showStarsBackground} aria-hidden />\n\n {/* Gradient Overlay */}\n <CustomGradientOverlay className={gradientOverlayClasses} aria-hidden />\n\n {/* Animated Wallet Icons */}\n <CustomAnimationWrapper\n className={animationWrapperClasses}\n role=\"group\"\n aria-label={customConfig?.ariaLabels?.animationWrapper ?? `${labels.popular} wallet icons`}\n enableAnimations={enableAnimations}\n animationDelay={0}\n animationDuration={500}\n >\n {walletIcons.map((iconConfig) => (\n <CustomWalletIcon\n key={iconConfig.walletKey}\n config={iconConfig}\n enableAnimations={enableAnimations}\n className={customization?.classNames?.walletIcon?.({ config: iconConfig, enableAnimations })}\n />\n ))}\n\n {/* Screen reader content for animated icons */}\n <CustomScreenReader className={screenReaderClasses}>\n {labels.popular} wallets including {walletIcons.map((icon) => icon.walletKey).join(', ')} are displayed\n with floating animations to illustrate wallet variety.\n </CustomScreenReader>\n </CustomAnimationWrapper>\n </CustomAnimationSection>\n\n {/* Content Section */}\n <CustomContentSection className={contentSectionClasses} role=\"main\">\n {/* Main Title */}\n <CustomTitle className={titleClasses} role=\"heading\" aria-level={2}>\n {labels.startExploringWeb3}\n </CustomTitle>\n\n {/* Description */}\n <CustomDescription className={descriptionClasses} role=\"text\">\n {labels.walletKeyToDigitalWorld}\n </CustomDescription>\n\n {/* Screen reader summary */}\n <CustomScreenReader className={screenReaderClasses}>\n Introduction to Web3 wallets. This section explains the importance of wallets for digital asset management\n and Web3 exploration. Various popular wallet options are visually represented above.\n </CustomScreenReader>\n </CustomContentSection>\n </CustomContainer>\n );\n },\n);\n\nGetWallet.displayName = 'GetWallet';\n","/**\n * @file ImpersonateForm component with comprehensive customization options and validation.\n */\n\nimport { cn } from '@tuwaio/nova-core';\nimport React, { ComponentType, forwardRef, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { isAddress } from 'viem';\n\nimport { useNovaConnect } from '../../hooks/useNovaConnect';\nimport { useNovaConnectLabels } from '../../hooks/useNovaConnectLabels';\nimport { ConnectButtonProps } from '../ConnectButton/ConnectButton';\n\n// --- Types ---\n\n/**\n * Validation configuration\n */\nexport interface ValidationConfig {\n /** Debounce delay in milliseconds */\n debounceDelay: number;\n /** Whether to validate on blur */\n validateOnBlur: boolean;\n /** Whether to validate on change */\n validateOnChange: boolean;\n /** Custom validation function */\n customValidator?: (address: string) => string | null;\n}\n\n// --- Component Props Types ---\ntype ContainerProps = {\n className?: string;\n children: React.ReactNode;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype LabelProps = {\n className?: string;\n children: React.ReactNode;\n htmlFor?: string;\n} & React.RefAttributes<HTMLLabelElement>;\n\ntype InputProps = {\n className?: string;\n id?: string;\n type?: string;\n value: string;\n onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n onBlur: () => void;\n placeholder?: string;\n 'aria-describedby'?: string;\n 'aria-invalid'?: 'true' | 'false';\n autoComplete?: string;\n spellCheck?: boolean;\n hasError: boolean;\n} & React.RefAttributes<HTMLInputElement>;\n\ntype ErrorMessageProps = {\n className?: string;\n children: React.ReactNode;\n id?: string;\n role?: string;\n 'aria-live'?: 'polite' | 'assertive';\n} & React.RefAttributes<HTMLParagraphElement>;\n\n/**\n * Customization options for ImpersonateForm component\n */\nexport type ImpersonateFormCustomization = {\n /** Custom components */\n components?: {\n /** Custom container wrapper */\n Container?: ComponentType<ContainerProps>;\n /** Custom label component */\n Label?: ComponentType<LabelProps>;\n /** Custom input component */\n Input?: ComponentType<InputProps>;\n /** Custom error message component */\n ErrorMessage?: ComponentType<ErrorMessageProps>;\n };\n /** Custom class name generators */\n classNames?: {\n /** Function to generate container classes */\n container?: () => string;\n /** Function to generate label classes */\n label?: () => string;\n /** Function to generate input classes */\n input?: (params: { hasError: boolean; hasInteracted: boolean }) => string;\n /** Function to generate error message classes */\n errorMessage?: () => string;\n };\n /** Custom event handlers */\n handlers?: {\n /** Custom handler for input change (called after default logic) */\n onInputChange?: (value: string) => void;\n /** Custom handler for input blur (called after default logic) */\n onInputBlur?: (value: string) => void;\n /** Custom handler for validation start */\n onValidationStart?: (value: string) => void;\n /** Custom handler for validation complete */\n onValidationComplete?: (value: string, error: string | null) => void;\n /** Custom handler for component mount */\n onMount?: () => void;\n /** Custom handler for component unmount */\n onUnmount?: () => void;\n };\n /** Configuration options */\n config?: {\n /** Custom validation configuration */\n validation?: Partial<ValidationConfig>;\n /** Custom ARIA labels */\n ariaLabels?: {\n input?: string;\n errorRegion?: string;\n };\n /** Custom input attributes */\n input?: {\n placeholder?: string;\n autoComplete?: string;\n spellCheck?: boolean;\n };\n };\n};\n\n/**\n * Props for the ImpersonateForm component\n */\nexport interface ImpersonateFormProps extends Pick<ConnectButtonProps, 'store'> {\n /** Current impersonated wallet address value */\n impersonatedAddress: string;\n /** Callback to update the impersonated address */\n setImpersonatedAddress: (value: string) => void;\n /** Custom CSS classes for styling the container */\n className?: string;\n /** Customization options */\n customization?: ImpersonateFormCustomization;\n}\n\n/**\n * Default validation configuration\n */\nconst defaultValidationConfig: ValidationConfig = {\n debounceDelay: 500,\n validateOnBlur: true,\n validateOnChange: true,\n};\n\n// --- Default Sub-Components ---\nconst DefaultContainer = forwardRef<HTMLDivElement, ContainerProps>(({ children, className }, ref) => (\n <div ref={ref} className={className}>\n {children}\n </div>\n));\nDefaultContainer.displayName = 'DefaultContainer';\n\nconst DefaultLabel = forwardRef<HTMLLabelElement, LabelProps>(({ children, className, ...props }, ref) => (\n <label ref={ref} className={className} {...props}>\n {children}\n </label>\n));\nDefaultLabel.displayName = 'DefaultLabel';\n// eslint-disable-next-line\nconst DefaultInput = forwardRef<HTMLInputElement, InputProps>(({ className, hasError: _, ...props }, ref) => (\n <input ref={ref} className={className} {...props} />\n));\nDefaultInput.displayName = 'DefaultInput';\n\nconst DefaultErrorMessage = forwardRef<HTMLParagraphElement, ErrorMessageProps>(\n ({ children, className, ...props }, ref) => (\n <p ref={ref} className={className} {...props}>\n {children}\n </p>\n ),\n);\nDefaultErrorMessage.displayName = 'DefaultErrorMessage';\n\n/**\n * Form component for entering wallet address to impersonate with comprehensive customization\n *\n * This component provides a validated form input with:\n * - Debounced validation with configurable timing\n * - Real-time address format validation using viem's isAddress\n * - Full accessibility support with proper ARIA labeling\n * - Error state management with immediate visual feedback\n * - Touch-friendly design with proper focus states\n * - Full customization of all child components\n * - Comprehensive validation with custom validation support\n *\n * Validation features:\n * - Empty address detection\n * - Invalid address format detection using viem\n * - Connected wallet conflict detection\n * - Custom validation function support\n * - Debounced validation to prevent excessive API calls\n * - Immediate validation on blur for better UX\n *\n * Accessibility features:\n * - Proper form labeling with htmlFor association\n * - ARIA invalid and describedby attributes\n * - Live region for error announcements\n * - Screen reader friendly error messages\n * - Proper focus management\n *\n * @example Basic usage\n * ```tsx\n * <ImpersonateForm\n * impersonatedAddress={address}\n * setImpersonatedAddress={setAddress}\n * store={novaConnectStore}\n * />\n * ```\n *\n * @example With custom validation\n * ```tsx\n * <ImpersonateForm\n * impersonatedAddress={address}\n * setImpersonatedAddress={setAddress}\n * store={novaConnectStore}\n * customization={{\n * config: {\n * validation: {\n * debounceDelay: 300,\n * customValidator: (addr) => {\n * if (addr === '0x...') return 'This address is not allowed';\n * return null;\n * }\n * }\n * }\n * }}\n * />\n * ```\n *\n * @example With full customization\n * ```tsx\n * <ImpersonateForm\n * impersonatedAddress={address}\n * setImpersonatedAddress={setAddress}\n * store={novaConnectStore}\n * customization={{\n * components: {\n * Input: CustomInput,\n * ErrorMessage: CustomErrorMessage\n * },\n * classNames: {\n * input: ({ hasError }) => hasError ? 'custom-error' : 'custom-normal'\n * },\n * handlers: {\n * onValidationComplete: (value, error) => {\n * console.log('Validation result:', { value, error });\n * }\n * }\n * }}\n * />\n * ```\n */\nexport const ImpersonateForm = forwardRef<HTMLDivElement, ImpersonateFormProps>(\n ({ impersonatedAddress, setImpersonatedAddress, store, className, customization }, ref) => {\n // Get labels from context\n const labels = useNovaConnectLabels();\n const { activeWallet, walletConnectionError } = useNovaConnect();\n\n // Extract customization options\n const {\n Container: CustomContainer = DefaultContainer,\n Label: CustomLabel = DefaultLabel,\n Input: CustomInput = DefaultInput,\n ErrorMessage: CustomErrorMessage = DefaultErrorMessage,\n } = customization?.components ?? {};\n\n const customHandlers = customization?.handlers;\n const customConfig = customization?.config;\n\n // Access store state and methods\n const resetWalletConnectionError = store.getState().resetWalletConnectionError;\n const setWalletConnectionError = store.getState().setWalletConnectionError;\n\n // Local state to track if user has interacted with the field\n const [hasInteracted, setHasInteracted] = useState(false);\n\n // Use ref to store timeout ID\n const timeoutRef = useRef<NodeJS.Timeout | null>(null);\n\n /**\n * Memoized validation configuration with customization\n */\n const validationConfig = useMemo(\n (): ValidationConfig => ({\n ...defaultValidationConfig,\n ...customConfig?.validation,\n }),\n [customConfig?.validation],\n );\n\n /**\n * Generate validation function with proper memoization dependencies\n */\n const getValidateAddress = useCallback(\n () =>\n (address: string): string | null => {\n // Custom validation first\n if (validationConfig.customValidator) {\n const customError = validationConfig.customValidator(address);\n if (customError) return customError;\n }\n\n // Standard validations\n if (!address.trim()) {\n return labels.impersonateAddressEmpty;\n }\n if (!isAddress(address)) {\n return labels.impersonateAddressNotCorrect;\n }\n if (activeWallet?.isConnected) {\n return labels.impersonateAddressConnected;\n }\n\n return null;\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n validationConfig.customValidator,\n labels.impersonateAddressEmpty,\n labels.impersonateAddressNotCorrect,\n labels.impersonateAddressConnected,\n activeWallet?.isConnected,\n ],\n );\n\n /**\n * Memoized validation function\n */\n const validateAddress = useMemo(() => getValidateAddress(), [getValidateAddress]);\n\n /**\n * Generate debounced validation function with proper memoization dependencies\n */\n const getDebouncedValidate = useCallback(\n () => (address: string) => {\n if (!validationConfig.validateOnChange) return;\n\n // Clear previous timeout\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n customHandlers?.onValidationStart?.(address);\n\n timeoutRef.current = setTimeout(() => {\n if (hasInteracted) {\n const error = validateAddress(address);\n if (error) {\n setWalletConnectionError(error);\n } else if (walletConnectionError) {\n resetWalletConnectionError();\n }\n customHandlers?.onValidationComplete?.(address, error);\n }\n }, validationConfig.debounceDelay);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n validationConfig.validateOnChange,\n validationConfig.debounceDelay,\n hasInteracted,\n validateAddress,\n setWalletConnectionError,\n resetWalletConnectionError,\n walletConnectionError,\n customHandlers?.onValidationStart,\n customHandlers?.onValidationComplete,\n ],\n );\n\n /**\n * Memoized debounced validation function\n */\n const debouncedValidate = useMemo(() => getDebouncedValidate(), [getDebouncedValidate]);\n\n /**\n * Generate input change handler with proper memoization dependencies\n */\n const getHandleAddressChange = useCallback(\n () => (event: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = event.target.value;\n setHasInteracted(true);\n setImpersonatedAddress(newValue);\n\n // Clear error immediately if field becomes valid\n if (newValue.trim() && walletConnectionError) {\n if (isAddress(newValue)) {\n resetWalletConnectionError();\n }\n }\n\n // Trigger debounced validation for invalid cases\n debouncedValidate(newValue);\n\n // Call custom handler\n customHandlers?.onInputChange?.(newValue);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n setImpersonatedAddress,\n walletConnectionError,\n resetWalletConnectionError,\n debouncedValidate,\n customHandlers?.onInputChange,\n ],\n );\n\n /**\n * Memoized input change handler\n */\n const handleAddressChange = useMemo(() => getHandleAddressChange(), [getHandleAddressChange]);\n\n /**\n * Generate blur handler with proper memoization dependencies\n */\n const getHandleBlur = useCallback(\n () => () => {\n if (!validationConfig.validateOnBlur) return;\n\n setHasInteracted(true);\n\n // Clear any pending debounced validation\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n // Validate immediately on blur without debounce\n const error = validateAddress(impersonatedAddress);\n if (error) {\n setWalletConnectionError(error);\n } else if (walletConnectionError) {\n resetWalletConnectionError();\n }\n\n // Call custom handler\n customHandlers?.onInputBlur?.(impersonatedAddress);\n customHandlers?.onValidationComplete?.(impersonatedAddress, error);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n validationConfig.validateOnBlur,\n validateAddress,\n impersonatedAddress,\n setWalletConnectionError,\n resetWalletConnectionError,\n walletConnectionError,\n customHandlers?.onInputBlur,\n customHandlers?.onValidationComplete,\n ],\n );\n\n /**\n * Memoized blur handler\n */\n const handleBlur = useMemo(() => getHandleBlur(), [getHandleBlur]);\n\n /**\n * Generate container classes with proper memoization dependencies\n */\n const getContainerClasses = useCallback(\n () => customization?.classNames?.container?.() ?? cn('novacon:space-y-1', className),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [customization?.classNames?.container, className],\n );\n\n /**\n * Memoized container classes\n */\n const containerClasses = useMemo(getContainerClasses, [getContainerClasses]);\n\n /**\n * Generate label classes with proper memoization dependencies\n */\n const getLabelClasses = useCallback(\n () =>\n customization?.classNames?.label?.() ??\n 'novacon:block novacon:text-sm novacon:text-[var(--tuwa-text-secondary)]',\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [customization?.classNames?.label],\n );\n\n /**\n * Memoized label classes\n */\n const labelClasses = useMemo(() => getLabelClasses(), [getLabelClasses]);\n\n /**\n * Generate input classes with proper memoization dependencies\n */\n const getInputClasses = useCallback(() => {\n if (customization?.classNames?.input) {\n return customization.classNames.input({ hasError: !!walletConnectionError, hasInteracted });\n }\n\n return cn(\n // Base layout and spacing\n 'novacon:mt-1 novacon:w-full novacon:p-3 novacon:rounded-xl',\n // Theme colors\n 'novacon:bg-[var(--tuwa-bg-secondary)]',\n 'novacon:border novacon:border-[var(--tuwa-border-primary)]',\n 'novacon:text-[var(--tuwa-text-primary)]',\n 'novacon:placeholder:text-[var(--tuwa-text-secondary)]',\n // Focus and interaction states\n 'novacon:focus:outline-none novacon:focus:ring-2 novacon:focus:ring-[var(--tuwa-border-primary)]',\n // Error state styling\n {\n 'novacon:border-red-500 novacon:focus:ring-red-500': walletConnectionError,\n },\n // Transition for smooth state changes\n 'novacon:transition-colors novacon:duration-200',\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customization?.classNames?.input, walletConnectionError, hasInteracted]);\n\n /**\n * Memoized input classes\n */\n const inputClasses = useMemo(() => getInputClasses(), [getInputClasses]);\n\n /**\n * Generate error message classes with proper memoization dependencies\n */\n const getErrorMessageClasses = useCallback(\n () => customization?.classNames?.errorMessage?.() ?? 'novacon:mt-2 novacon:text-sm novacon:text-red-500',\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [customization?.classNames?.errorMessage],\n );\n\n /**\n * Memoized error message classes\n */\n const errorMessageClasses = useMemo(() => getErrorMessageClasses(), [getErrorMessageClasses]);\n\n // Cleanup effect and mount/unmount handlers\n useEffect(() => {\n customHandlers?.onMount?.();\n\n return () => {\n // Clear timeout on unmount\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n resetWalletConnectionError();\n customHandlers?.onUnmount?.();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [resetWalletConnectionError, customHandlers?.onMount, customHandlers?.onUnmount]);\n\n // Input configuration\n const inputId = 'impersonated-address';\n const errorId = 'address-error';\n const placeholder = customConfig?.input?.placeholder ?? labels.walletAddressPlaceholder;\n const autoComplete = customConfig?.input?.autoComplete ?? 'off';\n const spellCheck = customConfig?.input?.spellCheck ?? false;\n\n return (\n <CustomContainer ref={ref} className={containerClasses}>\n {/* Form label */}\n <CustomLabel className={labelClasses} htmlFor={inputId}>\n {labels.enterWalletAddress}\n </CustomLabel>\n\n {/* Address input field */}\n <CustomInput\n className={inputClasses}\n id={inputId}\n type=\"text\"\n value={impersonatedAddress}\n onChange={handleAddressChange}\n onBlur={handleBlur}\n placeholder={placeholder}\n aria-describedby={walletConnectionError ? errorId : undefined}\n aria-invalid={walletConnectionError ? 'true' : 'false'}\n autoComplete={autoComplete}\n spellCheck={spellCheck}\n hasError={!!walletConnectionError}\n />\n\n {/* Error message display */}\n {walletConnectionError && (\n <CustomErrorMessage className={errorMessageClasses} id={errorId} role=\"alert\" aria-live=\"polite\">\n {walletConnectionError}\n </CustomErrorMessage>\n )}\n </CustomContainer>\n );\n },\n);\n\nImpersonateForm.displayName = 'ImpersonateForm';\n","/**\n * @file NetworkSelections component with comprehensive customization options for network selection.\n */\n\nimport { Web3Icon } from '@bgd-labs/react-web3-icons';\nimport { ExclamationTriangleIcon } from '@heroicons/react/24/outline';\nimport { cn, isTouchDevice } from '@tuwaio/nova-core';\nimport { formatWalletName, getWalletTypeFromConnectorName, OrbitAdapter, WalletType } from '@tuwaio/orbit-core';\nimport React, { ComponentType, forwardRef, memo, useCallback, useMemo } from 'react';\n\nimport { useNovaConnectLabels } from '../../hooks/useNovaConnectLabels';\nimport { getNetworkIcon, networksLinks } from '../../utils';\nimport { ConnectCard, ConnectCardCustomization } from './ConnectCard';\nimport { GroupedConnector } from './ConnectModal';\nimport { Disclaimer, DisclaimerCustomization } from './Disclaimer';\n\n// --- Types ---\n\n/**\n * Network data for display\n */\ninterface NetworkData {\n /** Network adapter */\n adapter: OrbitAdapter;\n /** Chain ID for icon display */\n chainId?: number | string;\n /** Network display name */\n name: string;\n /** Network info link URL */\n infoLink?: string;\n /** Network index in list */\n index: number;\n}\n\n/**\n * Network selections data for customization context\n */\nexport interface NetworkSelectionsData {\n /** Currently active connector name */\n activeConnector?: string;\n /** Available grouped connectors */\n connectors: GroupedConnector[];\n /** Whether device is touch-enabled */\n isTouch: boolean;\n /** Whether in error state */\n isError: boolean;\n /** Available networks */\n networks: NetworkData[];\n}\n\n// --- Component Props Types ---\ntype ContainerProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n 'aria-labelledby'?: string;\n selectionsData: NetworkSelectionsData;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype TitleProps = {\n className?: string;\n children: React.ReactNode;\n id?: string;\n role?: string;\n 'aria-level'?: number;\n selectionsData: NetworkSelectionsData;\n} & React.RefAttributes<HTMLHeadingElement>;\n\ntype NetworkListProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n 'aria-label'?: string;\n selectionsData: NetworkSelectionsData;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype NetworkItemProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n networkData: NetworkData;\n selectionsData: NetworkSelectionsData;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype NetworkIconProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n 'aria-label'?: string;\n networkData: NetworkData;\n selectionsData: NetworkSelectionsData;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype ErrorContainerProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n 'aria-live'?: 'polite' | 'assertive';\n selectionsData: NetworkSelectionsData;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype ErrorIconProps = {\n className?: string;\n children: React.ReactNode;\n 'aria-hidden'?: boolean;\n selectionsData: NetworkSelectionsData;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype ErrorTitleProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n 'aria-level'?: number;\n selectionsData: NetworkSelectionsData;\n} & React.RefAttributes<HTMLHeadingElement>;\n\ntype ErrorMessageProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n selectionsData: NetworkSelectionsData;\n} & React.RefAttributes<HTMLParagraphElement>;\n\n/**\n * NetworkSelections customization options\n */\nexport type NetworkSelectionsCustomization = {\n /** Custom components */\n components?: {\n /** Custom container wrapper */\n Container?: ComponentType<ContainerProps>;\n /** Custom title */\n Title?: ComponentType<TitleProps>;\n /** Custom network list */\n NetworkList?: ComponentType<NetworkListProps>;\n /** Custom network item wrapper */\n NetworkItem?: ComponentType<NetworkItemProps>;\n /** Custom network icon wrapper */\n NetworkIcon?: ComponentType<NetworkIconProps>;\n /** Custom error container */\n ErrorContainer?: ComponentType<ErrorContainerProps>;\n /** Custom error icon wrapper */\n ErrorIcon?: ComponentType<ErrorIconProps>;\n /** Custom error title */\n ErrorTitle?: ComponentType<ErrorTitleProps>;\n /** Custom error message */\n ErrorMessage?: ComponentType<ErrorMessageProps>;\n };\n /** Custom class name generators */\n classNames?: {\n /** Function to generate container classes */\n container?: (params: { selectionsData: NetworkSelectionsData }) => string;\n /** Function to generate title classes */\n title?: (params: { selectionsData: NetworkSelectionsData }) => string;\n /** Function to generate network list classes */\n networkList?: (params: { selectionsData: NetworkSelectionsData }) => string;\n /** Function to generate network item classes */\n networkItem?: (params: { networkData: NetworkData; selectionsData: NetworkSelectionsData }) => string;\n /** Function to generate network icon classes */\n networkIcon?: (params: { networkData: NetworkData; selectionsData: NetworkSelectionsData }) => string;\n /** Function to generate error container classes */\n errorContainer?: (params: { selectionsData: NetworkSelectionsData }) => string;\n /** Function to generate error icon classes */\n errorIcon?: (params: { selectionsData: NetworkSelectionsData }) => string;\n /** Function to generate error title classes */\n errorTitle?: (params: { selectionsData: NetworkSelectionsData }) => string;\n /** Function to generate error message classes */\n errorMessage?: (params: { selectionsData: NetworkSelectionsData }) => string;\n };\n /** Custom event handlers */\n handlers?: {\n /** Custom network click handler */\n onNetworkClick?: (\n networkData: NetworkData,\n selectionsData: NetworkSelectionsData,\n originalHandler: (network: OrbitAdapter) => void,\n ) => void;\n /** Custom error retry handler */\n onErrorRetry?: (selectionsData: NetworkSelectionsData) => void;\n };\n /** Configuration options */\n config?: {\n /** Custom ARIA labels */\n ariaLabels?: {\n container?: (selectionsData: NetworkSelectionsData) => string;\n networkList?: (selectionsData: NetworkSelectionsData) => string;\n networkIcon?: (networkData: NetworkData) => string;\n errorContainer?: (selectionsData: NetworkSelectionsData) => string;\n };\n /** Custom scroll behavior */\n scroll?: {\n touchMaxHeight?: string;\n mouseMaxHeight?: string;\n gap?: {\n touch?: string;\n mouse?: string;\n };\n };\n };\n /** ConnectCard customization for network cards */\n connectCard?: ConnectCardCustomization;\n /** Disclaimer customization */\n disclaimer?: DisclaimerCustomization;\n};\n\n/**\n * Props for the NetworkSelections component\n */\ninterface NetworkSelectionsProps {\n /** Name of the currently active wallet connector */\n activeConnector: string | undefined;\n /** Array of grouped wallet connectors with their supported networks */\n connectors: GroupedConnector[];\n /** Click handler for network selection */\n onClick: (adapter: OrbitAdapter, walletType: WalletType) => Promise<void>;\n /** Customization options */\n customization?: NetworkSelectionsCustomization;\n}\n\n// --- Default Sub-Components ---\nconst DefaultContainer = forwardRef<HTMLDivElement, ContainerProps>(\n // eslint-disable-next-line\n ({ children, className, selectionsData, ...props }, ref) => (\n <div ref={ref} className={className} {...props}>\n {children}\n </div>\n ),\n);\nDefaultContainer.displayName = 'DefaultContainer';\n\nconst DefaultTitle = forwardRef<HTMLHeadingElement, TitleProps>(\n // eslint-disable-next-line\n ({ children, className, selectionsData, ...props }, ref) => (\n <h2 ref={ref} className={className} {...props}>\n {children}\n </h2>\n ),\n);\nDefaultTitle.displayName = 'DefaultTitle';\n\nconst DefaultNetworkList = forwardRef<HTMLDivElement, NetworkListProps>(\n // eslint-disable-next-line\n ({ children, className, selectionsData, ...props }, ref) => (\n <div ref={ref} className={className} {...props}>\n {children}\n </div>\n ),\n);\nDefaultNetworkList.displayName = 'DefaultNetworkList';\n\nconst DefaultNetworkItem = forwardRef<HTMLDivElement, NetworkItemProps>(\n // eslint-disable-next-line\n ({ children, className, networkData, selectionsData, ...props }, ref) => (\n <div ref={ref} className={className} {...props}>\n {children}\n </div>\n ),\n);\nDefaultNetworkItem.displayName = 'DefaultNetworkItem';\n\nconst DefaultNetworkIcon = forwardRef<HTMLDivElement, NetworkIconProps>(\n // eslint-disable-next-line\n ({ children, className, networkData, selectionsData, ...props }, ref) => (\n <div ref={ref} className={className} {...props}>\n {children}\n </div>\n ),\n);\nDefaultNetworkIcon.displayName = 'DefaultNetworkIcon';\n\nconst DefaultErrorContainer = forwardRef<HTMLDivElement, ErrorContainerProps>(\n // eslint-disable-next-line\n ({ children, className, selectionsData, ...props }, ref) => (\n <div ref={ref} className={className} {...props}>\n {children}\n </div>\n ),\n);\nDefaultErrorContainer.displayName = 'DefaultErrorContainer';\n\nconst DefaultErrorIcon = forwardRef<HTMLDivElement, ErrorIconProps>(\n // eslint-disable-next-line\n ({ children, className, selectionsData, ...props }, ref) => (\n <div ref={ref} className={className} {...props}>\n {children}\n </div>\n ),\n);\nDefaultErrorIcon.displayName = 'DefaultErrorIcon';\n\nconst DefaultErrorTitle = forwardRef<HTMLHeadingElement, ErrorTitleProps>(\n // eslint-disable-next-line\n ({ children, className, selectionsData, ...props }, ref) => (\n <h2 ref={ref} className={className} {...props}>\n {children}\n </h2>\n ),\n);\nDefaultErrorTitle.displayName = 'DefaultErrorTitle';\n\nconst DefaultErrorMessage = forwardRef<HTMLParagraphElement, ErrorMessageProps>(\n // eslint-disable-next-line\n ({ children, className, selectionsData, ...props }, ref) => (\n <p ref={ref} className={className} {...props}>\n {children}\n </p>\n ),\n);\nDefaultErrorMessage.displayName = 'DefaultErrorMessage';\n\n/**\n * NetworkSelections component - Network/blockchain selection interface for multi-network wallets with full customization\n *\n * This component provides a network selection interface when a wallet supports multiple blockchains:\n * - Visual network cards with blockchain icons and names\n * - Responsive layout adapting to touch/mouse interfaces\n * - Error handling for invalid connector states\n * - Educational content about blockchain networks\n * - Full accessibility support with semantic structure\n * - External documentation links for each network\n * - Complete customization of all child components and styling\n *\n * Use cases:\n * - Multi-network wallets (e.g., MetaMask supporting EVM chains)\n * - Cross-chain wallets supporting both EVM and Solana\n * - Network-specific connection requirements\n * - User education about blockchain differences\n *\n * Layout features:\n * - Touch devices: Horizontal scrolling layout for easy mobile navigation\n * - Mouse devices: Vertical layout with fixed height scrolling\n * - Network icons with Web3Icon integration for consistency\n * - External links for additional network information\n *\n * Error handling:\n * - Graceful fallback when active connector is not found\n * - Clear error messaging with actionable guidance\n * - Visual error indicators with warning icons\n * - Accessible error state announcements\n *\n * Accessibility features:\n * - Semantic heading structure for network selection\n * - Proper ARIA labels for error states and selections\n * - Screen reader friendly network descriptions\n * - Keyboard navigation support for all interactive elements\n * - Error announcements with live regions\n *\n * @example Basic usage\n * ```tsx\n * <NetworkSelections\n * activeConnector=\"metamask\"\n * connectors={multiNetworkConnectors}\n * onClick={async (adapter, walletType) => {\n * await connectToNetwork(adapter, walletType);\n * }}\n * />\n * ```\n *\n * @example With customization\n * ```tsx\n * <NetworkSelections\n * activeConnector=\"phantom\"\n * connectors={crossChainConnectors}\n * onClick={(adapter, type) => handleNetworkConnection(adapter, type)}\n * customization={{\n * components: {\n * Container: CustomNetworkContainer,\n * NetworkIcon: CustomNetworkIcon\n * },\n * classNames: {\n * networkList: ({ selectionsData }) =>\n * selectionsData.isTouch ? 'touch-network-list' : 'desktop-network-list'\n * },\n * handlers: {\n * onNetworkClick: (networkData, selectionsData, originalHandler) => {\n * analytics.track('network_selected', { network: networkData.name });\n * originalHandler(networkData.adapter);\n * }\n * }\n * }}\n * />\n * ```\n */\nexport const NetworkSelections = memo(\n forwardRef<HTMLDivElement, NetworkSelectionsProps>(({ connectors, onClick, activeConnector, customization }, ref) => {\n const labels = useNovaConnectLabels();\n\n // Extract customization options\n const {\n Container: CustomContainer = DefaultContainer,\n Title: CustomTitle = DefaultTitle,\n NetworkList: CustomNetworkList = DefaultNetworkList,\n NetworkItem: CustomNetworkItem = DefaultNetworkItem,\n NetworkIcon: CustomNetworkIcon = DefaultNetworkIcon,\n ErrorContainer: CustomErrorContainer = DefaultErrorContainer,\n ErrorIcon: CustomErrorIcon = DefaultErrorIcon,\n ErrorTitle: CustomErrorTitle = DefaultErrorTitle,\n ErrorMessage: CustomErrorMessage = DefaultErrorMessage,\n } = customization?.components ?? {};\n\n const customHandlers = customization?.handlers;\n const customConfig = customization?.config;\n\n /**\n * Memoized touch device detection\n */\n const isTouch = useMemo(() => isTouchDevice(), []);\n\n /**\n * Memoized active connector configuration\n */\n const activeConnectors = useMemo(\n () => connectors.find((connector) => formatWalletName(connector.name) === activeConnector),\n [connectors, activeConnector],\n );\n\n /**\n * Memoized network data\n */\n const networks = useMemo((): NetworkData[] => {\n if (!activeConnectors?.adapters) return [];\n\n return activeConnectors.adapters.map((adapter, index) => {\n const networkInfo = getNetworkIcon(adapter);\n return {\n adapter,\n chainId: networkInfo?.chainId,\n name: networkInfo?.name ?? 'Ethereum',\n infoLink: networksLinks[adapter]?.aboutNetwork,\n index,\n };\n });\n }, [activeConnectors?.adapters]);\n\n /**\n * Memoized selections data\n */\n const selectionsData = useMemo(\n (): NetworkSelectionsData => ({\n activeConnector,\n connectors,\n isTouch,\n isError: !activeConnectors,\n networks,\n }),\n\n [activeConnector, connectors, isTouch, activeConnectors, networks],\n );\n\n /**\n * Memoized CSS classes\n */\n const cssClasses = useMemo(() => {\n const touchListClasses = [\n 'novacon:flex-row',\n 'novacon:overflow-x-auto',\n 'novacon:max-h-none',\n customConfig?.scroll?.gap?.touch ?? 'novacon:gap-3',\n 'novacon:pb-4',\n 'novacon:px-1',\n ];\n\n const mouseListClasses = [\n 'novacon:flex-col',\n customConfig?.scroll?.mouseMaxHeight ?? 'novacon:max-h-[310px]',\n 'novacon:overflow-y-auto',\n customConfig?.scroll?.gap?.mouse ?? 'novacon:gap-2',\n ];\n\n return {\n touchListClasses,\n mouseListClasses,\n };\n }, [customConfig?.scroll]);\n\n /**\n * Handle network selection click\n */\n const handleNetworkClick = useCallback(\n (network: OrbitAdapter) => {\n const networkData = networks.find((n) => n.adapter === network);\n if (!networkData || !activeConnector) return;\n\n const originalHandler = (selectedNetwork: OrbitAdapter) => {\n onClick(\n selectedNetwork,\n getWalletTypeFromConnectorName(selectedNetwork, formatWalletName(activeConnector)) as WalletType,\n );\n };\n\n if (customHandlers?.onNetworkClick) {\n customHandlers.onNetworkClick(networkData, selectionsData, originalHandler);\n } else {\n originalHandler(network);\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [networks, activeConnector, onClick, customHandlers?.onNetworkClick, selectionsData],\n );\n\n // Error state when active connector is not found\n if (!activeConnectors) {\n return (\n <CustomErrorContainer\n ref={ref}\n className={\n customization?.classNames?.errorContainer?.({ selectionsData }) ??\n 'novacon:flex novacon:flex-col novacon:items-center novacon:justify-center novacon:p-8 novacon:text-center novacon:border novacon:border-[var(--tuwa-border-primary)] novacon:rounded-xl novacon:bg-[var(--tuwa-bg-secondary)] novacon:text-[var(--tuwa-text-secondary)]'\n }\n role=\"alert\"\n aria-live=\"assertive\"\n selectionsData={selectionsData}\n >\n <CustomErrorIcon\n className={\n customization?.classNames?.errorIcon?.({ selectionsData }) ??\n 'novacon:text-[var(--tuwa-text-accent)] novacon:mb-3'\n }\n aria-hidden={true}\n selectionsData={selectionsData}\n >\n <ExclamationTriangleIcon width={32} height={32} />\n </CustomErrorIcon>\n <CustomErrorTitle\n className={\n customization?.classNames?.errorTitle?.({ selectionsData }) ??\n 'novacon:text-lg novacon:font-semibold novacon:text-[var(--tuwa-text-primary)] novacon:mb-1'\n }\n role=\"heading\"\n aria-level={2}\n selectionsData={selectionsData}\n >\n {labels.somethingWentWrong}\n </CustomErrorTitle>\n <CustomErrorMessage\n className={customization?.classNames?.errorMessage?.({ selectionsData }) ?? 'novacon:text-sm'}\n role=\"text\"\n selectionsData={selectionsData}\n >\n {labels.networkPickingError}\n </CustomErrorMessage>\n </CustomErrorContainer>\n );\n }\n\n return (\n <CustomContainer\n ref={ref}\n className={\n customization?.classNames?.container?.({ selectionsData }) ??\n 'novacon:flex novacon:flex-col novacon:gap-4 novacon:text-[var(--tuwa-text-primary)]'\n }\n role=\"region\"\n aria-labelledby=\"network-selection-title\"\n selectionsData={selectionsData}\n >\n <CustomTitle\n id=\"network-selection-title\"\n className={customization?.classNames?.title?.({ selectionsData })}\n role=\"heading\"\n aria-level={2}\n selectionsData={selectionsData}\n >\n {labels.selectAvailableNetwork}\n </CustomTitle>\n\n <CustomNetworkList\n className={\n customization?.classNames?.networkList?.({ selectionsData }) ??\n cn('novacon:flex NovaCustomScroll', isTouch ? cssClasses.touchListClasses : cssClasses.mouseListClasses)\n }\n role=\"list\"\n aria-label={customConfig?.ariaLabels?.networkList?.(selectionsData) ?? 'Available networks'}\n selectionsData={selectionsData}\n >\n {networks.map((networkData) => (\n <CustomNetworkItem\n key={networkData.adapter}\n className={\n customization?.classNames?.networkItem?.({ networkData, selectionsData }) ??\n cn({ 'novacon:flex-shrink-0': isTouch })\n }\n role=\"listitem\"\n networkData={networkData}\n selectionsData={selectionsData}\n >\n <ConnectCard\n icon={\n <CustomNetworkIcon\n className={\n customization?.classNames?.networkIcon?.({ networkData, selectionsData }) ??\n 'novacon:w-8 novacon:h-8'\n }\n role=\"img\"\n aria-label={\n customConfig?.ariaLabels?.networkIcon?.(networkData) ?? `${networkData.name} network icon`\n }\n networkData={networkData}\n selectionsData={selectionsData}\n >\n <Web3Icon chainId={networkData.chainId} />\n </CustomNetworkIcon>\n }\n onClick={() => handleNetworkClick(networkData.adapter)}\n title={networkData.name}\n infoLink={networkData.infoLink}\n customization={customization?.connectCard}\n />\n </CustomNetworkItem>\n ))}\n </CustomNetworkList>\n\n <Disclaimer\n title={labels.whatIsNetwork}\n description={labels.networkDescription}\n learnMoreAction=\"https://academy.binance.com/en/articles/what-is-blockchain-and-how-does-it-work\"\n listAction=\"https://www.alchemy.com/dapps/top/blockchains\"\n customization={customization?.disclaimer}\n />\n </CustomContainer>\n );\n }),\n);\n\nNetworkSelections.displayName = 'NetworkSelections';\n","/**\n * @file NetworkTabs component with comprehensive customization options and animated transitions.\n */\n\nimport { Web3Icon } from '@bgd-labs/react-web3-icons';\nimport { GlobeAltIcon } from '@heroicons/react/24/solid';\nimport { cn } from '@tuwaio/nova-core';\nimport { OrbitAdapter } from '@tuwaio/orbit-core';\nimport { AnimatePresence, motion, Variants } from 'framer-motion';\nimport React, { ComponentType, forwardRef, memo, useCallback, useEffect, useMemo } from 'react';\n\nimport { useNovaConnectLabels } from '../../hooks/useNovaConnectLabels';\nimport { getNetworkIcon } from '../../utils';\n\n// --- Types ---\n\n/**\n * Animation configuration\n */\nexport interface AnimationConfig {\n /** Layout animation duration */\n layoutDuration: number;\n /** Layout animation easing */\n layoutEasing: number[];\n /** Text transition duration */\n textDuration: number;\n /** Text transition delay */\n textDelay?: number;\n}\n\n/**\n * Network tab data\n */\nexport interface NetworkTabData {\n /** Network adapter (undefined for \"All\") */\n network: OrbitAdapter | undefined;\n /** Display name */\n displayName: string;\n /** Network info from utils */\n networkInfo: ReturnType<typeof getNetworkIcon> | null;\n /** Whether this tab is selected */\n isSelected: boolean;\n /** Tab index */\n index: number;\n}\n\n// --- Component Props Types ---\ntype ContainerProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n 'aria-label'?: string;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype TabListProps = {\n className?: string;\n children: React.ReactNode;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype TabProps = {\n className?: string;\n children: React.ReactNode;\n 'data-network': string;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype TabButtonProps = {\n className?: string;\n children: React.ReactNode;\n type?: 'button';\n role?: string;\n 'aria-selected'?: boolean;\n 'aria-controls'?: string;\n onClick: () => void;\n onMouseEnter?: () => void;\n onFocus?: () => void;\n title?: string;\n 'aria-label'?: string;\n tabData: NetworkTabData;\n} & React.RefAttributes<HTMLButtonElement>;\n\ntype IconContainerProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n 'aria-label'?: string;\n tabData: NetworkTabData;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype TabTextProps = {\n className?: string;\n children: React.ReactNode;\n variants?: Variants;\n animate?: string;\n 'aria-hidden'?: boolean;\n tabData: NetworkTabData;\n} & React.RefAttributes<HTMLSpanElement>;\n\ntype IndicatorProps = {\n className?: string;\n 'aria-hidden'?: boolean;\n tabData: NetworkTabData;\n} & React.RefAttributes<HTMLDivElement>;\n\n/**\n * Customization options for NetworkTabs component\n */\nexport type NetworkTabsCustomization = {\n /** Custom components */\n components?: {\n /** Custom container wrapper */\n Container?: ComponentType<ContainerProps>;\n /** Custom tab list container */\n TabList?: ComponentType<TabListProps>;\n /** Custom tab wrapper */\n Tab?: ComponentType<TabProps>;\n /** Custom tab button */\n TabButton?: ComponentType<TabButtonProps>;\n /** Custom icon container */\n IconContainer?: ComponentType<IconContainerProps>;\n /** Custom tab text */\n TabText?: ComponentType<TabTextProps>;\n /** Custom selection indicator */\n Indicator?: ComponentType<IndicatorProps>;\n };\n /** Custom class name generators */\n classNames?: {\n /** Function to generate container classes */\n container?: () => string;\n /** Function to generate tab list classes */\n tabList?: () => string;\n /** Function to generate tab classes */\n tab?: (params: { isSelected: boolean; index: number }) => string;\n /** Function to generate tab button classes */\n tabButton?: (params: { isSelected: boolean; tabData: NetworkTabData }) => string;\n /** Function to generate icon container classes */\n iconContainer?: (params: { tabData: NetworkTabData }) => string;\n /** Function to generate tab text classes */\n tabText?: (params: { isSelected: boolean; tabData: NetworkTabData }) => string;\n /** Function to generate indicator classes */\n indicator?: (params: { tabData: NetworkTabData }) => string;\n };\n /** Custom event handlers */\n handlers?: {\n /** Custom handler for tab selection (called after default logic) */\n onTabSelect?: (network: OrbitAdapter | undefined, tabData: NetworkTabData) => void;\n /** Custom handler for tab hover */\n onTabHover?: (network: OrbitAdapter | undefined, tabData: NetworkTabData) => void;\n /** Custom handler for tab focus */\n onTabFocus?: (network: OrbitAdapter | undefined, tabData: NetworkTabData) => void;\n /** Custom handler for component mount */\n onMount?: () => void;\n /** Custom handler for component unmount */\n onUnmount?: () => void;\n };\n /** Configuration options */\n config?: {\n /** Custom animation configuration */\n animation?: Partial<AnimationConfig>;\n /** Custom ARIA labels */\n ariaLabels?: {\n container?: string;\n tabPrefix?: string;\n iconSuffix?: string;\n selectedSuffix?: string;\n };\n /** Whether to show \"All\" option */\n showAllOption?: boolean;\n /** Custom network display names */\n networkNames?: {\n [key: string]: string;\n };\n /** Minimum networks to show tabs */\n minNetworksToShow?: number;\n };\n};\n\n/**\n * Props for the NetworkTabs component\n */\nexport interface NetworkTabsProps {\n /** Array of available network adapters */\n networks: OrbitAdapter[];\n /** Currently selected network adapter (undefined means \"All\" is selected) */\n selectedAdapter: OrbitAdapter | undefined;\n /** Handler for network selection changes */\n onSelect: (adapter: OrbitAdapter | undefined) => void;\n /** Custom CSS classes for styling the container */\n className?: string;\n /** Customization options */\n customization?: NetworkTabsCustomization;\n}\n\n/**\n * Default animation configuration\n */\nconst defaultAnimationConfig: AnimationConfig = {\n layoutDuration: 0.6,\n layoutEasing: [0.1, 0.1, 0.2, 1],\n textDuration: 0.2,\n textDelay: 0,\n};\n\n/**\n * Default animation variants for tab text transitions\n */\nconst getTextVariant = (config: AnimationConfig): Variants => ({\n active: {\n opacity: 1,\n zIndex: 2,\n x: 0,\n position: 'relative',\n transition: {\n duration: config.textDuration,\n delay: config.textDelay,\n },\n },\n inactive: {\n opacity: 0,\n zIndex: -1,\n x: -10,\n position: 'absolute',\n transition: {\n duration: config.textDuration,\n },\n },\n});\n\n// --- Default Sub-Components ---\nconst DefaultContainer = forwardRef<HTMLDivElement, ContainerProps>(({ children, className, ...props }, ref) => (\n <motion.div\n ref={ref}\n className={className}\n layout\n transition={{\n layout: {\n duration: 0.6,\n ease: [0.1, 0.1, 0.2, 1],\n },\n }}\n {...props}\n >\n {children}\n </motion.div>\n));\nDefaultContainer.displayName = 'DefaultContainer';\n\nconst DefaultTabList = forwardRef<HTMLDivElement, TabListProps>(({ children, className }, ref) => (\n <motion.div\n ref={ref}\n className={className}\n layout\n transition={{\n layout: {\n duration: 0.0001,\n },\n }}\n >\n {children}\n </motion.div>\n));\nDefaultTabList.displayName = 'DefaultTabList';\n\nconst DefaultTab = forwardRef<HTMLDivElement, TabProps>(({ children, className, ...props }, ref) => (\n <motion.div\n ref={ref}\n className={className}\n layout\n transition={{\n layout: {\n duration: 0.6,\n ease: [0.1, 0.1, 0.2, 1],\n },\n }}\n {...props}\n >\n {children}\n </motion.div>\n));\nDefaultTab.displayName = 'DefaultTab';\n\nconst DefaultTabButton = forwardRef<HTMLButtonElement, TabButtonProps>(\n // eslint-disable-next-line\n ({ children, className, tabData: _, ...props }, ref) => (\n <motion.button\n ref={ref}\n className={className}\n layout\n transition={{\n layout: {\n duration: 0.0001,\n },\n }}\n {...props}\n >\n {children}\n </motion.button>\n ),\n);\nDefaultTabButton.displayName = 'DefaultTabButton';\n\nconst DefaultIconContainer = forwardRef<HTMLDivElement, IconContainerProps>(\n // eslint-disable-next-line\n ({ children, className, tabData: _, ...props }, ref) => (\n <div ref={ref} className={className} {...props}>\n {children}\n </div>\n ),\n);\nDefaultIconContainer.displayName = 'DefaultIconContainer';\n\nconst DefaultTabText = forwardRef<HTMLSpanElement, TabTextProps>(\n // eslint-disable-next-line\n ({ children, className, tabData: _, ...props }, ref) => (\n <motion.span ref={ref} className={className} {...props}>\n {children}\n </motion.span>\n ),\n);\nDefaultTabText.displayName = 'DefaultTabText';\n\nconst DefaultIndicator = forwardRef<HTMLDivElement, IndicatorProps>(\n // eslint-disable-next-line\n ({ className, tabData: _, ...props }, ref) => (\n <motion.div ref={ref} className={className} layoutId=\"indicator\" {...props} />\n ),\n);\nDefaultIndicator.displayName = 'DefaultIndicator';\n\n/**\n * NetworkTabs component - Animated tab navigation for network selection with comprehensive customization\n *\n * This component provides an animated tab interface for selecting blockchain networks:\n * - Animated tab transitions with smooth layouts powered by Framer Motion\n * - Visual network icons with Web3Icon integration and fallbacks\n * - Configurable \"All networks\" option for viewing all connectors\n * - Responsive horizontal scrolling for mobile-friendly experience\n * - Full accessibility support with proper ARIA labels and keyboard navigation\n * - Motion-based UI feedback with customizable animation timing\n * - Complete customization of all child components and animations\n *\n * Key features:\n * - Framer Motion powered animations with configurable timing and easing\n * - Dynamic tab indicator that smoothly morphs between selections\n * - Network icons with proper Web3Icon integration and fallback support\n * - Conditional rendering based on configurable minimum network threshold\n * - Touch-friendly interface with horizontal scrolling support\n * - Full component tree customization through render prop pattern\n *\n * Animation system:\n * - Layout animations for smooth tab movement with configurable duration\n * - Text fade transitions with customizable timing when switching tabs\n * - Morphing background indicator with layoutId for smooth transitions\n * - Optimized animation durations tuned for natural feel\n * - Support for reduced motion preferences\n *\n * Accessibility features:\n * - Proper tablist and tab ARIA semantics for screen readers\n * - Keyboard navigation support (Tab, Space, Enter, Arrow keys)\n * - Dynamic ARIA labels with selection state announcements\n * - Focus management with visible focus indicators\n * - Meaningful tooltips and descriptions for each network\n * - Screen reader friendly icon descriptions\n *\n * @example Basic usage\n * ```tsx\n * <NetworkTabs\n * networks={[OrbitAdapter.EVM, OrbitAdapter.SOLANA]}\n * selectedAdapter={OrbitAdapter.EVM}\n * onSelect={(adapter) => handleNetworkChange(adapter)}\n * />\n * ```\n *\n * @example With custom animation timing\n * ```tsx\n * <NetworkTabs\n * networks={networks}\n * selectedAdapter={selectedNetwork}\n * onSelect={setSelectedNetwork}\n * customization={{\n * config: {\n * animation: {\n * layoutDuration: 0.3,\n * textDuration: 0.15\n * }\n * }\n * }}\n * />\n * ```\n *\n * @example With full customization\n * ```tsx\n * <NetworkTabs\n * networks={networks}\n * selectedAdapter={selectedNetwork}\n * onSelect={setSelectedNetwork}\n * customization={{\n * components: {\n * TabButton: CustomTabButton,\n * Indicator: CustomIndicator\n * },\n * classNames: {\n * tabButton: ({ isSelected }) => isSelected ? 'custom-selected' : 'custom-normal'\n * },\n * handlers: {\n * onTabSelect: (network, tabData) => {\n * analytics.track('network_tab_selected', { network: network?.name });\n * }\n * },\n * config: {\n * minNetworksToShow: 2,\n * showAllOption: false\n * }\n * }}\n * />\n * ```\n */\nexport const NetworkTabs = memo(\n forwardRef<HTMLDivElement, NetworkTabsProps>(\n ({ networks, selectedAdapter, onSelect, className, customization }, ref) => {\n const labels = useNovaConnectLabels();\n\n // Extract customization options\n const {\n Container: CustomContainer = DefaultContainer,\n TabList: CustomTabList = DefaultTabList,\n Tab: CustomTab = DefaultTab,\n TabButton: CustomTabButton = DefaultTabButton,\n IconContainer: CustomIconContainer = DefaultIconContainer,\n TabText: CustomTabText = DefaultTabText,\n Indicator: CustomIndicator = DefaultIndicator,\n } = customization?.components ?? {};\n\n const customHandlers = customization?.handlers;\n const customConfig = customization?.config;\n\n /**\n * Memoized animation configuration with customization\n */\n const animationConfig = useMemo(\n (): AnimationConfig => ({\n ...defaultAnimationConfig,\n ...customConfig?.animation,\n }),\n [customConfig?.animation],\n );\n\n /**\n * Memoized text animation variants\n */\n const textVariant = useMemo(() => getTextVariant(animationConfig), [animationConfig]);\n\n /**\n * Check if we should render tabs\n */\n const shouldRender = useMemo(() => {\n const minNetworks = customConfig?.minNetworksToShow ?? 1;\n return networks.length > minNetworks;\n }, [networks.length, customConfig?.minNetworksToShow]);\n\n /**\n * Memoized networks list with \"All\" option if enabled\n */\n const localNetworks = useMemo(() => {\n const showAll = customConfig?.showAllOption ?? true;\n return showAll ? [undefined, ...networks] : networks;\n }, [networks, customConfig?.showAllOption]);\n\n /**\n * Generate network display name function with proper memoization dependencies\n */\n const getNetworkDisplayNameGen = useCallback(\n () =>\n (network: OrbitAdapter | undefined): string => {\n if (!network) return labels.all;\n\n // Check for custom name first\n const networkKey = network.toString();\n if (customConfig?.networkNames?.[networkKey]) {\n return customConfig.networkNames[networkKey];\n }\n\n return getNetworkIcon(network)?.name ?? 'Unknown';\n },\n [labels.all, customConfig?.networkNames],\n );\n\n /**\n * Memoized network display name function\n */\n const getNetworkDisplayName = useMemo(getNetworkDisplayNameGen, [getNetworkDisplayNameGen]);\n\n /**\n * Generate aria label function with proper memoization dependencies\n */\n const getNetworkAriaLabelGen = useCallback(\n () =>\n (network: OrbitAdapter | undefined, isSelected: boolean): string => {\n const displayName = getNetworkDisplayName(network);\n const tabPrefix = customConfig?.ariaLabels?.tabPrefix ?? '';\n const selectedSuffix = customConfig?.ariaLabels?.selectedSuffix ?? ', currently selected';\n\n return `${tabPrefix}${displayName} network${isSelected ? selectedSuffix : ''}`.trim();\n },\n [getNetworkDisplayName, customConfig?.ariaLabels],\n );\n\n /**\n * Memoized aria label function\n */\n const getNetworkAriaLabel = useMemo(getNetworkAriaLabelGen, [getNetworkAriaLabelGen]);\n\n /**\n * Generate tab selection handler with proper memoization dependencies\n */\n const getHandleTabSelect = useCallback(\n () => (network: OrbitAdapter | undefined, tabData: NetworkTabData) => {\n onSelect(network);\n customHandlers?.onTabSelect?.(network, tabData);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [onSelect, customHandlers?.onTabSelect],\n );\n\n /**\n * Memoized tab selection handler\n */\n const handleTabSelect = useMemo(getHandleTabSelect, [getHandleTabSelect]);\n\n /**\n * Memoized tab data\n */\n const tabsData = useMemo((): NetworkTabData[] => {\n return localNetworks.map((network, index) => ({\n network,\n displayName: getNetworkDisplayName(network),\n networkInfo: network ? getNetworkIcon(network) : null,\n isSelected: selectedAdapter === network,\n index,\n }));\n }, [localNetworks, getNetworkDisplayName, selectedAdapter]);\n\n /**\n * Generate container classes with proper memoization dependencies\n */\n const getContainerClasses = useCallback(\n () => customization?.classNames?.container?.() ?? className,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [customization?.classNames?.container, className],\n );\n\n /**\n * Memoized container classes\n */\n const containerClasses = useMemo(getContainerClasses, [getContainerClasses]);\n\n /**\n * Generate tab list classes with proper memoization dependencies\n */\n const getTabListClasses = useCallback(\n () =>\n customization?.classNames?.tabList?.() ??\n 'novacon:flex novacon:overflow-x-auto novacon:gap-2 novacon:p-2 novacon:mb-2 novacon:border-b novacon:border-[var(--tuwa-border-primary)] novacon:relative',\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [customization?.classNames?.tabList],\n );\n\n /**\n * Memoized tab list classes\n */\n const tabListClasses = useMemo(getTabListClasses, [getTabListClasses]);\n\n // Mount/unmount effect\n useEffect(() => {\n customHandlers?.onMount?.();\n return () => customHandlers?.onUnmount?.();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customHandlers?.onMount, customHandlers?.onUnmount]);\n\n // Don't render if not enough networks\n if (!shouldRender) return null;\n\n const containerAriaLabel = customConfig?.ariaLabels?.container ?? 'Network selection tabs';\n\n return (\n <CustomContainer ref={ref} className={containerClasses} role=\"tablist\" aria-label={containerAriaLabel}>\n <CustomTabList className={tabListClasses}>\n {tabsData.map((tabData) => {\n const tabKey = `${tabData.network}_${tabData.index}`;\n const networkKey = tabData.network?.toString() ?? 'all';\n\n // Generate dynamic classes and styles\n const tabClasses =\n customization?.classNames?.tab?.({\n isSelected: tabData.isSelected,\n index: tabData.index,\n }) ?? 'novacon:relative novacon:group';\n\n const tabButtonClasses =\n customization?.classNames?.tabButton?.({\n isSelected: tabData.isSelected,\n tabData,\n }) ??\n cn(\n 'novacon:cursor-pointer novacon:flex novacon:items-center novacon:gap-2 novacon:px-4 novacon:py-2 novacon:rounded-lg novacon:transition-colors novacon:overflow-hidden novacon:relative novacon:z-4',\n 'novacon:hover:bg-[var(--tuwa-bg-muted)]',\n 'novacon:focus:outline-none novacon:focus:ring-2 novacon:focus:ring-[var(--tuwa-border-primary)] novacon:focus:ring-offset-2',\n tabData.isSelected\n ? 'novacon:bg-[var(--tuwa-bg-muted)] novacon:text-[var(--tuwa-text-accent)]'\n : 'novacon:text-[var(--tuwa-text-secondary)]',\n );\n\n const iconContainerClasses =\n customization?.classNames?.iconContainer?.({ tabData }) ??\n 'novacon:w-6 novacon:h-6 novacon:[&>img]:w-full novacon:[&>img]:h-full';\n\n const tabTextClasses =\n customization?.classNames?.tabText?.({\n isSelected: tabData.isSelected,\n tabData,\n }) ?? 'novacon:block';\n\n const indicatorClasses =\n customization?.classNames?.indicator?.({ tabData }) ??\n 'novacon:absolute novacon:inset-0 novacon:bg-[var(--tuwa-bg-muted)] novacon:z-3 novacon:rounded-lg';\n\n return (\n <CustomTab key={tabKey} className={tabClasses} data-network={networkKey}>\n <CustomTabButton\n className={tabButtonClasses}\n type=\"button\"\n role=\"tab\"\n aria-selected={tabData.isSelected}\n aria-controls={`network-panel-${networkKey}`}\n onClick={() => handleTabSelect(tabData.network, tabData)}\n onMouseEnter={() => customHandlers?.onTabHover?.(tabData.network, tabData)}\n onFocus={() => customHandlers?.onTabFocus?.(tabData.network, tabData)}\n title={tabData.displayName}\n aria-label={getNetworkAriaLabel(tabData.network, tabData.isSelected)}\n tabData={tabData}\n >\n <CustomIconContainer\n className={iconContainerClasses}\n role=\"img\"\n aria-label={`${tabData.displayName} network ${customConfig?.ariaLabels?.iconSuffix ?? 'icon'}`}\n tabData={tabData}\n >\n {tabData.network ? (\n <Web3Icon chainId={tabData.networkInfo?.chainId} />\n ) : (\n <div className=\"novacon:w-6 novacon:h-6 novacon:[&>img]:w-full novacon:[&>img]:h-full novacon:rounded-full novacon:bg-[var(--tuwa-bg-primary)]\">\n <GlobeAltIcon aria-hidden=\"true\" />\n </div>\n )}\n </CustomIconContainer>\n\n <AnimatePresence initial={false}>\n <CustomTabText\n variants={textVariant}\n className={tabTextClasses}\n animate={tabData.isSelected ? 'active' : 'inactive'}\n aria-hidden={!tabData.isSelected}\n tabData={tabData}\n >\n {tabData.displayName}\n </CustomTabText>\n </AnimatePresence>\n </CustomTabButton>\n\n {tabData.isSelected && (\n <CustomIndicator className={indicatorClasses} aria-hidden={true} tabData={tabData} />\n )}\n </CustomTab>\n );\n })}\n </CustomTabList>\n </CustomContainer>\n );\n },\n ),\n);\n\nNetworkTabs.displayName = 'NetworkTabs';\n","import { InformationCircleIcon } from '@heroicons/react/24/outline';\nimport {\n CloseIcon,\n cn,\n Dialog,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogTitle,\n standardButtonClasses,\n} from '@tuwaio/nova-core';\nimport {\n delay,\n formatWalletName,\n getWalletTypeFromConnectorName,\n impersonatedHelpers,\n OrbitAdapter,\n waitFor,\n WalletType,\n} from '@tuwaio/orbit-core';\nimport { motion } from 'framer-motion';\nimport { isAddress } from 'gill';\nimport React, {\n ComponentPropsWithoutRef,\n ComponentType,\n forwardRef,\n memo,\n useCallback,\n useEffect,\n useMemo,\n} from 'react';\n\nimport { ConnectContentType, useNovaConnect } from '../../hooks/useNovaConnect';\nimport { useNovaConnectLabels } from '../../hooks/useNovaConnectLabels';\nimport { Connector, InitialChains } from '../../types';\nimport { getConnectChainId, getFilteredConnectors, networksLinks } from '../../utils';\nimport { ConnectButtonProps } from '../ConnectButton/ConnectButton';\nimport { AboutWallets, AboutWalletsCustomization } from './AboutWallets';\nimport { Connecting, ConnectingCustomization } from './Connecting';\nimport { ConnectorsSelections, ConnectorsSelectionsCustomization } from './ConnectorsSelections';\nimport { GetWallet, GetWalletCustomization } from './GetWallet';\nimport { ImpersonateForm, ImpersonateFormCustomization } from './ImpersonatedForm';\nimport { NetworkSelections, NetworkSelectionsCustomization } from './NetworkSelections';\nimport { NetworkTabs, NetworkTabsCustomization } from './NetworkTabs';\n\n/**\n * Interface for grouped wallet connectors\n */\nexport interface GroupedConnector {\n /** Name of the wallet connector */\n name: string;\n /** Optional icon for the wallet */\n icon?: string;\n /** Array of supported network adapters */\n adapters: OrbitAdapter[];\n /** Array of connectors with their associated adapters */\n connectors: (Connector & { adapter: OrbitAdapter })[];\n}\n\n/**\n * Connect modal data for customization context\n */\nexport interface ConnectModalData {\n /** Current content type being displayed */\n contentType: ConnectContentType;\n /** Selected network adapter */\n selectedAdapter: OrbitAdapter | undefined;\n /** Active connector name */\n activeConnector: string | undefined;\n /** Impersonated address */\n impersonatedAddress: string;\n /** Whether connection is established */\n isConnected: boolean;\n /** Whether modal is open */\n isOpen: boolean;\n /** Connection error if any */\n error: Error | string | null | undefined;\n /** Available connectors */\n connectors: Record<string, Connector[]>;\n /** Filtered connectors for current adapter */\n filteredConnectors: GroupedConnector[];\n /** Current labels from i18n */\n labels: ReturnType<typeof useNovaConnectLabels>;\n}\n\n/**\n * Bottom button configuration\n */\nexport interface BottomButtonConfig {\n /** Button title text */\n title: string;\n /** Button click handler */\n onClick: () => void | Promise<void>;\n /** Whether button is disabled */\n disabled?: boolean;\n /** Loading state */\n loading?: boolean;\n}\n\n// --- Component Props Types ---\ntype ModalContainerProps = {\n className?: string;\n children: React.ReactNode;\n modalData: ConnectModalData;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype ModalHeaderProps = {\n className?: string;\n children: React.ReactNode;\n modalData: ConnectModalData;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype InfoButtonProps = {\n className?: string;\n onClick: () => void;\n 'aria-label'?: string;\n modalData: ConnectModalData;\n} & React.RefAttributes<HTMLButtonElement>;\n\ntype TitleProps = {\n className?: string;\n children: React.ReactNode;\n modalData: ConnectModalData;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype CloseButtonProps = {\n className?: string;\n onClick: () => void;\n 'aria-label'?: string;\n modalData: ConnectModalData;\n} & React.RefAttributes<HTMLButtonElement>;\n\ntype MainContentProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n id?: string;\n modalData: ConnectModalData;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype FooterProps = {\n className?: string;\n children: React.ReactNode;\n role?: string;\n modalData: ConnectModalData;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype BackButtonProps = {\n className?: string;\n onClick: () => void;\n 'aria-label'?: string;\n children: React.ReactNode;\n modalData: ConnectModalData;\n} & React.RefAttributes<HTMLButtonElement>;\n\ntype ActionButtonProps = {\n className?: string;\n onClick: () => void | Promise<void>;\n 'aria-describedby'?: string;\n children: React.ReactNode;\n disabled?: boolean;\n loading?: boolean;\n modalData: ConnectModalData;\n buttonConfig: BottomButtonConfig;\n} & React.RefAttributes<HTMLButtonElement>;\n\ntype ActionDescriptionProps = {\n id?: string;\n className?: string;\n children: React.ReactNode;\n modalData: ConnectModalData;\n} & React.RefAttributes<HTMLSpanElement>;\n\ntype ModalEmptyProps = {\n className?: string;\n children: React.ReactNode;\n modalData: ConnectModalData;\n} & React.RefAttributes<HTMLDivElement>;\n\n/**\n * Customization options for ConnectModal component\n */\nexport type ConnectModalCustomization = {\n /** Custom components */\n components?: {\n /** Custom modal container */\n ModalContainer?: ComponentType<ModalContainerProps>;\n /** Custom modal header */\n ModalHeader?: ComponentType<ModalHeaderProps>;\n /** Custom info button */\n InfoButton?: ComponentType<InfoButtonProps>;\n /** Custom title */\n Title?: ComponentType<TitleProps>;\n /** Custom close button */\n CloseButton?: ComponentType<CloseButtonProps>;\n /** Custom main content wrapper */\n MainContent?: ComponentType<MainContentProps>;\n /** Custom footer */\n Footer?: ComponentType<FooterProps>;\n /** Custom back button */\n BackButton?: ComponentType<BackButtonProps>;\n /** Custom action button */\n ActionButton?: ComponentType<ActionButtonProps>;\n /** Custom action description */\n ActionDescription?: ComponentType<ActionDescriptionProps>;\n /** Custom dialog */\n Dialog?: ComponentType<ComponentPropsWithoutRef<typeof Dialog>>;\n /** Custom dialog content */\n DialogContent?: ComponentType<ComponentPropsWithoutRef<typeof DialogContent>>;\n /** Custom motion wrapper */\n MotionDiv?: ComponentType<ComponentPropsWithoutRef<typeof motion.div>>;\n /** Custom empty state */\n EmptyState?: ComponentType<ModalEmptyProps>;\n };\n /** Custom class name generators */\n classNames?: {\n /** Function to generate modal container classes */\n modalContainer?: (params: { modalData: ConnectModalData }) => string;\n /** Function to generate header classes */\n header?: (params: { modalData: ConnectModalData }) => string;\n /** Function to generate info button classes */\n infoButton?: (params: { modalData: ConnectModalData }) => string;\n /** Function to generate title classes */\n title?: (params: { modalData: ConnectModalData }) => string;\n /** Function to generate close button classes */\n closeButton?: (params: { modalData: ConnectModalData }) => string;\n /** Function to generate main content classes */\n mainContent?: (params: { modalData: ConnectModalData }) => string;\n /** Function to generate footer classes */\n footer?: (params: { modalData: ConnectModalData }) => string;\n /** Function to generate back button classes */\n backButton?: (params: { modalData: ConnectModalData }) => string;\n /** Function to generate action button classes */\n actionButton?: (params: { modalData: ConnectModalData; buttonConfig: BottomButtonConfig }) => string;\n /** Function to generate action description classes */\n actionDescription?: (params: { modalData: ConnectModalData }) => string;\n /** Function to generate action description classes */\n emptyConnectors?: (params: { modalData: ConnectModalData }) => string;\n };\n /** Custom event handlers */\n handlers?: {\n /** Custom modal open/close handler */\n onOpenChange?: (open: boolean, modalData: ConnectModalData) => void;\n /** Custom back navigation handler */\n onBack?: (modalData: ConnectModalData, originalHandler: () => void) => void;\n /** Custom info button click handler */\n onInfoClick?: (modalData: ConnectModalData) => void;\n /** Custom action button handlers for different content types */\n onActionClick?: {\n connectors?: (modalData: ConnectModalData) => void;\n getWallet?: (modalData: ConnectModalData) => void;\n about?: (modalData: ConnectModalData) => void;\n impersonate?: (modalData: ConnectModalData) => Promise<void>;\n connecting?: (modalData: ConnectModalData) => Promise<void>;\n };\n };\n /** Configuration options */\n config?: {\n /** Custom ARIA labels */\n ariaLabels?: {\n modal?: (modalData: ConnectModalData) => string;\n infoButton?: (modalData: ConnectModalData) => string;\n closeButton?: (modalData: ConnectModalData) => string;\n backButton?: (modalData: ConnectModalData) => string;\n mainContent?: (modalData: ConnectModalData) => string;\n };\n /** Animation configuration */\n animation?: {\n /** Layout transition duration */\n layoutDuration?: number;\n /** Disable animations */\n disabled?: boolean;\n };\n };\n /** Child component customizations */\n childComponents?: {\n /** AboutWallets customization */\n aboutWallets?: AboutWalletsCustomization;\n /** Connecting customization */\n connecting?: ConnectingCustomization;\n /** ConnectorsSelections customization */\n connectorsSelections?: ConnectorsSelectionsCustomization;\n /** GetWallet customization */\n getWallet?: GetWalletCustomization;\n /** ImpersonateForm customization */\n impersonateForm?: ImpersonateFormCustomization;\n /** NetworkSelections customization */\n networkSelections?: NetworkSelectionsCustomization;\n /** NetworkTabs customization */\n networkTabs?: NetworkTabsCustomization;\n };\n};\n\n/**\n * Helper function to safely get connector name from array\n */\nfunction getConnectorName(\n connectors: Connector[] | undefined,\n activeConnector: string | undefined,\n): string | undefined {\n if (!connectors || !Array.isArray(connectors) || !activeConnector) {\n return undefined;\n }\n\n const connector = connectors.find((c) => {\n // @ts-expect-error - no types for connector on package level\n if (c && typeof c === 'object' && 'name' in c && typeof c.name === 'string') {\n // @ts-expect-error - no types for connector on package level\n return formatWalletName(c.name) === activeConnector;\n }\n return false;\n });\n // @ts-expect-error - no types for connector on package level\n return connector && typeof connector === 'object' && 'name' in connector && typeof connector.name === 'string'\n ? // @ts-expect-error - no types for connector on package level\n connector.name\n : undefined;\n}\n\n// --- Default Sub-Components ---\nconst DefaultModalContainer = forwardRef<HTMLDivElement, ModalContainerProps>(\n // eslint-disable-next-line\n ({ className, children, modalData, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('novacon:relative novacon:flex novacon:w-full novacon:flex-col', className)}\n {...props}\n >\n {children}\n </div>\n ),\n);\nDefaultModalContainer.displayName = 'DefaultModalContainer';\n\nconst DefaultModalHeader = forwardRef<HTMLDivElement, ModalHeaderProps>(\n // eslint-disable-next-line\n ({ className, children, modalData, ...props }, ref) => (\n <div ref={ref} className={className} {...props}>\n <DialogHeader>{children}</DialogHeader>\n </div>\n ),\n);\nDefaultModalHeader.displayName = 'DefaultModalHeader';\n\nconst DefaultInfoButton = forwardRef<HTMLButtonElement, InfoButtonProps>(\n // eslint-disable-next-line\n ({ className, onClick, modalData, ...props }, ref) => (\n <button\n ref={ref}\n className={cn(\n 'novacon:cursor-pointer novacon:text-[var(--tuwa-text-secondary)] novacon:transition novacon:duration-300 novacon:ease-in-out novacon:active:scale-75 novacon:hover:scale-110',\n className,\n )}\n type=\"button\"\n onClick={onClick}\n {...props}\n >\n <InformationCircleIcon width={20} height={20} className=\"novacon:mr-1\" aria-hidden=\"true\" />\n </button>\n ),\n);\nDefaultInfoButton.displayName = 'DefaultInfoButton';\n\nconst DefaultTitle = forwardRef<HTMLDivElement, TitleProps>(\n // eslint-disable-next-line\n ({ className, children, modalData, ...props }, ref) => (\n <DialogTitle ref={ref} className={cn('novacon:flex novacon:items-center', className)} {...props}>\n {children}\n </DialogTitle>\n ),\n);\nDefaultTitle.displayName = 'DefaultTitle';\n\nconst DefaultCloseButton = forwardRef<HTMLButtonElement, CloseButtonProps>(\n // eslint-disable-next-line\n ({ className, onClick, modalData, ...props }, ref) => (\n <DialogClose asChild>\n <button\n ref={ref}\n type=\"button\"\n onClick={onClick}\n className={cn(\n 'novacon:cursor-pointer novacon:rounded-full novacon:p-1 novacon:text-[var(--tuwa-text-tertiary)] novacon:transition-colors novacon:hover:bg-[var(--tuwa-bg-muted)] novacon:hover:text-[var(--tuwa-text-primary)]',\n className,\n )}\n {...props}\n >\n <CloseIcon aria-hidden=\"true\" />\n </button>\n </DialogClose>\n ),\n);\nDefaultCloseButton.displayName = 'DefaultCloseButton';\n\nconst DefaultMainContent = forwardRef<HTMLDivElement, MainContentProps>(\n // eslint-disable-next-line\n ({ className, children, modalData, ...props }, ref) => (\n <main\n ref={ref}\n className={cn('novacon:flex novacon:flex-col novacon:gap-4 novacon:p-4', className)}\n id=\"connect-modal-content\"\n role=\"main\"\n {...props}\n >\n {children}\n </main>\n ),\n);\nDefaultMainContent.displayName = 'DefaultMainContent';\n\nconst DefaultFooter = forwardRef<HTMLDivElement, FooterProps>(\n // eslint-disable-next-line\n ({ className, children, modalData, ...props }, ref) => (\n <footer\n ref={ref}\n className={cn(\n 'novacon:flex novacon:w-full novacon:items-center novacon:justify-between novacon:border-t novacon:border-[var(--tuwa-border-primary)] novacon:p-4',\n className,\n )}\n role=\"contentinfo\"\n {...props}\n >\n {children}\n </footer>\n ),\n);\nDefaultFooter.displayName = 'DefaultFooter';\n\nconst DefaultBackButton = forwardRef<HTMLButtonElement, BackButtonProps>(\n // eslint-disable-next-line\n ({ className, onClick, children, modalData, ...props }, ref) => (\n <button ref={ref} type=\"button\" onClick={onClick} className={cn(standardButtonClasses, className)} {...props}>\n {children}\n </button>\n ),\n);\nDefaultBackButton.displayName = 'DefaultBackButton';\n\nconst DefaultActionButton = forwardRef<HTMLButtonElement, ActionButtonProps>(\n // eslint-disable-next-line\n ({ className, onClick, children, disabled, loading, buttonConfig, modalData, ...props }, ref) => (\n <button\n ref={ref}\n type=\"button\"\n onClick={onClick}\n disabled={disabled || loading}\n className={cn(standardButtonClasses, className)}\n {...props}\n >\n {loading ? 'Loading...' : children}\n </button>\n ),\n);\nDefaultActionButton.displayName = 'DefaultActionButton';\n\nconst DefaultActionDescription = forwardRef<HTMLSpanElement, ActionDescriptionProps>(\n // eslint-disable-next-line\n ({ className, children, modalData, ...props }, ref) => (\n <span ref={ref} className={cn('novacon:sr-only', className)} {...props}>\n {children}\n </span>\n ),\n);\nDefaultActionDescription.displayName = 'DefaultActionDescription';\n\nconst DefaultEmptyState = forwardRef<HTMLDivElement, ModalEmptyProps>(({ children, className, ...props }, ref) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { modalData: _modalData, ...restProps } = props;\n return (\n <div ref={ref} className={className} {...restProps}>\n {children}\n </div>\n );\n});\nDefaultEmptyState.displayName = 'DefaultEmptyState';\n\n/**\n * Props for the ConnectModal component\n */\nexport interface ConnectModalProps extends InitialChains, Pick<ConnectButtonProps, 'store' | 'withImpersonated'> {\n /** Customization options */\n customization?: ConnectModalCustomization;\n}\n\n/**\n * ConnectModal component - Main modal dialog for wallet connection workflow\n *\n * This component provides a comprehensive wallet connection interface with:\n * - Multi-step connection flow with different content types\n * - Network selection and adapter filtering\n * - Support for regular wallets and impersonated wallets\n * - Educational content about wallets and networks\n * - Error handling and retry mechanisms\n * - Full accessibility support with ARIA labels\n * - Keyboard navigation and screen reader compatibility\n *\n * Modal content types:\n * - 'connectors': Main wallet selection screen with network tabs\n * - 'network': Network selection for multi-network wallets\n * - 'connecting': Connection progress and status display\n * - 'about': Educational content about wallets\n * - 'getWallet': Onboarding flow for users without wallets\n * - 'impersonate': Form for wallet address impersonation\n *\n * Visual features:\n * - Responsive design adapting to different screen sizes\n * - Smooth transitions between different content states\n * - Loading states and progress indicators\n * - Clear navigation with back/forward buttons\n * - Contextual action buttons in footer\n *\n * Accessibility features:\n * - Proper ARIA labels and roles for screen readers\n * - Keyboard navigation support with focus management\n * - Semantic HTML structure for better navigation\n * - Screen reader announcements for state changes\n * - High contrast compatible styling\n *\n * @param appChains - Configuration for supported blockchain networks\n * @param solanaRPCUrls - RPC URLs configuration for Solana network\n * @param store - Wallet store instance\n * @param withImpersonated - Whether to show impersonated wallet option\n * @param customization - Customization options for the component\n * @returns JSX element representing the connection modal dialog\n *\n * @example\n * ```tsx\n * <ConnectModal\n * appChains={{\n * [OrbitAdapter.EVM]: [1, 137, 56], // Ethereum, Polygon, BSC\n * [OrbitAdapter.SOLANA]: ['devnet', 'mainnet-beta']\n * }}\n * solanaRPCUrls={{\n * 'mainnet-beta': 'https://api.mainnet-beta.solana.com',\n * 'devnet': 'https://api.devnet.solana.com'\n * }}\n * store={walletStore}\n * withImpersonated\n * customization={{\n * classNames: {\n * title: ({ modalData }) =>\n * modalData.contentType === 'about' ? 'custom-about-title' : ''\n * }\n * }}\n * />\n * ```\n *\n * @public\n */\nexport const ConnectModal = memo<ConnectModalProps>(\n ({ appChains, solanaRPCUrls, store, withImpersonated, customization = {} }) => {\n const {\n isConnectModalOpen,\n setIsConnectModalOpen,\n setConnectModalContentType,\n setActiveConnector,\n setImpersonatedAddress,\n setIsConnected,\n connectModalContentType,\n selectedAdapter,\n setSelectedAdapter,\n isConnected,\n activeConnector,\n impersonatedAddress,\n walletConnectionError,\n } = useNovaConnect();\n\n // Memoize store methods to prevent unnecessary re-renders\n const storeGetters = useMemo(\n () => ({\n getConnectors: store.getState().getConnectors,\n connect: store.getState().connect,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [],\n );\n\n const labels = useNovaConnectLabels();\n\n // Memoize connectors to avoid recalculation on every render\n const connectors = useMemo(() => {\n if (isConnectModalOpen) {\n return storeGetters.getConnectors();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isConnectModalOpen]);\n\n const filteredConnectors = useMemo(\n () => getFilteredConnectors({ connectors: connectors!, selectedAdapter }),\n [connectors, selectedAdapter],\n );\n\n // Convert error to Error object if it's a string\n const normalizedError = useMemo(() => {\n if (!walletConnectionError) return null;\n if (typeof walletConnectionError === 'string') {\n return new Error(walletConnectionError);\n }\n return walletConnectionError;\n }, [walletConnectionError]);\n\n // Memoize modal data for customization context\n const modalData = useMemo<ConnectModalData>(\n () => ({\n contentType: connectModalContentType,\n selectedAdapter,\n activeConnector,\n impersonatedAddress,\n isConnected,\n isOpen: isConnectModalOpen,\n error: normalizedError,\n connectors: connectors!,\n filteredConnectors,\n labels,\n }),\n [\n connectModalContentType,\n selectedAdapter,\n activeConnector,\n impersonatedAddress,\n isConnected,\n isConnectModalOpen,\n normalizedError,\n connectors,\n filteredConnectors,\n labels,\n ],\n );\n\n // Reset modal state when opened\n useEffect(() => {\n if (isConnectModalOpen) {\n setConnectModalContentType('connectors');\n setSelectedAdapter(undefined);\n setActiveConnector(undefined);\n setImpersonatedAddress('');\n setIsConnected(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isConnectModalOpen]);\n\n // Extract customization options\n const { components = {}, classNames = {}, handlers = {}, config = {}, childComponents = {} } = customization;\n\n // Component selections with defaults\n const ModalContainer = components.ModalContainer || DefaultModalContainer;\n const ModalHeader = components.ModalHeader || DefaultModalHeader;\n const InfoButton = components.InfoButton || DefaultInfoButton;\n const Title = components.Title || DefaultTitle;\n const CloseButton = components.CloseButton || DefaultCloseButton;\n const MainContent = components.MainContent || DefaultMainContent;\n const Footer = components.Footer || DefaultFooter;\n const BackButton = components.BackButton || DefaultBackButton;\n const ActionButton = components.ActionButton || DefaultActionButton;\n const ActionDescription = components.ActionDescription || DefaultActionDescription;\n const CustomEmptyState = components.EmptyState || DefaultEmptyState;\n const CustomDialog = components.Dialog || Dialog;\n const CustomDialogContent = components.DialogContent || DialogContent;\n const CustomMotionDiv = components.MotionDiv || motion.div;\n\n /**\n * Gets the appropriate title for the current modal content\n */\n const getTitle = useCallback(() => {\n switch (connectModalContentType) {\n case 'about':\n return labels.aboutWallets;\n case 'getWallet':\n return labels.getWallet;\n case 'connecting':\n if (selectedAdapter && activeConnector && connectors) {\n const connectorName = getConnectorName(connectors[selectedAdapter], activeConnector);\n return connectorName || labels.connectingEllipsis;\n }\n return labels.connectingEllipsis;\n case 'impersonate':\n return labels.connectImpersonatedWallet;\n default:\n return labels.connectWallet;\n }\n }, [connectModalContentType, selectedAdapter, activeConnector, connectors, labels]);\n\n /**\n * Determines the content type to navigate back to\n */\n const goBackContentType = useCallback((): ConnectContentType => {\n switch (connectModalContentType) {\n default:\n return 'connectors';\n }\n }, [connectModalContentType]);\n\n /**\n * Handle modal open/close with custom handler\n */\n const handleOpenChange = useCallback(\n (open: boolean) => {\n if (handlers?.onOpenChange) {\n handlers.onOpenChange(open, modalData);\n } else {\n setIsConnectModalOpen(open);\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [handlers?.onOpenChange, modalData, setIsConnectModalOpen],\n );\n\n /**\n * Handle back navigation with custom handler\n */\n const handleBack = useCallback(() => {\n const originalHandler = () => setConnectModalContentType(goBackContentType());\n\n if (handlers?.onBack) {\n handlers.onBack(modalData, originalHandler);\n } else {\n originalHandler();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [handlers?.onBack, modalData, setConnectModalContentType, goBackContentType]);\n\n /**\n * Handle info button click\n */\n const handleInfoClick = useCallback(() => {\n if (handlers?.onInfoClick) {\n handlers.onInfoClick(modalData);\n } else {\n setConnectModalContentType('about');\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [handlers?.onInfoClick, modalData, setConnectModalContentType]);\n\n /**\n * Generic connection handler\n */\n const handleConnect = useCallback(\n async (walletType: WalletType, adapter: OrbitAdapter) => {\n await storeGetters.connect({\n walletType,\n chainId: getConnectChainId({ appChains, selectedAdapter: adapter, solanaRPCUrls }),\n });\n\n try {\n await waitFor(() => store?.getState().activeWallet?.isConnected);\n setIsConnected(true);\n const modalCloseTime = setTimeout(() => setIsConnectModalOpen(false), 400);\n const isConnectedTimer = setTimeout(() => setIsConnected(false), 500);\n await delay(null, 500);\n clearTimeout(modalCloseTime);\n clearTimeout(isConnectedTimer);\n } catch (error) {\n console.error(error);\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [storeGetters],\n );\n\n /**\n * Handle network selection click\n */\n const handleNetworkClick = useCallback(\n async (adapter: OrbitAdapter, walletType: WalletType) => {\n setSelectedAdapter(adapter);\n setConnectModalContentType('connecting');\n await handleConnect(walletType, adapter);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [handleConnect],\n );\n\n /**\n * Handle connector selection click\n */\n const handleConnectorClick = useCallback(\n (connector: GroupedConnector) => {\n setActiveConnector(formatWalletName(connector.name));\n if (connector.adapters.length === 1) {\n setSelectedAdapter(connector.adapters[0]);\n setConnectModalContentType(\n formatWalletName(connector.name) === 'impersonatedwallet' ? 'impersonate' : 'connecting',\n );\n } else if (selectedAdapter) {\n setConnectModalContentType(\n formatWalletName(connector.name) === 'impersonatedwallet' ? 'impersonate' : 'connecting',\n );\n } else if (formatWalletName(connector.name) === 'impersonatedwallet') {\n setConnectModalContentType('impersonate');\n } else {\n setConnectModalContentType('network');\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [selectedAdapter],\n );\n\n /**\n * Renders the main content based on current modal state\n */\n const renderMainContent = useCallback(() => {\n switch (connectModalContentType) {\n case 'network':\n return (\n <NetworkSelections\n activeConnector={activeConnector}\n connectors={filteredConnectors}\n onClick={handleNetworkClick}\n customization={childComponents.networkSelections}\n />\n );\n case 'connectors':\n return connectors ? (\n <>\n <NetworkTabs\n networks={Object.keys(connectors) as OrbitAdapter[]}\n selectedAdapter={selectedAdapter}\n onSelect={(adapter) => setSelectedAdapter(adapter)}\n customization={childComponents.networkTabs}\n />\n\n <ConnectorsSelections\n isOnlyOneNetwork={Object.keys(connectors).length === 1}\n connectors={filteredConnectors}\n selectedAdapter={selectedAdapter}\n onClick={handleConnectorClick}\n setContentType={setConnectModalContentType}\n appChains={appChains}\n solanaRPCUrls={solanaRPCUrls}\n setIsConnected={setIsConnected}\n setIsOpen={setIsConnectModalOpen}\n waitForPredict={() => store?.getState().activeWallet?.isConnected}\n withImpersonated={withImpersonated}\n store={store}\n customization={childComponents.connectorsSelections}\n />\n </>\n ) : (\n <CustomEmptyState className={classNames.emptyConnectors?.({ modalData })} modalData={modalData}>\n No connectors available\n </CustomEmptyState>\n );\n case 'about':\n return <AboutWallets customization={childComponents.aboutWallets} />;\n case 'getWallet':\n return <GetWallet customization={childComponents.getWallet} />;\n case 'connecting':\n return (\n <Connecting\n selectedAdapter={selectedAdapter}\n connectors={filteredConnectors}\n activeConnector={activeConnector}\n isConnected={isConnected}\n customization={childComponents.connecting}\n />\n );\n case 'impersonate':\n return (\n <ImpersonateForm\n store={store}\n impersonatedAddress={impersonatedAddress}\n setImpersonatedAddress={setImpersonatedAddress}\n customization={childComponents.impersonateForm}\n />\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n connectModalContentType,\n activeConnector,\n filteredConnectors,\n handleNetworkClick,\n childComponents,\n connectors,\n selectedAdapter,\n handleConnectorClick,\n isConnected,\n impersonatedAddress,\n ]);\n\n /**\n * Gets configuration for the bottom action button\n */\n const getBottomButtonConfig = useCallback((): BottomButtonConfig | undefined => {\n switch (connectModalContentType) {\n case 'connectors':\n return {\n title: labels.iDontHaveWallet,\n onClick: () => {\n if (handlers.onActionClick?.connectors) {\n handlers.onActionClick.connectors(modalData);\n } else {\n setConnectModalContentType('getWallet');\n }\n },\n };\n case 'getWallet':\n return {\n title: labels.choseWallet,\n onClick: () => {\n if (handlers.onActionClick?.getWallet) {\n handlers.onActionClick.getWallet(modalData);\n } else {\n window.open(\n networksLinks[selectedAdapter ?? (Object.keys(connectors!)[0] as OrbitAdapter)]?.choseWallet,\n '_blank',\n 'noopener,noreferrer',\n );\n }\n },\n };\n case 'about':\n return {\n title: labels.learnMore,\n onClick: () => {\n if (handlers.onActionClick?.about) {\n handlers.onActionClick.about(modalData);\n } else {\n window.open(\n networksLinks[selectedAdapter ?? (Object.keys(connectors!)[0] as OrbitAdapter)]?.about,\n '_blank',\n 'noopener,noreferrer',\n );\n }\n },\n };\n case 'impersonate':\n return {\n title: labels.connect,\n onClick: async () => {\n if (handlers.onActionClick?.impersonate) {\n await handlers.onActionClick.impersonate(modalData);\n } else {\n const trimmedAddress = impersonatedAddress.trim();\n if (\n walletConnectionError ||\n !trimmedAddress ||\n isAddress(trimmedAddress) ||\n !!store?.getState().activeWallet?.isConnected\n )\n return;\n\n impersonatedHelpers.setImpersonated(trimmedAddress);\n await handleConnect(\n `${selectedAdapter ?? OrbitAdapter.EVM}:impersonatedwallet` as WalletType,\n selectedAdapter ?? OrbitAdapter.EVM,\n );\n setConnectModalContentType('connecting');\n }\n },\n };\n case 'connecting':\n return walletConnectionError && selectedAdapter && activeConnector\n ? {\n title: labels.tryAgain,\n onClick: async () => {\n if (handlers.onActionClick?.connecting) {\n await handlers.onActionClick.connecting(modalData);\n } else {\n await handleConnect(\n getWalletTypeFromConnectorName(selectedAdapter, activeConnector) as WalletType,\n selectedAdapter,\n );\n }\n },\n }\n : undefined;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n connectModalContentType,\n labels,\n handlers,\n modalData,\n selectedAdapter,\n connectors,\n impersonatedAddress,\n walletConnectionError,\n handleConnect,\n activeConnector,\n ]);\n\n const bottomButtonConfig = getBottomButtonConfig();\n\n /**\n * Get action description text\n */\n const getActionDescription = useCallback(() => {\n switch (connectModalContentType) {\n case 'getWallet':\n return 'Opens external wallet selection page';\n case 'about':\n return 'Opens external documentation';\n case 'impersonate':\n return 'Connects with impersonated wallet address';\n case 'connecting':\n return 'Retries wallet connection';\n default:\n return '';\n }\n }, [connectModalContentType]);\n\n return (\n <CustomDialog open={isConnectModalOpen} onOpenChange={handleOpenChange}>\n <CustomDialogContent className={cn('novacon:w-full novacon:sm:max-w-md')}>\n <CustomMotionDiv\n layout\n transition={{\n layout: {\n duration: config.animation?.disabled ? 0 : (config.animation?.layoutDuration ?? 0.0001),\n },\n }}\n >\n <ModalContainer className={classNames.modalContainer?.({ modalData })} modalData={modalData}>\n <ModalHeader className={classNames.header?.({ modalData })} modalData={modalData}>\n <Title className={classNames.title?.({ modalData })} modalData={modalData}>\n {connectModalContentType === 'connectors' && (\n <InfoButton\n className={classNames.infoButton?.({ modalData })}\n onClick={handleInfoClick}\n aria-label={\n config.ariaLabels?.infoButton?.(modalData) || `${labels.learnMore} ${labels.aboutWallets}`\n }\n modalData={modalData}\n />\n )}\n {getTitle()}\n </Title>\n\n <CloseButton\n className={classNames.closeButton?.({ modalData })}\n onClick={() => handleOpenChange(false)}\n aria-label={config.ariaLabels?.closeButton?.(modalData) || labels.closeModal}\n modalData={modalData}\n />\n </ModalHeader>\n\n <MainContent className={classNames.mainContent?.({ modalData })} modalData={modalData}>\n {renderMainContent()}\n </MainContent>\n\n <Footer className={classNames.footer?.({ modalData })} modalData={modalData}>\n <div className=\"novacon:flex novacon:items-center novacon:gap-4\">\n {connectModalContentType !== 'connectors' && (\n <BackButton\n className={classNames.backButton?.({ modalData })}\n onClick={handleBack}\n aria-label={config.ariaLabels?.backButton?.(modalData) || `${labels.back} to previous step`}\n modalData={modalData}\n >\n {labels.back}\n </BackButton>\n )}\n </div>\n {bottomButtonConfig && (\n <div className=\"novacon:flex novacon:items-center novacon:gap-3\">\n <ActionButton\n className={classNames.actionButton?.({ modalData, buttonConfig: bottomButtonConfig })}\n onClick={bottomButtonConfig.onClick}\n disabled={bottomButtonConfig.disabled}\n loading={bottomButtonConfig.loading}\n aria-describedby=\"bottom-action-description\"\n modalData={modalData}\n buttonConfig={bottomButtonConfig}\n >\n {bottomButtonConfig.title}\n </ActionButton>\n <ActionDescription\n id=\"bottom-action-description\"\n className={classNames.actionDescription?.({ modalData })}\n modalData={modalData}\n >\n {getActionDescription()}\n </ActionDescription>\n </div>\n )}\n </Footer>\n </ModalContainer>\n </CustomMotionDiv>\n </CustomDialogContent>\n </CustomDialog>\n );\n },\n);\n\nConnectModal.displayName = 'ConnectModal';\n","/**\n * @file This file contains the `StatusIcon` component, a customizable animated status icon with comprehensive styling control.\n */\n\nimport { cn } from '@tuwaio/nova-core';\nimport { type Easing, type HTMLMotionProps, motion, type TargetAndTransition, type Variants } from 'framer-motion';\nimport { ComponentPropsWithoutRef, ComponentType, forwardRef, ReactNode, useMemo } from 'react';\n\nimport { useNovaConnectLabels } from '../../hooks/useNovaConnectLabels';\n\n// --- Default Motion Variants ---\nconst DEFAULT_MOTION_PATH_VARIANTS: Variants = {\n hidden: { pathLength: 0, opacity: 0 },\n visible: { pathLength: 1, opacity: 1 },\n};\n\nconst DEFAULT_CONTAINER_VARIANTS: Variants = {\n initial: { scale: 0.8, opacity: 0 },\n animate: { scale: 1, opacity: 1 },\n exit: { scale: 0.8, opacity: 0 },\n};\n\n// --- Types for Customization ---\ntype CustomSvgProps = {\n pathData: string;\n className?: string;\n 'aria-hidden'?: boolean;\n focusable?: boolean;\n};\n\ntype CustomPathProps = {\n pathData: string;\n variants?: Variants;\n className?: string;\n strokeLinecap?: 'butt' | 'round' | 'square';\n strokeLinejoin?: 'miter' | 'bevel' | 'round';\n strokeWidth?: string | number;\n};\n\ntype CustomContentProps = {\n txStatus: 'succeed' | 'failed' | 'replaced';\n colorVar: string;\n pathData: string;\n finalAriaLabel: string;\n};\n\n/**\n * Customization options for StatusIcon component\n */\nexport type StatusIconCustomization = {\n /** Override container element props */\n containerProps?: Partial<\n Omit<HTMLMotionProps<'div'>, 'initial' | 'animate' | 'exit' | 'variants' | 'transition' | 'style'>\n >;\n /** Custom components */\n components?: {\n /** Custom SVG component */\n Svg?: ComponentType<CustomSvgProps>;\n /** Custom path component */\n Path?: ComponentType<CustomPathProps>;\n /** Custom content component (wraps everything) */\n Content?: ComponentType<CustomContentProps>;\n };\n /** Custom class name generators */\n classNames?: {\n /** Function to generate container classes */\n container?: (params: { txStatus: 'succeed' | 'failed' | 'replaced'; colorVar: string }) => string;\n /** Function to generate SVG classes */\n svg?: (params: { txStatus: 'succeed' | 'failed' | 'replaced'; colorVar: string }) => string;\n /** Function to generate path classes */\n path?: (params: { txStatus: 'succeed' | 'failed' | 'replaced' }) => string;\n };\n /** Custom animation variants */\n variants?: {\n /** Container motion variants */\n container?: Variants;\n /** Path motion variants */\n path?: Variants;\n };\n /** Custom animation configuration */\n animation?: {\n /** Container animation configuration */\n container?: {\n /** Animation duration in seconds */\n duration?: number;\n /** Animation easing curve */\n ease?: Easing | Easing[];\n /** Animation delay in seconds */\n delay?: number;\n };\n /** Path animation configuration */\n path?: {\n /** Animation duration in seconds */\n duration?: number;\n /** Animation easing curve */\n ease?: Easing | Easing[];\n /** Animation delay in seconds */\n delay?: number;\n };\n };\n /** Custom SVG properties */\n svg?: {\n /** Custom viewBox */\n viewBox?: string;\n /** Custom stroke width */\n strokeWidth?: string | number;\n /** Custom stroke linecap */\n strokeLinecap?: 'butt' | 'round' | 'square';\n /** Custom stroke linejoin */\n strokeLinejoin?: 'miter' | 'bevel' | 'round';\n };\n /** Configuration options */\n config?: {\n /** Whether to disable animations */\n disableAnimation?: boolean;\n /** Whether to reduce motion for accessibility */\n reduceMotion?: boolean;\n };\n};\n\nexport interface StatusIconProps\n extends Omit<\n HTMLMotionProps<'div'>,\n 'children' | 'initial' | 'animate' | 'exit' | 'variants' | 'transition' | 'style'\n > {\n /** Transaction status type */\n txStatus: 'succeed' | 'failed' | 'replaced';\n /** Color variable name (without --tuwa- prefix) */\n colorVar: string;\n /** SVG path data */\n children: ReactNode;\n /** Custom aria-label for accessibility */\n 'aria-label'?: string;\n /** Custom CSS classes for the container */\n className?: string;\n /** Customization options */\n customization?: StatusIconCustomization;\n}\n\n// --- Default Sub-Components ---\nconst DefaultSvg = ({\n pathData,\n className,\n 'aria-hidden': ariaHidden = true,\n focusable = false,\n ...props\n}: CustomSvgProps & Omit<ComponentPropsWithoutRef<'svg'>, 'style'>) => {\n return (\n <svg\n className={cn('novacon:w-4 novacon:h-4', className)}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n stroke=\"currentColor\"\n aria-hidden={ariaHidden}\n focusable={focusable ? 'true' : 'false'}\n {...props}\n >\n <DefaultPath pathData={pathData} />\n </svg>\n );\n};\n\nconst DefaultPath = ({\n pathData,\n variants = DEFAULT_MOTION_PATH_VARIANTS,\n className,\n strokeLinecap = 'round',\n strokeLinejoin = 'round',\n strokeWidth = 2,\n ...props\n}: CustomPathProps & Omit<ComponentPropsWithoutRef<typeof motion.path>, 'style'>) => {\n return (\n <motion.path\n d={pathData}\n strokeLinecap={strokeLinecap}\n strokeLinejoin={strokeLinejoin}\n strokeWidth={strokeWidth}\n variants={variants}\n initial=\"hidden\"\n animate=\"visible\"\n transition={{\n duration: 0.5,\n ease: 'easeInOut',\n delay: 0.1,\n }}\n className={className}\n {...props}\n />\n );\n};\n\nconst DefaultContent = ({ pathData, finalAriaLabel }: Pick<CustomContentProps, 'pathData' | 'finalAriaLabel'>) => {\n return <DefaultSvg pathData={pathData} aria-label={finalAriaLabel} />;\n};\n\n/**\n * A highly customizable animated status icon component with comprehensive styling and animation options.\n * Provides visual feedback for transaction states with smooth animations and full accessibility support.\n *\n * Features:\n * - Animated container and path with Framer Motion\n * - Comprehensive customization for all visual elements and animations\n * - Full accessibility support with ARIA labels and proper roles\n * - Status-based styling with CSS custom properties\n * - Configurable animation timing and easing\n * - Reduced motion support for accessibility\n * - Custom SVG properties and path styling\n * - Performance-optimized with memoized calculations\n *\n * @example Basic usage\n * ```tsx\n * <StatusIcon txStatus=\"succeed\" colorVar=\"success\">\n * m4.5 12.75 6 6 9-13.5\n * </StatusIcon>\n * ```\n *\n * @example With full customization\n * ```tsx\n * <StatusIcon\n * txStatus=\"failed\"\n * colorVar=\"error\"\n * customization={{\n * classNames: {\n * container: ({ txStatus }) => `custom-status-${txStatus} novacon:shadow-lg`,\n * svg: () => \"custom-svg-styling\",\n * },\n * animation: {\n * container: { duration: 0.5, ease: \"easeOut\" },\n * path: { duration: 1, delay: 0.2 },\n * },\n * variants: {\n * container: {\n * initial: { rotate: -180, scale: 0 },\n * animate: { rotate: 0, scale: 1 },\n * },\n * },\n * svg: {\n * strokeWidth: 3,\n * strokeLinecap: \"square\",\n * },\n * config: {\n * reduceMotion: false,\n * },\n * }}\n * >\n * M6 18 18 6M6 6l12 12\n * </StatusIcon>\n * ```\n */\nexport const StatusIcon = forwardRef<HTMLDivElement, StatusIconProps>(\n ({ txStatus, colorVar, children, 'aria-label': ariaLabel, className, customization, ...props }, ref) => {\n const labels = useNovaConnectLabels();\n\n // Extract path data from children\n const pathData = useMemo(() => {\n return typeof children === 'string' ? children : '';\n }, [children]);\n\n // Extract custom components\n const { Svg = DefaultSvg, Path = DefaultPath, Content = DefaultContent } = customization?.components ?? {};\n\n // Memoize the default aria-label based on status\n const defaultAriaLabel = useMemo(() => {\n switch (txStatus) {\n case 'succeed':\n return labels.successIcon;\n case 'failed':\n return labels.errorIcon;\n case 'replaced':\n return labels.replacedIcon;\n default:\n return labels.statusIcon;\n }\n }, [txStatus, labels]);\n\n // Memoize the final aria-label\n const finalAriaLabel = useMemo(() => {\n return ariaLabel || defaultAriaLabel;\n }, [ariaLabel, defaultAriaLabel]);\n\n // Generate container classes\n const containerClasses = useMemo(() => {\n if (customization?.classNames?.container) {\n return customization.classNames.container({ txStatus, colorVar });\n }\n return cn(\n 'novacon:w-6 novacon:h-6 novacon:rounded-full novacon:flex novacon:items-center novacon:justify-center novacon:shadow-sm',\n `novacon:text-[var(--tuwa-${colorVar}-text)] novacon:bg-[var(--tuwa-bg-primary)]`,\n className,\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customization?.classNames?.container, txStatus, colorVar, className]);\n\n // Generate SVG classes\n const svgClasses = useMemo(() => {\n if (customization?.classNames?.svg) {\n return customization.classNames.svg({ txStatus, colorVar });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customization?.classNames?.svg, txStatus, colorVar]);\n\n // Generate path classes\n const pathClasses = useMemo(() => {\n if (customization?.classNames?.path) {\n return customization.classNames.path({ txStatus });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customization?.classNames?.path, txStatus]);\n\n // Resolve animation variants\n const containerVariants = useMemo(() => {\n if (customization?.variants?.container) {\n return customization.variants.container;\n }\n\n return DEFAULT_CONTAINER_VARIANTS;\n }, [customization?.variants?.container]);\n\n const pathVariants = useMemo(() => {\n if (customization?.variants?.path) {\n return customization.variants.path;\n }\n\n return DEFAULT_MOTION_PATH_VARIANTS;\n }, [customization?.variants?.path]);\n\n // Resolve animation configuration\n const containerAnimation = useMemo(() => {\n const config = customization?.animation?.container;\n return {\n duration: config?.duration ?? 0.3,\n ease: config?.ease ?? [0.4, 0, 0.2, 1],\n delay: config?.delay ?? 0,\n };\n }, [customization?.animation?.container]);\n\n const pathAnimation = useMemo(() => {\n const config = customization?.animation?.path;\n return {\n duration: config?.duration ?? 0.5,\n ease: config?.ease ?? 'easeInOut',\n delay: config?.delay ?? 0.1,\n };\n }, [customization?.animation?.path]);\n\n // Check for reduced motion\n const shouldReduceMotion = customization?.config?.reduceMotion ?? false;\n const isAnimationDisabled = customization?.config?.disableAnimation ?? false;\n\n // Create SVG element with custom props\n const svgElement = useMemo(() => {\n if (customization?.components?.Svg) {\n return <Svg pathData={pathData} className={svgClasses} aria-hidden={true} focusable={false} />;\n }\n\n return (\n <svg\n className={cn('novacon:w-4 novacon:h-4', svgClasses)}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox={customization?.svg?.viewBox ?? '0 0 24 24'}\n strokeWidth={customization?.svg?.strokeWidth ?? '2'}\n stroke=\"currentColor\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <Path\n pathData={pathData}\n variants={isAnimationDisabled || shouldReduceMotion ? {} : pathVariants}\n className={pathClasses}\n strokeLinecap={customization?.svg?.strokeLinecap ?? 'round'}\n strokeLinejoin={customization?.svg?.strokeLinejoin ?? 'round'}\n strokeWidth={customization?.svg?.strokeWidth ?? 2}\n {...(!isAnimationDisabled && !shouldReduceMotion\n ? {\n initial: 'hidden',\n animate: 'visible',\n transition: pathAnimation,\n }\n : {})}\n />\n </svg>\n );\n }, [\n customization?.components?.Svg,\n customization?.svg,\n Svg,\n Path,\n pathData,\n svgClasses,\n pathClasses,\n isAnimationDisabled,\n shouldReduceMotion,\n pathVariants,\n pathAnimation,\n ]);\n\n // Base props without animation properties\n const baseProps = useMemo(\n () => ({\n ...customization?.containerProps,\n ...props,\n ref,\n key: txStatus,\n className: containerClasses,\n\n role: 'img' as const,\n 'aria-label': finalAriaLabel,\n }),\n [customization?.containerProps, props, ref, txStatus, containerClasses, finalAriaLabel],\n );\n\n // Conditional rendering with proper animation types\n if (isAnimationDisabled || shouldReduceMotion) {\n return (\n <motion.div {...baseProps}>\n {customization?.components?.Content ? (\n <Content txStatus={txStatus} colorVar={colorVar} pathData={pathData} finalAriaLabel={finalAriaLabel} />\n ) : (\n svgElement\n )}\n </motion.div>\n );\n }\n\n return (\n <motion.div\n {...baseProps}\n // eslint-disable-next-line\n key={baseProps?.key ?? \"status\"}\n initial={containerVariants.initial as TargetAndTransition}\n animate={containerVariants.animate as TargetAndTransition}\n exit={containerVariants.exit as TargetAndTransition}\n transition={containerAnimation}\n >\n {customization?.components?.Content ? (\n <Content txStatus={txStatus} colorVar={colorVar} pathData={pathData} finalAriaLabel={finalAriaLabel} />\n ) : (\n svgElement\n )}\n </motion.div>\n );\n },\n);\n\nStatusIcon.displayName = 'StatusIcon';\n","/**\n * @file ConnectedContent component displays wallet connection status with transaction monitoring and comprehensive customization options.\n */\n\nimport { ChevronArrowWithAnim, cn } from '@tuwaio/nova-core';\nimport { Transaction, TransactionStatus } from '@tuwaio/pulsar-core';\nimport React, {\n ComponentPropsWithoutRef,\n ComponentType,\n forwardRef,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\n\nimport { useGetWalletNameAndAvatar, useWalletNativeBalance } from '../../hooks';\nimport { ButtonTxStatus, useNovaConnect } from '../../hooks/useNovaConnect';\nimport { useNovaConnectLabels } from '../../hooks/useNovaConnectLabels';\nimport { WalletAvatar, WalletAvatarCustomization } from '../WalletAvatar';\nimport { ConnectButtonProps } from './ConnectButton';\nimport { StatusIcon, type StatusIconCustomization } from './StatusIcon';\n\n// --- Types for Customization ---\ntype StatusDisplayData = {\n displayName: ReactNode;\n avatarIcon: ReactNode;\n ariaLabel: string;\n};\n\ntype CustomBalanceContainerProps = {\n formattedBalance: string;\n labels: Record<string, string>;\n className?: string;\n 'aria-label'?: string;\n};\n\ntype CustomMainContentProps = {\n statusDisplay: StatusDisplayData;\n connectedButtonStatus: ButtonTxStatus;\n isConnectedModalOpen: boolean;\n withBalance: boolean;\n labels: Record<string, string>;\n className?: string;\n};\n\ntype CustomLoadingAnimationProps = {\n connectedButtonStatus: ButtonTxStatus;\n className?: string;\n};\n\ntype CustomBalanceDividerProps = {\n className?: string;\n};\n\n/**\n * Customization options for ConnectedContent component\n */\nexport type ConnectedContentCustomization = {\n /** Override root container props */\n containerProps?: Partial<ComponentPropsWithoutRef<'div'>>;\n /** Custom components */\n components?: {\n /** Custom balance container component */\n BalanceContainer?: ComponentType<CustomBalanceContainerProps>;\n /** Custom main content wrapper component */\n MainContent?: ComponentType<CustomMainContentProps>;\n /** Custom loading animation component */\n LoadingAnimation?: ComponentType<CustomLoadingAnimationProps>;\n /** Custom balance divider component */\n BalanceDivider?: ComponentType<CustomBalanceDividerProps>;\n };\n /** Custom class name generators */\n classNames?: {\n /** Function to generate container classes */\n container?: (params: { connectedButtonStatus: ButtonTxStatus; withBalance: boolean }) => string;\n /** Function to generate balance container classes */\n balanceContainer?: (params: { formattedBalance: string }) => string;\n /** Function to generate balance text classes */\n balanceText?: (params: { formattedBalance: string }) => string;\n /** Function to generate balance divider classes */\n balanceDivider?: () => string;\n /** Function to generate main content classes */\n mainContent?: (params: { withBalance: boolean }) => string;\n /** Function to generate loading animation classes */\n loadingAnimation?: (params: { connectedButtonStatus: ButtonTxStatus }) => string;\n };\n /** Customization options for child components */\n childCustomizations?: {\n /** WalletAvatar customization for idle and loading states */\n walletAvatar?: WalletAvatarCustomization;\n /** StatusIcon customization for transaction states */\n statusIcon?: {\n /** StatusIcon customization for success state */\n succeed?: StatusIconCustomization;\n /** StatusIcon customization for failed state */\n failed?: StatusIconCustomization;\n /** StatusIcon customization for replaced state */\n replaced?: StatusIconCustomization;\n };\n };\n /** Custom event handlers */\n handlers?: {\n /** Custom handler for balance click events */\n onBalanceClick?: (formattedBalance: string, event: React.MouseEvent<HTMLDivElement>) => void;\n };\n /** Configuration options */\n config?: {\n /** Custom timeout for auto-reset status (in milliseconds) */\n statusResetTimeout?: number;\n /** Whether to show loading animation */\n showLoadingAnimation?: boolean;\n /** Whether to show balance divider */\n showBalanceDivider?: boolean;\n };\n};\n\nexport interface ConnectedContentProps extends Pick<ConnectButtonProps, 'transactionPool' | 'store' | 'withBalance'> {\n /** Custom CSS classes for the container */\n className?: string;\n /** Custom aria-label for the container */\n 'aria-label'?: string;\n /** Customization options */\n customization?: ConnectedContentCustomization;\n}\n\n// --- Default Sub-Components ---\nconst DefaultBalanceContainer = ({ formattedBalance, labels, className, ...props }: CustomBalanceContainerProps) => {\n return (\n <div\n className={cn(\n 'novacon:relative novacon:hidden novacon:sm:flex novacon:items-center novacon:pr-2 novacon:gap-2 novacon:text-[var(--tuwa-text-secondary)]',\n className,\n )}\n role=\"text\"\n aria-label={`${labels.walletBalance}: ${formattedBalance}`}\n {...props}\n >\n <span className=\"novacon:font-semibold novacon:mr-1\" aria-hidden=\"true\">\n {formattedBalance}\n </span>\n </div>\n );\n};\n\nconst DefaultMainContent = ({\n statusDisplay,\n isConnectedModalOpen,\n withBalance,\n className,\n}: CustomMainContentProps) => {\n return (\n <div\n className={cn(\n 'novacon:flex novacon:items-center novacon:space-x-2',\n { 'novacon:sm:pl-2': withBalance },\n className,\n )}\n >\n {statusDisplay.avatarIcon}\n <span className=\"novacon:text-[var(--tuwa-text-primary)] novacon:font-medium novacon:hidden novacon:min-[480px]:block\">\n {statusDisplay.displayName}\n </span>\n <div aria-hidden=\"true\">\n <ChevronArrowWithAnim isOpen={isConnectedModalOpen} className=\"novacon:xs:hidden\" />\n </div>\n </div>\n );\n};\n\nconst DefaultLoadingAnimation = ({ connectedButtonStatus, className }: CustomLoadingAnimationProps) => {\n if (connectedButtonStatus !== 'loading') return null;\n\n return (\n <div\n className={cn(\n \"novacon:w-full novacon:h-full novacon:rounded-full novacon:absolute novacon:inset-0 novacon:before:content-[''] novacon:after:content-[''] novacon:before:rounded-full novacon:after:rounded-full novacon:before:absolute novacon:after:absolute novacon:before:inset-0 novacon:after:inset-0 novacon:before:u-shadow-inner-base novacon:after:u-shadow-inset-arc novacon:after:animate-rotate novacon:after:duration-2000 novacon:after:ease-linear novacon:after:infinite\",\n className,\n )}\n aria-hidden=\"true\"\n />\n );\n};\n\nconst DefaultBalanceDivider = ({ className }: CustomBalanceDividerProps) => {\n return (\n <div\n className={cn(\n 'novacon:absolute novacon:top-1/2 novacon:right-0 novacon:transform novacon:-translate-y-1/2 novacon:h-4 novacon:w-[1px] novacon:bg-[var(--tuwa-border-primary)]',\n className,\n )}\n aria-hidden=\"true\"\n />\n );\n};\n\n/**\n * ConnectedContent displays the wallet connection status with transaction monitoring capabilities.\n * Provides comprehensive customization for all visual elements, event handlers, and child components.\n *\n * Features:\n * - Real-time transaction status monitoring with visual feedback\n * - Comprehensive customization for all UI elements and behaviors\n * - Full accessibility support with ARIA labels and roles\n * - Responsive design with mobile-first approach\n * - Status-based styling and animations\n * - Balance display with optional divider\n * - Loading animation for pending transactions\n * - Customizable child components (WalletAvatar, StatusIcon)\n * - Event handler customization for enhanced interactivity\n * - Auto-reset functionality for transaction status\n *\n * @example Basic usage\n * ```tsx\n * <ConnectedContent\n * transactionPool={transactionPool}\n * withBalance={true}\n * store={walletStore}\n * />\n * ```\n *\n * @example With full customization\n * ```tsx\n * <ConnectedContent\n * transactionPool={transactionPool}\n * withBalance={true}\n * store={walletStore}\n * customization={{\n * classNames: {\n * container: ({ connectedButtonStatus }) =>\n * `custom-container ${connectedButtonStatus === 'loading' ? 'loading' : ''}`,\n * balanceContainer: () => \"custom-balance bg-blue-500\",\n * },\n * components: {\n * LoadingAnimation: ({ className }) =>\n * <div className={cn(\"custom-spinner\", className)} />,\n * },\n * handlers: {\n * onBalanceClick: (balance, event) => console.log(\"Balance clicked:\", balance),\n * },\n * config: {\n * statusResetTimeout: 3000,\n * showLoadingAnimation: true,\n * },\n * childCustomizations: {\n * walletAvatar: {\n * classNames: {\n * container: () => \"custom-avatar-border\",\n * },\n * },\n * statusIcon: {\n * succeed: {\n * classNames: {\n * container: () => \"custom-success-icon\",\n * },\n * },\n * failed: {\n * classNames: {\n * container: () => \"custom-error-icon\",\n * },\n * },\n * },\n * },\n * }}\n * />\n * ```\n */\nexport const ConnectedContent = forwardRef<HTMLDivElement, ConnectedContentProps>(\n ({ transactionPool, withBalance, store, className, 'aria-label': ariaLabel, customization, ...props }, ref) => {\n const labels = useNovaConnectLabels();\n\n const { isConnectedModalOpen, setConnectedButtonStatus, connectedButtonStatus, activeWallet } = useNovaConnect();\n\n const { ensAvatar, ensNameAbbreviated } = useGetWalletNameAndAvatar({\n activeWallet,\n store,\n abbreviateSymbols: 6,\n maxNameLength: 30,\n autoRetry: false,\n retryDelay: 3000,\n });\n\n const { balance } = useWalletNativeBalance({ store, activeWallet });\n\n const formattedBalance = balance?.value ? parseFloat(balance.value).toFixed(3) : '0.000';\n\n const prevTxPoolRef = useRef<Transaction[]>(\n Object.values(transactionPool ?? {}).filter(\n (tx) => tx.from.toLowerCase() === activeWallet?.address.toLowerCase(),\n ),\n );\n\n // Extract custom components and config\n const {\n BalanceContainer = DefaultBalanceContainer,\n MainContent = DefaultMainContent,\n LoadingAnimation = DefaultLoadingAnimation,\n BalanceDivider = DefaultBalanceDivider,\n } = customization?.components ?? {};\n\n const {\n statusResetTimeout = 2000,\n showLoadingAnimation = true,\n showBalanceDivider = true,\n } = customization?.config ?? {};\n\n // Reset status on mount and cleanup\n useEffect(() => {\n setConnectedButtonStatus('idle');\n return () => setConnectedButtonStatus('idle');\n }, [setConnectedButtonStatus]);\n\n // Monitor transaction pool changes\n useEffect(() => {\n if (!activeWallet || !activeWallet?.isConnected) {\n return;\n }\n\n const currentPool =\n Object.values(transactionPool ?? {}).filter(\n (tx) => tx.from.toLowerCase() === activeWallet?.address.toLowerCase(),\n ) || [];\n const prevPool = prevTxPoolRef.current || [];\n let newStatus: ButtonTxStatus = 'idle';\n\n const isAnyTxLoading = currentPool.some((tx) => tx.pending);\n\n if (isAnyTxLoading) {\n newStatus = 'loading';\n } else {\n for (const currentTx of currentPool) {\n const prevTx = prevPool.find((tx) => tx.txKey === currentTx.txKey);\n\n if (currentTx.status && currentTx.status !== prevTx?.status) {\n switch (currentTx.status) {\n case TransactionStatus.Success:\n newStatus = 'succeed';\n break;\n case TransactionStatus.Replaced:\n newStatus = 'replaced';\n break;\n case TransactionStatus.Failed:\n newStatus = 'failed';\n break;\n }\n }\n }\n }\n\n if (newStatus === 'loading' || newStatus !== 'idle') {\n setConnectedButtonStatus(newStatus);\n }\n\n prevTxPoolRef.current = currentPool;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [transactionPool, activeWallet?.address, activeWallet?.isConnected, setConnectedButtonStatus]);\n\n // Auto-reset status after showing success/error states\n useEffect(() => {\n if (['succeed', 'failed', 'replaced'].includes(connectedButtonStatus)) {\n const timer = setTimeout(() => {\n setConnectedButtonStatus('idle');\n }, statusResetTimeout);\n return () => clearTimeout(timer);\n }\n }, [connectedButtonStatus, statusResetTimeout, setConnectedButtonStatus]);\n\n // Get status-specific aria label\n const getStatusAriaLabel = useCallback(\n (status: ButtonTxStatus) => {\n switch (status) {\n case 'succeed':\n return labels.transactionSuccess;\n case 'failed':\n return labels.transactionError;\n case 'replaced':\n return labels.transactionReplaced;\n case 'loading':\n return labels.transactionLoading;\n default:\n return labels.walletAddress;\n }\n },\n [labels],\n );\n\n // Memoized status display configuration\n const statusDisplay = useMemo(() => {\n if (!activeWallet) return { displayName: null, avatarIcon: null, ariaLabel: '' };\n\n const baseAriaLabel = `${labels.transactionStatus}: ${getStatusAriaLabel(connectedButtonStatus)}`;\n\n switch (connectedButtonStatus) {\n case 'succeed':\n return {\n displayName: labels.success,\n avatarIcon: (\n <StatusIcon\n txStatus=\"succeed\"\n colorVar=\"success\"\n aria-label={labels.transactionSuccess}\n customization={customization?.childCustomizations?.statusIcon?.succeed}\n >\n m4.5 12.75 6 6 9-13.5\n </StatusIcon>\n ),\n ariaLabel: baseAriaLabel,\n };\n case 'failed':\n return {\n displayName: labels.error,\n avatarIcon: (\n <StatusIcon\n txStatus=\"failed\"\n colorVar=\"error\"\n aria-label={labels.transactionError}\n customization={customization?.childCustomizations?.statusIcon?.failed}\n >\n M6 18 18 6M6 6l12 12\n </StatusIcon>\n ),\n ariaLabel: baseAriaLabel,\n };\n case 'replaced':\n return {\n displayName: labels.replaced,\n avatarIcon: (\n <StatusIcon\n txStatus=\"replaced\"\n colorVar=\"text\"\n aria-label={labels.transactionReplaced}\n customization={customization?.childCustomizations?.statusIcon?.replaced}\n >\n M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0\n 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99\n </StatusIcon>\n ),\n ariaLabel: baseAriaLabel,\n };\n case 'loading':\n return {\n displayName: ensNameAbbreviated,\n avatarIcon: (\n <div className=\"novacon:relative novacon:p-1\">\n {showLoadingAnimation && (\n <LoadingAnimation\n connectedButtonStatus={connectedButtonStatus}\n className={customization?.classNames?.loadingAnimation?.({ connectedButtonStatus })}\n />\n )}\n <WalletAvatar\n address={activeWallet?.address}\n ensAvatar={ensAvatar}\n className=\"novacon:relative novacon:z-2\"\n aria-label={`${labels.walletAvatar}: ${ensNameAbbreviated}`}\n customization={customization?.childCustomizations?.walletAvatar}\n />\n </div>\n ),\n ariaLabel: `${labels.transactionLoading}. ${labels.walletAddress}: ${ensNameAbbreviated}`,\n };\n case 'idle':\n default:\n return {\n displayName: ensNameAbbreviated,\n avatarIcon: (\n <WalletAvatar\n address={activeWallet?.address}\n ensAvatar={ensAvatar}\n className=\"novacon:relative novacon:z-2\"\n aria-label={`${labels.walletAvatar}: ${ensNameAbbreviated}`}\n customization={customization?.childCustomizations?.walletAvatar}\n />\n ),\n ariaLabel: `${labels.walletAddress}: ${ensNameAbbreviated}`,\n };\n }\n }, [\n connectedButtonStatus,\n ensNameAbbreviated,\n activeWallet,\n ensAvatar,\n labels,\n getStatusAriaLabel,\n customization,\n showLoadingAnimation,\n LoadingAnimation,\n ]);\n\n // Event handlers\n const handleBalanceClick = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n if (customization?.handlers?.onBalanceClick) {\n customization?.handlers?.onBalanceClick(formattedBalance, event);\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [customization?.handlers?.onBalanceClick, formattedBalance],\n );\n\n // Generate container classes\n const containerClasses = useMemo(() => {\n if (customization?.classNames?.container) {\n return customization.classNames.container({ connectedButtonStatus, withBalance: Boolean(withBalance) });\n }\n return cn('novacon:flex novacon:items-center novacon:gap-2 novacon:sm:gap-3', className);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customization?.classNames?.container, connectedButtonStatus, withBalance, className]);\n\n // Merge container props\n const containerProps = useMemo(\n () => ({\n ...customization?.containerProps,\n ...props,\n ref,\n className: containerClasses,\n role: 'status',\n 'aria-live': 'polite' as const,\n 'aria-label': ariaLabel || statusDisplay.ariaLabel,\n }),\n [customization, props, ref, containerClasses, ariaLabel, statusDisplay.ariaLabel],\n );\n\n if (!activeWallet) return null;\n\n return (\n <div {...containerProps}>\n {/* Balance Display */}\n {withBalance && (\n <div onClick={handleBalanceClick}>\n <BalanceContainer\n formattedBalance={formattedBalance}\n labels={labels}\n className={customization?.classNames?.balanceContainer?.({ formattedBalance })}\n />\n {showBalanceDivider && <BalanceDivider className={customization?.classNames?.balanceDivider?.()} />}\n </div>\n )}\n\n {/* Main Content */}\n <MainContent\n statusDisplay={statusDisplay}\n connectedButtonStatus={connectedButtonStatus}\n isConnectedModalOpen={isConnectedModalOpen}\n withBalance={Boolean(withBalance)}\n labels={labels}\n className={customization?.classNames?.mainContent?.({ withBalance: Boolean(withBalance) })}\n />\n </div>\n );\n },\n);\n\nConnectedContent.displayName = 'ConnectedContent';\n","/**\n * @file This file contains the `WaitForConnectionContent` component, a customizable connection prompt with comprehensive styling control and animation options.\n */\n\nimport { cn } from '@tuwaio/nova-core';\nimport { type Easing, type HTMLMotionProps, motion, type TargetAndTransition, type Variants } from 'framer-motion';\nimport { ComponentPropsWithoutRef, ComponentType, forwardRef, ReactNode, useMemo } from 'react';\n\nimport { useNovaConnect } from '../../hooks/useNovaConnect';\nimport { useNovaConnectLabels } from '../../hooks/useNovaConnectLabels';\n\n// --- Default Motion Variants ---\nconst DEFAULT_PATH_ANIMATION_VARIANTS: Variants = {\n hidden: { pathLength: 0, opacity: 0 },\n visible: { pathLength: 1, opacity: 1 },\n};\n\nconst DEFAULT_CONTAINER_VARIANTS: Variants = {\n initial: { opacity: 0, y: 10 },\n animate: { opacity: 1, y: 0 },\n exit: { opacity: 0, y: -10 },\n};\n\n// --- Types for Customization ---\ntype CustomIconProps = {\n pathData: string;\n className?: string;\n 'aria-hidden'?: boolean;\n focusable?: boolean;\n};\n\ntype CustomPathProps = {\n pathData: string;\n variants?: Variants;\n className?: string;\n strokeLinecap?: 'butt' | 'round' | 'square';\n strokeLinejoin?: 'miter' | 'bevel' | 'round';\n strokeWidth?: string | number;\n};\n\ntype CustomTextProps = {\n text: string;\n className?: string;\n 'aria-hidden'?: boolean;\n role?: string;\n};\n\ntype CustomContentProps = {\n icon: ReactNode;\n text: ReactNode;\n isConnected: boolean;\n finalAriaLabel: string;\n};\n\n/**\n * Customization options for WaitForConnectionContent component\n */\nexport type WaitForConnectionContentCustomization = {\n /** Override container element props */\n containerProps?: Partial<Omit<HTMLMotionProps<'div'>, 'initial' | 'animate' | 'exit' | 'variants' | 'transition'>>;\n /** Custom components */\n components?: {\n /** Custom icon SVG component */\n Icon?: ComponentType<CustomIconProps>;\n /** Custom path component */\n Path?: ComponentType<CustomPathProps>;\n /** Custom text component */\n Text?: ComponentType<CustomTextProps>;\n /** Custom content component (wraps everything) */\n Content?: ComponentType<CustomContentProps>;\n };\n /** Custom class name generators */\n classNames?: {\n /** Function to generate container classes */\n container?: (params: { isConnected: boolean }) => string;\n /** Function to generate icon classes */\n icon?: (params: { isConnected: boolean }) => string;\n /** Function to generate path classes */\n path?: () => string;\n /** Function to generate text classes */\n text?: (params: { isConnected: boolean }) => string;\n };\n /** Custom animation variants */\n variants?: {\n /** Container motion variants */\n container?: Variants;\n /** Path motion variants */\n path?: Variants;\n };\n /** Custom animation configuration */\n animation?: {\n /** Container animation configuration */\n container?: {\n /** Animation duration in seconds */\n duration?: number;\n /** Animation easing curve */\n ease?: Easing | Easing[];\n /** Animation delay in seconds */\n delay?: number;\n };\n /** Path animation configuration */\n path?: {\n /** Animation duration in seconds */\n duration?: number;\n /** Animation easing curve */\n ease?: Easing | Easing[];\n /** Animation delay in seconds */\n delay?: number;\n };\n };\n /** Custom SVG properties */\n svg?: {\n /** Custom viewBox */\n viewBox?: string;\n /** Custom stroke width */\n strokeWidth?: string | number;\n /** Custom stroke linecap */\n strokeLinecap?: 'butt' | 'round' | 'square';\n /** Custom stroke linejoin */\n strokeLinejoin?: 'miter' | 'bevel' | 'round';\n /** Custom wallet icon path */\n pathData?: string;\n };\n /** Configuration options */\n config?: {\n /** Whether to disable animations */\n disableAnimation?: boolean;\n /** Whether to reduce motion for accessibility */\n reduceMotion?: boolean;\n /** Whether to hide the component when connected */\n hideWhenConnected?: boolean;\n /** Custom text to display */\n customText?: string;\n };\n};\n\nexport interface WaitForConnectionContentProps\n extends Omit<\n HTMLMotionProps<'div'>,\n 'children' | 'initial' | 'animate' | 'exit' | 'variants' | 'transition' | 'style'\n > {\n /** Custom CSS classes for the container */\n className?: string;\n /** Custom aria-label for the container */\n 'aria-label'?: string;\n /** Customization options */\n customization?: WaitForConnectionContentCustomization;\n}\n\n// --- Default Sub-Components ---\nconst DefaultIcon = ({\n pathData,\n className,\n 'aria-hidden': ariaHidden = true,\n focusable = false,\n ...props\n}: CustomIconProps & Omit<ComponentPropsWithoutRef<'svg'>, 'style'>) => {\n return (\n <svg\n className={cn('novacon:w-5 novacon:h-5', className)}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-hidden={ariaHidden}\n focusable={focusable ? 'true' : 'false'}\n {...props}\n >\n <DefaultPath pathData={pathData} />\n </svg>\n );\n};\n\nconst DefaultPath = ({\n pathData,\n variants = DEFAULT_PATH_ANIMATION_VARIANTS,\n className,\n strokeLinecap = 'round',\n strokeLinejoin = 'round',\n strokeWidth = 1.5,\n ...props\n}: CustomPathProps & Omit<ComponentPropsWithoutRef<typeof motion.path>, 'style'>) => {\n return (\n <motion.path\n d={pathData}\n strokeLinecap={strokeLinecap}\n strokeLinejoin={strokeLinejoin}\n strokeWidth={strokeWidth}\n variants={variants}\n initial=\"hidden\"\n animate=\"visible\"\n transition={{\n duration: 0.5,\n ease: 'easeInOut',\n delay: 0.1,\n }}\n className={className}\n {...props}\n />\n );\n};\n\nconst DefaultText = ({\n text,\n className,\n 'aria-hidden': ariaHidden = true,\n role = 'text',\n ...props\n}: CustomTextProps & Omit<ComponentPropsWithoutRef<'span'>, 'style'>) => {\n return (\n <span className={cn('novacon:font-medium', className)} role={role} aria-hidden={ariaHidden} {...props}>\n {text}\n </span>\n );\n};\n\nconst DefaultContent = ({ icon, text }: Pick<CustomContentProps, 'icon' | 'text'>) => {\n return (\n <>\n {icon}\n {text}\n </>\n );\n};\n\n/**\n * A highly customizable connection prompt component with extensive styling options and accessibility features.\n * Displays an animated wallet icon and text prompting users to connect their wallet, with comprehensive customization support.\n *\n * Features:\n * - Animated container and wallet icon with Framer Motion\n * - Comprehensive customization for all visual elements and animations\n * - Full accessibility support with ARIA labels and proper roles\n * - Configurable animation timing and easing\n * - Reduced motion support for accessibility\n * - Custom SVG properties and path styling\n * - Conditional rendering based on connection status\n * - Performance-optimized with memoized calculations\n * - Custom text and icon support\n *\n * @example Basic usage\n * ```tsx\n * <WaitForConnectionContent />\n * ```\n *\n * @example With full customization\n * ```tsx\n * <WaitForConnectionContent\n * customization={{\n * classNames: {\n * container: ({ isConnected }) =>\n * `custom-container ${isConnected ? 'connected' : 'disconnected'}`,\n * text: () => \"custom-text-styling text-blue-500\",\n * },\n * animation: {\n * container: { duration: 0.8, ease: \"easeOut\" },\n * path: { duration: 1.2, delay: 0.3 },\n * },\n * variants: {\n * container: {\n * initial: { scale: 0, rotate: -180 },\n * animate: { scale: 1, rotate: 0 },\n * },\n * },\n * svg: {\n * strokeWidth: 2,\n * strokeLinecap: \"square\",\n * pathData: \"M12 2L2 7v10l10 5 10-5V7L12 2z\", // Custom wallet icon\n * },\n * config: {\n * customText: \"Please Connect Your Wallet\",\n * hideWhenConnected: true,\n * reduceMotion: false,\n * },\n * }}\n * />\n * ```\n */\nexport const WaitForConnectionContent = forwardRef<HTMLDivElement, WaitForConnectionContentProps>(\n ({ className, 'aria-label': ariaLabel, customization, ...props }, ref) => {\n const labels = useNovaConnectLabels();\n const { activeWallet } = useNovaConnect();\n\n // Memoize connection status check for better performance\n const isConnected = useMemo(() => Boolean(activeWallet?.isConnected), [activeWallet?.isConnected]);\n\n // Extract custom components\n const {\n Icon = DefaultIcon,\n Path = DefaultPath,\n Text = DefaultText,\n Content = DefaultContent,\n } = customization?.components ?? {};\n\n // Configuration options\n const {\n hideWhenConnected = true,\n customText,\n disableAnimation = false,\n reduceMotion = false,\n } = customization?.config ?? {};\n\n // Memoize the text to display\n const displayText = useMemo(() => {\n return customText || labels.connectWallet;\n }, [customText, labels.connectWallet]);\n\n // Memoize the default aria-label\n const defaultAriaLabel = useMemo(() => {\n return labels.connectWallet;\n }, [labels.connectWallet]);\n\n // Memoize the final aria-label\n const finalAriaLabel = useMemo(() => {\n return ariaLabel || defaultAriaLabel;\n }, [ariaLabel, defaultAriaLabel]);\n\n // Default wallet icon path\n const defaultPathData =\n 'M21 12a2.25 2.25 0 0 0-2.25-2.25H15a3 3 0 1 1-6 0H5.25A2.25 2.25 0 0 0 3 12m18 0v6a2.25 2.25 0 0 1-2.25 2.25H5.25A2.25 2.25 0 0 1 3 18v-6m18 0V9M3 12V9m18 0a2.25 2.25 0 0 0-2.25-2.25H5.25A2.25 2.25 0 0 0 3 9m18 0V6a2.25 2.25 0 0 0-2.25-2.25H5.25A2.25 2.25 0 0 0 3 6v3';\n\n // Get path data\n const pathData = useMemo(() => {\n return customization?.svg?.pathData || defaultPathData;\n }, [customization?.svg?.pathData, defaultPathData]);\n\n // Generate container classes\n const containerClasses = useMemo(() => {\n if (customization?.classNames?.container) {\n return customization.classNames.container({ isConnected });\n }\n return cn('novacon:flex novacon:items-center novacon:gap-2', className);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customization?.classNames?.container, isConnected, className]);\n\n // Generate icon classes\n const iconClasses = useMemo(() => {\n if (customization?.classNames?.icon) {\n return customization.classNames.icon({ isConnected });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customization?.classNames?.icon, isConnected]);\n\n // Generate text classes\n const textClasses = useMemo(() => {\n if (customization?.classNames?.text) {\n return customization.classNames.text({ isConnected });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customization?.classNames?.text, isConnected]);\n\n // Generate path classes\n const pathClasses = useMemo(() => {\n if (customization?.classNames?.path) {\n return customization.classNames.path();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customization?.classNames?.path]);\n\n // Resolve animation variants\n const containerVariants = useMemo(() => {\n if (customization?.variants?.container) {\n return customization.variants.container;\n }\n\n return DEFAULT_CONTAINER_VARIANTS;\n }, [customization?.variants?.container]);\n\n const pathVariants = useMemo(() => {\n if (customization?.variants?.path) {\n return customization.variants.path;\n }\n\n return DEFAULT_PATH_ANIMATION_VARIANTS;\n }, [customization?.variants?.path]);\n\n // Resolve animation configuration\n const containerAnimation = useMemo(() => {\n const config = customization?.animation?.container;\n\n return {\n duration: config?.duration ?? 0.3,\n ease: config?.ease ?? [0.4, 0, 0.2, 1],\n delay: config?.delay ?? 0,\n };\n }, [customization?.animation?.container]);\n\n const pathAnimation = useMemo(() => {\n const config = customization?.animation?.path;\n\n return {\n duration: config?.duration ?? 0.5,\n ease: config?.ease ?? 'easeInOut',\n delay: config?.delay ?? 0.1,\n };\n }, [customization?.animation?.path]);\n\n // Create icon element\n const iconElement = useMemo(() => {\n if (customization?.components?.Icon) {\n return <Icon pathData={pathData} className={iconClasses} aria-hidden={true} focusable={false} />;\n }\n\n return (\n <svg\n className={cn('novacon:w-5 novacon:h-5', iconClasses)}\n fill=\"none\"\n viewBox={customization?.svg?.viewBox ?? '0 0 24 24'}\n stroke=\"currentColor\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <Path\n pathData={pathData}\n variants={disableAnimation || reduceMotion ? {} : pathVariants}\n className={pathClasses}\n strokeLinecap={customization?.svg?.strokeLinecap ?? 'round'}\n strokeLinejoin={customization?.svg?.strokeLinejoin ?? 'round'}\n strokeWidth={customization?.svg?.strokeWidth ?? 1.5}\n {...(!disableAnimation && !reduceMotion\n ? {\n initial: 'hidden',\n animate: 'visible',\n transition: pathAnimation,\n }\n : {})}\n />\n </svg>\n );\n }, [\n customization?.svg,\n customization?.components?.Icon,\n Icon,\n Path,\n pathData,\n iconClasses,\n pathClasses,\n disableAnimation,\n reduceMotion,\n pathVariants,\n pathAnimation,\n ]);\n\n // Create text element\n const textElement = useMemo(() => {\n return <Text text={displayText} className={textClasses} aria-hidden={true} role=\"text\" />;\n }, [Text, displayText, textClasses]);\n\n // Base props without animation properties\n const baseProps = useMemo(\n () => ({\n ...customization?.containerProps,\n ...props,\n ref,\n className: containerClasses,\n role: 'img' as const,\n 'aria-label': finalAriaLabel,\n }),\n [customization, props, ref, containerClasses, finalAriaLabel],\n );\n\n // Don't render if wallet is already connected and hideWhenConnected is true\n if (isConnected && hideWhenConnected) return null;\n\n // Conditional rendering with proper animation types\n if (disableAnimation || reduceMotion) {\n return (\n <motion.div {...baseProps}>\n {customization?.components?.Content ? (\n <Content icon={iconElement} text={textElement} isConnected={isConnected} finalAriaLabel={finalAriaLabel} />\n ) : (\n <DefaultContent icon={iconElement} text={textElement} />\n )}\n </motion.div>\n );\n }\n\n return (\n <motion.div\n {...baseProps}\n initial={containerVariants.initial as TargetAndTransition}\n animate={containerVariants.animate as TargetAndTransition}\n exit={containerVariants.exit as TargetAndTransition}\n transition={containerAnimation}\n >\n {customization?.components?.Content ? (\n <Content icon={iconElement} text={textElement} isConnected={isConnected} finalAriaLabel={finalAriaLabel} />\n ) : (\n <DefaultContent icon={iconElement} text={textElement} />\n )}\n </motion.div>\n );\n },\n);\n\nWaitForConnectionContent.displayName = 'WaitForConnectionContent';\n","import { cn } from '@tuwaio/nova-core';\nimport { Transaction, TransactionPool, TxAdapter } from '@tuwaio/pulsar-core';\nimport { motion } from 'framer-motion';\nimport React, { ComponentPropsWithoutRef, ComponentType, forwardRef, memo, useCallback, useMemo } from 'react';\n\nimport { NovaConnectProviderProps, useNovaConnect } from '../../hooks/useNovaConnect';\nimport { useNovaConnectLabels } from '../../hooks/useNovaConnectLabels';\nimport { InitialChains } from '../../types';\nimport { ChainSelector, ChainSelectorCustomization } from '../Chains/ChainSelector';\nimport { ConnectedModal, ConnectedModalCustomization } from '../ConnectedModal/ConnectedModal';\nimport { ConnectModal, ConnectModalCustomization } from '../ConnectModal/ConnectModal';\nimport { ConnectedContent, ConnectedContentCustomization } from './ConnectedContent';\nimport { WaitForConnectionContent, WaitForConnectionContentCustomization } from './WaitForConnectionContent';\n\n/**\n * Connect button data for customization context\n */\nexport interface ConnectButtonData {\n /** Whether wallet is connected */\n isConnected: boolean;\n /** Whether balance should be shown */\n withBalance?: boolean;\n /** Whether chain selector should be shown */\n withChain?: boolean;\n /** Whether impersonated wallets are enabled */\n withImpersonated?: boolean;\n /** Current labels from i18n */\n labels: ReturnType<typeof useNovaConnectLabels>;\n /** Active wallet information */\n activeWallet: ReturnType<typeof useNovaConnect>['activeWallet'];\n}\n\n// --- Component Props Types ---\ntype NavigationProps = {\n className?: string;\n children: React.ReactNode;\n 'aria-label'?: string;\n role?: string;\n buttonData: ConnectButtonData;\n} & React.RefAttributes<HTMLElement>;\n\ntype ContainerProps = {\n className?: string;\n children: React.ReactNode;\n buttonData: ConnectButtonData;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype ButtonContainerProps = {\n className?: string;\n children: React.ReactNode;\n buttonData: ConnectButtonData;\n} & React.RefAttributes<HTMLDivElement>;\n\ntype ButtonProps = {\n className?: string;\n children: React.ReactNode;\n onClick: () => void;\n onKeyDown: (event: React.KeyboardEvent) => void;\n 'aria-label'?: string;\n 'aria-pressed'?: boolean;\n disabled?: boolean;\n buttonData: ConnectButtonData;\n} & React.RefAttributes<HTMLButtonElement>;\n\n/**\n * Customization options for ConnectButton component\n */\nexport type ConnectButtonCustomization = {\n /** Custom components */\n components?: {\n /** Custom navigation wrapper */\n Navigation?: ComponentType<NavigationProps>;\n /** Custom container div */\n Container?: ComponentType<ContainerProps>;\n /** Custom button container with motion */\n ButtonContainer?: ComponentType<ButtonContainerProps>;\n /** Custom button element */\n Button?: ComponentType<ButtonProps>;\n /** Custom motion div */\n MotionDiv?: ComponentType<ComponentPropsWithoutRef<typeof motion.div>>;\n };\n /** Custom class name generators */\n classNames?: {\n /** Function to generate navigation classes */\n navigation?: (params: { buttonData: ConnectButtonData }) => string;\n /** Function to generate container classes */\n container?: (params: { buttonData: ConnectButtonData }) => string;\n /** Function to generate button container classes */\n buttonContainer?: (params: { buttonData: ConnectButtonData }) => string;\n /** Function to generate button classes */\n button?: (params: { buttonData: ConnectButtonData }) => string;\n };\n /** Custom event handlers */\n handlers?: {\n /** Custom button click handler */\n onButtonClick?: (buttonData: ConnectButtonData, originalHandler: () => void) => void;\n /** Custom key down handler */\n onKeyDown?: (\n event: React.KeyboardEvent,\n buttonData: ConnectButtonData,\n originalHandler: (event: React.KeyboardEvent) => void,\n ) => void;\n };\n /** Configuration options */\n config?: {\n /** Custom ARIA labels */\n ariaLabels?: {\n navigation?: (buttonData: ConnectButtonData) => string;\n button?: (buttonData: ConnectButtonData) => string;\n };\n /** Animation configuration */\n animation?: {\n /** Layout transition duration */\n layoutDuration?: number;\n /** Layout transition easing */\n layoutEase?: [number, number, number, number];\n /** Disable animations */\n disabled?: boolean;\n };\n };\n /** Child component customizations */\n childComponents?: {\n /** ChainSelector customization */\n chainSelector?: ChainSelectorCustomization;\n /** ConnectedContent customization */\n connectedContent?: ConnectedContentCustomization;\n /** WaitForConnectionContent customization */\n waitForConnectionContent?: WaitForConnectionContentCustomization;\n /** ConnectModal customization */\n connectModal?: ConnectModalCustomization;\n /** ConnectedModal customization */\n connectedModal?: ConnectedModalCustomization;\n };\n};\n\n// --- Default Sub-Components ---\nconst DefaultNavigation = forwardRef<HTMLElement, NavigationProps>(\n ({ className, children, buttonData, ...props }, ref) => (\n <nav ref={ref} role=\"navigation\" aria-label={buttonData.labels.walletControls} className={className} {...props}>\n {children}\n </nav>\n ),\n);\nDefaultNavigation.displayName = 'DefaultNavigation';\n\nconst DefaultContainer = forwardRef<HTMLDivElement, ContainerProps>(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ({ className, children, buttonData, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('novacon:flex novacon:items-center novacon:gap-2 novacon:sm:gap-3', className)}\n {...props}\n >\n {children}\n </div>\n ),\n);\nDefaultContainer.displayName = 'DefaultContainer';\n\nconst DefaultButtonContainer = forwardRef<HTMLDivElement, ButtonContainerProps>(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ({ className, children, buttonData, ...props }, ref) => (\n <div ref={ref} className={cn('novacon:relative', className)} {...props}>\n {children}\n </div>\n ),\n);\nDefaultButtonContainer.displayName = 'DefaultButtonContainer';\n\nconst DefaultButton = forwardRef<HTMLButtonElement, ButtonProps>(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ({ className, children, onClick, onKeyDown, buttonData, disabled, ...props }, ref) => (\n <button\n ref={ref}\n type=\"button\"\n onClick={onClick}\n onKeyDown={onKeyDown}\n disabled={disabled}\n className={className}\n role=\"button\"\n tabIndex={0}\n {...props}\n >\n {children}\n </button>\n ),\n);\nDefaultButton.displayName = 'DefaultButton';\n\n/**\n * Base props for ConnectButton component\n */\nexport type ConnectButtonProps = InitialChains &\n Pick<NovaConnectProviderProps, 'store'> & {\n /** CSS classes to apply to the button */\n className?: string;\n /** Transaction pool for pending transactions display */\n transactionPool?: TransactionPool<Transaction>;\n /** Pulsar adapter(s) for transaction handling */\n pulsarAdapter?: TxAdapter<Transaction> | TxAdapter<Transaction>[];\n /** Show wallet balance in button */\n withBalance?: boolean;\n /** Show chain selector when connected */\n withChain?: boolean;\n /** Enable impersonated wallet functionality */\n withImpersonated?: boolean;\n /** Customization options */\n customization?: ConnectButtonCustomization;\n };\n\n/**\n * ConnectButton component - Main wallet connection button with full customization\n *\n * This component provides a comprehensive wallet connection interface with:\n * - Connect/disconnect wallet functionality\n * - Balance display when connected\n * - Chain selector for multi-network support\n * - Transaction pool integration\n * - Impersonated wallet support\n * - Full accessibility features\n * - Comprehensive customization system\n *\n * Features:\n * - Responsive design with smooth animations\n * - Keyboard navigation support\n * - Screen reader compatibility\n * - Proper ARIA labels and roles\n * - Loading states and error handling\n * - Memoized performance optimizations\n *\n * Accessibility:\n * - Semantic HTML structure with proper roles\n * - ARIA labels for screen readers\n * - Keyboard navigation with Enter and Space\n * - Focus management and visual indicators\n * - High contrast compatible styling\n *\n * @param appChains - Configuration for supported blockchain networks\n * @param solanaRPCUrls - RPC URLs configuration for Solana network\n * @param store - Wallet store instance\n * @param className - Additional CSS classes for the button\n * @param transactionPool - Transaction pool for pending transactions\n * @param pulsarAdapter - Pulsar adapter(s) for transaction handling\n * @param withBalance - Whether to show wallet balance\n * @param withChain - Whether to show chain selector\n * @param withImpersonated - Whether to enable impersonated wallets\n * @param customization - Customization options\n * @returns JSX element representing the connection button\n *\n * @example\n * ```tsx\n * <ConnectButton\n * appChains={{\n * [OrbitAdapter.EVM]: [1, 137, 56],\n * [OrbitAdapter.SOLANA]: ['mainnet-beta', 'devnet']\n * }}\n * solanaRPCUrls={{\n * 'mainnet-beta': 'https://api.mainnet-beta.solana.com'\n * }}\n * store={walletStore}\n * withBalance\n * withChain\n * withImpersonated\n * customization={{\n * classNames: {\n * button: ({ buttonData }) =>\n * buttonData.isConnected ? 'custom-connected-style' : 'custom-disconnected-style'\n * }\n * }}\n * />\n * ```\n *\n * @public\n */\nexport const ConnectButton = memo<ConnectButtonProps>(\n ({\n solanaRPCUrls,\n appChains,\n transactionPool,\n pulsarAdapter,\n withImpersonated,\n withBalance,\n withChain,\n store,\n className,\n customization = {},\n }) => {\n const labels = useNovaConnectLabels();\n const { setIsConnectedModalOpen, setIsConnectModalOpen, activeWallet } = useNovaConnect();\n\n const isConnected = useMemo(() => Boolean(activeWallet?.isConnected), [activeWallet?.isConnected]);\n\n // Memoize button data for customization context\n const buttonData = useMemo<ConnectButtonData>(\n () => ({\n isConnected,\n withBalance,\n withChain,\n withImpersonated,\n labels,\n activeWallet,\n }),\n [isConnected, withBalance, withChain, withImpersonated, labels, activeWallet],\n );\n\n // Extract customization options\n const { components = {}, classNames = {}, handlers = {}, config = {}, childComponents = {} } = customization;\n\n // Component selections with defaults\n const Navigation = components.Navigation || DefaultNavigation;\n const Container = components.Container || DefaultContainer;\n const ButtonContainer = components.ButtonContainer || DefaultButtonContainer;\n const Button = components.Button || DefaultButton;\n const CustomMotionDiv = components.MotionDiv || motion.div;\n\n /**\n * Handle button click with custom handler support\n */\n const handleConnectButtonClick = useCallback(() => {\n const originalHandler = () => {\n if (isConnected) {\n setIsConnectedModalOpen(true);\n } else {\n setIsConnectModalOpen(true);\n }\n };\n\n if (handlers.onButtonClick) {\n handlers.onButtonClick(buttonData, originalHandler);\n } else {\n originalHandler();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isConnected, buttonData]);\n\n /**\n * Handle key down events with custom handler support\n */\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n const originalHandler = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleConnectButtonClick();\n }\n };\n\n if (handlers.onKeyDown) {\n handlers.onKeyDown(event, buttonData, originalHandler);\n } else {\n originalHandler(event);\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [handleConnectButtonClick, buttonData],\n );\n\n // Memoize button aria-label for better performance\n const buttonAriaLabel = useMemo(() => {\n if (config.ariaLabels?.button) {\n return config.ariaLabels.button(buttonData);\n }\n\n if (isConnected) {\n return `${labels.walletConnected}. ${labels.openWalletModal}`;\n }\n return `${labels.walletNotConnected}. ${labels.connectWallet}`;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isConnected, labels, config.ariaLabels?.button, buttonData]);\n\n // Memoize navigation aria-label\n const navigationAriaLabel = useMemo(() => {\n if (config.ariaLabels?.navigation) {\n return config.ariaLabels.navigation(buttonData);\n }\n return labels.walletControls;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [labels, config.ariaLabels?.navigation, buttonData]);\n\n // Memoize button class names for better performance\n const buttonClasses = useMemo(() => {\n const customClasses = classNames.button?.({ buttonData });\n if (customClasses) return customClasses;\n\n return cn(\n 'novacon:cursor-pointer novacon:inline-flex novacon:items-center novacon:justify-center novacon:gap-2 novacon:px-3 novacon:min-h-[42px] novacon:py-1',\n 'novacon:rounded-xl novacon:font-medium novacon:text-sm novacon:transition-all novacon:duration-200',\n 'novacon:hover:scale-[1.02] novacon:active:scale-[0.98]',\n 'novacon:focus:outline-none novacon:focus:ring-2 novacon:focus:ring-offset-2',\n 'novacon:focus:ring-offset-[var(--tuwa-bg-primary)]',\n 'novacon:disabled:opacity-50 novacon:disabled:cursor-not-allowed novacon:disabled:hover:scale-100',\n isConnected\n ? [\n 'novacon:bg-[var(--tuwa-bg-secondary)]',\n 'novacon:text-[var(--tuwa-text-primary)]',\n 'novacon:hover:bg-[var(--tuwa-bg-muted)]',\n 'novacon:focus:ring-[var(--tuwa-text-secondary)]',\n 'novacon:border novacon:border-[var(--tuwa-border-primary)]',\n ]\n : [\n 'novacon:bg-gradient-to-r',\n 'novacon:from-[var(--tuwa-button-gradient-from)]',\n 'novacon:to-[var(--tuwa-button-gradient-to)]',\n 'novacon:text-[var(--tuwa-text-on-accent)]',\n 'novacon:hover:from-[var(--tuwa-button-gradient-from-hover)]',\n 'novacon:hover:to-[var(--tuwa-button-gradient-to-hover)]',\n 'novacon:focus:ring-[var(--tuwa-text-accent)]',\n ],\n className,\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isConnected, className, classNames.button, buttonData]);\n\n // Memoize animation configuration\n const animationConfig = useMemo(() => {\n if (config.animation?.disabled) {\n return {};\n }\n\n return {\n layout: true,\n transition: {\n layout: {\n duration: config.animation?.layoutDuration ?? 0.2,\n ease: config.animation?.layoutEase ?? [0.1, 0.1, 0.2, 1],\n },\n },\n };\n }, [config.animation?.disabled, config.animation?.layoutDuration, config.animation?.layoutEase]);\n\n return (\n <Navigation\n className={classNames.navigation?.({ buttonData })}\n aria-label={navigationAriaLabel}\n buttonData={buttonData}\n >\n <Container className={classNames.container?.({ buttonData })} buttonData={buttonData}>\n {/* Chain Selector - only show when connected and withChain is enabled */}\n {withChain && isConnected && (\n <ChainSelector\n store={store}\n appChains={appChains}\n solanaRPCUrls={solanaRPCUrls}\n customization={childComponents.chainSelector}\n />\n )}\n\n {/* Main Connect Button */}\n <CustomMotionDiv {...animationConfig}>\n <ButtonContainer className={classNames.buttonContainer?.({ buttonData })} buttonData={buttonData}>\n <Button\n onClick={handleConnectButtonClick}\n onKeyDown={handleKeyDown}\n className={buttonClasses}\n aria-label={buttonAriaLabel}\n aria-pressed={isConnected}\n buttonData={buttonData}\n >\n {isConnected ? (\n <ConnectedContent\n store={store}\n withBalance={withBalance}\n transactionPool={transactionPool}\n customization={childComponents.connectedContent}\n />\n ) : (\n <WaitForConnectionContent customization={childComponents.waitForConnectionContent} />\n )}\n </Button>\n </ButtonContainer>\n </CustomMotionDiv>\n\n {/* Hidden modals - these will be shown based on application state */}\n <ConnectModal\n store={store}\n withImpersonated={withImpersonated}\n solanaRPCUrls={solanaRPCUrls}\n appChains={appChains}\n customization={childComponents.connectModal}\n />\n <ConnectedModal\n solanaRPCUrls={solanaRPCUrls}\n appChains={appChains}\n transactionPool={transactionPool}\n pulsarAdapter={pulsarAdapter}\n store={store}\n customization={childComponents.connectedModal}\n />\n </Container>\n </Navigation>\n );\n },\n);\n\nConnectButton.displayName = 'ConnectButton';\n","import React, { ComponentPropsWithoutRef, ComponentType, memo, useMemo } from 'react';\n\nimport { NovaConnectProviderProps } from '../../hooks/useNovaConnect';\nimport { NovaConnectProvider, NovaConnectProviderCustomization } from '../../providers';\nimport {\n ConnectButton as InternalConnectButton,\n ConnectButtonCustomization,\n ConnectButtonProps as InternalConnectButtonProps,\n} from './ConnectButton';\n\n// Re-export types for external use\nexport type { NovaConnectProviderCustomization } from '../../providers';\nexport type { ConnectButtonCustomization, ConnectButtonData } from './ConnectButton';\n\n/**\n * Root customization data for the complete NovaConnectButton with provider\n */\nexport interface NovaConnectButtonWithProviderData {\n /** Store instance */\n store: NovaConnectProviderProps['store'];\n /** Current labels configuration */\n labels?: NovaConnectProviderProps['labels'];\n /** Whether wallet is connected */\n isConnected: boolean;\n /** Current provider state */\n providerState: {\n /** Modal states */\n isConnectModalOpen: boolean;\n isConnectedModalOpen: boolean;\n isChainsListOpen: boolean;\n isChainsListOpenMobile: boolean;\n /** Connection states */\n connectedButtonStatus: string;\n isConnected: boolean;\n /** Active states */\n selectedAdapter: unknown;\n activeConnector: string | undefined;\n activeWallet: unknown;\n };\n}\n\n// --- Component Props Types ---\ntype RootContainerProps = {\n className?: string;\n children: React.ReactNode;\n providerData: NovaConnectButtonWithProviderData;\n} & React.RefAttributes<HTMLDivElement>;\n\n/**\n * Complete customization system for NovaConnectButton with Provider\n */\nexport type NovaConnectButtonWithProviderCustomization = {\n /** Custom components for root level */\n components?: {\n /** Custom root container wrapper */\n RootContainer?: ComponentType<RootContainerProps>;\n /** Custom NovaConnectProvider component */\n Provider?: ComponentType<ComponentPropsWithoutRef<typeof NovaConnectProvider>>;\n /** Custom ConnectButton component */\n ConnectButton?: ComponentType<ComponentPropsWithoutRef<typeof InternalConnectButton>>;\n };\n /** Custom class name generators for root */\n classNames?: {\n /** Function to generate root container classes */\n rootContainer?: (params: { providerData: NovaConnectButtonWithProviderData }) => string;\n };\n /** Provider customization options - full NovaConnectProviderCustomization support */\n provider?: NovaConnectProviderCustomization;\n /** ConnectButton customization options */\n connectButton?: ConnectButtonCustomization;\n /** Configuration options */\n config?: {\n /** Whether to wrap in root container */\n useRootContainer?: boolean;\n /** Custom provider props override */\n providerPropsOverride?: Partial<NovaConnectProviderProps>;\n /** Custom connect button props override */\n connectButtonPropsOverride?: Partial<InternalConnectButtonProps>;\n };\n};\n\n// --- Default Sub-Components ---\nconst DefaultRootContainer = ({ className, children, ...props }: RootContainerProps) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { providerData: _providerData, ...restProps } = props;\n return (\n <div className={className} {...restProps}>\n {children}\n </div>\n );\n};\n\n/**\n * Props for the complete NovaConnectButton component with provider integration\n */\nexport type NovaConnectButtonProps = Omit<InternalConnectButtonProps, 'store'> &\n Pick<NovaConnectProviderProps, 'store' | 'labels'> & {\n /** Complete customization options */\n customization?: NovaConnectButtonWithProviderCustomization;\n };\n\n/**\n * NovaConnectButton - Complete wallet connection solution with provider integration\n *\n * This is the main entry point component that combines NovaConnectProvider with ConnectButton\n * to provide a complete wallet connection solution. It includes:\n *\n * Features:\n * - Complete provider context integration with full customization support\n * - Full wallet connection functionality\n * - Chain selector with multi-network support\n * - Transaction pool integration and monitoring\n * - Balance display and wallet avatar\n * - Impersonated wallet support\n * - Comprehensive accessibility features\n * - Complete customization system for all levels\n * - Memoized performance optimizations\n *\n * Provider Features:\n * - Wallet state management with custom handlers\n * - Modal state coordination\n * - Chain selection state\n * - Transaction status tracking\n * - Connection error handling with custom ErrorsProvider\n * - Impersonation support\n * - Custom labels merging and transformation\n * - Custom initialization and lifecycle hooks\n * - Custom context value transformation\n * - Custom provider tree rendering\n *\n * Button Features:\n * - Connect/disconnect wallet functionality\n * - Balance display when connected\n * - Chain selector for multi-network support\n * - Transaction pool integration\n * - Loading states and animations\n * - Keyboard navigation support\n * - Screen reader compatibility\n *\n * Customization System:\n * - Root container customization\n * - Full NovaConnectProvider customization (components, labels, errors, initialization, contextValue, rendering)\n * - ConnectButton customization (styling, components, handlers)\n * - All child component customizations (modals, selectors, content)\n * - Event handler overrides at every level\n * - Class name and style generators\n * - Configuration options\n *\n * Accessibility:\n * - Semantic HTML structure with proper roles\n * - ARIA labels and descriptions throughout\n * - Keyboard navigation with Enter and Space\n * - Focus management and visual indicators\n * - Screen reader announcements\n * - High contrast compatible styling\n *\n * @param appChains - Configuration for supported EVM blockchain networks (viem chain objects)\n * @param solanaRPCUrls - RPC URLs configuration for Solana network\n * @param store - Wallet store instance for state management\n * @param labels - Internationalization labels for all text content\n * @param className - Additional CSS classes for the button\n * @param transactionPool - Transaction pool for pending transactions display\n * @param pulsarAdapter - Pulsar adapter(s) for transaction handling\n * @param withBalance - Whether to show wallet balance in button\n * @param withChain - Whether to show chain selector when connected\n * @param withImpersonated - Whether to enable impersonated wallet functionality\n * @param customization - Complete customization options for all components\n * @returns JSX element representing the complete wallet connection interface\n *\n * @example\n * ```tsx\n * // Basic usage\n * <NovaConnectButton\n * store={walletStore}\n * appChains={[mainnet, polygon, arbitrum]} // EVM viem chain objects\n * solanaRPCUrls={{\n * 'mainnet': 'https://api.mainnet-beta.solana.com'\n * }}\n * withBalance\n * withChain\n * withImpersonated\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With comprehensive customization\n * <NovaConnectButton\n * store={walletStore}\n * appChains={[mainnet, polygon, arbitrum]}\n * solanaRPCUrls={solanaRPCConfig}\n * labels={customLabels}\n * withBalance\n * withChain\n * customization={{\n * // Root level customization\n * classNames: {\n * rootContainer: ({ providerData }) =>\n * `custom-root ${providerData.isConnected ? 'connected' : 'disconnected'}`\n * },\n * // Full provider customization\n * provider: {\n * // Custom components\n * components: {\n * LabelsProvider: CustomLabelsProvider,\n * ErrorsProvider: CustomErrorsProvider\n * },\n * // Labels customization\n * labels: {\n * merge: (defaultLabels, userLabels) => ({ ...defaultLabels, ...userLabels }),\n * transform: (mergedLabels, context) => ({\n * ...mergedLabels,\n * connectWallet: context.isConnected ? 'Reconnect' : 'Connect Wallet'\n * })\n * },\n * // Error handling customization\n * errors: {\n * position: 'bottom-right',\n * autoClose: 5000,\n * components: {\n * ToastError: CustomToastError\n * }\n * },\n * // Initialization hooks\n * initialization: {\n * onConnectionStateChange: (isConnected, wallet, context) => {\n * console.log('Connection changed:', isConnected, wallet);\n * },\n * onStoreSubscribed: (context) => {\n * console.log('Store subscribed:', context);\n * }\n * },\n * // Context value transformation\n * contextValue: {\n * transform: (defaultValue, context) => ({\n * ...defaultValue,\n * customProperty: 'custom value'\n * })\n * },\n * // Custom provider tree\n * rendering: {\n * providerTree: (defaultTree, components, context) => (\n * <div className=\"custom-provider-wrapper\">\n * {components.ErrorsProvider}\n * {components.LabelsProvider}\n * </div>\n * )\n * }\n * },\n * // ConnectButton customization\n * connectButton: {\n * classNames: {\n * button: ({ buttonData }) =>\n * buttonData.isConnected ? 'btn-connected' : 'btn-connect'\n * },\n * childComponents: {\n * chainSelector: {\n * classNames: {\n * trigger: () => 'custom-chain-selector'\n * }\n * },\n * connectedContent: {\n * childCustomizations: {\n * walletAvatar: {\n * size: 'large',\n * showBorder: true\n * }\n * }\n * }\n * }\n * }\n * }}\n * />\n * ```\n *\n * @public\n */\nexport const NovaConnectButton = memo<NovaConnectButtonProps>(\n ({ store, labels, customization = {}, ...connectButtonProps }) => {\n // Extract customization options\n const {\n components = {},\n classNames = {},\n provider: providerCustomization,\n connectButton: connectButtonCustomization,\n config = {},\n } = customization;\n\n // Component selections with defaults\n const RootContainer = components.RootContainer || DefaultRootContainer;\n const CustomProvider = components.Provider || NovaConnectProvider;\n const CustomConnectButton = components.ConnectButton || InternalConnectButton;\n\n // Memoize provider data for customization context\n const providerData = useMemo<NovaConnectButtonWithProviderData>(\n () => ({\n store,\n labels,\n isConnected: false, // This will be updated by provider context\n providerState: {\n isConnectModalOpen: false,\n isConnectedModalOpen: false,\n isChainsListOpen: false,\n isChainsListOpenMobile: false,\n connectedButtonStatus: 'idle',\n isConnected: false,\n selectedAdapter: undefined,\n activeConnector: undefined,\n activeWallet: undefined,\n },\n }),\n [store, labels],\n );\n\n // Memoize provider props with full customization support\n const providerProps = useMemo(\n () => ({\n store,\n labels,\n customization: providerCustomization, // Full NovaConnectProviderCustomization\n ...config.providerPropsOverride,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [labels, providerCustomization, config.providerPropsOverride],\n );\n\n // Memoize connect button props\n const buttonProps = useMemo(\n () => ({\n store,\n customization: connectButtonCustomization,\n ...connectButtonProps,\n ...config.connectButtonPropsOverride,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [connectButtonCustomization, connectButtonProps, config.connectButtonPropsOverride],\n );\n\n // Render with or without root container based on configuration\n const content = (\n <CustomProvider {...providerProps}>\n <CustomConnectButton {...buttonProps} />\n </CustomProvider>\n );\n\n // Only wrap in root container if explicitly requested\n if (config.useRootContainer) {\n return (\n <RootContainer className={classNames.rootContainer?.({ providerData })} providerData={providerData}>\n {content}\n </RootContainer>\n );\n }\n\n return content;\n },\n);\n\nNovaConnectButton.displayName = 'NovaConnectButton';\n","/**\n * @file This file contains the `ToastError` component, a customizable error toast with full styling control.\n */\n\nimport { DocumentDuplicateIcon } from '@heroicons/react/24/solid';\nimport { cn, useCopyToClipboard } from '@tuwaio/nova-core';\nimport { ComponentPropsWithoutRef, ComponentType, forwardRef, ReactNode, useCallback, useMemo, useState } from 'react';\n\nimport { useNovaConnectLabels } from '../hooks/useNovaConnectLabels';\n\n// --- Types for Customization ---\ntype CustomIconProps = {\n isCopied: boolean;\n className?: string;\n 'aria-hidden'?: boolean;\n};\n\ntype CustomTitleProps = {\n title: string;\n titleId: string;\n className?: string;\n};\n\ntype CustomDescriptionProps = {\n rawError: string;\n descriptionId: string;\n className?: string;\n};\n\ntype CustomButtonContentProps = {\n icon: ReactNode;\n isCopied: boolean;\n copyLabel: string;\n copiedLabel: string;\n};\n\n/**\n * Customization options for ToastError component\n */\nexport type ToastErrorCustomization = {\n /** Override container element props */\n containerProps?: Partial<Omit<ComponentPropsWithoutRef<'div'>, 'style'>>;\n /** Override button element props */\n buttonProps?: Partial<Omit<ComponentPropsWithoutRef<'button'>, 'style'>>;\n /** Custom components */\n components?: {\n /** Custom icon component */\n Icon?: ComponentType<CustomIconProps>;\n /** Custom title component */\n Title?: ComponentType<CustomTitleProps>;\n /** Custom description component */\n Description?: ComponentType<CustomDescriptionProps>;\n /** Custom button content component */\n ButtonContent?: ComponentType<CustomButtonContentProps>;\n };\n /** Custom class name generators */\n classNames?: {\n /** Function to generate container classes */\n container?: (params: { hasTitle: boolean; hasError: boolean }) => string;\n /** Function to generate title classes */\n title?: (params: { title: string }) => string;\n /** Function to generate description classes */\n description?: (params: { rawError: string }) => string;\n /** Function to generate button classes */\n button?: (params: { isCopied: boolean; disabled: boolean }) => string;\n /** Function to generate icon classes */\n icon?: (params: { isCopied: boolean }) => string;\n };\n /** Custom event handlers */\n handlers?: {\n /** Custom click handler wrapper */\n onClick?: (\n originalHandler: (event: React.MouseEvent<HTMLButtonElement>) => void,\n event: React.MouseEvent<HTMLButtonElement>,\n ) => void;\n /** Custom keydown handler wrapper */\n onKeyDown?: (\n originalHandler: (event: React.KeyboardEvent<HTMLButtonElement>) => void,\n event: React.KeyboardEvent<HTMLButtonElement>,\n ) => void;\n };\n};\n\nexport interface ToastErrorProps extends Omit<ComponentPropsWithoutRef<'div'>, 'role' | 'aria-live' | 'style'> {\n /** Error title to display */\n title: string;\n /** Raw error message to display and copy */\n rawError: string;\n /** Custom CSS classes for the container */\n className?: string;\n /** Custom ARIA label for the error container */\n 'aria-label'?: string;\n /** Callback fired when copy operation completes */\n onCopyComplete?: (success: boolean) => void;\n /** Customization options */\n customization?: ToastErrorCustomization;\n}\n\n// --- Default Sub-Components ---\nconst DefaultIcon = ({ isCopied, className, ...props }: CustomIconProps) => {\n return (\n <DocumentDuplicateIcon\n className={cn(\n 'novacon:w-4 novacon:h-4 novacon:transition-colors',\n isCopied && 'novacon:text-[var(--tuwa-success-text)]',\n className,\n )}\n {...props}\n />\n );\n};\n\nconst DefaultTitle = ({ title, titleId, className }: CustomTitleProps) => {\n return (\n <p\n id={titleId}\n className={cn(\n 'novacon:text-sm novacon:font-semibold novacon:truncate novacon:text-[var(--tuwa-error-text)]',\n className,\n )}\n role=\"heading\"\n aria-level={3}\n title={title} // Show full title on hover if truncated\n >\n {title}\n </p>\n );\n};\n\nconst DefaultDescription = ({ rawError, descriptionId, className }: CustomDescriptionProps) => {\n return (\n <p\n id={descriptionId}\n className={cn(\n 'novacon:mt-1 novacon:text-xs novacon:break-words novacon:text-[var(--tuwa-error-text)] novacon:opacity-80',\n className,\n )}\n role=\"text\"\n >\n {rawError}\n </p>\n );\n};\n\nconst DefaultButtonContent = ({ icon, isCopied, copyLabel, copiedLabel }: CustomButtonContentProps) => {\n return (\n <>\n {icon}\n <span className=\"novacon:select-none novacon:transition-colors\" aria-live=\"polite\" role=\"status\">\n {isCopied ? copiedLabel : copyLabel}\n </span>\n </>\n );\n};\n\n// --- Default Event Handlers ---\nconst defaultClickHandler = (\n originalHandler: (event: React.MouseEvent<HTMLButtonElement>) => void,\n event: React.MouseEvent<HTMLButtonElement>,\n) => {\n originalHandler(event);\n};\n\nconst defaultKeyDownHandler = (\n originalHandler: (event: React.KeyboardEvent<HTMLButtonElement>) => void,\n event: React.KeyboardEvent<HTMLButtonElement>,\n) => {\n originalHandler(event);\n};\n\n// Counter for unique IDs (outside component to avoid re-initialization)\nlet idCounter = 0;\n\n/**\n * A highly customizable error toast component with copy functionality and extensive styling options.\n * Provides comprehensive customization for appearance, behavior, and event handling while maintaining accessibility.\n */\nexport const ToastError = forwardRef<HTMLDivElement, ToastErrorProps>(\n ({ title, rawError, className, 'aria-label': ariaLabel, onCopyComplete, customization, ...props }, ref) => {\n const labels = useNovaConnectLabels();\n const { isCopied, copy } = useCopyToClipboard();\n\n // Generate unique IDs only once per component instance\n const [uniqueId] = useState(() => {\n idCounter += 1;\n return `${idCounter}-${Date.now()}`;\n });\n\n const titleId = `error-title-${uniqueId}`;\n const descriptionId = `error-description-${uniqueId}`;\n\n // Extract custom components and handlers\n const {\n Icon = DefaultIcon,\n Title = DefaultTitle,\n Description = DefaultDescription,\n ButtonContent = DefaultButtonContent,\n } = customization?.components ?? {};\n\n const {\n onClick: customOnClickHandler = defaultClickHandler,\n onKeyDown: customOnKeyDownHandler = defaultKeyDownHandler,\n } = customization?.handlers ?? {};\n\n // Memoize error text for copying\n const errorToCopy = useMemo(() => rawError, [rawError]);\n\n // Handle copy with error handling and callback\n const handleCopy = useCallback(\n async (e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n e.preventDefault();\n\n try {\n await copy(errorToCopy);\n onCopyComplete?.(true);\n } catch (error) {\n console.error('Failed to copy error:', error);\n onCopyComplete?.(false);\n }\n },\n [copy, errorToCopy, onCopyComplete],\n );\n\n // Handle keyboard interaction for copy button\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLButtonElement>) => {\n const originalHandler = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n // Create a synthetic mouse event for onClick compatibility\n const syntheticEvent = {\n ...event,\n button: 0,\n buttons: 1,\n clientX: 0,\n clientY: 0,\n movementX: 0,\n movementY: 0,\n offsetX: 0,\n offsetY: 0,\n pageX: 0,\n pageY: 0,\n relatedTarget: null,\n screenX: 0,\n screenY: 0,\n x: 0,\n y: 0,\n getModifierState: () => false,\n initMouseEvent: () => {},\n };\n // eslint-disable-next-line\n handleCopy(syntheticEvent as any);\n }\n };\n\n customOnKeyDownHandler(originalHandler, e);\n },\n [customOnKeyDownHandler, handleCopy],\n );\n\n // Generate container classes\n const containerClasses = useMemo(() => {\n if (customization?.classNames?.container) {\n return customization.classNames.container({ hasTitle: Boolean(title), hasError: Boolean(rawError) });\n }\n return cn(\n 'novacon:bg-[var(--tuwa-bg-primary)] novacon:p-4 novacon:rounded-md novacon:w-full',\n 'novacon:border novacon:border-[var(--tuwa-border-primary)]',\n className,\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customization?.classNames?.container, title, rawError, className]);\n\n // Generate title classes\n const titleClasses = useMemo(() => {\n if (customization?.classNames?.title) {\n return customization.classNames.title({ title });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customization?.classNames?.title, title]);\n\n // Generate description classes\n const descriptionClasses = useMemo(() => {\n if (customization?.classNames?.description) {\n return customization.classNames.description({ rawError });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customization?.classNames?.description, rawError]);\n\n // Generate button classes\n const buttonClasses = useMemo(() => {\n const disabled = !errorToCopy.trim();\n if (customization?.classNames?.button) {\n return customization.classNames.button({ isCopied, disabled });\n }\n\n return cn(\n 'novacon:cursor-pointer novacon:mt-2 novacon:text-xs novacon:font-medium novacon:inline-flex novacon:items-center novacon:space-x-1.5',\n 'novacon:focus:outline-none novacon:focus:ring-2 novacon:focus:ring-[var(--tuwa-error-text)] novacon:focus:ring-opacity-50',\n 'novacon:rounded-md novacon:px-2 novacon:py-1 novacon:transition-all novacon:duration-200',\n 'novacon:hover:bg-[var(--tuwa-error-text)] novacon:hover:bg-opacity-10',\n 'novacon:active:bg-[var(--tuwa-error-text)] novacon:active:bg-opacity-20',\n 'novacon:text-[var(--tuwa-error-text)] novacon:hover:text-[var(--tuwa-error-text)]',\n {\n 'novacon:bg-[var(--tuwa-success-text)] novacon:bg-opacity-10 novacon:text-[var(--tuwa-success-text)]':\n isCopied,\n },\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customization?.classNames?.button, isCopied, errorToCopy]);\n\n // Generate icon classes\n const iconClasses = useMemo(() => {\n if (customization?.classNames?.icon) {\n return customization.classNames.icon({ isCopied });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customization?.classNames?.icon, isCopied]);\n\n // Create icon element\n const iconElement = useMemo(\n () => <Icon isCopied={isCopied} className={iconClasses} aria-hidden />,\n [Icon, isCopied, iconClasses],\n );\n\n // Merge container props\n const containerProps = useMemo(\n () => ({\n ...customization?.containerProps,\n ...props,\n ref,\n className: containerClasses,\n role: 'alert' as const,\n 'aria-live': 'assertive' as const,\n 'aria-labelledby': titleId,\n 'aria-describedby': descriptionId,\n 'aria-label': ariaLabel,\n }),\n [customization?.containerProps, props, ref, containerClasses, titleId, descriptionId, ariaLabel],\n );\n\n // Merge button props\n const buttonProps = useMemo(\n () => ({\n ...customization?.buttonProps,\n onClick: (e: React.MouseEvent<HTMLButtonElement>) => {\n customOnClickHandler(handleCopy, e);\n },\n onKeyDown: handleKeyDown,\n className: buttonClasses,\n type: 'button' as const,\n 'aria-label': isCopied ? `${labels.copied} ${labels.copyRawError}` : labels.copyRawError,\n 'aria-describedby': `${titleId} ${descriptionId}`,\n disabled: !errorToCopy.trim(),\n }),\n [\n customization?.buttonProps,\n customOnClickHandler,\n handleCopy,\n handleKeyDown,\n buttonClasses,\n isCopied,\n labels.copied,\n labels.copyRawError,\n titleId,\n descriptionId,\n errorToCopy,\n ],\n );\n\n return (\n <div {...containerProps}>\n {/* Error Title */}\n <Title title={title} titleId={titleId} className={titleClasses} />\n\n {/* Error Description */}\n <Description rawError={rawError} descriptionId={descriptionId} className={descriptionClasses} />\n\n {/* Copy Button */}\n <button {...buttonProps}>\n <ButtonContent\n icon={iconElement}\n isCopied={isCopied}\n copyLabel={labels.copyRawError}\n copiedLabel={labels.copied}\n />\n </button>\n </div>\n );\n },\n);\n\nToastError.displayName = 'ToastError';\n","/**\n * @file This file contains the `ErrorsProvider` component, a customizable error toast provider with full styling control.\n */\n\nimport { ToastCloseButton } from '@tuwaio/nova-core';\nimport { ComponentPropsWithoutRef, ComponentType, useCallback, useEffect, useMemo, useRef } from 'react';\nimport { Bounce, toast, ToastContainer, type ToastPosition, type ToastTransition } from 'react-toastify';\n\nimport { ToastError, ToastErrorCustomization } from '../components';\nimport { NovaConnectProviderProps, useNovaConnect } from '../hooks/useNovaConnect';\nimport { useNovaConnectLabels } from '../hooks/useNovaConnectLabels';\n\n// --- Types for Customization ---\ntype CustomToastErrorProps = {\n title: string;\n rawError: string;\n onCopyComplete?: (success: boolean) => void;\n errorType: 'wallet' | 'switch' | null;\n isConnected: boolean;\n};\n\ntype CustomContainerProps = ComponentPropsWithoutRef<typeof ToastContainer>;\n\n/**\n * Customization options for ErrorsProvider component\n */\nexport type ErrorsProviderCustomization = {\n /** Override ToastContainer element props */\n containerProps?: Partial<ComponentPropsWithoutRef<typeof ToastContainer>>;\n /** Custom components */\n components?: {\n /** Custom ToastError component */\n ToastError?: ComponentType<CustomToastErrorProps>;\n /** Custom ToastContainer component */\n Container?: ComponentType<CustomContainerProps>;\n };\n /** Default ToastError customization (only used with default ToastError component) */\n toastErrorCustomization?: ToastErrorCustomization;\n /** Custom class name generators */\n classNames?: {\n /** Function to generate container classes */\n container?: (params: { hasErrors: boolean; errorType: 'wallet' | 'switch' | null }) => string;\n };\n /** Custom toast options generators */\n toastOptions?: {\n /** Function to generate toast options */\n error?: (params: {\n title: string;\n rawError: string;\n errorType: 'wallet' | 'switch' | null;\n isConnected: boolean;\n }) => Partial<Parameters<typeof toast.error>[1]>;\n };\n /** Custom logic handlers */\n handlers?: {\n /** Custom error display logic */\n showError?: (\n originalHandler: (title: string, rawError: string, errorKey: string) => void,\n params: { title: string; rawError: string; errorKey: string; errorType: 'wallet' | 'switch' | null },\n ) => void;\n /** Custom error dismissal logic */\n dismissError?: (originalHandler: () => void) => void;\n /** Custom copy complete handler */\n onCopyComplete?: (success: boolean, rawError: string, errorType: 'wallet' | 'switch' | null) => void;\n };\n /** Custom error title generator - does NOT customize labels, just allows title modification */\n errorTitle?: (defaultTitle: string, params: { errorType: 'wallet' | 'switch' | null }) => string;\n /** Custom error hash generator for deduplication */\n errorHash?: (\n defaultHash: string | null,\n params: { primaryError: string | null; errorType: 'wallet' | 'switch' | null },\n ) => string | null;\n};\n\nexport interface ErrorsProviderProps extends Pick<NovaConnectProviderProps, 'store'> {\n /** Custom container ID for toast notifications */\n containerId?: string;\n /** Custom position for toast notifications */\n position?: ToastPosition;\n /** Auto close delay in milliseconds */\n autoClose?: number | false;\n /** Whether to enable drag to dismiss */\n draggable?: boolean;\n /** Customization options */\n customization?: ErrorsProviderCustomization;\n}\n\n// --- Default Sub-Components ---\nconst DefaultToastError = ({\n title,\n rawError,\n onCopyComplete,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n errorType,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isConnected,\n ...props\n}: CustomToastErrorProps & { customization?: ToastErrorCustomization }) => {\n return (\n <ToastError title={title} rawError={rawError} onCopyComplete={onCopyComplete} customization={props.customization} />\n );\n};\n\nconst DefaultContainer = (props: CustomContainerProps) => {\n const labels = useNovaConnectLabels();\n return <ToastContainer {...props} role=\"alert\" aria-live=\"assertive\" aria-label={labels.somethingWentWrong} />;\n};\n\n// --- Default Handlers ---\nconst defaultShowErrorHandler = (\n originalHandler: (title: string, rawError: string, errorKey: string) => void,\n params: { title: string; rawError: string; errorKey: string },\n) => {\n originalHandler(params.title, params.rawError, params.errorKey);\n};\n\nconst defaultDismissErrorHandler = (originalHandler: () => void) => {\n originalHandler();\n};\n\nconst defaultCopyCompleteHandler = (success: boolean, rawError: string) => {\n if (success && process.env.NODE_ENV === 'development') {\n console.log('Error copied to clipboard:', rawError.substring(0, 100));\n }\n};\n\nconst defaultErrorTitleGenerator = (defaultTitle: string) => defaultTitle;\n\nconst defaultErrorHashGenerator = (defaultHash: string | null) => defaultHash;\n\n/**\n * A highly customizable error toast provider with extensive styling options and component replacement capabilities.\n * Provides comprehensive customization for appearance, behavior, and error handling logic while maintaining accessibility.\n */\nexport function ErrorsProvider({\n store,\n containerId = 'nova-connect-errors',\n position = 'top-center',\n autoClose = 7000,\n draggable = false,\n customization,\n}: ErrorsProviderProps) {\n const labels = useNovaConnectLabels();\n const { activeWallet, walletConnectionError } = useNovaConnect();\n\n const switchNetworkError = store.getState().switchNetworkError;\n\n // Extract custom components and handlers\n const { ToastError: CustomToastError = DefaultToastError, Container = DefaultContainer } =\n customization?.components ?? {};\n\n const {\n showError: customShowErrorHandler = defaultShowErrorHandler,\n dismissError: customDismissErrorHandler = defaultDismissErrorHandler,\n onCopyComplete: customCopyCompleteHandler = defaultCopyCompleteHandler,\n } = customization?.handlers ?? {};\n\n const {\n errorTitle: customErrorTitleGenerator = defaultErrorTitleGenerator,\n errorHash: customErrorHashGenerator = defaultErrorHashGenerator,\n } = customization ?? {};\n\n // Track displayed errors to prevent duplicates\n const displayedErrorsRef = useRef<Set<string>>(new Set());\n const currentToastIdRef = useRef<string | null>(null);\n\n // Memoize error state\n const errorState = useMemo(() => {\n const hasWalletError = Boolean(walletConnectionError);\n const hasSwitchError = Boolean(switchNetworkError);\n const isConnected = Boolean(activeWallet?.isConnected);\n\n return {\n hasWalletError,\n hasSwitchError,\n isConnected,\n hasAnyError: hasWalletError || hasSwitchError,\n primaryError: walletConnectionError || switchNetworkError || null,\n errorType: (hasWalletError ? 'wallet' : hasSwitchError ? 'switch' : null) as 'wallet' | 'switch' | null,\n };\n }, [walletConnectionError, switchNetworkError, activeWallet?.isConnected]);\n\n // Memoize default error title based on type (using labels, NOT customizing them)\n const defaultErrorTitle = useMemo(() => {\n switch (errorState.errorType) {\n case 'wallet':\n return labels.walletConnectionError;\n case 'switch':\n return labels.errorWhenChainSwitching;\n default:\n return labels.somethingWentWrong;\n }\n }, [errorState.errorType, labels]);\n\n // Generate custom error title (allows modification but NOT labels customization)\n const errorTitle = useMemo(() => {\n return customErrorTitleGenerator(defaultErrorTitle, { errorType: errorState.errorType });\n }, [customErrorTitleGenerator, defaultErrorTitle, errorState.errorType]);\n\n // Generate default error hash for deduplication\n const defaultErrorHash = useMemo(() => {\n if (!errorState.primaryError) return null;\n return `${errorState.errorType}-${errorState.primaryError.substring(0, 50)}`;\n }, [errorState.primaryError, errorState.errorType]);\n\n // Generate custom error hash\n const errorHash = useMemo(() => {\n return customErrorHashGenerator(defaultErrorHash, {\n primaryError: errorState.primaryError,\n errorType: errorState.errorType,\n });\n }, [customErrorHashGenerator, defaultErrorHash, errorState.primaryError, errorState.errorType]);\n\n // Dismiss current toast\n const dismissCurrentToast = useCallback(() => {\n const originalHandler = () => {\n if (currentToastIdRef.current) {\n toast.dismiss(currentToastIdRef.current);\n currentToastIdRef.current = null;\n }\n toast.dismiss({ containerId });\n };\n customDismissErrorHandler(originalHandler);\n }, [containerId, customDismissErrorHandler]);\n\n // Handle copy complete\n const handleCopyComplete = useCallback(\n (success: boolean, rawError: string) => {\n customCopyCompleteHandler(success, rawError, errorState.errorType);\n },\n [customCopyCompleteHandler, errorState.errorType],\n );\n\n // Original handler for error display - using full customization object in dependencies\n const originalErrorHandler = useCallback(\n (t: string, r: string, k: string) => {\n // Dismiss previous toast first\n dismissCurrentToast();\n\n // Check if this error was already displayed\n if (displayedErrorsRef.current.has(k)) {\n return;\n }\n\n try {\n // Generate custom toast options\n const defaultToastOptions = {\n containerId,\n toastId: k,\n onClose: () => {\n displayedErrorsRef.current.delete(k);\n currentToastIdRef.current = null;\n },\n };\n\n const customToastOptions = customization?.toastOptions?.error?.({\n title: t,\n rawError: r,\n errorType: errorState.errorType,\n isConnected: errorState.isConnected,\n });\n\n const toastOptions = { ...defaultToastOptions, ...customToastOptions };\n\n // Use toast.error and capture the result properly\n toast.error(\n <CustomToastError\n title={t}\n rawError={r}\n errorType={errorState.errorType}\n isConnected={errorState.isConnected}\n onCopyComplete={(success) => handleCopyComplete(success, r)}\n customization={customization?.toastErrorCustomization}\n />,\n toastOptions,\n );\n\n displayedErrorsRef.current.add(k);\n currentToastIdRef.current = k;\n } catch (error) {\n console.error('Failed to show error toast:', error);\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n dismissCurrentToast,\n containerId,\n customization?.toastOptions?.error,\n customization?.toastErrorCustomization,\n CustomToastError,\n errorState.errorType,\n errorState.isConnected,\n handleCopyComplete,\n ],\n );\n\n // Show error toast\n const showErrorToast = useCallback(\n (title: string, rawError: string, errorKey: string) => {\n customShowErrorHandler(originalErrorHandler, { title, rawError, errorKey, errorType: errorState.errorType });\n },\n [originalErrorHandler, customShowErrorHandler, errorState.errorType],\n );\n\n // Main effect to handle error display logic\n useEffect(() => {\n const { hasAnyError, isConnected, primaryError } = errorState;\n\n // Clear all errors when connected successfully\n if (isConnected && !hasAnyError) {\n dismissCurrentToast();\n displayedErrorsRef.current.clear();\n return;\n }\n\n // Show error if present and not already displayed\n if (hasAnyError && primaryError && errorHash) {\n // For connected state, only show switch network errors\n if (isConnected && errorState.errorType !== 'switch') {\n return;\n }\n\n showErrorToast(errorTitle, primaryError, errorHash);\n }\n }, [errorState, errorTitle, errorHash, showErrorToast, dismissCurrentToast]);\n\n // Clean up on unmount\n useEffect(() => {\n return () => {\n dismissCurrentToast();\n // eslint-disable-next-line\n displayedErrorsRef.current.clear();\n };\n }, [dismissCurrentToast]);\n\n // Generate container classes\n const containerClasses = useMemo(() => {\n if (customization?.classNames?.container) {\n return customization.classNames.container({\n hasErrors: errorState.hasAnyError,\n errorType: errorState.errorType,\n });\n }\n\n return 'novacon:p-0 novacon:bg-transparent';\n }, [customization, errorState.hasAnyError, errorState.errorType]);\n\n // Memoize default container props\n const defaultContainerProps = useMemo(\n () => ({\n containerId,\n position,\n closeOnClick: false,\n icon: false as const,\n closeButton: ToastCloseButton,\n autoClose,\n hideProgressBar: false,\n newestOnTop: false,\n pauseOnFocusLoss: false,\n draggable,\n pauseOnHover: true,\n theme: 'light' as const,\n transition: Bounce as ToastTransition,\n }),\n [containerId, position, autoClose, draggable],\n );\n\n // Merge container props (NO labels passed to custom components!)\n const containerProps = useMemo(\n () => ({\n ...defaultContainerProps,\n ...customization?.containerProps,\n className: containerClasses,\n }),\n [defaultContainerProps, customization?.containerProps, containerClasses],\n );\n\n return <Container {...containerProps} />;\n}\n\n// Add display name for better debugging\nErrorsProvider.displayName = 'ErrorsProvider';\n","/**\n * @file This file sets up the React Context for providing i18n labels throughout the UI components.\n * It allows for deep customization of all text displayed by the library.\n */\n\nimport { ReactNode, useMemo } from 'react';\n\nimport { NovaConnectLabelsContext } from '../hooks/useNovaConnectLabels';\nimport { NovaConnectLabels } from '../i18n/types';\n\ninterface NovaConnectLabelsProviderProps {\n /** An object containing the custom labels */\n labels: NovaConnectLabels;\n /** The child components to render */\n children: ReactNode;\n}\n\n/**\n * A React component that provides a custom set of labels to all child components.\n * Wrap your application or component tree with this provider to apply custom translations.\n *\n * The provider uses React.memo optimization and validates labels in development mode.\n *\n * @example\n * ```typescript\n * import { NovaConnectLabelsProvider } from './NovaConnectLabelsProvider';\n *\n * function App() {\n * const customLabels = {\n * connectWallet: 'Подключить кошелек',\n * disconnect: 'Отключиться',\n * };\n *\n * return (\n * <NovaConnectLabelsProvider labels={customLabels}>\n * <YourApp />\n * </NovaConnectLabelsProvider>\n * );\n * }\n * ```\n */\nexport function NovaConnectLabelsProvider({ labels, children }: NovaConnectLabelsProviderProps) {\n // Memoize labels to prevent unnecessary re-renders\n const memoizedLabels = useMemo(() => labels, [labels]);\n\n // Development-only validation\n if (process.env.NODE_ENV === 'development') {\n // Validate that labels object is provided\n if (!labels || typeof labels !== 'object') {\n console.warn('NovaConnectLabelsProvider: labels prop should be an object');\n }\n\n // Check for missing required labels (basic validation)\n const requiredLabels = ['connectWallet', 'disconnect', 'connecting', 'connected', 'error', 'success'] as const;\n\n const missingLabels = requiredLabels.filter((key) => !(key in labels));\n if (missingLabels.length > 0) {\n console.warn(`NovaConnectLabelsProvider: Missing required labels: ${missingLabels.join(', ')}`);\n }\n }\n\n return <NovaConnectLabelsContext.Provider value={memoizedLabels}>{children}</NovaConnectLabelsContext.Provider>;\n}\n\n// Add display name for better debugging\nNovaConnectLabelsProvider.displayName = 'NovaConnectLabelsProvider';\n","/**\n * @file Main NovaConnect provider component with comprehensive customization capabilities.\n * @module NovaConnectProvider\n */\n\nimport { deepMerge } from '@tuwaio/nova-core';\nimport { OrbitAdapter } from '@tuwaio/orbit-core';\nimport { BaseWallet } from '@tuwaio/satellite-core';\nimport { ComponentType, ReactNode, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport {\n ButtonTxStatus,\n ConnectContentType,\n ConnectedContentType,\n NovaConnectProviderContext,\n NovaConnectProviderProps as BaseNovaConnectProviderProps,\n NovaConnectProviderType,\n} from '../hooks/useNovaConnect';\nimport { defaultLabels } from '../i18n/en';\nimport { NovaConnectLabels } from '../i18n/types';\nimport { ErrorsProvider, ErrorsProviderCustomization, ErrorsProviderProps } from './ErrorsProvider';\nimport { NovaConnectLabelsProvider } from './NovaConnectLabelsProvider';\n\n// --- Customization Types ---\n\n/**\n * Props for custom NovaConnectLabelsProvider component\n */\ntype CustomLabelsProviderProps = {\n labels?: Partial<NovaConnectLabels>;\n children: ReactNode;\n};\n\n/**\n * Props for custom ErrorsProvider component\n */\ntype CustomErrorsProviderProps = Pick<ErrorsProviderProps, 'store'> & {\n customization?: ErrorsProviderCustomization;\n};\n\n/**\n * Context data passed to custom provider components\n */\ntype ProviderContext = {\n /** Current wallet connection state */\n isConnected: boolean;\n /** Active wallet instance */\n activeWallet: BaseWallet | undefined;\n /** Current wallet connection error */\n walletConnectionError: string | undefined;\n /** All modal and UI states */\n modalStates: {\n isConnectModalOpen: boolean;\n isConnectedModalOpen: boolean;\n isChainsListOpen: boolean;\n isChainsListOpenMobile: boolean;\n };\n /** Current content types for modals */\n contentTypes: {\n connectModal: ConnectContentType;\n connectedModal: ConnectedContentType;\n };\n /** Button and transaction statuses */\n statuses: {\n connectedButton: ButtonTxStatus;\n };\n};\n\n/**\n * Comprehensive customization options for NovaConnectProvider\n */\nexport type NovaConnectProviderCustomization = {\n /** Custom components */\n components?: {\n /** Custom labels provider component */\n LabelsProvider?: ComponentType<CustomLabelsProviderProps>;\n /** Custom errors provider component */\n ErrorsProvider?: ComponentType<CustomErrorsProviderProps>;\n };\n /** Labels customization and merging strategy */\n labels?: {\n /** Custom labels merging function */\n merge?: (defaultLabels: NovaConnectLabels, userLabels: Partial<NovaConnectLabels>) => NovaConnectLabels;\n /** Transform final merged labels before use */\n transform?: (mergedLabels: NovaConnectLabels, context: ProviderContext) => NovaConnectLabels;\n };\n /** ErrorsProvider customization - passed through to ErrorsProvider */\n errors?: ErrorsProviderCustomization;\n /** Custom initialization logic */\n initialization?: {\n /** Custom logic after store subscription setup */\n onStoreSubscribed?: (context: ProviderContext) => void;\n /** Custom logic when connection state changes */\n onConnectionStateChange?: (\n isConnected: boolean,\n activeWallet: BaseWallet | undefined,\n context: ProviderContext,\n ) => void;\n /** Custom logic when error state changes */\n onErrorStateChange?: (error: string | undefined, context: ProviderContext) => void;\n };\n /** Custom context value transformation */\n contextValue?: {\n /** Transform context value before providing to children */\n transform?: (defaultValue: NovaConnectProviderType, context: ProviderContext) => NovaConnectProviderType;\n };\n /** Custom rendering logic */\n rendering?: {\n /** Custom provider tree structure */\n providerTree?: (\n defaultTree: ReactNode,\n components: {\n ErrorsProvider: ReactNode;\n LabelsProvider: ReactNode;\n MainContent: ReactNode;\n },\n context: ProviderContext,\n ) => ReactNode;\n };\n};\n\n/**\n * Extended props for NovaConnectProvider with full customization capabilities\n */\nexport interface NovaConnectProviderProps extends BaseNovaConnectProviderProps {\n /** Comprehensive customization options for the provider and its sub-components */\n customization?: NovaConnectProviderCustomization;\n}\n\n// --- Default Components ---\n\n/**\n * Default labels provider component\n */\nconst DefaultLabelsProvider = ({ labels, children }: CustomLabelsProviderProps) => {\n return <NovaConnectLabelsProvider labels={labels as NovaConnectLabels}>{children}</NovaConnectLabelsProvider>;\n};\n\n/**\n * Default errors provider component\n */\nconst DefaultErrorsProvider = ({ store, customization }: CustomErrorsProviderProps) => {\n return <ErrorsProvider store={store} customization={customization} />;\n};\n\n// --- Default Handlers ---\n\n/**\n * Default labels merging function\n */\nconst defaultLabelsMerge = (\n defaultLabels: NovaConnectLabels,\n userLabels: Partial<NovaConnectLabels>,\n): NovaConnectLabels => {\n return deepMerge(defaultLabels, userLabels || {});\n};\n\n/**\n * Default labels transform function (identity)\n */\nconst defaultLabelsTransform = (mergedLabels: NovaConnectLabels): NovaConnectLabels => mergedLabels;\n\n/**\n * Default store subscription handler\n */\nconst defaultStoreSubscribedHandler = () => {\n // No-op by default\n};\n\n/**\n * Default connection state change handler\n */\nconst defaultConnectionStateChangeHandler = () => {\n // No-op by default\n};\n\n/**\n * Default error state change handler\n */\nconst defaultErrorStateChangeHandler = () => {\n // No-op by default\n};\n\n/**\n * Default context value transform function (identity)\n */\nconst defaultContextValueTransform = (defaultValue: NovaConnectProviderType): NovaConnectProviderType => defaultValue;\n\n/**\n * Default provider tree renderer\n */\nconst defaultProviderTreeRenderer = (\n defaultTree: ReactNode,\n // Unused but kept for API consistency\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n components: {\n ErrorsProvider: ReactNode;\n LabelsProvider: ReactNode;\n MainContent: ReactNode;\n },\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n context: ProviderContext,\n): ReactNode => {\n return defaultTree;\n};\n\n/**\n * Main NovaConnect provider component with comprehensive customization capabilities.\n *\n * This provider manages wallet connection state, error handling, internationalization,\n * and modal states while offering extensive customization options for all sub-components\n * and behaviors.\n *\n * Features:\n * - Complete wallet connection state management\n * - Customizable error handling through ErrorsProvider\n * - Flexible internationalization system\n * - Modal and UI state coordination\n * - Extensive customization API for all aspects\n * - Custom component replacement capabilities\n * - Advanced initialization and lifecycle hooks\n *\n * @example Basic usage\n * ```tsx\n * <NovaConnectProvider store={store}>\n * <App />\n * </NovaConnectProvider>\n * ```\n *\n * @example With customization\n * ```tsx\n * <NovaConnectProvider\n * store={store}\n * labels={customLabels}\n * customization={{\n * errors: {\n * position: 'bottom-right',\n * autoClose: 5000,\n * components: {\n * ToastError: CustomToastError\n * }\n * },\n * initialization: {\n * onConnectionStateChange: (isConnected, wallet) => {\n * console.log('Connection state:', isConnected, wallet);\n * }\n * }\n * }}\n * >\n * <App />\n * </NovaConnectProvider>\n * ```\n *\n * @param props - Provider configuration and customization options\n */\nexport function NovaConnectProvider({ labels, store, children, customization }: NovaConnectProviderProps) {\n // Extract custom components\n const { LabelsProvider = DefaultLabelsProvider, ErrorsProvider: CustomErrorsProvider = DefaultErrorsProvider } =\n customization?.components ?? {};\n\n // Extract custom handlers\n const { merge: customLabelsMerge = defaultLabelsMerge, transform: customLabelsTransform = defaultLabelsTransform } =\n customization?.labels ?? {};\n\n const {\n onStoreSubscribed: customStoreSubscribedHandler = defaultStoreSubscribedHandler,\n onConnectionStateChange: customConnectionStateChangeHandler = defaultConnectionStateChangeHandler,\n onErrorStateChange: customErrorStateChangeHandler = defaultErrorStateChangeHandler,\n } = customization?.initialization ?? {};\n\n const { transform: customContextValueTransform = defaultContextValueTransform } = customization?.contextValue ?? {};\n\n const { providerTree: customProviderTreeRenderer = defaultProviderTreeRenderer } = customization?.rendering ?? {};\n\n // Merge labels using custom or default logic\n const mergedLabels = useMemo(() => {\n return customLabelsMerge(defaultLabels, labels || {});\n }, [labels, customLabelsMerge]);\n\n // State management - all existing state\n const [activeWallet, setActiveWallet] = useState<BaseWallet | undefined>(store.getState().activeWallet);\n const [walletConnectionError, setWalletConnectionError] = useState<string | undefined>(\n store.getState().walletConnectionError,\n );\n const [isConnectModalOpen, setIsConnectModalOpen] = useState(false);\n const [isConnectedModalOpen, setIsConnectedModalOpen] = useState(false);\n const [isChainsListOpen, setIsChainsListOpen] = useState(false);\n const [isChainsListOpenMobile, setIsChainsListOpenMobile] = useState(false);\n const [connectedButtonStatus, setConnectedButtonStatus] = useState<ButtonTxStatus>('idle');\n const [connectModalContentType, setConnectModalContentType] = useState<ConnectContentType>('connectors');\n const [selectedAdapter, setSelectedAdapter] = useState<OrbitAdapter | undefined>(undefined);\n const [activeConnector, setActiveConnector] = useState<string | undefined>(undefined);\n const [impersonatedAddress, setImpersonatedAddress] = useState('');\n const [isConnected, setIsConnected] = useState(false);\n const [connectedModalContentType, setConnectedModalContentType] = useState<ConnectedContentType>('main');\n\n // Create provider context for custom handlers\n const providerContext = useMemo(\n (): ProviderContext => ({\n isConnected,\n activeWallet,\n walletConnectionError,\n modalStates: {\n isConnectModalOpen,\n isConnectedModalOpen,\n isChainsListOpen,\n isChainsListOpenMobile,\n },\n contentTypes: {\n connectModal: connectModalContentType,\n connectedModal: connectedModalContentType,\n },\n statuses: {\n connectedButton: connectedButtonStatus,\n },\n }),\n [\n isConnected,\n activeWallet,\n walletConnectionError,\n isConnectModalOpen,\n isConnectedModalOpen,\n isChainsListOpen,\n isChainsListOpenMobile,\n connectModalContentType,\n connectedModalContentType,\n connectedButtonStatus,\n ],\n );\n\n // Transform labels using custom logic if provided\n const finalLabels = useMemo(() => {\n return customLabelsTransform(mergedLabels, providerContext);\n }, [mergedLabels, customLabelsTransform, providerContext]);\n\n // Handle connection state changes\n const handleConnectionStateChange = useCallback(\n (newIsConnected: boolean, newActiveWallet: BaseWallet | undefined) => {\n customConnectionStateChangeHandler(newIsConnected, newActiveWallet, providerContext);\n },\n [customConnectionStateChangeHandler, providerContext],\n );\n\n // Handle error state changes\n const handleErrorStateChange = useCallback(\n (newError: string | undefined) => {\n customErrorStateChangeHandler(newError, providerContext);\n },\n [customErrorStateChangeHandler, providerContext],\n );\n\n // Store subscription effect\n useEffect(() => {\n if (!store) return undefined;\n const unsubscribe = store.subscribe((state) => {\n const newActiveWallet = state.activeWallet;\n const newError = state.walletConnectionError;\n const newIsConnected = Boolean(newActiveWallet?.isConnected);\n // Update state\n setActiveWallet(newActiveWallet);\n setWalletConnectionError(newError);\n // Handle state changes\n if (newIsConnected !== isConnected || newActiveWallet !== activeWallet) {\n handleConnectionStateChange(newIsConnected, newActiveWallet);\n }\n if (newError !== walletConnectionError) {\n handleErrorStateChange(newError);\n }\n });\n\n // Custom initialization logic\n customStoreSubscribedHandler(providerContext);\n\n return unsubscribe;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [store]);\n\n // Create and transform context value using custom logic if provided - moved inside useMemo\n const contextValue = useMemo(() => {\n const defaultContextValue: NovaConnectProviderType = {\n walletConnectionError,\n activeWallet,\n isConnectModalOpen,\n setIsConnectModalOpen,\n isConnectedModalOpen,\n setIsConnectedModalOpen,\n isChainsListOpen,\n setIsChainsListOpen,\n isChainsListOpenMobile,\n setIsChainsListOpenMobile,\n connectedButtonStatus,\n setConnectedButtonStatus,\n connectedModalContentType,\n setConnectedModalContentType,\n connectModalContentType,\n setConnectModalContentType,\n selectedAdapter,\n setSelectedAdapter,\n activeConnector,\n setActiveConnector,\n impersonatedAddress,\n setImpersonatedAddress,\n isConnected,\n setIsConnected,\n };\n\n return customContextValueTransform(defaultContextValue, providerContext);\n }, [\n walletConnectionError,\n activeWallet,\n isConnectModalOpen,\n setIsConnectModalOpen,\n isConnectedModalOpen,\n setIsConnectedModalOpen,\n isChainsListOpen,\n setIsChainsListOpen,\n isChainsListOpenMobile,\n setIsChainsListOpenMobile,\n connectedButtonStatus,\n setConnectedButtonStatus,\n connectedModalContentType,\n setConnectedModalContentType,\n connectModalContentType,\n setConnectModalContentType,\n selectedAdapter,\n setSelectedAdapter,\n activeConnector,\n setActiveConnector,\n impersonatedAddress,\n setImpersonatedAddress,\n isConnected,\n setIsConnected,\n customContextValueTransform,\n providerContext,\n ]);\n\n // Create component tree elements\n const errorsProviderElement = <CustomErrorsProvider store={store} customization={customization?.errors} />;\n\n const labelsProviderElement = <LabelsProvider labels={finalLabels}>{children}</LabelsProvider>;\n\n const mainContentElement = (\n <NovaConnectProviderContext.Provider value={contextValue}>\n {errorsProviderElement}\n {labelsProviderElement}\n </NovaConnectProviderContext.Provider>\n );\n\n // Create default provider tree\n const defaultProviderTree = (\n <NovaConnectProviderContext.Provider value={contextValue}>\n {errorsProviderElement}\n {labelsProviderElement}\n </NovaConnectProviderContext.Provider>\n );\n\n // Use custom provider tree renderer if provided\n const finalProviderTree = customProviderTreeRenderer(\n defaultProviderTree,\n {\n ErrorsProvider: errorsProviderElement,\n LabelsProvider: labelsProviderElement,\n MainContent: mainContentElement,\n },\n providerContext,\n );\n\n return <>{finalProviderTree}</>;\n}\n\n// Add display name for better debugging\nNovaConnectProvider.displayName = 'NovaConnectProvider';\n"]}
|