@deframe-sdk/components 0.1.8 → 0.1.9

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/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/cjs/_interop_require_wildcard.cjs","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/shared/lib/router/utils/querystring.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/shared/lib/router/utils/format-url.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/shared/lib/router/utils/omit.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/shared/lib/utils.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/shared/lib/router/utils/remove-trailing-slash.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/shared/lib/router/utils/parse-path.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/client/normalize-trailing-slash.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/shared/lib/router/utils/path-has-prefix.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/client/has-base-path.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/shared/lib/router/utils/is-local-url.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/shared/lib/router/utils/sorted-routes.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/shared/lib/page-path/ensure-leading-slash.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/shared/lib/segment.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/shared/lib/router/utils/app-paths.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/shared/lib/router/utils/interception-routes.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/shared/lib/router/utils/is-dynamic.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/shared/lib/router/utils/index.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/dist/compiled/path-to-regexp/index.js","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/lib/route-pattern-normalizer.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/shared/lib/router/utils/route-match-utils.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/shared/lib/router/utils/route-matcher.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/lib/constants.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/shared/lib/escape-regexp.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/shared/lib/invariant-error.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/shared/lib/router/utils/parse-loader-tree.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/shared/lib/router/utils/get-segment-param.tsx","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/shared/lib/router/routes/app.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/shared/lib/router/utils/interception-prefix-from-param-type.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/shared/lib/router/utils/resolve-param-value.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/shared/lib/router/utils/get-dynamic-param.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/shared/lib/router/utils/route-regex.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/shared/lib/router/utils/interpolate-as.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/client/resolve-href.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/shared/lib/router/utils/add-path-prefix.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/shared/lib/router/utils/add-locale.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/client/add-locale.ts","../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/cjs/_interop_require_default.cjs","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/shared/lib/router-context.shared-runtime.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/client/request-idle-callback.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/client/use-intersection.tsx","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/shared/lib/i18n/normalize-locale-path.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/client/normalize-locale-path.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/shared/lib/i18n/detect-domain-locale.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/client/detect-domain-locale.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/client/get-domain-locale.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/client/add-base-path.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/client/use-merged-ref.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/shared/lib/utils/error-once.ts","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/src/client/link.tsx","../node_modules/.pnpm/next@16.1.5_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/link.js","../src/stories/buttons/action-button/ActionButton.tsx","../src/stories/buttons/percentage-button/PercentageButton.tsx","../src/stories/buttons/primary-button/PrimaryButton.tsx","../src/stories/buttons/secondary-button/SecondaryButton.tsx","../src/stories/buttons/tertiary-button/TertiaryButton.tsx","../src/stories/inputs/InputCompund.tsx","../src/stories/texts/Link.tsx","../src/stories/inputs/Input.tsx","../src/stories/lists/List.tsx","../src/stories/lists/ListCompound.tsx","../src/stories/lists/wallet-list/WalletListContainer.tsx","../src/stories/texts/Text.tsx","../src/stories/texts/TextAccent.tsx","../src/stories/texts/TextBody.tsx","../src/stories/texts/TextHeading.tsx","../src/stories/texts/Title.tsx","../src/stories/lists/wallet-list/WalletList.tsx","../src/stories/lists/wallet-list/WalletItem.tsx","../src/stories/currency/Currency.tsx","../src/stories/tabs/Tabs.tsx","../src/stories/select/Select.tsx","../src/stories/loading/Skeleton.tsx","../src/stories/banner/BannerNotificationCompound.tsx","../src/stories/banner/BannerNotification.tsx","../src/stories/address/AddressDisplay.tsx","../src/stories/details/SummaryDetails.tsx","../src/stories/details/SummaryDetailsCryptoControlV2.tsx","../src/stories/action-sheet/ActionSheet.tsx","../src/stories/providers/types.ts","../src/stories/providers/DeframeComponentsProvider.tsx","../src/stories/info-display/InfoRow.tsx","../src/stories/info-display/InfoLabel.tsx","../src/stories/info-display/InfoValue.tsx","../src/stories/info-display/InfoRowWithIcon.tsx","../src/stories/info-display/InfoRowIconLabel.tsx","../src/stories/info-display/InfoRowIconValue.tsx","../src/stories/info-display/CollapsibleInfoRow.tsx","../src/stories/layout/BackgroundContainer.tsx","../src/stories/layout/SectionCard.tsx","../src/stories/layout/Navbar.tsx","../src/stories/layout/FlexCol.tsx","../src/stories/layout/FlexRow.tsx","../src/stories/layout/ScrollableContent.tsx","../src/stories/details-header/DetailsHeader.tsx","../src/stories/close-button/CloseButton.tsx","../src/stories/badges/HighRiskBadge.tsx","../src/stories/badges/MediumRiskBadge.tsx","../src/stories/badges/LowRiskBadge.tsx","../src/stories/history-details/HistoryDetailsComponents.tsx","../src/stories/history-details/HistoryDepositDetailsView.tsx","../src/stories/history-details/HistoryWithdrawDetailsView.tsx","../src/stories/swap-network-selector/SwapNetworkSelectorView.tsx","../src/stories/swap-quote-header/SwapQuoteHeaderView.tsx","../src/stories/swap-amount-input/SwapAmountInputView.tsx","../src/stories/swap-output-amount/SwapOutputAmountView.tsx","../src/stories/swap-quote-errors/SwapQuoteErrorsView.tsx","../src/stories/swap-slippage-tolerance-buttons/SwapSlippageToleranceButtonsView.tsx","../src/stories/swap-token-selector/SwapTokenSelectorView.tsx","../src/stories/swap-quote-blockchain-costs/SwapQuoteBlockchainCostsView.tsx","../src/stories/choose-strategy-actionsheet/ChooseAStrategyActionsheetView.tsx","../src/stories/strategy-details/StrategyDetailsView.tsx","../src/stories/progress/ProgressIndicator.tsx","../src/stories/loading-dots/LoadingDots.tsx","../src/stories/search-input/SearchInput.tsx","../src/stories/search-empty-state/SearchEmptyState.tsx","../src/stories/collapsible-section/CollapsibleSection.tsx","../src/stories/transaction-screen-icon/TransactionScreenIcon.tsx","../src/stories/transaction-screen/TransactionScreen.tsx","../src/stories/transaction-screen-investment-card/TransactionScreenInvestmentCard.tsx","../src/stories/transaction-processing-details/StepStatusIcon.tsx","../src/stories/transaction-processing-details/StepStatusText.tsx","../src/stories/transaction-processing-details/StepDisplay.tsx","../src/stories/transaction-processing-details/TransactionProcessingDetails.tsx","../src/stories/token-with-chain-badge/TokenWithChainBadge.tsx","../src/stories/swap-processing-view/SwapProcessingView.tsx","../src/stories/swap-crosschain-processing-view/SwapCrossChainProcessingView.tsx","../src/stories/swap-signature-warning-view/SwapSignatureWarningView.tsx","../src/stories/swap-success-view/SwapSuccessView.tsx","../src/stories/swap-transaction-failed-view/SwapTransactionFailedView.tsx","../src/stories/choose-an-asset-swap-view/ChooseAnAssetSwapView.tsx"],"names":["exports","nodeInterop","assign","searchParamsToUrlQuery","urlQueryToSearchParams","searchParams","query","key","value","entries","existing","Array","isArray","push","stringifyUrlQueryParam","param","isNaN","String","URLSearchParams","Object","item","append","set","target","searchParamsList","keys","delete","formatUrl","formatWithValidation","urlObjectKeys","slashedProtocols","urlObj","auth","hostname","protocol","pathname","hash","host","encodeURIComponent","replace","indexOf","port","querystring","search","endsWith","slashes","test","url","process","env","NODE_ENV","forEach","includes","console","warn","omit","object","omitted","DecodeError","MiddlewareNotFoundError","MissingStaticPage","NormalizeError","PageNotFoundError","SP","ST","WEB_VITALS","execOnce","getDisplayName","getLocationOrigin","getURL","isAbsoluteUrl","isResSent","loadGetInitialProps","normalizeRepeatedSlashes","stringifyError","fn","used","result","args","ABSOLUTE_URL_REGEX","window","location","href","origin","substring","length","Component","displayName","name","res","finished","headersSent","urlParts","split","urlNoQuery","slice","join","App","ctx","prototype","getInitialProps","message","Error","pageProps","props","performance","every","method","constructor","page","code","error","JSON","stringify","stack","removeTrailingSlash","route","parsePath","path","hashIndex","queryIndex","hasQuery","undefined","normalizePathTrailingSlash","startsWith","__NEXT_MANUAL_TRAILING_SLASH","__NEXT_TRAILING_SLASH","pathHasPrefix","prefix","hasBasePath","basePath","__NEXT_ROUTER_BASEPATH","isLocalURL","locationOrigin","resolved","URL","_","getSortedRouteObjects","getSortedRoutes","UrlNode","insert","urlPath","_insert","filter","Boolean","smoosh","_smoosh","childrenPaths","children","sort","slugName","splice","restSlugName","optionalRestSlugName","routes","map","c","get","reduce","prev","curr","placeholder","r","unshift","urlPaths","slugNames","isCatchAll","nextSegment","handleSlug","previousSlug","nextSlug","slug","segmentName","isOptional","has","Map","normalizedPages","root","pagePath","objects","getter","indexes","pathnames","i","sorted","ensureLeadingSlash","DEFAULT_SEGMENT_KEY","NOT_FOUND_SEGMENT_KEY","PAGE_SEGMENT_KEY","addSearchParamsIfPageSegment","computeSelectedLayoutSegment","getSegmentValue","getSelectedLayoutSegmentPath","isGroupSegment","isParallelRouteSegment","segment","isPageSegment","stringifiedQuery","segments","parallelRouteKey","rawSegment","tree","first","segmentPath","node","parallelRoutes","values","segmentValue","normalizeAppPath","normalizeRscURL","index","INTERCEPTION_ROUTE_MARKERS","extractInterceptionRouteInformation","isInterceptionRouteAppPath","find","m","interceptingRoute","marker","interceptedRoute","concat","splitInterceptingRoute","isDynamicRoute","TEST_ROUTE","TEST_STRICT_ROUTE","strict","e","n","t","a","PARAM_SEPARATOR","hasAdjacentParameterIssues","normalizeAdjacentParameters","normalizeTokensForRegexp","stripNormalizedSeparators","stripParameterSeparators","normalized","tokens","token","modifier","suffix","RegExp","params","cleaned","safeCompile","safePathToRegexp","safeRegexpToFunction","safeRouteMatcher","options","pathToRegexp","needsNormalization","routeToUse","normalizedRoute","retryError","compiler","compile","regexp","originalMatcher","regexpToFunction","matcherFn","getRouteMatcher","re","groups","rawMatcher","routeMatch","exec","decode","decodeURIComponent","group","match","pos","repeat","entry","ACTION_SUFFIX","APP_DIR_ALIAS","CACHE_ONE_YEAR","DOT_NEXT_ALIAS","ESLINT_DEFAULT_DIRS","GSP_NO_RETURNED_VALUE","GSSP_COMPONENT_MEMBER_ERROR","GSSP_NO_RETURNED_VALUE","HTML_CONTENT_TYPE_HEADER","INFINITE_CACHE","INSTRUMENTATION_HOOK_FILENAME","JSON_CONTENT_TYPE_HEADER","MATCHED_PATH_HEADER","MIDDLEWARE_FILENAME","MIDDLEWARE_LOCATION_REGEXP","NEXT_BODY_SUFFIX","NEXT_CACHE_IMPLICIT_TAG_ID","NEXT_CACHE_REVALIDATED_TAGS_HEADER","NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER","NEXT_CACHE_SOFT_TAG_MAX_LENGTH","NEXT_CACHE_TAGS_HEADER","NEXT_CACHE_TAG_MAX_ITEMS","NEXT_CACHE_TAG_MAX_LENGTH","NEXT_DATA_SUFFIX","NEXT_INTERCEPTION_MARKER_PREFIX","NEXT_META_SUFFIX","NEXT_QUERY_PARAM_PREFIX","NEXT_RESUME_HEADER","NON_STANDARD_NODE_ENV","PAGES_DIR_ALIAS","PRERENDER_REVALIDATE_HEADER","PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER","PROXY_FILENAME","PROXY_LOCATION_REGEXP","PUBLIC_DIR_MIDDLEWARE_CONFLICT","ROOT_DIR_ALIAS","RSC_ACTION_CLIENT_WRAPPER_ALIAS","RSC_ACTION_ENCRYPTION_ALIAS","RSC_ACTION_PROXY_ALIAS","RSC_ACTION_VALIDATE_ALIAS","RSC_CACHE_WRAPPER_ALIAS","RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS","RSC_MOD_REF_PROXY_ALIAS","RSC_SEGMENTS_DIR_SUFFIX","RSC_SEGMENT_SUFFIX","RSC_SUFFIX","SERVER_PROPS_EXPORT_ERROR","SERVER_PROPS_GET_INIT_PROPS_CONFLICT","SERVER_PROPS_SSG_CONFLICT","SERVER_RUNTIME","SSG_FALLBACK_EXPORT_ERROR","SSG_GET_INITIAL_PROPS_CONFLICT","STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR","TEXT_PLAIN_CONTENT_TYPE_HEADER","UNSTABLE_REVALIDATE_RENAME_ERROR","WEBPACK_LAYERS","WEBPACK_RESOURCE_QUERIES","WEB_SOCKET_MAX_RECONNECTIONS","edge","experimentalEdge","nodejs","WEBPACK_LAYERS_NAMES","shared","reactServerComponents","serverSideRendering","actionBrowser","apiNode","apiEdge","middleware","instrument","edgeAsset","appPagesBrowser","pagesDirBrowser","pagesDirEdge","pagesDirNode","GROUP","builtinReact","serverOnly","neutralTarget","clientOnly","bundled","appPages","edgeSSREntry","metadata","metadataRoute","metadataImageMeta","escapeStringRegexp","reHasRegExp","reReplaceRegExp","str","InvariantError","parseLoaderTree","modules","layout","template","defaultPage","conventionPath","getParamProperties","getSegmentParam","interceptionMarker","paramType","paramName","type","optional","isInterceptionAppRoute","isNormalizedAppRoute","parseAppRoute","parseAppRouteSegment","pathnameSegments","appSegment","parts","dynamicSegments","interceptionPrefixFromParamType","resolveParamValue","getParamValueFromSegment","pathSegment","interceptionPrefix","depth","processedSegments","hasOwnProperty","paramValue","PARAMETER_PATTERN","getDynamicParam","interpolateParallelRouteParams","parseMatchedParameter","parseParameter","getParamValue","interpolatedParams","segmentKey","fallbackRouteParams","searchValue","loaderTree","interpolated","structuredClone","pop","nextDepth","parallelRoute","dynamicParamType","treeSegment","getNamedMiddlewareRegex","getNamedRouteRegex","getRouteRegex","getParametrizedRoute","includeSuffix","includePrefix","groupIndex","markerMatch","paramMatches","s","parameterizedRoute","excludeOptionalTrailingSlash","buildGetSafeRouteKey","routeKey","j","fromCharCode","Math","floor","getSafeKeyFromSegment","getSafeRouteKey","routeKeys","keyPrefix","backreferenceDuplicateKeys","cleanedKey","invalidKey","parseInt","duplicateKey","pattern","getNamedParametrizedRoute","prefixRouteKeys","reference","names","intercepted","inverseParts","hasInterceptionMarker","some","namedParameterizedRoute","pathToRegexpPattern","namedRegex","catchAll","catchAllRegex","catchAllGroupedRegex","interpolateAs","asPathname","interpolatedRoute","dynamicRegex","dynamicGroups","dynamicMatches","replaced","resolveHref","router","resolveAs","base","urlAsString","urlProtoMatch","urlAsStringNoProto","normalizedUrl","baseBase","asPath","routeRegex","finalUrl","interpolatedAs","resolvedHref","addPathPrefix","addLocale","locale","defaultLocale","ignorePrefix","lower","toLowerCase","__NEXT_I18N_SUPPORT","require","RouterContext","React","createContext","cancelIdleCallback","requestIdleCallback","self","bind","cb","start","Date","now","setTimeout","didTimeout","timeRemaining","max","id","clearTimeout","useIntersection","hasIntersectionObserver","IntersectionObserver","observers","idList","createObserver","margin","rootMargin","obj","instance","elements","observer","callback","isVisible","isIntersecting","intersectionRatio","observe","element","unobserve","size","disconnect","findIndex","rootRef","disabled","isDisabled","visible","setVisible","useState","elementRef","useRef","setElement","useCallback","current","useEffect","tagName","idleCallback","resetVisible","normalizeLocalePath","cache","WeakMap","locales","lowercasedLocales","detectedLocale","detectDomainLocale","domainItems","domainHostname","domain","getDomainLocale","domainLocales","proto","http","finalLocale","addBasePath","required","__NEXT_MANUAL_CLIENT_BASE_PATH","useMergedRef","refA","refB","cleanupA","cleanupB","cleanupFnA","cleanupFnB","applyRef","cleanup","errorOnce","errors","Set","msg","add","useLinkStatus","prefetched","prefetch","as","bypassPrefetchedCheck","prefetchedKey","catch","err","isModifiedEvent","event","eventTarget","currentTarget","getAttribute","metaKey","ctrlKey","shiftKey","altKey","nativeEvent","which","linkClicked","shallow","scroll","onNavigate","nodeName","isAnchorNodeName","toUpperCase","hasAttribute","preventDefault","navigate","isDefaultPrevented","routerScroll","formatStringOrUrl","urlObjOrString","Link","forwardRef","LinkComponent","forwardedRef","hrefProp","asProp","childrenProp","prefetchProp","passHref","onClick","onMouseEnter","onMouseEnterProp","onTouchStart","onTouchStartProp","legacyBehavior","restProps","useContext","prefetchEnabled","createPropError","expected","actual","requiredPropsGuard","requiredProps","optionalPropsGuard","optionalProps","valType","useMemo","resolvedAs","previousHref","previousAs","child","Children","only","childRef","ref","setIntersectionRef","setIntersectionWithResetRef","el","setRef","childProps","defaultPrevented","priority","__NEXT_LINK_NO_TOUCH_START","curLocale","localeDomain","isLocaleDomain","cloneElement","LinkStatusContext","pending","require_link","twMerge","jsx","NextLink","Input","jsxs","React2","React3","React4","React5","motion","React6","AnimatePresence","React7","MdInfoOutline","MdWarningAmber","MdErrorOutline","MdCheckCircleOutline","MdClose","React8","React9","React10","_a","HiChevronUp","HiChevronDown","gapClasses","HiChevronLeft","HiXMark","Fragment","HiArrowRight","MdOutlineSearch","MdOutlineSearchOff","IoCheckmarkOutline","IoTimeOutline","IoAlertCircleOutline","textColorClass","MdOutlineSwapHoriz"],"mappings":"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","file":"index.js","sourcesContent":["\"use strict\";\n\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interop_require_wildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) return obj;\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") return { default: obj };\n\n var cache = _getRequireWildcardCache(nodeInterop);\n\n if (cache && cache.has(obj)) return cache.get(obj);\n\n var newObj = { __proto__: null };\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) Object.defineProperty(newObj, key, desc);\n else newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n\n if (cache) cache.set(obj, newObj);\n\n return newObj;\n}\nexports._ = _interop_require_wildcard;\n","import type { ParsedUrlQuery } from 'querystring'\n\nexport function searchParamsToUrlQuery(\n searchParams: URLSearchParams\n): ParsedUrlQuery {\n const query: ParsedUrlQuery = {}\n for (const [key, value] of searchParams.entries()) {\n const existing = query[key]\n if (typeof existing === 'undefined') {\n query[key] = value\n } else if (Array.isArray(existing)) {\n existing.push(value)\n } else {\n query[key] = [existing, value]\n }\n }\n return query\n}\n\nfunction stringifyUrlQueryParam(param: unknown): string {\n if (typeof param === 'string') {\n return param\n }\n\n if (\n (typeof param === 'number' && !isNaN(param)) ||\n typeof param === 'boolean'\n ) {\n return String(param)\n } else {\n return ''\n }\n}\n\nexport function urlQueryToSearchParams(query: ParsedUrlQuery): URLSearchParams {\n const searchParams = new URLSearchParams()\n for (const [key, value] of Object.entries(query)) {\n if (Array.isArray(value)) {\n for (const item of value) {\n searchParams.append(key, stringifyUrlQueryParam(item))\n }\n } else {\n searchParams.set(key, stringifyUrlQueryParam(value))\n }\n }\n return searchParams\n}\n\nexport function assign(\n target: URLSearchParams,\n ...searchParamsList: URLSearchParams[]\n): URLSearchParams {\n for (const searchParams of searchParamsList) {\n for (const key of searchParams.keys()) {\n target.delete(key)\n }\n\n for (const [key, value] of searchParams.entries()) {\n target.append(key, value)\n }\n }\n\n return target\n}\n","// Format function modified from nodejs\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nimport type { UrlObject } from 'url'\nimport type { ParsedUrlQuery } from 'querystring'\nimport * as querystring from './querystring'\n\nconst slashedProtocols = /https?|ftp|gopher|file/\n\nexport function formatUrl(urlObj: UrlObject) {\n let { auth, hostname } = urlObj\n let protocol = urlObj.protocol || ''\n let pathname = urlObj.pathname || ''\n let hash = urlObj.hash || ''\n let query = urlObj.query || ''\n let host: string | false = false\n\n auth = auth ? encodeURIComponent(auth).replace(/%3A/i, ':') + '@' : ''\n\n if (urlObj.host) {\n host = auth + urlObj.host\n } else if (hostname) {\n host = auth + (~hostname.indexOf(':') ? `[${hostname}]` : hostname)\n if (urlObj.port) {\n host += ':' + urlObj.port\n }\n }\n\n if (query && typeof query === 'object') {\n query = String(querystring.urlQueryToSearchParams(query as ParsedUrlQuery))\n }\n\n let search = urlObj.search || (query && `?${query}`) || ''\n\n if (protocol && !protocol.endsWith(':')) protocol += ':'\n\n if (\n urlObj.slashes ||\n ((!protocol || slashedProtocols.test(protocol)) && host !== false)\n ) {\n host = '//' + (host || '')\n if (pathname && pathname[0] !== '/') pathname = '/' + pathname\n } else if (!host) {\n host = ''\n }\n\n if (hash && hash[0] !== '#') hash = '#' + hash\n if (search && search[0] !== '?') search = '?' + search\n\n pathname = pathname.replace(/[?#]/g, encodeURIComponent)\n search = search.replace('#', '%23')\n\n return `${protocol}${host}${pathname}${search}${hash}`\n}\n\nexport const urlObjectKeys = [\n 'auth',\n 'hash',\n 'host',\n 'hostname',\n 'href',\n 'path',\n 'pathname',\n 'port',\n 'protocol',\n 'query',\n 'search',\n 'slashes',\n]\n\nexport function formatWithValidation(url: UrlObject): string {\n if (process.env.NODE_ENV === 'development') {\n if (url !== null && typeof url === 'object') {\n Object.keys(url).forEach((key) => {\n if (!urlObjectKeys.includes(key)) {\n console.warn(\n `Unknown key passed via urlObject into url.format: ${key}`\n )\n }\n })\n }\n }\n\n return formatUrl(url)\n}\n","export function omit<T extends { [key: string]: unknown }, K extends keyof T>(\n object: T,\n keys: K[]\n): Omit<T, K> {\n const omitted: { [key: string]: unknown } = {}\n Object.keys(object).forEach((key) => {\n if (!keys.includes(key as K)) {\n omitted[key] = object[key]\n }\n })\n return omitted as Omit<T, K>\n}\n","import type { HtmlProps } from './html-context.shared-runtime'\nimport type { ComponentType, JSX } from 'react'\nimport type { DomainLocale } from '../../server/config'\nimport type { Env } from '@next/env'\nimport type { IncomingMessage, ServerResponse } from 'http'\nimport type { NextRouter } from './router/router'\nimport type { ParsedUrlQuery } from 'querystring'\nimport type { PreviewData } from '../../types'\nimport type { COMPILER_NAMES } from './constants'\nimport type fs from 'fs'\n\nexport type NextComponentType<\n Context extends BaseContext = NextPageContext,\n InitialProps = {},\n Props = {},\n> = ComponentType<Props> & {\n /**\n * Used for initial page load data population. Data returned from `getInitialProps` is serialized when server rendered.\n * Make sure to return plain `Object` without using `Date`, `Map`, `Set`.\n * @param context Context of `page`\n */\n getInitialProps?(context: Context): InitialProps | Promise<InitialProps>\n}\n\nexport type DocumentType = NextComponentType<\n DocumentContext,\n DocumentInitialProps,\n DocumentProps\n>\n\nexport type AppType<P = {}> = NextComponentType<\n AppContextType,\n P,\n AppPropsType<any, P>\n>\n\nexport type AppTreeType = ComponentType<\n AppInitialProps & { [name: string]: any }\n>\n\n/**\n * Web vitals provided to _app.reportWebVitals by Core Web Vitals plugin developed by Google Chrome team.\n * https://nextjs.org/blog/next-9-4#integrated-web-vitals-reporting\n */\nexport const WEB_VITALS = ['CLS', 'FCP', 'FID', 'INP', 'LCP', 'TTFB'] as const\nexport type NextWebVitalsMetric = {\n id: string\n startTime: number\n value: number\n attribution?: { [key: string]: unknown }\n} & (\n | {\n label: 'web-vital'\n name: (typeof WEB_VITALS)[number]\n }\n | {\n label: 'custom'\n name:\n | 'Next.js-hydration'\n | 'Next.js-route-change-to-render'\n | 'Next.js-render'\n }\n)\n\nexport type Enhancer<C> = (Component: C) => C\n\nexport type ComponentsEnhancer =\n | {\n enhanceApp?: Enhancer<AppType>\n enhanceComponent?: Enhancer<NextComponentType>\n }\n | Enhancer<NextComponentType>\n\nexport type RenderPageResult = {\n html: string\n head?: Array<JSX.Element | null>\n}\n\nexport type RenderPage = (\n options?: ComponentsEnhancer\n) => DocumentInitialProps | Promise<DocumentInitialProps>\n\nexport type BaseContext = {\n res?: ServerResponse\n [k: string]: any\n}\n\nexport type NEXT_DATA = {\n props: Record<string, any>\n page: string\n query: ParsedUrlQuery\n buildId: string\n assetPrefix?: string\n nextExport?: boolean\n autoExport?: boolean\n isFallback?: boolean\n isExperimentalCompile?: boolean\n dynamicIds?: (string | number)[]\n err?: Error & {\n statusCode?: number\n source?: typeof COMPILER_NAMES.server | typeof COMPILER_NAMES.edgeServer\n }\n gsp?: boolean\n gssp?: boolean\n customServer?: boolean\n gip?: boolean\n appGip?: boolean\n locale?: string\n locales?: readonly string[]\n defaultLocale?: string\n domainLocales?: readonly DomainLocale[]\n scriptLoader?: any[]\n isPreview?: boolean\n notFoundSrcPage?: string\n}\n\n/**\n * `Next` context\n */\nexport interface NextPageContext {\n /**\n * Error object if encountered during rendering\n */\n err?: (Error & { statusCode?: number }) | null\n /**\n * `HTTP` request object.\n */\n req?: IncomingMessage\n /**\n * `HTTP` response object.\n */\n res?: ServerResponse\n /**\n * Path section of `URL`.\n */\n pathname: string\n /**\n * Query string section of `URL` parsed as an object.\n */\n query: ParsedUrlQuery\n /**\n * `String` of the actual path including query.\n */\n asPath?: string\n /**\n * The currently active locale\n */\n locale?: string\n /**\n * All configured locales\n */\n locales?: readonly string[]\n /**\n * The configured default locale\n */\n defaultLocale?: string\n /**\n * `Component` the tree of the App to use if needing to render separately\n */\n AppTree: AppTreeType\n}\n\nexport type AppContextType<Router extends NextRouter = NextRouter> = {\n Component: NextComponentType<NextPageContext>\n AppTree: AppTreeType\n ctx: NextPageContext\n router: Router\n}\n\nexport type AppInitialProps<PageProps = any> = {\n pageProps: PageProps\n}\n\nexport type AppPropsType<\n Router extends NextRouter = NextRouter,\n PageProps = {},\n> = AppInitialProps<PageProps> & {\n Component: NextComponentType<NextPageContext, any, any>\n router: Router\n __N_SSG?: boolean\n __N_SSP?: boolean\n}\n\nexport type DocumentContext = NextPageContext & {\n renderPage: RenderPage\n defaultGetInitialProps(\n ctx: DocumentContext,\n options?: { nonce?: string }\n ): Promise<DocumentInitialProps>\n}\n\nexport type DocumentInitialProps = RenderPageResult & {\n styles?: React.ReactElement[] | Iterable<React.ReactNode> | JSX.Element\n}\n\nexport type DocumentProps = DocumentInitialProps & HtmlProps\n\n/**\n * Next `API` route request\n */\nexport interface NextApiRequest extends IncomingMessage {\n /**\n * Object of `query` values from url\n */\n query: Partial<{\n [key: string]: string | string[]\n }>\n /**\n * Object of `cookies` from header\n */\n cookies: Partial<{\n [key: string]: string\n }>\n\n body: any\n\n env: Env\n\n draftMode?: boolean\n\n preview?: boolean\n /**\n * Preview data set on the request, if any\n * */\n previewData?: PreviewData\n}\n\n/**\n * Send body of response\n */\ntype Send<T> = (body: T) => void\n\n/**\n * Next `API` route response\n */\nexport type NextApiResponse<Data = any> = ServerResponse & {\n /**\n * Send data `any` data in response\n */\n send: Send<Data>\n /**\n * Send data `json` data in response\n */\n json: Send<Data>\n status: (statusCode: number) => NextApiResponse<Data>\n redirect(url: string): NextApiResponse<Data>\n redirect(status: number, url: string): NextApiResponse<Data>\n\n /**\n * Set draft mode\n */\n setDraftMode: (options: { enable: boolean }) => NextApiResponse<Data>\n\n /**\n * Set preview data for Next.js' prerender mode\n */\n setPreviewData: (\n data: object | string,\n options?: {\n /**\n * Specifies the number (in seconds) for the preview session to last for.\n * The given number will be converted to an integer by rounding down.\n * By default, no maximum age is set and the preview session finishes\n * when the client shuts down (browser is closed).\n */\n maxAge?: number\n /**\n * Specifies the path for the preview session to work under. By default,\n * the path is considered the \"default path\", i.e., any pages under \"/\".\n */\n path?: string\n }\n ) => NextApiResponse<Data>\n\n /**\n * Clear preview data for Next.js' prerender mode\n */\n clearPreviewData: (options?: { path?: string }) => NextApiResponse<Data>\n\n /**\n * Revalidate a specific page and regenerate it using On-Demand Incremental\n * Static Regeneration.\n * The path should be an actual path, not a rewritten path. E.g. for\n * \"/blog/[slug]\" this should be \"/blog/post-1\".\n * @link https://nextjs.org/docs/app/building-your-application/data-fetching/incremental-static-regeneration#on-demand-revalidation-with-revalidatepath\n */\n revalidate: (\n urlPath: string,\n opts?: {\n unstable_onlyGenerated?: boolean\n }\n ) => Promise<void>\n}\n\n/**\n * Next `API` route handler\n */\nexport type NextApiHandler<T = any> = (\n req: NextApiRequest,\n res: NextApiResponse<T>\n) => unknown | Promise<unknown>\n\n/**\n * Utils\n */\nexport function execOnce<T extends (...args: any[]) => ReturnType<T>>(\n fn: T\n): T {\n let used = false\n let result: ReturnType<T>\n\n return ((...args: any[]) => {\n if (!used) {\n used = true\n result = fn(...args)\n }\n return result\n }) as T\n}\n\n// Scheme: https://tools.ietf.org/html/rfc3986#section-3.1\n// Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\nconst ABSOLUTE_URL_REGEX = /^[a-zA-Z][a-zA-Z\\d+\\-.]*?:/\nexport const isAbsoluteUrl = (url: string) => ABSOLUTE_URL_REGEX.test(url)\n\nexport function getLocationOrigin() {\n const { protocol, hostname, port } = window.location\n return `${protocol}//${hostname}${port ? ':' + port : ''}`\n}\n\nexport function getURL() {\n const { href } = window.location\n const origin = getLocationOrigin()\n return href.substring(origin.length)\n}\n\nexport function getDisplayName<P>(Component: ComponentType<P>) {\n return typeof Component === 'string'\n ? Component\n : Component.displayName || Component.name || 'Unknown'\n}\n\nexport function isResSent(res: ServerResponse) {\n return res.finished || res.headersSent\n}\n\nexport function normalizeRepeatedSlashes(url: string) {\n const urlParts = url.split('?')\n const urlNoQuery = urlParts[0]\n\n return (\n urlNoQuery\n // first we replace any non-encoded backslashes with forward\n // then normalize repeated forward slashes\n .replace(/\\\\/g, '/')\n .replace(/\\/\\/+/g, '/') +\n (urlParts[1] ? `?${urlParts.slice(1).join('?')}` : '')\n )\n}\n\nexport async function loadGetInitialProps<\n C extends BaseContext,\n IP = {},\n P = {},\n>(App: NextComponentType<C, IP, P>, ctx: C): Promise<IP> {\n if (process.env.NODE_ENV !== 'production') {\n if (App.prototype?.getInitialProps) {\n const message = `\"${getDisplayName(\n App\n )}.getInitialProps()\" is defined as an instance method - visit https://nextjs.org/docs/messages/get-initial-props-as-an-instance-method for more information.`\n throw new Error(message)\n }\n }\n // when called from _app `ctx` is nested in `ctx`\n const res = ctx.res || (ctx.ctx && ctx.ctx.res)\n\n if (!App.getInitialProps) {\n if (ctx.ctx && ctx.Component) {\n // @ts-ignore pageProps default\n return {\n pageProps: await loadGetInitialProps(ctx.Component, ctx.ctx),\n }\n }\n return {} as IP\n }\n\n const props = await App.getInitialProps(ctx)\n\n if (res && isResSent(res)) {\n return props\n }\n\n if (!props) {\n const message = `\"${getDisplayName(\n App\n )}.getInitialProps()\" should resolve to an object. But found \"${props}\" instead.`\n throw new Error(message)\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (Object.keys(props).length === 0 && !ctx.ctx) {\n console.warn(\n `${getDisplayName(\n App\n )} returned an empty object from \\`getInitialProps\\`. This de-optimizes and prevents automatic static optimization. https://nextjs.org/docs/messages/empty-object-getInitialProps`\n )\n }\n }\n\n return props\n}\n\nexport const SP = typeof performance !== 'undefined'\nexport const ST =\n SP &&\n (['mark', 'measure', 'getEntriesByName'] as const).every(\n (method) => typeof performance[method] === 'function'\n )\n\nexport class DecodeError extends Error {}\nexport class NormalizeError extends Error {}\nexport class PageNotFoundError extends Error {\n code: string\n\n constructor(page: string) {\n super()\n this.code = 'ENOENT'\n this.name = 'PageNotFoundError'\n this.message = `Cannot find module for page: ${page}`\n }\n}\n\nexport class MissingStaticPage extends Error {\n constructor(page: string, message: string) {\n super()\n this.message = `Failed to load static file for page: ${page} ${message}`\n }\n}\n\nexport class MiddlewareNotFoundError extends Error {\n code: string\n constructor() {\n super()\n this.code = 'ENOENT'\n this.message = `Cannot find the middleware module`\n }\n}\n\nexport interface CacheFs {\n existsSync: typeof fs.existsSync\n readFile: typeof fs.promises.readFile\n readFileSync: typeof fs.readFileSync\n writeFile(f: string, d: any): Promise<void>\n mkdir(dir: string): Promise<void | string>\n stat(f: string): Promise<{ mtime: Date }>\n}\n\nexport function stringifyError(error: Error) {\n return JSON.stringify({ message: error.message, stack: error.stack })\n}\n","/**\n * Removes the trailing slash for a given route or page path. Preserves the\n * root page. Examples:\n * - `/foo/bar/` -> `/foo/bar`\n * - `/foo/bar` -> `/foo/bar`\n * - `/` -> `/`\n */\nexport function removeTrailingSlash(route: string) {\n return route.replace(/\\/$/, '') || '/'\n}\n","/**\n * Given a path this function will find the pathname, query and hash and return\n * them. This is useful to parse full paths on the client side.\n * @param path A path to parse e.g. /foo/bar?id=1#hash\n */\nexport function parsePath(path: string) {\n const hashIndex = path.indexOf('#')\n const queryIndex = path.indexOf('?')\n const hasQuery = queryIndex > -1 && (hashIndex < 0 || queryIndex < hashIndex)\n\n if (hasQuery || hashIndex > -1) {\n return {\n pathname: path.substring(0, hasQuery ? queryIndex : hashIndex),\n query: hasQuery\n ? path.substring(queryIndex, hashIndex > -1 ? hashIndex : undefined)\n : '',\n hash: hashIndex > -1 ? path.slice(hashIndex) : '',\n }\n }\n\n return { pathname: path, query: '', hash: '' }\n}\n","import { removeTrailingSlash } from '../shared/lib/router/utils/remove-trailing-slash'\nimport { parsePath } from '../shared/lib/router/utils/parse-path'\n\n/**\n * Normalizes the trailing slash of a path according to the `trailingSlash` option\n * in `next.config.js`.\n */\nexport const normalizePathTrailingSlash = (path: string) => {\n if (!path.startsWith('/') || process.env.__NEXT_MANUAL_TRAILING_SLASH) {\n return path\n }\n\n const { pathname, query, hash } = parsePath(path)\n if (process.env.__NEXT_TRAILING_SLASH) {\n if (/\\.[^/]+\\/?$/.test(pathname)) {\n return `${removeTrailingSlash(pathname)}${query}${hash}`\n } else if (pathname.endsWith('/')) {\n return `${pathname}${query}${hash}`\n } else {\n return `${pathname}/${query}${hash}`\n }\n }\n\n return `${removeTrailingSlash(pathname)}${query}${hash}`\n}\n","import { parsePath } from './parse-path'\n\n/**\n * Checks if a given path starts with a given prefix. It ensures it matches\n * exactly without containing extra chars. e.g. prefix /docs should replace\n * for /docs, /docs/, /docs/a but not /docsss\n * @param path The path to check.\n * @param prefix The prefix to check against.\n */\nexport function pathHasPrefix(path: string, prefix: string) {\n if (typeof path !== 'string') {\n return false\n }\n\n const { pathname } = parsePath(path)\n return pathname === prefix || pathname.startsWith(prefix + '/')\n}\n","import { pathHasPrefix } from '../shared/lib/router/utils/path-has-prefix'\n\nconst basePath = (process.env.__NEXT_ROUTER_BASEPATH as string) || ''\n\nexport function hasBasePath(path: string): boolean {\n return pathHasPrefix(path, basePath)\n}\n","import { isAbsoluteUrl, getLocationOrigin } from '../../utils'\nimport { hasBasePath } from '../../../../client/has-base-path'\n\n/**\n * Detects whether a given url is routable by the Next.js router (browser only).\n */\nexport function isLocalURL(url: string): boolean {\n // prevent a hydration mismatch on href for url with anchor refs\n if (!isAbsoluteUrl(url)) return true\n try {\n // absolute urls can be local if they are on the same origin\n const locationOrigin = getLocationOrigin()\n const resolved = new URL(url, locationOrigin)\n return resolved.origin === locationOrigin && hasBasePath(resolved.pathname)\n } catch (_) {\n return false\n }\n}\n","class UrlNode {\n placeholder: boolean = true\n children: Map<string, UrlNode> = new Map()\n slugName: string | null = null\n restSlugName: string | null = null\n optionalRestSlugName: string | null = null\n\n insert(urlPath: string): void {\n this._insert(urlPath.split('/').filter(Boolean), [], false)\n }\n\n smoosh(): string[] {\n return this._smoosh()\n }\n\n private _smoosh(prefix: string = '/'): string[] {\n const childrenPaths = [...this.children.keys()].sort()\n if (this.slugName !== null) {\n childrenPaths.splice(childrenPaths.indexOf('[]'), 1)\n }\n if (this.restSlugName !== null) {\n childrenPaths.splice(childrenPaths.indexOf('[...]'), 1)\n }\n if (this.optionalRestSlugName !== null) {\n childrenPaths.splice(childrenPaths.indexOf('[[...]]'), 1)\n }\n\n const routes = childrenPaths\n .map((c) => this.children.get(c)!._smoosh(`${prefix}${c}/`))\n .reduce((prev, curr) => [...prev, ...curr], [])\n\n if (this.slugName !== null) {\n routes.push(\n ...this.children.get('[]')!._smoosh(`${prefix}[${this.slugName}]/`)\n )\n }\n\n if (!this.placeholder) {\n const r = prefix === '/' ? '/' : prefix.slice(0, -1)\n if (this.optionalRestSlugName != null) {\n throw new Error(\n `You cannot define a route with the same specificity as a optional catch-all route (\"${r}\" and \"${r}[[...${this.optionalRestSlugName}]]\").`\n )\n }\n\n routes.unshift(r)\n }\n\n if (this.restSlugName !== null) {\n routes.push(\n ...this.children\n .get('[...]')!\n ._smoosh(`${prefix}[...${this.restSlugName}]/`)\n )\n }\n\n if (this.optionalRestSlugName !== null) {\n routes.push(\n ...this.children\n .get('[[...]]')!\n ._smoosh(`${prefix}[[...${this.optionalRestSlugName}]]/`)\n )\n }\n\n return routes\n }\n\n private _insert(\n urlPaths: string[],\n slugNames: string[],\n isCatchAll: boolean\n ): void {\n if (urlPaths.length === 0) {\n this.placeholder = false\n return\n }\n\n if (isCatchAll) {\n throw new Error(`Catch-all must be the last part of the URL.`)\n }\n\n // The next segment in the urlPaths list\n let nextSegment = urlPaths[0]\n\n // Check if the segment matches `[something]`\n if (nextSegment.startsWith('[') && nextSegment.endsWith(']')) {\n // Strip `[` and `]`, leaving only `something`\n let segmentName = nextSegment.slice(1, -1)\n\n let isOptional = false\n if (segmentName.startsWith('[') && segmentName.endsWith(']')) {\n // Strip optional `[` and `]`, leaving only `something`\n segmentName = segmentName.slice(1, -1)\n isOptional = true\n }\n\n if (segmentName.startsWith('…')) {\n throw new Error(\n `Detected a three-dot character ('…') at ('${segmentName}'). Did you mean ('...')?`\n )\n }\n\n if (segmentName.startsWith('...')) {\n // Strip `...`, leaving only `something`\n segmentName = segmentName.substring(3)\n isCatchAll = true\n }\n\n if (segmentName.startsWith('[') || segmentName.endsWith(']')) {\n throw new Error(\n `Segment names may not start or end with extra brackets ('${segmentName}').`\n )\n }\n\n if (segmentName.startsWith('.')) {\n throw new Error(\n `Segment names may not start with erroneous periods ('${segmentName}').`\n )\n }\n\n function handleSlug(previousSlug: string | null, nextSlug: string) {\n if (previousSlug !== null) {\n // If the specific segment already has a slug but the slug is not `something`\n // This prevents collisions like:\n // pages/[post]/index.js\n // pages/[id]/index.js\n // Because currently multiple dynamic params on the same segment level are not supported\n if (previousSlug !== nextSlug) {\n // TODO: This error seems to be confusing for users, needs an error link, the description can be based on above comment.\n throw new Error(\n `You cannot use different slug names for the same dynamic path ('${previousSlug}' !== '${nextSlug}').`\n )\n }\n }\n\n slugNames.forEach((slug) => {\n if (slug === nextSlug) {\n throw new Error(\n `You cannot have the same slug name \"${nextSlug}\" repeat within a single dynamic path`\n )\n }\n\n if (slug.replace(/\\W/g, '') === nextSegment.replace(/\\W/g, '')) {\n throw new Error(\n `You cannot have the slug names \"${slug}\" and \"${nextSlug}\" differ only by non-word symbols within a single dynamic path`\n )\n }\n })\n\n slugNames.push(nextSlug)\n }\n\n if (isCatchAll) {\n if (isOptional) {\n if (this.restSlugName != null) {\n throw new Error(\n `You cannot use both an required and optional catch-all route at the same level (\"[...${this.restSlugName}]\" and \"${urlPaths[0]}\" ).`\n )\n }\n\n handleSlug(this.optionalRestSlugName, segmentName)\n // slugName is kept as it can only be one particular slugName\n this.optionalRestSlugName = segmentName\n // nextSegment is overwritten to [[...]] so that it can later be sorted specifically\n nextSegment = '[[...]]'\n } else {\n if (this.optionalRestSlugName != null) {\n throw new Error(\n `You cannot use both an optional and required catch-all route at the same level (\"[[...${this.optionalRestSlugName}]]\" and \"${urlPaths[0]}\").`\n )\n }\n\n handleSlug(this.restSlugName, segmentName)\n // slugName is kept as it can only be one particular slugName\n this.restSlugName = segmentName\n // nextSegment is overwritten to [...] so that it can later be sorted specifically\n nextSegment = '[...]'\n }\n } else {\n if (isOptional) {\n throw new Error(\n `Optional route parameters are not yet supported (\"${urlPaths[0]}\").`\n )\n }\n handleSlug(this.slugName, segmentName)\n // slugName is kept as it can only be one particular slugName\n this.slugName = segmentName\n // nextSegment is overwritten to [] so that it can later be sorted specifically\n nextSegment = '[]'\n }\n }\n\n // If this UrlNode doesn't have the nextSegment yet we create a new child UrlNode\n if (!this.children.has(nextSegment)) {\n this.children.set(nextSegment, new UrlNode())\n }\n\n this.children\n .get(nextSegment)!\n ._insert(urlPaths.slice(1), slugNames, isCatchAll)\n }\n}\n\n/**\n * @deprecated Use `sortSortableRoutes` or `sortPages` instead.\n */\nexport function getSortedRoutes(\n normalizedPages: ReadonlyArray<string>\n): string[] {\n // First the UrlNode is created, and every UrlNode can have only 1 dynamic segment\n // Eg you can't have pages/[post]/abc.js and pages/[hello]/something-else.js\n // Only 1 dynamic segment per nesting level\n\n // So in the case that is test/integration/dynamic-routing it'll be this:\n // pages/[post]/comments.js\n // pages/blog/[post]/comment/[id].js\n // Both are fine because `pages/[post]` and `pages/blog` are on the same level\n // So in this case `UrlNode` created here has `this.slugName === 'post'`\n // And since your PR passed through `slugName` as an array basically it'd including it in too many possibilities\n // Instead what has to be passed through is the upwards path's dynamic names\n const root = new UrlNode()\n\n // Here the `root` gets injected multiple paths, and insert will break them up into sublevels\n normalizedPages.forEach((pagePath) => root.insert(pagePath))\n // Smoosh will then sort those sublevels up to the point where you get the correct route definition priority\n return root.smoosh()\n}\n\n/**\n * @deprecated Use `sortSortableRouteObjects` or `sortPageObjects` instead.\n */\nexport function getSortedRouteObjects<T>(\n objects: T[],\n getter: (obj: T) => string\n): T[] {\n // We're assuming here that all the pathnames are unique, that way we can\n // sort the list and use the index as the key.\n const indexes: Record<string, number> = {}\n const pathnames: string[] = []\n for (let i = 0; i < objects.length; i++) {\n const pathname = getter(objects[i])\n indexes[pathname] = i\n pathnames[i] = pathname\n }\n\n // Sort the pathnames.\n const sorted = getSortedRoutes(pathnames)\n\n // Map the sorted pathnames back to the original objects using the new sorted\n // index.\n return sorted.map((pathname) => objects[indexes[pathname]])\n}\n","/**\n * For a given page path, this function ensures that there is a leading slash.\n * If there is not a leading slash, one is added, otherwise it is noop.\n */\nexport function ensureLeadingSlash(path: string) {\n return path.startsWith('/') ? path : `/${path}`\n}\n","import type { FlightRouterState, Segment } from './app-router-types'\n\nexport function getSegmentValue(segment: Segment) {\n return Array.isArray(segment) ? segment[1] : segment\n}\n\nexport function isGroupSegment(segment: string) {\n // Use array[0] for performant purpose\n return segment[0] === '(' && segment.endsWith(')')\n}\n\nexport function isParallelRouteSegment(segment: string) {\n return segment.startsWith('@') && segment !== '@children'\n}\n\nexport function addSearchParamsIfPageSegment(\n segment: Segment,\n searchParams: Record<string, string | string[] | undefined>\n) {\n const isPageSegment = segment.includes(PAGE_SEGMENT_KEY)\n\n if (isPageSegment) {\n const stringifiedQuery = JSON.stringify(searchParams)\n return stringifiedQuery !== '{}'\n ? PAGE_SEGMENT_KEY + '?' + stringifiedQuery\n : PAGE_SEGMENT_KEY\n }\n\n return segment\n}\n\nexport function computeSelectedLayoutSegment(\n segments: string[] | null,\n parallelRouteKey: string\n): string | null {\n if (!segments || segments.length === 0) {\n return null\n }\n\n // For 'children', use first segment; for other parallel routes, use last segment\n const rawSegment =\n parallelRouteKey === 'children'\n ? segments[0]\n : segments[segments.length - 1]\n\n // If the default slot is showing, return null since it's not technically \"selected\" (it's a fallback)\n // Returning an internal value like `__DEFAULT__` would be confusing\n return rawSegment === DEFAULT_SEGMENT_KEY ? null : rawSegment\n}\n\n/** Get the canonical parameters from the current level to the leaf node. */\nexport function getSelectedLayoutSegmentPath(\n tree: FlightRouterState,\n parallelRouteKey: string,\n first = true,\n segmentPath: string[] = []\n): string[] {\n let node: FlightRouterState\n if (first) {\n // Use the provided parallel route key on the first parallel route\n node = tree[1][parallelRouteKey]\n } else {\n // After first parallel route prefer children, if there's no children pick the first parallel route.\n const parallelRoutes = tree[1]\n node = parallelRoutes.children ?? Object.values(parallelRoutes)[0]\n }\n\n if (!node) return segmentPath\n const segment = node[0]\n\n let segmentValue = getSegmentValue(segment)\n\n if (!segmentValue || segmentValue.startsWith(PAGE_SEGMENT_KEY)) {\n return segmentPath\n }\n\n segmentPath.push(segmentValue)\n\n return getSelectedLayoutSegmentPath(\n node,\n parallelRouteKey,\n false,\n segmentPath\n )\n}\n\nexport const PAGE_SEGMENT_KEY = '__PAGE__'\nexport const DEFAULT_SEGMENT_KEY = '__DEFAULT__'\nexport const NOT_FOUND_SEGMENT_KEY = '/_not-found'\n","import { ensureLeadingSlash } from '../../page-path/ensure-leading-slash'\nimport { isGroupSegment } from '../../segment'\n\n/**\n * Normalizes an app route so it represents the actual request path. Essentially\n * performing the following transformations:\n *\n * - `/(dashboard)/user/[id]/page` to `/user/[id]`\n * - `/(dashboard)/account/page` to `/account`\n * - `/user/[id]/page` to `/user/[id]`\n * - `/account/page` to `/account`\n * - `/page` to `/`\n * - `/(dashboard)/user/[id]/route` to `/user/[id]`\n * - `/(dashboard)/account/route` to `/account`\n * - `/user/[id]/route` to `/user/[id]`\n * - `/account/route` to `/account`\n * - `/route` to `/`\n * - `/` to `/`\n *\n * @param route the app route to normalize\n * @returns the normalized pathname\n */\nexport function normalizeAppPath(route: string) {\n return ensureLeadingSlash(\n route.split('/').reduce((pathname, segment, index, segments) => {\n // Empty segments are ignored.\n if (!segment) {\n return pathname\n }\n\n // Groups are ignored.\n if (isGroupSegment(segment)) {\n return pathname\n }\n\n // Parallel segments are ignored.\n if (segment[0] === '@') {\n return pathname\n }\n\n // The last segment (if it's a leaf) should be ignored.\n if (\n (segment === 'page' || segment === 'route') &&\n index === segments.length - 1\n ) {\n return pathname\n }\n\n return `${pathname}/${segment}`\n }, '')\n )\n}\n\n/**\n * Strips the `.rsc` extension if it's in the pathname.\n * Since this function is used on full urls it checks `?` for searchParams handling.\n */\nexport function normalizeRscURL(url: string) {\n return url.replace(\n /\\.rsc($|\\?)/,\n // $1 ensures `?` is preserved\n '$1'\n )\n}\n","import { normalizeAppPath } from './app-paths'\n\n// order matters here, the first match will be used\nexport const INTERCEPTION_ROUTE_MARKERS = [\n '(..)(..)',\n '(.)',\n '(..)',\n '(...)',\n] as const\n\nexport type InterceptionMarker = (typeof INTERCEPTION_ROUTE_MARKERS)[number]\n\nexport function isInterceptionRouteAppPath(path: string): boolean {\n // TODO-APP: add more serious validation\n return (\n path\n .split('/')\n .find((segment) =>\n INTERCEPTION_ROUTE_MARKERS.find((m) => segment.startsWith(m))\n ) !== undefined\n )\n}\n\ntype InterceptionRouteInformation = {\n /**\n * The intercepting route. This is the route that is being intercepted or the\n * route that the user was coming from. This is matched by the Next-Url\n * header.\n */\n interceptingRoute: string\n\n /**\n * The intercepted route. This is the route that is being intercepted or the\n * route that the user is going to. This is matched by the request pathname.\n */\n interceptedRoute: string\n}\n\nexport function extractInterceptionRouteInformation(\n path: string\n): InterceptionRouteInformation {\n let interceptingRoute: string | undefined\n let marker: (typeof INTERCEPTION_ROUTE_MARKERS)[number] | undefined\n let interceptedRoute: string | undefined\n\n for (const segment of path.split('/')) {\n marker = INTERCEPTION_ROUTE_MARKERS.find((m) => segment.startsWith(m))\n if (marker) {\n ;[interceptingRoute, interceptedRoute] = path.split(marker, 2)\n break\n }\n }\n\n if (!interceptingRoute || !marker || !interceptedRoute) {\n throw new Error(\n `Invalid interception route: ${path}. Must be in the format /<intercepting route>/(..|...|..)(..)/<intercepted route>`\n )\n }\n\n interceptingRoute = normalizeAppPath(interceptingRoute) // normalize the path, e.g. /(blog)/feed -> /feed\n\n switch (marker) {\n case '(.)':\n // (.) indicates that we should match with sibling routes, so we just need to append the intercepted route to the intercepting route\n if (interceptingRoute === '/') {\n interceptedRoute = `/${interceptedRoute}`\n } else {\n interceptedRoute = interceptingRoute + '/' + interceptedRoute\n }\n break\n case '(..)':\n // (..) indicates that we should match at one level up, so we need to remove the last segment of the intercepting route\n if (interceptingRoute === '/') {\n throw new Error(\n `Invalid interception route: ${path}. Cannot use (..) marker at the root level, use (.) instead.`\n )\n }\n interceptedRoute = interceptingRoute\n .split('/')\n .slice(0, -1)\n .concat(interceptedRoute)\n .join('/')\n break\n case '(...)':\n // (...) will match the route segment in the root directory, so we need to use the root directory to prepend the intercepted route\n interceptedRoute = '/' + interceptedRoute\n break\n case '(..)(..)':\n // (..)(..) indicates that we should match at two levels up, so we need to remove the last two segments of the intercepting route\n\n const splitInterceptingRoute = interceptingRoute.split('/')\n if (splitInterceptingRoute.length <= 2) {\n throw new Error(\n `Invalid interception route: ${path}. Cannot use (..)(..) marker at the root level or one level up.`\n )\n }\n\n interceptedRoute = splitInterceptingRoute\n .slice(0, -2)\n .concat(interceptedRoute)\n .join('/')\n break\n default:\n throw new Error('Invariant: unexpected marker')\n }\n\n return { interceptingRoute, interceptedRoute }\n}\n","import {\n extractInterceptionRouteInformation,\n isInterceptionRouteAppPath,\n} from './interception-routes'\n\n// Identify /.*[param].*/ in route string\nconst TEST_ROUTE = /\\/[^/]*\\[[^/]+\\][^/]*(?=\\/|$)/\n\n// Identify /[param]/ in route string\nconst TEST_STRICT_ROUTE = /\\/\\[[^/]+\\](?=\\/|$)/\n\n/**\n * Check if a route is dynamic.\n *\n * @param route - The route to check.\n * @param strict - Whether to use strict mode which prohibits segments with prefixes/suffixes (default: true).\n * @returns Whether the route is dynamic.\n */\nexport function isDynamicRoute(route: string, strict: boolean = true): boolean {\n if (isInterceptionRouteAppPath(route)) {\n route = extractInterceptionRouteInformation(route).interceptedRoute\n }\n\n if (strict) {\n return TEST_STRICT_ROUTE.test(route)\n }\n\n return TEST_ROUTE.test(route)\n}\n","export { getSortedRoutes, getSortedRouteObjects } from './sorted-routes'\nexport { isDynamicRoute } from './is-dynamic'\n","(()=>{\"use strict\";if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var e={};(()=>{var n=e;Object.defineProperty(n,\"__esModule\",{value:true});n.pathToRegexp=n.tokensToRegexp=n.regexpToFunction=n.match=n.tokensToFunction=n.compile=n.parse=void 0;function lexer(e){var n=[];var r=0;while(r<e.length){var t=e[r];if(t===\"*\"||t===\"+\"||t===\"?\"){n.push({type:\"MODIFIER\",index:r,value:e[r++]});continue}if(t===\"\\\\\"){n.push({type:\"ESCAPED_CHAR\",index:r++,value:e[r++]});continue}if(t===\"{\"){n.push({type:\"OPEN\",index:r,value:e[r++]});continue}if(t===\"}\"){n.push({type:\"CLOSE\",index:r,value:e[r++]});continue}if(t===\":\"){var a=\"\";var i=r+1;while(i<e.length){var o=e.charCodeAt(i);if(o>=48&&o<=57||o>=65&&o<=90||o>=97&&o<=122||o===95){a+=e[i++];continue}break}if(!a)throw new TypeError(\"Missing parameter name at \".concat(r));n.push({type:\"NAME\",index:r,value:a});r=i;continue}if(t===\"(\"){var c=1;var f=\"\";var i=r+1;if(e[i]===\"?\"){throw new TypeError('Pattern cannot start with \"?\" at '.concat(i))}while(i<e.length){if(e[i]===\"\\\\\"){f+=e[i++]+e[i++];continue}if(e[i]===\")\"){c--;if(c===0){i++;break}}else if(e[i]===\"(\"){c++;if(e[i+1]!==\"?\"){throw new TypeError(\"Capturing groups are not allowed at \".concat(i))}}f+=e[i++]}if(c)throw new TypeError(\"Unbalanced pattern at \".concat(r));if(!f)throw new TypeError(\"Missing pattern at \".concat(r));n.push({type:\"PATTERN\",index:r,value:f});r=i;continue}n.push({type:\"CHAR\",index:r,value:e[r++]})}n.push({type:\"END\",index:r,value:\"\"});return n}function parse(e,n){if(n===void 0){n={}}var r=lexer(e);var t=n.prefixes,a=t===void 0?\"./\":t,i=n.delimiter,o=i===void 0?\"/#?\":i;var c=[];var f=0;var u=0;var p=\"\";var tryConsume=function(e){if(u<r.length&&r[u].type===e)return r[u++].value};var mustConsume=function(e){var n=tryConsume(e);if(n!==undefined)return n;var t=r[u],a=t.type,i=t.index;throw new TypeError(\"Unexpected \".concat(a,\" at \").concat(i,\", expected \").concat(e))};var consumeText=function(){var e=\"\";var n;while(n=tryConsume(\"CHAR\")||tryConsume(\"ESCAPED_CHAR\")){e+=n}return e};var isSafe=function(e){for(var n=0,r=o;n<r.length;n++){var t=r[n];if(e.indexOf(t)>-1)return true}return false};var safePattern=function(e){var n=c[c.length-1];var r=e||(n&&typeof n===\"string\"?n:\"\");if(n&&!r){throw new TypeError('Must have text between two parameters, missing text after \"'.concat(n.name,'\"'))}if(!r||isSafe(r))return\"[^\".concat(escapeString(o),\"]+?\");return\"(?:(?!\".concat(escapeString(r),\")[^\").concat(escapeString(o),\"])+?\")};while(u<r.length){var v=tryConsume(\"CHAR\");var s=tryConsume(\"NAME\");var d=tryConsume(\"PATTERN\");if(s||d){var g=v||\"\";if(a.indexOf(g)===-1){p+=g;g=\"\"}if(p){c.push(p);p=\"\"}c.push({name:s||f++,prefix:g,suffix:\"\",pattern:d||safePattern(g),modifier:tryConsume(\"MODIFIER\")||\"\"});continue}var x=v||tryConsume(\"ESCAPED_CHAR\");if(x){p+=x;continue}if(p){c.push(p);p=\"\"}var h=tryConsume(\"OPEN\");if(h){var g=consumeText();var l=tryConsume(\"NAME\")||\"\";var m=tryConsume(\"PATTERN\")||\"\";var T=consumeText();mustConsume(\"CLOSE\");c.push({name:l||(m?f++:\"\"),pattern:l&&!m?safePattern(g):m,prefix:g,suffix:T,modifier:tryConsume(\"MODIFIER\")||\"\"});continue}mustConsume(\"END\")}return c}n.parse=parse;function compile(e,n){return tokensToFunction(parse(e,n),n)}n.compile=compile;function tokensToFunction(e,n){if(n===void 0){n={}}var r=flags(n);var t=n.encode,a=t===void 0?function(e){return e}:t,i=n.validate,o=i===void 0?true:i;var c=e.map((function(e){if(typeof e===\"object\"){return new RegExp(\"^(?:\".concat(e.pattern,\")$\"),r)}}));return function(n){var r=\"\";for(var t=0;t<e.length;t++){var i=e[t];if(typeof i===\"string\"){r+=i;continue}var f=n?n[i.name]:undefined;var u=i.modifier===\"?\"||i.modifier===\"*\";var p=i.modifier===\"*\"||i.modifier===\"+\";if(Array.isArray(f)){if(!p){throw new TypeError('Expected \"'.concat(i.name,'\" to not repeat, but got an array'))}if(f.length===0){if(u)continue;throw new TypeError('Expected \"'.concat(i.name,'\" to not be empty'))}for(var v=0;v<f.length;v++){var s=a(f[v],i);if(o&&!c[t].test(s)){throw new TypeError('Expected all \"'.concat(i.name,'\" to match \"').concat(i.pattern,'\", but got \"').concat(s,'\"'))}r+=i.prefix+s+i.suffix}continue}if(typeof f===\"string\"||typeof f===\"number\"){var s=a(String(f),i);if(o&&!c[t].test(s)){throw new TypeError('Expected \"'.concat(i.name,'\" to match \"').concat(i.pattern,'\", but got \"').concat(s,'\"'))}r+=i.prefix+s+i.suffix;continue}if(u)continue;var d=p?\"an array\":\"a string\";throw new TypeError('Expected \"'.concat(i.name,'\" to be ').concat(d))}return r}}n.tokensToFunction=tokensToFunction;function match(e,n){var r=[];var t=pathToRegexp(e,r,n);return regexpToFunction(t,r,n)}n.match=match;function regexpToFunction(e,n,r){if(r===void 0){r={}}var t=r.decode,a=t===void 0?function(e){return e}:t;return function(r){var t=e.exec(r);if(!t)return false;var i=t[0],o=t.index;var c=Object.create(null);var _loop_1=function(e){if(t[e]===undefined)return\"continue\";var r=n[e-1];if(r.modifier===\"*\"||r.modifier===\"+\"){c[r.name]=t[e].split(r.prefix+r.suffix).map((function(e){return a(e,r)}))}else{c[r.name]=a(t[e],r)}};for(var f=1;f<t.length;f++){_loop_1(f)}return{path:i,index:o,params:c}}}n.regexpToFunction=regexpToFunction;function escapeString(e){return e.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g,\"\\\\$1\")}function flags(e){return e&&e.sensitive?\"\":\"i\"}function regexpToRegexp(e,n){if(!n)return e;var r=/\\((?:\\?<(.*?)>)?(?!\\?)/g;var t=0;var a=r.exec(e.source);while(a){n.push({name:a[1]||t++,prefix:\"\",suffix:\"\",modifier:\"\",pattern:\"\"});a=r.exec(e.source)}return e}function arrayToRegexp(e,n,r){var t=e.map((function(e){return pathToRegexp(e,n,r).source}));return new RegExp(\"(?:\".concat(t.join(\"|\"),\")\"),flags(r))}function stringToRegexp(e,n,r){return tokensToRegexp(parse(e,r),n,r)}function tokensToRegexp(e,n,r){if(r===void 0){r={}}var t=r.strict,a=t===void 0?false:t,i=r.start,o=i===void 0?true:i,c=r.end,f=c===void 0?true:c,u=r.encode,p=u===void 0?function(e){return e}:u,v=r.delimiter,s=v===void 0?\"/#?\":v,d=r.endsWith,g=d===void 0?\"\":d;var x=\"[\".concat(escapeString(g),\"]|$\");var h=\"[\".concat(escapeString(s),\"]\");var l=o?\"^\":\"\";for(var m=0,T=e;m<T.length;m++){var E=T[m];if(typeof E===\"string\"){l+=escapeString(p(E))}else{var w=escapeString(p(E.prefix));var y=escapeString(p(E.suffix));if(E.pattern){if(n)n.push(E);if(w||y){if(E.modifier===\"+\"||E.modifier===\"*\"){var R=E.modifier===\"*\"?\"?\":\"\";l+=\"(?:\".concat(w,\"((?:\").concat(E.pattern,\")(?:\").concat(y).concat(w,\"(?:\").concat(E.pattern,\"))*)\").concat(y,\")\").concat(R)}else{l+=\"(?:\".concat(w,\"(\").concat(E.pattern,\")\").concat(y,\")\").concat(E.modifier)}}else{if(E.modifier===\"+\"||E.modifier===\"*\"){throw new TypeError('Can not repeat \"'.concat(E.name,'\" without a prefix and suffix'))}l+=\"(\".concat(E.pattern,\")\").concat(E.modifier)}}else{l+=\"(?:\".concat(w).concat(y,\")\").concat(E.modifier)}}}if(f){if(!a)l+=\"\".concat(h,\"?\");l+=!r.endsWith?\"$\":\"(?=\".concat(x,\")\")}else{var A=e[e.length-1];var _=typeof A===\"string\"?h.indexOf(A[A.length-1])>-1:A===undefined;if(!a){l+=\"(?:\".concat(h,\"(?=\").concat(x,\"))?\")}if(!_){l+=\"(?=\".concat(h,\"|\").concat(x,\")\")}}return new RegExp(l,flags(r))}n.tokensToRegexp=tokensToRegexp;function pathToRegexp(e,n,r){if(e instanceof RegExp)return regexpToRegexp(e,n);if(Array.isArray(e))return arrayToRegexp(e,n,r);return stringToRegexp(e,n,r)}n.pathToRegexp=pathToRegexp})();module.exports=e})();","import type { Token } from 'next/dist/compiled/path-to-regexp'\n\n/**\n * Route pattern normalization utilities for path-to-regexp compatibility.\n *\n * path-to-regexp 6.3.0+ introduced stricter validation that rejects certain\n * patterns commonly used in Next.js interception routes. This module provides\n * normalization functions to make Next.js route patterns compatible with the\n * updated library while preserving all functionality.\n */\n\n/**\n * Internal separator used to normalize adjacent parameter patterns.\n * This unique marker is inserted between adjacent parameters and stripped out\n * during parameter extraction to avoid conflicts with real URL content.\n */\nexport const PARAM_SEPARATOR = '_NEXTSEP_'\n\n/**\n * Detects if a route pattern needs normalization for path-to-regexp compatibility.\n */\nexport function hasAdjacentParameterIssues(route: string): boolean {\n if (typeof route !== 'string') return false\n\n // Check for interception route markers followed immediately by parameters\n // Pattern: /(.):param, /(..):param, /(...):param, /(.)(.):param etc.\n // These patterns cause \"Must have text between two parameters\" errors\n if (/\\/\\(\\.{1,3}\\):[^/\\s]+/.test(route)) {\n return true\n }\n\n // Check for basic adjacent parameters without separators\n // Pattern: :param1:param2 (but not :param* or other URL patterns)\n if (/:[a-zA-Z_][a-zA-Z0-9_]*:[a-zA-Z_][a-zA-Z0-9_]*/.test(route)) {\n return true\n }\n\n return false\n}\n\n/**\n * Normalizes route patterns that have adjacent parameters without text between them.\n * Inserts a unique separator that can be safely stripped out later.\n */\nexport function normalizeAdjacentParameters(route: string): string {\n let normalized = route\n\n // Handle interception route patterns: (.):param -> (.)_NEXTSEP_:param\n normalized = normalized.replace(\n /(\\([^)]*\\)):([^/\\s]+)/g,\n `$1${PARAM_SEPARATOR}:$2`\n )\n\n // Handle other adjacent parameter patterns: :param1:param2 -> :param1_NEXTSEP_:param2\n normalized = normalized.replace(/:([^:/\\s)]+)(?=:)/g, `:$1${PARAM_SEPARATOR}`)\n\n return normalized\n}\n\n/**\n * Normalizes tokens that have repeating modifiers (* or +) but empty prefix and suffix.\n *\n * path-to-regexp 6.3.0+ introduced validation that throws:\n * \"Can not repeat without prefix/suffix\"\n *\n * This occurs when a token has modifier: '*' or '+' with both prefix: '' and suffix: ''\n */\nexport function normalizeTokensForRegexp(tokens: Token[]): Token[] {\n return tokens.map((token) => {\n // Token union type: Token = string | TokenObject\n // Literal path segments are strings, parameters/wildcards are objects\n if (\n typeof token === 'object' &&\n token !== null &&\n // Not all token objects have 'modifier' property (e.g., simple text tokens)\n 'modifier' in token &&\n // Only repeating modifiers (* or +) cause the validation error\n // Other modifiers like '?' (optional) are fine\n (token.modifier === '*' || token.modifier === '+') &&\n // Token objects can have different shapes depending on route pattern\n 'prefix' in token &&\n 'suffix' in token &&\n // Both prefix and suffix must be empty strings\n // This is what causes the validation error in path-to-regexp\n token.prefix === '' &&\n token.suffix === ''\n ) {\n // Add minimal prefix to satisfy path-to-regexp validation\n // We use '/' as it's the most common path delimiter and won't break route matching\n // The prefix gets used in regex generation but doesn't affect parameter extraction\n return {\n ...token,\n prefix: '/',\n }\n }\n return token\n })\n}\n\n/**\n * Strips normalization separators from compiled pathname.\n * This removes separators that were inserted by normalizeAdjacentParameters\n * to satisfy path-to-regexp validation.\n *\n * Only removes separators in the specific contexts where they were inserted:\n * - After interception route markers: (.)_NEXTSEP_ -> (.)\n *\n * This targeted approach ensures we don't accidentally remove the separator\n * from legitimate user content.\n */\nexport function stripNormalizedSeparators(pathname: string): string {\n // Remove separator after interception route markers\n // Pattern: (.)_NEXTSEP_ -> (.), (..)_NEXTSEP_ -> (..), etc.\n // The separator appears after the closing paren of interception markers\n return pathname.replace(new RegExp(`\\\\)${PARAM_SEPARATOR}`, 'g'), ')')\n}\n\n/**\n * Strips normalization separators from extracted route parameters.\n * Used by both server and client code to clean up parameters after route matching.\n */\nexport function stripParameterSeparators(\n params: Record<string, any>\n): Record<string, any> {\n const cleaned: Record<string, any> = {}\n\n for (const [key, value] of Object.entries(params)) {\n if (typeof value === 'string') {\n // Remove the separator if it appears at the start of parameter values\n cleaned[key] = value.replace(new RegExp(`^${PARAM_SEPARATOR}`), '')\n } else if (Array.isArray(value)) {\n // Handle array parameters (from repeated route segments)\n cleaned[key] = value.map((item) =>\n typeof item === 'string'\n ? item.replace(new RegExp(`^${PARAM_SEPARATOR}`), '')\n : item\n )\n } else {\n cleaned[key] = value\n }\n }\n\n return cleaned\n}\n","/**\n * Client-safe utilities for route matching that don't import server-side\n * utilities to avoid bundling issues with Turbopack\n */\n\nimport type {\n Key,\n TokensToRegexpOptions,\n ParseOptions,\n TokensToFunctionOptions,\n} from 'next/dist/compiled/path-to-regexp'\nimport {\n pathToRegexp,\n compile,\n regexpToFunction,\n} from 'next/dist/compiled/path-to-regexp'\nimport {\n hasAdjacentParameterIssues,\n normalizeAdjacentParameters,\n stripParameterSeparators,\n stripNormalizedSeparators,\n} from '../../../../lib/route-pattern-normalizer'\n\n/**\n * Client-safe wrapper around pathToRegexp that handles path-to-regexp 6.3.0+ validation errors.\n * This includes both \"Can not repeat without prefix/suffix\" and \"Must have text between parameters\" errors.\n */\nexport function safePathToRegexp(\n route: string | RegExp | Array<string | RegExp>,\n keys?: Key[],\n options?: TokensToRegexpOptions & ParseOptions\n): RegExp {\n if (typeof route !== 'string') {\n return pathToRegexp(route, keys, options)\n }\n\n // Check if normalization is needed and cache the result\n const needsNormalization = hasAdjacentParameterIssues(route)\n const routeToUse = needsNormalization\n ? normalizeAdjacentParameters(route)\n : route\n\n try {\n return pathToRegexp(routeToUse, keys, options)\n } catch (error) {\n // Only try normalization if we haven't already normalized\n if (!needsNormalization) {\n try {\n const normalizedRoute = normalizeAdjacentParameters(route)\n return pathToRegexp(normalizedRoute, keys, options)\n } catch (retryError) {\n // If that doesn't work, fall back to original error\n throw error\n }\n }\n throw error\n }\n}\n\n/**\n * Client-safe wrapper around compile that handles path-to-regexp 6.3.0+ validation errors.\n * No server-side error reporting to avoid bundling issues.\n * When normalization is applied, the returned compiler function automatically strips\n * the internal separator from the output URL.\n */\nexport function safeCompile(\n route: string,\n options?: TokensToFunctionOptions & ParseOptions\n) {\n // Check if normalization is needed and cache the result\n const needsNormalization = hasAdjacentParameterIssues(route)\n const routeToUse = needsNormalization\n ? normalizeAdjacentParameters(route)\n : route\n\n try {\n const compiler = compile(routeToUse, options)\n\n // If we normalized the route, wrap the compiler to strip separators from output\n // The normalization inserts _NEXTSEP_ as a literal string in the pattern to satisfy\n // path-to-regexp validation, but we don't want it in the final compiled URL\n if (needsNormalization) {\n return (params: any) => {\n return stripNormalizedSeparators(compiler(params))\n }\n }\n\n return compiler\n } catch (error) {\n // Only try normalization if we haven't already normalized\n if (!needsNormalization) {\n try {\n const normalizedRoute = normalizeAdjacentParameters(route)\n const compiler = compile(normalizedRoute, options)\n\n // Wrap the compiler to strip separators from output\n return (params: any) => {\n return stripNormalizedSeparators(compiler(params))\n }\n } catch (retryError) {\n // If that doesn't work, fall back to original error\n throw error\n }\n }\n throw error\n }\n}\n\n/**\n * Client-safe wrapper around regexpToFunction that automatically cleans parameters.\n */\nexport function safeRegexpToFunction<\n T extends Record<string, any> = Record<string, any>,\n>(regexp: RegExp, keys?: Key[]): (pathname: string) => { params: T } | false {\n const originalMatcher = regexpToFunction<T>(regexp, keys || [])\n\n return (pathname: string) => {\n const result = originalMatcher(pathname)\n if (!result) return false\n\n // Clean parameters before returning\n return {\n ...result,\n params: stripParameterSeparators(result.params as any) as T,\n }\n }\n}\n\n/**\n * Safe wrapper for route matcher functions that automatically cleans parameters.\n * This is client-safe and doesn't import path-to-regexp.\n */\nexport function safeRouteMatcher<T extends Record<string, any>>(\n matcherFn: (pathname: string) => false | T\n): (pathname: string) => false | T {\n return (pathname: string) => {\n const result = matcherFn(pathname)\n if (!result) return false\n\n // Clean parameters before returning\n return stripParameterSeparators(result) as T\n }\n}\n","import type { Group } from './route-regex'\nimport { DecodeError } from '../../utils'\nimport type { Params } from '../../../../server/request/params'\nimport { safeRouteMatcher } from './route-match-utils'\n\nexport interface RouteMatchFn {\n (pathname: string): false | Params\n}\n\ntype RouteMatcherOptions = {\n // We only use the exec method of the RegExp object. This helps us avoid using\n // type assertions that the passed in properties are of the correct type.\n re: Pick<RegExp, 'exec'>\n groups: Record<string, Group>\n}\n\nexport function getRouteMatcher({\n re,\n groups,\n}: RouteMatcherOptions): RouteMatchFn {\n const rawMatcher = (pathname: string) => {\n const routeMatch = re.exec(pathname)\n if (!routeMatch) return false\n\n const decode = (param: string) => {\n try {\n return decodeURIComponent(param)\n } catch {\n throw new DecodeError('failed to decode param')\n }\n }\n\n const params: Params = {}\n for (const [key, group] of Object.entries(groups)) {\n const match = routeMatch[group.pos]\n if (match !== undefined) {\n if (group.repeat) {\n params[key] = match.split('/').map((entry) => decode(entry))\n } else {\n params[key] = decode(match)\n }\n }\n }\n\n return params\n }\n\n // Wrap with safe matcher to handle parameter cleaning\n return safeRouteMatcher(rawMatcher)\n}\n","import type { ServerRuntime } from '../types'\n\nexport const TEXT_PLAIN_CONTENT_TYPE_HEADER = 'text/plain'\nexport const HTML_CONTENT_TYPE_HEADER = 'text/html; charset=utf-8'\nexport const JSON_CONTENT_TYPE_HEADER = 'application/json; charset=utf-8'\nexport const NEXT_QUERY_PARAM_PREFIX = 'nxtP'\nexport const NEXT_INTERCEPTION_MARKER_PREFIX = 'nxtI'\n\nexport const MATCHED_PATH_HEADER = 'x-matched-path'\nexport const PRERENDER_REVALIDATE_HEADER = 'x-prerender-revalidate'\nexport const PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER =\n 'x-prerender-revalidate-if-generated'\n\nexport const RSC_SEGMENTS_DIR_SUFFIX = '.segments'\nexport const RSC_SEGMENT_SUFFIX = '.segment.rsc'\nexport const RSC_SUFFIX = '.rsc'\nexport const ACTION_SUFFIX = '.action'\nexport const NEXT_DATA_SUFFIX = '.json'\nexport const NEXT_META_SUFFIX = '.meta'\nexport const NEXT_BODY_SUFFIX = '.body'\n\nexport const NEXT_CACHE_TAGS_HEADER = 'x-next-cache-tags'\nexport const NEXT_CACHE_REVALIDATED_TAGS_HEADER = 'x-next-revalidated-tags'\nexport const NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER =\n 'x-next-revalidate-tag-token'\n\nexport const NEXT_RESUME_HEADER = 'next-resume'\n\n// if these change make sure we update the related\n// documentation as well\nexport const NEXT_CACHE_TAG_MAX_ITEMS = 128\nexport const NEXT_CACHE_TAG_MAX_LENGTH = 256\nexport const NEXT_CACHE_SOFT_TAG_MAX_LENGTH = 1024\nexport const NEXT_CACHE_IMPLICIT_TAG_ID = '_N_T_'\n\n// in seconds\nexport const CACHE_ONE_YEAR = 31536000\n\n// in seconds, represents revalidate=false. I.e. never revaliate.\n// We use this value since it can be represented as a V8 SMI for optimal performance.\n// It can also be serialized as JSON if it ever leaks accidentally as an actual value.\nexport const INFINITE_CACHE = 0xfffffffe\n\n// Patterns to detect middleware files\nexport const MIDDLEWARE_FILENAME = 'middleware'\nexport const MIDDLEWARE_LOCATION_REGEXP = `(?:src/)?${MIDDLEWARE_FILENAME}`\n\n// Patterns to detect proxy files (replacement for middleware)\nexport const PROXY_FILENAME = 'proxy'\nexport const PROXY_LOCATION_REGEXP = `(?:src/)?${PROXY_FILENAME}`\n\n// Pattern to detect instrumentation hooks file\nexport const INSTRUMENTATION_HOOK_FILENAME = 'instrumentation'\n\n// Because on Windows absolute paths in the generated code can break because of numbers, eg 1 in the path,\n// we have to use a private alias\nexport const PAGES_DIR_ALIAS = 'private-next-pages'\nexport const DOT_NEXT_ALIAS = 'private-dot-next'\nexport const ROOT_DIR_ALIAS = 'private-next-root-dir'\nexport const APP_DIR_ALIAS = 'private-next-app-dir'\nexport const RSC_MOD_REF_PROXY_ALIAS = 'private-next-rsc-mod-ref-proxy'\nexport const RSC_ACTION_VALIDATE_ALIAS = 'private-next-rsc-action-validate'\nexport const RSC_ACTION_PROXY_ALIAS = 'private-next-rsc-server-reference'\nexport const RSC_CACHE_WRAPPER_ALIAS = 'private-next-rsc-cache-wrapper'\nexport const RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS =\n 'private-next-rsc-track-dynamic-import'\nexport const RSC_ACTION_ENCRYPTION_ALIAS = 'private-next-rsc-action-encryption'\nexport const RSC_ACTION_CLIENT_WRAPPER_ALIAS =\n 'private-next-rsc-action-client-wrapper'\n\nexport const PUBLIC_DIR_MIDDLEWARE_CONFLICT = `You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict`\n\nexport const SSG_GET_INITIAL_PROPS_CONFLICT = `You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps`\n\nexport const SERVER_PROPS_GET_INIT_PROPS_CONFLICT = `You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.`\n\nexport const SERVER_PROPS_SSG_CONFLICT = `You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps`\n\nexport const STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR = `can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props`\n\nexport const SERVER_PROPS_EXPORT_ERROR = `pages with \\`getServerSideProps\\` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export`\n\nexport const GSP_NO_RETURNED_VALUE =\n 'Your `getStaticProps` function did not return an object. Did you forget to add a `return`?'\nexport const GSSP_NO_RETURNED_VALUE =\n 'Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?'\n\nexport const UNSTABLE_REVALIDATE_RENAME_ERROR =\n 'The `unstable_revalidate` property is available for general use.\\n' +\n 'Please use `revalidate` instead.'\n\nexport const GSSP_COMPONENT_MEMBER_ERROR = `can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member`\n\nexport const NON_STANDARD_NODE_ENV = `You are using a non-standard \"NODE_ENV\" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env`\n\nexport const SSG_FALLBACK_EXPORT_ERROR = `Pages with \\`fallback\\` enabled in \\`getStaticPaths\\` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export`\n\nexport const ESLINT_DEFAULT_DIRS = ['app', 'pages', 'components', 'lib', 'src']\n\nexport const SERVER_RUNTIME: Record<string, ServerRuntime> = {\n edge: 'edge',\n experimentalEdge: 'experimental-edge',\n nodejs: 'nodejs',\n}\n\nexport const WEB_SOCKET_MAX_RECONNECTIONS = 12\n\n/**\n * The names of the webpack layers. These layers are the primitives for the\n * webpack chunks.\n */\nconst WEBPACK_LAYERS_NAMES = {\n /**\n * The layer for the shared code between the client and server bundles.\n */\n shared: 'shared',\n /**\n * The layer for server-only runtime and picking up `react-server` export conditions.\n * Including app router RSC pages and app router custom routes and metadata routes.\n */\n reactServerComponents: 'rsc',\n /**\n * Server Side Rendering layer for app (ssr).\n */\n serverSideRendering: 'ssr',\n /**\n * The browser client bundle layer for actions.\n */\n actionBrowser: 'action-browser',\n /**\n * The Node.js bundle layer for the API routes.\n */\n apiNode: 'api-node',\n /**\n * The Edge Lite bundle layer for the API routes.\n */\n apiEdge: 'api-edge',\n /**\n * The layer for the middleware code.\n */\n middleware: 'middleware',\n /**\n * The layer for the instrumentation hooks.\n */\n instrument: 'instrument',\n /**\n * The layer for assets on the edge.\n */\n edgeAsset: 'edge-asset',\n /**\n * The browser client bundle layer for App directory.\n */\n appPagesBrowser: 'app-pages-browser',\n /**\n * The browser client bundle layer for Pages directory.\n */\n pagesDirBrowser: 'pages-dir-browser',\n /**\n * The Edge Lite bundle layer for Pages directory.\n */\n pagesDirEdge: 'pages-dir-edge',\n /**\n * The Node.js bundle layer for Pages directory.\n */\n pagesDirNode: 'pages-dir-node',\n} as const\n\nexport type WebpackLayerName =\n (typeof WEBPACK_LAYERS_NAMES)[keyof typeof WEBPACK_LAYERS_NAMES]\n\nconst WEBPACK_LAYERS = {\n ...WEBPACK_LAYERS_NAMES,\n GROUP: {\n builtinReact: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n ],\n serverOnly: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n WEBPACK_LAYERS_NAMES.instrument,\n WEBPACK_LAYERS_NAMES.middleware,\n ],\n neutralTarget: [\n // pages api\n WEBPACK_LAYERS_NAMES.apiNode,\n WEBPACK_LAYERS_NAMES.apiEdge,\n ],\n clientOnly: [\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser,\n ],\n bundled: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser,\n WEBPACK_LAYERS_NAMES.shared,\n WEBPACK_LAYERS_NAMES.instrument,\n WEBPACK_LAYERS_NAMES.middleware,\n ],\n appPages: [\n // app router pages and layouts\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n ],\n },\n}\n\nconst WEBPACK_RESOURCE_QUERIES = {\n edgeSSREntry: '__next_edge_ssr_entry__',\n metadata: '__next_metadata__',\n metadataRoute: '__next_metadata_route__',\n metadataImageMeta: '__next_metadata_image_meta__',\n}\n\nexport { WEBPACK_LAYERS, WEBPACK_RESOURCE_QUERIES }\n","// regexp is based on https://github.com/sindresorhus/escape-string-regexp\nconst reHasRegExp = /[|\\\\{}()[\\]^$+*?.-]/\nconst reReplaceRegExp = /[|\\\\{}()[\\]^$+*?.-]/g\n\nexport function escapeStringRegexp(str: string) {\n // see also: https://github.com/lodash/lodash/blob/2da024c3b4f9947a48517639de7560457cd4ec6c/escapeRegExp.js#L23\n if (reHasRegExp.test(str)) {\n return str.replace(reReplaceRegExp, '\\\\$&')\n }\n return str\n}\n","export class InvariantError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(\n `Invariant: ${message.endsWith('.') ? message : message + '.'} This is a bug in Next.js.`,\n options\n )\n this.name = 'InvariantError'\n }\n}\n","import { DEFAULT_SEGMENT_KEY } from '../../segment'\nimport type { LoaderTree } from '../../../../server/lib/app-dir-module'\n\nexport function parseLoaderTree(tree: LoaderTree) {\n const [segment, parallelRoutes, modules] = tree\n const { layout, template } = modules\n let { page } = modules\n // a __DEFAULT__ segment means that this route didn't match any of the\n // segments in the route, so we should use the default page\n page = segment === DEFAULT_SEGMENT_KEY ? modules.defaultPage : page\n\n const conventionPath = layout?.[1] || template?.[1] || page?.[1]\n\n return {\n page,\n segment,\n modules,\n /* it can be either layout / template / page */\n conventionPath,\n parallelRoutes,\n }\n}\n","import { INTERCEPTION_ROUTE_MARKERS } from './interception-routes'\nimport type { DynamicParamTypes } from '../../app-router-types'\n\nexport type SegmentParam = {\n paramName: string\n paramType: DynamicParamTypes\n}\n\n/**\n * Parse dynamic route segment to type of parameter\n */\nexport function getSegmentParam(segment: string): SegmentParam | null {\n const interceptionMarker = INTERCEPTION_ROUTE_MARKERS.find((marker) =>\n segment.startsWith(marker)\n )\n\n // if an interception marker is part of the path segment, we need to jump ahead\n // to the relevant portion for param parsing\n if (interceptionMarker) {\n segment = segment.slice(interceptionMarker.length)\n }\n\n if (segment.startsWith('[[...') && segment.endsWith(']]')) {\n return {\n // TODO-APP: Optional catchall does not currently work with parallel routes,\n // so for now aren't handling a potential interception marker.\n paramType: 'optional-catchall',\n paramName: segment.slice(5, -2),\n }\n }\n\n if (segment.startsWith('[...') && segment.endsWith(']')) {\n return {\n paramType: interceptionMarker\n ? `catchall-intercepted-${interceptionMarker}`\n : 'catchall',\n paramName: segment.slice(4, -1),\n }\n }\n\n if (segment.startsWith('[') && segment.endsWith(']')) {\n return {\n paramType: interceptionMarker\n ? `dynamic-intercepted-${interceptionMarker}`\n : 'dynamic',\n paramName: segment.slice(1, -1),\n }\n }\n\n return null\n}\n\nexport function isCatchAll(\n type: DynamicParamTypes\n): type is\n | 'catchall'\n | 'catchall-intercepted-(..)(..)'\n | 'catchall-intercepted-(.)'\n | 'catchall-intercepted-(..)'\n | 'catchall-intercepted-(...)'\n | 'optional-catchall' {\n return (\n type === 'catchall' ||\n type === 'catchall-intercepted-(..)(..)' ||\n type === 'catchall-intercepted-(.)' ||\n type === 'catchall-intercepted-(..)' ||\n type === 'catchall-intercepted-(...)' ||\n type === 'optional-catchall'\n )\n}\n\nexport function getParamProperties(paramType: DynamicParamTypes): {\n repeat: boolean\n optional: boolean\n} {\n let repeat = false\n let optional = false\n\n switch (paramType) {\n case 'catchall':\n case 'catchall-intercepted-(..)(..)':\n case 'catchall-intercepted-(.)':\n case 'catchall-intercepted-(..)':\n case 'catchall-intercepted-(...)':\n repeat = true\n break\n case 'optional-catchall':\n repeat = true\n optional = true\n break\n case 'dynamic':\n case 'dynamic-intercepted-(..)(..)':\n case 'dynamic-intercepted-(.)':\n case 'dynamic-intercepted-(..)':\n case 'dynamic-intercepted-(...)':\n break\n default:\n paramType satisfies never\n }\n\n return { repeat, optional }\n}\n","import { InvariantError } from '../../invariant-error'\nimport { getSegmentParam, type SegmentParam } from '../utils/get-segment-param'\nimport {\n INTERCEPTION_ROUTE_MARKERS,\n type InterceptionMarker,\n} from '../utils/interception-routes'\n\nexport type RouteGroupAppRouteSegment = {\n type: 'route-group'\n name: string\n\n /**\n * If present, this segment has an interception marker prefixing it.\n */\n interceptionMarker?: InterceptionMarker\n}\n\nexport type ParallelRouteAppRouteSegment = {\n type: 'parallel-route'\n name: string\n\n /**\n * If present, this segment has an interception marker prefixing it.\n */\n interceptionMarker?: InterceptionMarker\n}\n\nexport type StaticAppRouteSegment = {\n type: 'static'\n name: string\n\n /**\n * If present, this segment has an interception marker prefixing it.\n */\n interceptionMarker?: InterceptionMarker\n}\n\nexport type DynamicAppRouteSegment = {\n type: 'dynamic'\n name: string\n param: SegmentParam\n\n /**\n * If present, this segment has an interception marker prefixing it.\n */\n interceptionMarker?: InterceptionMarker\n}\n\n/**\n * Represents a single segment in a route path.\n * Can be either static (e.g., \"blog\") or dynamic (e.g., \"[slug]\").\n */\nexport type AppRouteSegment =\n | StaticAppRouteSegment\n | DynamicAppRouteSegment\n | RouteGroupAppRouteSegment\n | ParallelRouteAppRouteSegment\n\nexport type NormalizedAppRouteSegment =\n | StaticAppRouteSegment\n | DynamicAppRouteSegment\n\nexport function parseAppRouteSegment(segment: string): AppRouteSegment | null {\n if (segment === '') {\n return null\n }\n\n // Check if the segment starts with an interception marker\n const interceptionMarker = INTERCEPTION_ROUTE_MARKERS.find((m) =>\n segment.startsWith(m)\n )\n\n const param = getSegmentParam(segment)\n if (param) {\n return {\n type: 'dynamic',\n name: segment,\n param,\n interceptionMarker,\n }\n } else if (segment.startsWith('(') && segment.endsWith(')')) {\n return {\n type: 'route-group',\n name: segment,\n interceptionMarker,\n }\n } else if (segment.startsWith('@')) {\n return {\n type: 'parallel-route',\n name: segment,\n interceptionMarker,\n }\n } else {\n return {\n type: 'static',\n name: segment,\n interceptionMarker,\n }\n }\n}\n\nexport type AppRoute = {\n normalized: boolean\n pathname: string\n segments: AppRouteSegment[]\n dynamicSegments: DynamicAppRouteSegment[]\n interceptionMarker: InterceptionMarker | undefined\n interceptingRoute: AppRoute | undefined\n interceptedRoute: AppRoute | undefined\n}\n\nexport type NormalizedAppRoute = Omit<AppRoute, 'normalized' | 'segments'> & {\n normalized: true\n segments: NormalizedAppRouteSegment[]\n}\n\nexport function isNormalizedAppRoute(\n route: InterceptionAppRoute\n): route is NormalizedInterceptionAppRoute\nexport function isNormalizedAppRoute(\n route: AppRoute | InterceptionAppRoute\n): route is NormalizedAppRoute {\n return route.normalized\n}\n\nexport type InterceptionAppRoute = Omit<\n AppRoute,\n 'interceptionMarker' | 'interceptingRoute' | 'interceptedRoute'\n> & {\n interceptionMarker: InterceptionMarker\n interceptingRoute: AppRoute\n interceptedRoute: AppRoute\n}\n\nexport type NormalizedInterceptionAppRoute = Omit<\n InterceptionAppRoute,\n | 'normalized'\n | 'segments'\n | 'interceptionMarker'\n | 'interceptingRoute'\n | 'interceptedRoute'\n> & {\n normalized: true\n segments: NormalizedAppRouteSegment[]\n interceptionMarker: InterceptionMarker\n interceptingRoute: NormalizedAppRoute\n interceptedRoute: NormalizedAppRoute\n}\n\nexport function isInterceptionAppRoute(\n route: NormalizedAppRoute\n): route is NormalizedInterceptionAppRoute\nexport function isInterceptionAppRoute(\n route: AppRoute\n): route is InterceptionAppRoute {\n return (\n route.interceptionMarker !== undefined &&\n route.interceptingRoute !== undefined &&\n route.interceptedRoute !== undefined\n )\n}\n\nexport function parseAppRoute(\n pathname: string,\n normalized: true\n): NormalizedAppRoute\nexport function parseAppRoute(pathname: string, normalized: false): AppRoute\nexport function parseAppRoute(\n pathname: string,\n normalized: boolean\n): AppRoute | NormalizedAppRoute {\n const pathnameSegments = pathname.split('/').filter(Boolean)\n\n // Build segments array with static and dynamic segments\n const segments: AppRouteSegment[] = []\n\n // Parse if this is an interception route.\n let interceptionMarker: InterceptionMarker | undefined\n let interceptingRoute: AppRoute | NormalizedAppRoute | undefined\n let interceptedRoute: AppRoute | NormalizedAppRoute | undefined\n\n for (const segment of pathnameSegments) {\n // Parse the segment into an AppSegment.\n const appSegment = parseAppRouteSegment(segment)\n if (!appSegment) {\n continue\n }\n\n if (\n normalized &&\n (appSegment.type === 'route-group' ||\n appSegment.type === 'parallel-route')\n ) {\n throw new InvariantError(\n `${pathname} is being parsed as a normalized route, but it has a route group or parallel route segment.`\n )\n }\n\n segments.push(appSegment)\n\n if (appSegment.interceptionMarker) {\n const parts = pathname.split(appSegment.interceptionMarker)\n if (parts.length !== 2) {\n throw new Error(`Invalid interception route: ${pathname}`)\n }\n\n interceptingRoute = normalized\n ? parseAppRoute(parts[0], true)\n : parseAppRoute(parts[0], false)\n interceptedRoute = normalized\n ? parseAppRoute(parts[1], true)\n : parseAppRoute(parts[1], false)\n interceptionMarker = appSegment.interceptionMarker\n }\n }\n\n const dynamicSegments = segments.filter(\n (segment) => segment.type === 'dynamic'\n )\n\n return {\n normalized,\n pathname,\n segments,\n dynamicSegments,\n interceptionMarker,\n interceptingRoute,\n interceptedRoute,\n }\n}\n","import type { DynamicParamTypes } from '../../app-router-types'\n\nexport function interceptionPrefixFromParamType(\n paramType: DynamicParamTypes\n): string | null {\n switch (paramType) {\n case 'catchall-intercepted-(..)(..)':\n case 'dynamic-intercepted-(..)(..)':\n return '(..)(..)'\n case 'catchall-intercepted-(.)':\n case 'dynamic-intercepted-(.)':\n return '(.)'\n case 'catchall-intercepted-(..)':\n case 'dynamic-intercepted-(..)':\n return '(..)'\n case 'catchall-intercepted-(...)':\n case 'dynamic-intercepted-(...)':\n return '(...)'\n case 'catchall':\n case 'dynamic':\n case 'optional-catchall':\n default:\n return null\n }\n}\n","import type { Params } from '../../../../server/request/params'\nimport type { DynamicParamTypes } from '../../app-router-types'\nimport { InvariantError } from '../../invariant-error'\nimport type {\n NormalizedAppRoute,\n NormalizedAppRouteSegment,\n} from '../routes/app'\nimport { interceptionPrefixFromParamType } from './interception-prefix-from-param-type'\n\n/**\n * Extracts the param value from a path segment, handling interception markers\n * based on the expected param type.\n *\n * @param pathSegment - The path segment to extract the value from\n * @param params - The current params object for resolving dynamic param references\n * @param paramType - The expected param type which may include interception marker info\n * @returns The extracted param value\n */\nfunction getParamValueFromSegment(\n pathSegment: NormalizedAppRouteSegment,\n params: Params,\n paramType: DynamicParamTypes\n): string {\n // If the segment is dynamic, resolve it from the params object\n if (pathSegment.type === 'dynamic') {\n return params[pathSegment.param.paramName] as string\n }\n\n // If the paramType indicates this is an intercepted param, strip the marker\n // that matches the interception marker in the param type\n const interceptionPrefix = interceptionPrefixFromParamType(paramType)\n if (interceptionPrefix === pathSegment.interceptionMarker) {\n return pathSegment.name.replace(pathSegment.interceptionMarker, '')\n }\n\n // For static segments, use the name\n return pathSegment.name\n}\n\n/**\n * Resolves a route parameter value from the route segments at the given depth.\n * This shared logic is used by both extractPathnameRouteParamSegmentsFromLoaderTree\n * and resolveRouteParamsFromTree.\n *\n * @param paramName - The parameter name to resolve\n * @param paramType - The parameter type (dynamic, catchall, etc.)\n * @param depth - The current depth in the route tree\n * @param route - The normalized route containing segments\n * @param params - The current params object (used to resolve embedded param references)\n * @param options - Configuration options\n * @returns The resolved parameter value, or undefined if it cannot be resolved\n */\nexport function resolveParamValue(\n paramName: string,\n paramType: DynamicParamTypes,\n depth: number,\n route: NormalizedAppRoute,\n params: Params\n): string | string[] | undefined {\n switch (paramType) {\n case 'catchall':\n case 'optional-catchall':\n case 'catchall-intercepted-(..)(..)':\n case 'catchall-intercepted-(.)':\n case 'catchall-intercepted-(..)':\n case 'catchall-intercepted-(...)':\n // For catchall routes, derive from pathname using depth to determine\n // which segments to use\n const processedSegments: string[] = []\n\n // Process segments to handle any embedded dynamic params\n for (let index = depth; index < route.segments.length; index++) {\n const pathSegment = route.segments[index]\n\n if (pathSegment.type === 'static') {\n let value = pathSegment.name\n\n // For intercepted catch-all params, strip the marker from the first segment\n const interceptionPrefix = interceptionPrefixFromParamType(paramType)\n if (\n interceptionPrefix &&\n index === depth &&\n interceptionPrefix === pathSegment.interceptionMarker\n ) {\n // Strip the interception marker from the value\n value = value.replace(pathSegment.interceptionMarker, '')\n }\n\n processedSegments.push(value)\n } else {\n // If the segment is a param placeholder, check if we have its value\n if (!params.hasOwnProperty(pathSegment.param.paramName)) {\n // If the segment is an optional catchall, we can break out of the\n // loop because it's optional!\n if (pathSegment.param.paramType === 'optional-catchall') {\n break\n }\n\n // Unknown param placeholder in pathname - can't derive full value\n return undefined\n }\n\n // If the segment matches a param, use the param value\n // We don't encode values here as that's handled during retrieval.\n const paramValue = params[pathSegment.param.paramName]\n if (Array.isArray(paramValue)) {\n processedSegments.push(...paramValue)\n } else {\n processedSegments.push(paramValue as string)\n }\n }\n }\n\n if (processedSegments.length > 0) {\n return processedSegments\n } else if (paramType === 'optional-catchall') {\n return undefined\n } else {\n // We shouldn't be able to match a catchall segment without any path\n // segments if it's not an optional catchall\n throw new InvariantError(\n `Unexpected empty path segments match for a route \"${route.pathname}\" with param \"${paramName}\" of type \"${paramType}\"`\n )\n }\n case 'dynamic':\n case 'dynamic-intercepted-(..)(..)':\n case 'dynamic-intercepted-(.)':\n case 'dynamic-intercepted-(..)':\n case 'dynamic-intercepted-(...)':\n // For regular dynamic parameters, take the segment at this depth\n if (depth < route.segments.length) {\n const pathSegment = route.segments[depth]\n\n // Check if the segment at this depth is a placeholder for an unknown param\n if (\n pathSegment.type === 'dynamic' &&\n !params.hasOwnProperty(pathSegment.param.paramName)\n ) {\n // The segment is a placeholder like [category] and we don't have the value\n return undefined\n }\n\n // If the segment matches a param, use the param value from params object\n // Otherwise it's a static segment, just use it directly\n // We don't encode values here as that's handled during retrieval\n return getParamValueFromSegment(pathSegment, params, paramType)\n }\n\n return undefined\n\n default:\n paramType satisfies never\n }\n}\n","import type { DynamicParam } from '../../../../server/app-render/app-render'\nimport type { LoaderTree } from '../../../../server/lib/app-dir-module'\nimport type { OpaqueFallbackRouteParams } from '../../../../server/request/fallback-params'\nimport type { Params } from '../../../../server/request/params'\nimport type { DynamicParamTypesShort } from '../../app-router-types'\nimport { InvariantError } from '../../invariant-error'\nimport { parseLoaderTree } from './parse-loader-tree'\nimport { parseAppRoute, parseAppRouteSegment } from '../routes/app'\nimport { resolveParamValue } from './resolve-param-value'\n\n/**\n * Gets the value of a param from the params object. This correctly handles the\n * case where the param is a fallback route param and encodes the resulting\n * value.\n *\n * @param interpolatedParams - The params object.\n * @param segmentKey - The key of the segment.\n * @param fallbackRouteParams - The fallback route params.\n * @returns The value of the param.\n */\nfunction getParamValue(\n interpolatedParams: Params,\n segmentKey: string,\n fallbackRouteParams: OpaqueFallbackRouteParams | null\n) {\n let value = interpolatedParams[segmentKey]\n\n if (fallbackRouteParams?.has(segmentKey)) {\n // We know that the fallback route params has the segment key because we\n // checked that above.\n const [searchValue] = fallbackRouteParams.get(segmentKey)!\n value = searchValue\n } else if (Array.isArray(value)) {\n value = value.map((i) => encodeURIComponent(i))\n } else if (typeof value === 'string') {\n value = encodeURIComponent(value)\n }\n\n return value\n}\n\nexport function interpolateParallelRouteParams(\n loaderTree: LoaderTree,\n params: Params,\n pagePath: string,\n fallbackRouteParams: OpaqueFallbackRouteParams | null\n): Params {\n const interpolated = structuredClone(params)\n\n // Stack-based traversal with depth tracking\n const stack: Array<{ tree: LoaderTree; depth: number }> = [\n { tree: loaderTree, depth: 0 },\n ]\n\n // Parse the route from the provided page path.\n const route = parseAppRoute(pagePath, true)\n\n while (stack.length > 0) {\n const { tree, depth } = stack.pop()!\n const { segment, parallelRoutes } = parseLoaderTree(tree)\n\n const appSegment = parseAppRouteSegment(segment)\n\n if (\n appSegment?.type === 'dynamic' &&\n !interpolated.hasOwnProperty(appSegment.param.paramName) &&\n // If the param is in the fallback route params, we don't need to\n // interpolate it because it's already marked as being unknown.\n !fallbackRouteParams?.has(appSegment.param.paramName)\n ) {\n const { paramName, paramType } = appSegment.param\n\n const paramValue = resolveParamValue(\n paramName,\n paramType,\n depth,\n route,\n interpolated\n )\n\n if (paramValue !== undefined) {\n interpolated[paramName] = paramValue\n } else if (paramType !== 'optional-catchall') {\n throw new InvariantError(\n `Could not resolve param value for segment: ${paramName}`\n )\n }\n }\n\n // Calculate next depth - increment if this is not a route group and not empty\n let nextDepth = depth\n if (\n appSegment &&\n appSegment.type !== 'route-group' &&\n appSegment.type !== 'parallel-route'\n ) {\n nextDepth++\n }\n\n // Add all parallel routes to the stack for processing\n for (const parallelRoute of Object.values(parallelRoutes)) {\n stack.push({ tree: parallelRoute, depth: nextDepth })\n }\n }\n\n return interpolated\n}\n\n/**\n *\n * Shared logic on client and server for creating a dynamic param value.\n *\n * This code needs to be shared with the client so it can extract dynamic route\n * params from the URL without a server request.\n *\n * Because everything in this module is sent to the client, we should aim to\n * keep this code as simple as possible. The special case handling for catchall\n * and optional is, alas, unfortunate.\n */\nexport function getDynamicParam(\n interpolatedParams: Params,\n segmentKey: string,\n dynamicParamType: DynamicParamTypesShort,\n fallbackRouteParams: OpaqueFallbackRouteParams | null\n): DynamicParam {\n let value: string | string[] | undefined = getParamValue(\n interpolatedParams,\n segmentKey,\n fallbackRouteParams\n )\n\n // handle the case where an optional catchall does not have a value,\n // e.g. `/dashboard/[[...slug]]` when requesting `/dashboard`\n if (!value || value.length === 0) {\n if (dynamicParamType === 'oc') {\n return {\n param: segmentKey,\n value: null,\n type: dynamicParamType,\n treeSegment: [segmentKey, '', dynamicParamType],\n }\n }\n\n throw new InvariantError(\n `Missing value for segment key: \"${segmentKey}\" with dynamic param type: ${dynamicParamType}`\n )\n }\n\n return {\n param: segmentKey,\n // The value that is passed to user code.\n value,\n // The value that is rendered in the router tree.\n treeSegment: [\n segmentKey,\n Array.isArray(value) ? value.join('/') : value,\n dynamicParamType,\n ],\n type: dynamicParamType,\n }\n}\n\n/**\n * Regular expression pattern used to match route parameters.\n * Matches both single parameters and parameter groups.\n * Examples:\n * - `[[...slug]]` matches parameter group with key 'slug', repeat: true, optional: true\n * - `[...slug]` matches parameter group with key 'slug', repeat: true, optional: false\n * - `[[foo]]` matches parameter with key 'foo', repeat: false, optional: true\n * - `[bar]` matches parameter with key 'bar', repeat: false, optional: false\n */\nexport const PARAMETER_PATTERN = /^([^[]*)\\[((?:\\[[^\\]]*\\])|[^\\]]+)\\](.*)$/\n\n/**\n * Parses a given parameter from a route to a data structure that can be used\n * to generate the parametrized route.\n * Examples:\n * - `[[...slug]]` -> `{ key: 'slug', repeat: true, optional: true }`\n * - `[...slug]` -> `{ key: 'slug', repeat: true, optional: false }`\n * - `[[foo]]` -> `{ key: 'foo', repeat: false, optional: true }`\n * - `[bar]` -> `{ key: 'bar', repeat: false, optional: false }`\n * - `fizz` -> `{ key: 'fizz', repeat: false, optional: false }`\n * @param param - The parameter to parse.\n * @returns The parsed parameter as a data structure.\n */\nexport function parseParameter(param: string) {\n const match = param.match(PARAMETER_PATTERN)\n\n if (!match) {\n return parseMatchedParameter(param)\n }\n\n return parseMatchedParameter(match[2])\n}\n\n/**\n * Parses a matched parameter from the PARAMETER_PATTERN regex to a data structure that can be used\n * to generate the parametrized route.\n * Examples:\n * - `[...slug]` -> `{ key: 'slug', repeat: true, optional: true }`\n * - `...slug` -> `{ key: 'slug', repeat: true, optional: false }`\n * - `[foo]` -> `{ key: 'foo', repeat: false, optional: true }`\n * - `bar` -> `{ key: 'bar', repeat: false, optional: false }`\n * @param param - The matched parameter to parse.\n * @returns The parsed parameter as a data structure.\n */\nexport function parseMatchedParameter(param: string) {\n const optional = param.startsWith('[') && param.endsWith(']')\n if (optional) {\n param = param.slice(1, -1)\n }\n const repeat = param.startsWith('...')\n if (repeat) {\n param = param.slice(3)\n }\n return { key: param, repeat, optional }\n}\n","import {\n NEXT_INTERCEPTION_MARKER_PREFIX,\n NEXT_QUERY_PARAM_PREFIX,\n} from '../../../../lib/constants'\nimport { INTERCEPTION_ROUTE_MARKERS } from './interception-routes'\nimport { escapeStringRegexp } from '../../escape-regexp'\nimport { removeTrailingSlash } from './remove-trailing-slash'\nimport { PARAMETER_PATTERN, parseMatchedParameter } from './get-dynamic-param'\n\nexport interface Group {\n pos: number\n repeat: boolean\n optional: boolean\n}\n\nexport interface RouteRegex {\n groups: { [groupName: string]: Group }\n re: RegExp\n}\n\nexport type RegexReference = {\n names: Record<string, string>\n intercepted: Record<string, string>\n}\n\ntype GetNamedRouteRegexOptions = {\n /**\n * Whether to prefix the route keys with the NEXT_INTERCEPTION_MARKER_PREFIX\n * or NEXT_QUERY_PARAM_PREFIX. This is only relevant when creating the\n * routes-manifest during the build.\n */\n prefixRouteKeys: boolean\n\n /**\n * Whether to include the suffix in the route regex. This means that when you\n * have something like `/[...slug].json` the `.json` part will be included\n * in the regex, yielding `/(.*).json` as the regex.\n */\n includeSuffix?: boolean\n\n /**\n * Whether to include the prefix in the route regex. This means that when you\n * have something like `/[...slug].json` the `/` part will be included\n * in the regex, yielding `^/(.*).json$` as the regex.\n *\n * Note that interception markers will already be included without the need\n */\n includePrefix?: boolean\n\n /**\n * Whether to exclude the optional trailing slash from the route regex.\n */\n excludeOptionalTrailingSlash?: boolean\n\n /**\n * Whether to backtrack duplicate keys. This is only relevant when creating\n * the routes-manifest during the build.\n */\n backreferenceDuplicateKeys?: boolean\n\n /**\n * If provided, this will be used as the reference for the dynamic parameter\n * keys instead of generating them in context. This is currently only used for\n * interception routes.\n */\n reference?: RegexReference\n}\n\ntype GetRouteRegexOptions = {\n /**\n * Whether to include extra parts in the route regex. This means that when you\n * have something like `/[...slug].json` the `.json` part will be included\n * in the regex, yielding `/(.*).json` as the regex.\n */\n includeSuffix?: boolean\n\n /**\n * Whether to include the prefix in the route regex. This means that when you\n * have something like `/[...slug].json` the `/` part will be included\n * in the regex, yielding `^/(.*).json$` as the regex.\n *\n * Note that interception markers will already be included without the need\n * of adding this option.\n */\n includePrefix?: boolean\n\n /**\n * Whether to exclude the optional trailing slash from the route regex.\n */\n excludeOptionalTrailingSlash?: boolean\n}\n\nfunction getParametrizedRoute(\n route: string,\n includeSuffix: boolean,\n includePrefix: boolean\n) {\n const groups: { [groupName: string]: Group } = {}\n let groupIndex = 1\n\n const segments: string[] = []\n for (const segment of removeTrailingSlash(route).slice(1).split('/')) {\n const markerMatch = INTERCEPTION_ROUTE_MARKERS.find((m) =>\n segment.startsWith(m)\n )\n const paramMatches = segment.match(PARAMETER_PATTERN) // Check for parameters\n\n if (markerMatch && paramMatches && paramMatches[2]) {\n const { key, optional, repeat } = parseMatchedParameter(paramMatches[2])\n groups[key] = { pos: groupIndex++, repeat, optional }\n segments.push(`/${escapeStringRegexp(markerMatch)}([^/]+?)`)\n } else if (paramMatches && paramMatches[2]) {\n const { key, repeat, optional } = parseMatchedParameter(paramMatches[2])\n groups[key] = { pos: groupIndex++, repeat, optional }\n\n if (includePrefix && paramMatches[1]) {\n segments.push(`/${escapeStringRegexp(paramMatches[1])}`)\n }\n\n let s = repeat ? (optional ? '(?:/(.+?))?' : '/(.+?)') : '/([^/]+?)'\n\n // Remove the leading slash if includePrefix already added it.\n if (includePrefix && paramMatches[1]) {\n s = s.substring(1)\n }\n\n segments.push(s)\n } else {\n segments.push(`/${escapeStringRegexp(segment)}`)\n }\n\n // If there's a suffix, add it to the segments if it's enabled.\n if (includeSuffix && paramMatches && paramMatches[3]) {\n segments.push(escapeStringRegexp(paramMatches[3]))\n }\n }\n\n return {\n parameterizedRoute: segments.join(''),\n groups,\n }\n}\n\n/**\n * From a normalized route this function generates a regular expression and\n * a corresponding groups object intended to be used to store matching groups\n * from the regular expression.\n */\nexport function getRouteRegex(\n normalizedRoute: string,\n {\n includeSuffix = false,\n includePrefix = false,\n excludeOptionalTrailingSlash = false,\n }: GetRouteRegexOptions = {}\n): RouteRegex {\n const { parameterizedRoute, groups } = getParametrizedRoute(\n normalizedRoute,\n includeSuffix,\n includePrefix\n )\n\n let re = parameterizedRoute\n if (!excludeOptionalTrailingSlash) {\n re += '(?:/)?'\n }\n\n return {\n re: new RegExp(`^${re}$`),\n groups: groups,\n }\n}\n\n/**\n * Builds a function to generate a minimal routeKey using only a-z and minimal\n * number of characters.\n */\nfunction buildGetSafeRouteKey() {\n let i = 0\n\n return () => {\n let routeKey = ''\n let j = ++i\n while (j > 0) {\n routeKey += String.fromCharCode(97 + ((j - 1) % 26))\n j = Math.floor((j - 1) / 26)\n }\n return routeKey\n }\n}\n\nfunction getSafeKeyFromSegment({\n interceptionMarker,\n getSafeRouteKey,\n segment,\n routeKeys,\n keyPrefix,\n backreferenceDuplicateKeys,\n}: {\n interceptionMarker?: string\n getSafeRouteKey: () => string\n segment: string\n routeKeys: Record<string, string>\n keyPrefix?: string\n backreferenceDuplicateKeys: boolean\n}) {\n const { key, optional, repeat } = parseMatchedParameter(segment)\n\n // replace any non-word characters since they can break\n // the named regex\n let cleanedKey = key.replace(/\\W/g, '')\n\n if (keyPrefix) {\n cleanedKey = `${keyPrefix}${cleanedKey}`\n }\n let invalidKey = false\n\n // check if the key is still invalid and fallback to using a known\n // safe key\n if (cleanedKey.length === 0 || cleanedKey.length > 30) {\n invalidKey = true\n }\n if (!isNaN(parseInt(cleanedKey.slice(0, 1)))) {\n invalidKey = true\n }\n\n if (invalidKey) {\n cleanedKey = getSafeRouteKey()\n }\n\n const duplicateKey = cleanedKey in routeKeys\n\n if (keyPrefix) {\n routeKeys[cleanedKey] = `${keyPrefix}${key}`\n } else {\n routeKeys[cleanedKey] = key\n }\n\n // if the segment has an interception marker, make sure that's part of the regex pattern\n // this is to ensure that the route with the interception marker doesn't incorrectly match\n // the non-intercepted route (ie /app/(.)[username] should not match /app/[username])\n const interceptionPrefix = interceptionMarker\n ? escapeStringRegexp(interceptionMarker)\n : ''\n\n let pattern: string\n if (duplicateKey && backreferenceDuplicateKeys) {\n // Use a backreference to the key to ensure that the key is the same value\n // in each of the placeholders.\n pattern = `\\\\k<${cleanedKey}>`\n } else if (repeat) {\n pattern = `(?<${cleanedKey}>.+?)`\n } else {\n pattern = `(?<${cleanedKey}>[^/]+?)`\n }\n\n return {\n key,\n pattern: optional\n ? `(?:/${interceptionPrefix}${pattern})?`\n : `/${interceptionPrefix}${pattern}`,\n cleanedKey: cleanedKey,\n optional,\n repeat,\n }\n}\n\nfunction getNamedParametrizedRoute(\n route: string,\n prefixRouteKeys: boolean,\n includeSuffix: boolean,\n includePrefix: boolean,\n backreferenceDuplicateKeys: boolean,\n reference: RegexReference = { names: {}, intercepted: {} }\n) {\n const getSafeRouteKey = buildGetSafeRouteKey()\n const routeKeys: { [named: string]: string } = {}\n\n const segments: string[] = []\n const inverseParts: string[] = []\n\n // Ensure we don't mutate the original reference object.\n reference = structuredClone(reference)\n\n for (const segment of removeTrailingSlash(route).slice(1).split('/')) {\n const hasInterceptionMarker = INTERCEPTION_ROUTE_MARKERS.some((m) =>\n segment.startsWith(m)\n )\n\n const paramMatches = segment.match(PARAMETER_PATTERN) // Check for parameters\n\n const interceptionMarker = hasInterceptionMarker\n ? paramMatches?.[1]\n : undefined\n\n let keyPrefix: string | undefined\n if (interceptionMarker && paramMatches?.[2]) {\n keyPrefix = prefixRouteKeys ? NEXT_INTERCEPTION_MARKER_PREFIX : undefined\n reference.intercepted[paramMatches[2]] = interceptionMarker\n } else if (paramMatches?.[2] && reference.intercepted[paramMatches[2]]) {\n keyPrefix = prefixRouteKeys ? NEXT_INTERCEPTION_MARKER_PREFIX : undefined\n } else {\n keyPrefix = prefixRouteKeys ? NEXT_QUERY_PARAM_PREFIX : undefined\n }\n\n if (interceptionMarker && paramMatches && paramMatches[2]) {\n // If there's an interception marker, add it to the segments.\n const { key, pattern, cleanedKey, repeat, optional } =\n getSafeKeyFromSegment({\n getSafeRouteKey,\n interceptionMarker,\n segment: paramMatches[2],\n routeKeys,\n keyPrefix,\n backreferenceDuplicateKeys,\n })\n\n segments.push(pattern)\n inverseParts.push(\n `/${paramMatches[1]}:${reference.names[key] ?? cleanedKey}${repeat ? (optional ? '*' : '+') : ''}`\n )\n reference.names[key] ??= cleanedKey\n } else if (paramMatches && paramMatches[2]) {\n // If there's a prefix, add it to the segments if it's enabled.\n if (includePrefix && paramMatches[1]) {\n segments.push(`/${escapeStringRegexp(paramMatches[1])}`)\n inverseParts.push(`/${paramMatches[1]}`)\n }\n\n const { key, pattern, cleanedKey, repeat, optional } =\n getSafeKeyFromSegment({\n getSafeRouteKey,\n segment: paramMatches[2],\n routeKeys,\n keyPrefix,\n backreferenceDuplicateKeys,\n })\n\n // Remove the leading slash if includePrefix already added it.\n let s = pattern\n if (includePrefix && paramMatches[1]) {\n s = s.substring(1)\n }\n\n segments.push(s)\n inverseParts.push(\n `/:${reference.names[key] ?? cleanedKey}${repeat ? (optional ? '*' : '+') : ''}`\n )\n reference.names[key] ??= cleanedKey\n } else {\n segments.push(`/${escapeStringRegexp(segment)}`)\n inverseParts.push(`/${segment}`)\n }\n\n // If there's a suffix, add it to the segments if it's enabled.\n if (includeSuffix && paramMatches && paramMatches[3]) {\n segments.push(escapeStringRegexp(paramMatches[3]))\n inverseParts.push(paramMatches[3])\n }\n }\n\n return {\n namedParameterizedRoute: segments.join(''),\n routeKeys,\n pathToRegexpPattern: inverseParts.join(''),\n reference,\n }\n}\n\n/**\n * This function extends `getRouteRegex` generating also a named regexp where\n * each group is named along with a routeKeys object that indexes the assigned\n * named group with its corresponding key. When the routeKeys need to be\n * prefixed to uniquely identify internally the \"prefixRouteKey\" arg should\n * be \"true\" currently this is only the case when creating the routes-manifest\n * during the build\n */\nexport function getNamedRouteRegex(\n normalizedRoute: string,\n options: GetNamedRouteRegexOptions\n) {\n const result = getNamedParametrizedRoute(\n normalizedRoute,\n options.prefixRouteKeys,\n options.includeSuffix ?? false,\n options.includePrefix ?? false,\n options.backreferenceDuplicateKeys ?? false,\n options.reference\n )\n\n let namedRegex = result.namedParameterizedRoute\n if (!options.excludeOptionalTrailingSlash) {\n namedRegex += '(?:/)?'\n }\n\n return {\n ...getRouteRegex(normalizedRoute, options),\n namedRegex: `^${namedRegex}$`,\n routeKeys: result.routeKeys,\n pathToRegexpPattern: result.pathToRegexpPattern,\n reference: result.reference,\n }\n}\n\n/**\n * Generates a named regexp.\n * This is intended to be using for build time only.\n */\nexport function getNamedMiddlewareRegex(\n normalizedRoute: string,\n options: {\n catchAll?: boolean\n }\n) {\n const { parameterizedRoute } = getParametrizedRoute(\n normalizedRoute,\n false,\n false\n )\n const { catchAll = true } = options\n if (parameterizedRoute === '/') {\n let catchAllRegex = catchAll ? '.*' : ''\n return {\n namedRegex: `^/${catchAllRegex}$`,\n }\n }\n\n const { namedParameterizedRoute } = getNamedParametrizedRoute(\n normalizedRoute,\n false,\n false,\n false,\n false,\n undefined\n )\n let catchAllGroupedRegex = catchAll ? '(?:(/.*)?)' : ''\n return {\n namedRegex: `^${namedParameterizedRoute}${catchAllGroupedRegex}$`,\n }\n}\n","import type { ParsedUrlQuery } from 'querystring'\n\nimport { getRouteMatcher } from './route-matcher'\nimport { getRouteRegex } from './route-regex'\n\nexport function interpolateAs(\n route: string,\n asPathname: string,\n query: ParsedUrlQuery\n) {\n let interpolatedRoute = ''\n\n const dynamicRegex = getRouteRegex(route)\n const dynamicGroups = dynamicRegex.groups\n const dynamicMatches =\n // Try to match the dynamic route against the asPath\n (asPathname !== route ? getRouteMatcher(dynamicRegex)(asPathname) : '') ||\n // Fall back to reading the values from the href\n // TODO: should this take priority; also need to change in the router.\n query\n\n interpolatedRoute = route\n const params = Object.keys(dynamicGroups)\n\n if (\n !params.every((param) => {\n let value = dynamicMatches[param] || ''\n const { repeat, optional } = dynamicGroups[param]\n\n // support single-level catch-all\n // TODO: more robust handling for user-error (passing `/`)\n let replaced = `[${repeat ? '...' : ''}${param}]`\n if (optional) {\n replaced = `${!value ? '/' : ''}[${replaced}]`\n }\n if (repeat && !Array.isArray(value)) value = [value]\n\n return (\n (optional || param in dynamicMatches) &&\n // Interpolate group into data URL if present\n (interpolatedRoute =\n interpolatedRoute!.replace(\n replaced,\n repeat\n ? (value as string[])\n .map(\n // these values should be fully encoded instead of just\n // path delimiter escaped since they are being inserted\n // into the URL and we expect URL encoded segments\n // when parsing dynamic route params\n (segment) => encodeURIComponent(segment)\n )\n .join('/')\n : encodeURIComponent(value as string)\n ) || '/')\n )\n })\n ) {\n interpolatedRoute = '' // did not satisfy all requirements\n\n // n.b. We ignore this error because we handle warning for this case in\n // development in the `<Link>` component directly.\n }\n return {\n params,\n result: interpolatedRoute,\n }\n}\n","import type { NextRouter, Url } from '../shared/lib/router/router'\n\nimport { searchParamsToUrlQuery } from '../shared/lib/router/utils/querystring'\nimport { formatWithValidation } from '../shared/lib/router/utils/format-url'\nimport { omit } from '../shared/lib/router/utils/omit'\nimport { normalizeRepeatedSlashes } from '../shared/lib/utils'\nimport { normalizePathTrailingSlash } from './normalize-trailing-slash'\nimport { isLocalURL } from '../shared/lib/router/utils/is-local-url'\nimport { isDynamicRoute } from '../shared/lib/router/utils'\nimport { interpolateAs } from '../shared/lib/router/utils/interpolate-as'\nimport { getRouteRegex } from '../shared/lib/router/utils/route-regex'\nimport { getRouteMatcher } from '../shared/lib/router/utils/route-matcher'\n\n/**\n * Resolves a given hyperlink with a certain router state (basePath not included).\n * Preserves absolute urls.\n */\nexport function resolveHref(\n router: NextRouter,\n href: Url,\n resolveAs: true\n): [string, string] | [string]\nexport function resolveHref(\n router: NextRouter,\n href: Url,\n resolveAs?: false\n): string\nexport function resolveHref(\n router: NextRouter,\n href: Url,\n resolveAs?: boolean\n): [string, string] | [string] | string {\n // we use a dummy base url for relative urls\n let base: URL\n let urlAsString = typeof href === 'string' ? href : formatWithValidation(href)\n\n // repeated slashes and backslashes in the URL are considered\n // invalid and will never match a Next.js page/file\n // https://www.rfc-editor.org/rfc/rfc3986.html#section-3.1\n const urlProtoMatch = urlAsString.match(/^[a-z][a-z0-9+.-]*:\\/\\//i)\n const urlAsStringNoProto = urlProtoMatch\n ? urlAsString.slice(urlProtoMatch[0].length)\n : urlAsString\n\n const urlParts = urlAsStringNoProto.split('?', 1)\n\n if ((urlParts[0] || '').match(/(\\/\\/|\\\\)/)) {\n console.error(\n `Invalid href '${urlAsString}' passed to next/router in page: '${router.pathname}'. Repeated forward-slashes (//) or backslashes \\\\ are not valid in the href.`\n )\n const normalizedUrl = normalizeRepeatedSlashes(urlAsStringNoProto)\n urlAsString = (urlProtoMatch ? urlProtoMatch[0] : '') + normalizedUrl\n }\n\n // Return because it cannot be routed by the Next.js router\n if (!isLocalURL(urlAsString)) {\n return (resolveAs ? [urlAsString] : urlAsString) as string\n }\n\n try {\n let baseBase = urlAsString.startsWith('#') ? router.asPath : router.pathname\n\n // If the provided href is only a query string, it is safer to use the asPath\n // considering rewrites.\n if (urlAsString.startsWith('?')) {\n baseBase = router.asPath\n\n // However, if is a dynamic route, we need to use the pathname to preserve the\n // query interpolation and rewrites (router.pathname will look like \"/[slug]\").\n if (isDynamicRoute(router.pathname)) {\n baseBase = router.pathname\n\n const routeRegex = getRouteRegex(router.pathname)\n const match = getRouteMatcher(routeRegex)(router.asPath)\n\n // For dynamic routes, if asPath doesn't match the pathname regex, it is a rewritten path.\n // In this case, should use asPath to preserve the current URL.\n if (!match) {\n baseBase = router.asPath\n }\n\n // Note: There is an edge case where the pathname is dynamic, and also a rewrite path to the same segment.\n // E.g. in \"/[slug]\" path, rewrite \"/foo\" -> \"/bar\"\n\n // In this case, it will be treated as a non-rewritten path and possibly interpolate the query string.\n // E.g., \"/any?slug=foo\" will become the content of \"/foo\", not rewritten as \"/bar\"\n\n // This is currently a trade-off of not resolving rewrite paths on every Router/Link call,\n // but using a lighter route regex pattern check.\n }\n }\n\n base = new URL(baseBase, 'http://n')\n } catch (_) {\n // fallback to / for invalid asPath values e.g. //\n base = new URL('/', 'http://n')\n }\n\n try {\n const finalUrl = new URL(urlAsString, base)\n finalUrl.pathname = normalizePathTrailingSlash(finalUrl.pathname)\n let interpolatedAs = ''\n\n if (\n isDynamicRoute(finalUrl.pathname) &&\n finalUrl.searchParams &&\n resolveAs\n ) {\n const query = searchParamsToUrlQuery(finalUrl.searchParams)\n\n const { result, params } = interpolateAs(\n finalUrl.pathname,\n finalUrl.pathname,\n query\n )\n\n if (result) {\n interpolatedAs = formatWithValidation({\n pathname: result,\n hash: finalUrl.hash,\n query: omit(query, params),\n })\n }\n }\n\n // if the origin didn't change, it means we received a relative href\n const resolvedHref =\n finalUrl.origin === base.origin\n ? finalUrl.href.slice(finalUrl.origin.length)\n : finalUrl.href\n\n return resolveAs\n ? [resolvedHref, interpolatedAs || resolvedHref]\n : resolvedHref\n } catch (_) {\n return resolveAs ? [urlAsString] : urlAsString\n }\n}\n","import { parsePath } from './parse-path'\n\n/**\n * Adds the provided prefix to the given path. It first ensures that the path\n * is indeed starting with a slash.\n */\nexport function addPathPrefix(path: string, prefix?: string) {\n if (!path.startsWith('/') || !prefix) {\n return path\n }\n\n const { pathname, query, hash } = parsePath(path)\n return `${prefix}${pathname}${query}${hash}`\n}\n","import { addPathPrefix } from './add-path-prefix'\nimport { pathHasPrefix } from './path-has-prefix'\n\n/**\n * For a given path and a locale, if the locale is given, it will prefix the\n * locale. The path shouldn't be an API path. If a default locale is given the\n * prefix will be omitted if the locale is already the default locale.\n */\nexport function addLocale(\n path: string,\n locale?: string | false,\n defaultLocale?: string,\n ignorePrefix?: boolean\n) {\n // If no locale was given or the locale is the default locale, we don't need\n // to prefix the path.\n if (!locale || locale === defaultLocale) return path\n\n const lower = path.toLowerCase()\n\n // If the path is an API path or the path already has the locale prefix, we\n // don't need to prefix the path.\n if (!ignorePrefix) {\n if (pathHasPrefix(lower, '/api')) return path\n if (pathHasPrefix(lower, `/${locale.toLowerCase()}`)) return path\n }\n\n // Add the locale prefix to the path.\n return addPathPrefix(path, `/${locale}`)\n}\n","import type { addLocale as Fn } from '../shared/lib/router/utils/add-locale'\nimport { normalizePathTrailingSlash } from './normalize-trailing-slash'\n\nexport const addLocale: typeof Fn = (path, ...args) => {\n if (process.env.__NEXT_I18N_SUPPORT) {\n return normalizePathTrailingSlash(\n (\n require('../shared/lib/router/utils/add-locale') as typeof import('../shared/lib/router/utils/add-locale')\n ).addLocale(path, ...args)\n )\n }\n return path\n}\n","\"use strict\";\n\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\nexports._ = _interop_require_default;\n","import React from 'react'\nimport type { NextRouter } from './router/router'\n\nexport const RouterContext = React.createContext<NextRouter | null>(null)\n\nif (process.env.NODE_ENV !== 'production') {\n RouterContext.displayName = 'RouterContext'\n}\n","export const requestIdleCallback =\n (typeof self !== 'undefined' &&\n self.requestIdleCallback &&\n self.requestIdleCallback.bind(window)) ||\n function (cb: IdleRequestCallback): number {\n let start = Date.now()\n return self.setTimeout(function () {\n cb({\n didTimeout: false,\n timeRemaining: function () {\n return Math.max(0, 50 - (Date.now() - start))\n },\n })\n }, 1)\n }\n\nexport const cancelIdleCallback =\n (typeof self !== 'undefined' &&\n self.cancelIdleCallback &&\n self.cancelIdleCallback.bind(window)) ||\n function (id: number) {\n return clearTimeout(id)\n }\n","import { useCallback, useEffect, useRef, useState } from 'react'\nimport {\n requestIdleCallback,\n cancelIdleCallback,\n} from './request-idle-callback'\n\ntype UseIntersectionObserverInit = Pick<\n IntersectionObserverInit,\n 'rootMargin' | 'root'\n>\n\ntype UseIntersection = { disabled?: boolean } & UseIntersectionObserverInit & {\n rootRef?: React.RefObject<HTMLElement | null> | null\n }\ntype ObserveCallback = (isVisible: boolean) => void\ntype Identifier = {\n root: Element | Document | null\n margin: string\n}\ntype Observer = {\n id: Identifier\n observer: IntersectionObserver\n elements: Map<Element, ObserveCallback>\n}\n\nconst hasIntersectionObserver = typeof IntersectionObserver === 'function'\n\nconst observers = new Map<Identifier, Observer>()\nconst idList: Identifier[] = []\n\nfunction createObserver(options: UseIntersectionObserverInit): Observer {\n const id = {\n root: options.root || null,\n margin: options.rootMargin || '',\n }\n const existing = idList.find(\n (obj) => obj.root === id.root && obj.margin === id.margin\n )\n let instance: Observer | undefined\n\n if (existing) {\n instance = observers.get(existing)\n if (instance) {\n return instance\n }\n }\n\n const elements = new Map<Element, ObserveCallback>()\n const observer = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n const callback = elements.get(entry.target)\n const isVisible = entry.isIntersecting || entry.intersectionRatio > 0\n if (callback && isVisible) {\n callback(isVisible)\n }\n })\n }, options)\n instance = {\n id,\n observer,\n elements,\n }\n\n idList.push(id)\n observers.set(id, instance)\n return instance\n}\n\nfunction observe(\n element: Element,\n callback: ObserveCallback,\n options: UseIntersectionObserverInit\n): () => void {\n const { id, observer, elements } = createObserver(options)\n elements.set(element, callback)\n\n observer.observe(element)\n return function unobserve(): void {\n elements.delete(element)\n observer.unobserve(element)\n\n // Destroy observer when there's nothing left to watch:\n if (elements.size === 0) {\n observer.disconnect()\n observers.delete(id)\n const index = idList.findIndex(\n (obj) => obj.root === id.root && obj.margin === id.margin\n )\n if (index > -1) {\n idList.splice(index, 1)\n }\n }\n }\n}\n\nexport function useIntersection<T extends Element>({\n rootRef,\n rootMargin,\n disabled,\n}: UseIntersection): [(element: T | null) => void, boolean, () => void] {\n const isDisabled: boolean = disabled || !hasIntersectionObserver\n\n const [visible, setVisible] = useState(false)\n const elementRef = useRef<T | null>(null)\n const setElement = useCallback((element: T | null) => {\n elementRef.current = element\n }, [])\n\n useEffect(() => {\n if (hasIntersectionObserver) {\n if (isDisabled || visible) return\n\n const element = elementRef.current\n if (element && element.tagName) {\n const unobserve = observe(\n element,\n (isVisible) => isVisible && setVisible(isVisible),\n { root: rootRef?.current, rootMargin }\n )\n\n return unobserve\n }\n } else {\n if (!visible) {\n const idleCallback = requestIdleCallback(() => setVisible(true))\n return () => cancelIdleCallback(idleCallback)\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isDisabled, rootMargin, rootRef, visible, elementRef.current])\n\n const resetVisible = useCallback(() => {\n setVisible(false)\n }, [])\n\n return [setElement, visible, resetVisible]\n}\n","export interface PathLocale {\n detectedLocale?: string\n pathname: string\n}\n\n/**\n * A cache of lowercased locales for each list of locales. This is stored as a\n * WeakMap so if the locales are garbage collected, the cache entry will be\n * removed as well.\n */\nconst cache = new WeakMap<readonly string[], readonly string[]>()\n\n/**\n * For a pathname that may include a locale from a list of locales, it\n * removes the locale from the pathname returning it alongside with the\n * detected locale.\n *\n * @param pathname A pathname that may include a locale.\n * @param locales A list of locales.\n * @returns The detected locale and pathname without locale\n */\nexport function normalizeLocalePath(\n pathname: string,\n locales?: readonly string[]\n): PathLocale {\n // If locales is undefined, return the pathname as is.\n if (!locales) return { pathname }\n\n // Get the cached lowercased locales or create a new cache entry.\n let lowercasedLocales = cache.get(locales)\n if (!lowercasedLocales) {\n lowercasedLocales = locales.map((locale) => locale.toLowerCase())\n cache.set(locales, lowercasedLocales)\n }\n\n let detectedLocale: string | undefined\n\n // The first segment will be empty, because it has a leading `/`. If\n // there is no further segment, there is no locale (or it's the default).\n const segments = pathname.split('/', 2)\n\n // If there's no second segment (ie, the pathname is just `/`), there's no\n // locale.\n if (!segments[1]) return { pathname }\n\n // The second segment will contain the locale part if any.\n const segment = segments[1].toLowerCase()\n\n // See if the segment matches one of the locales. If it doesn't, there is\n // no locale (or it's the default).\n const index = lowercasedLocales.indexOf(segment)\n if (index < 0) return { pathname }\n\n // Return the case-sensitive locale.\n detectedLocale = locales[index]\n\n // Remove the `/${locale}` part of the pathname.\n pathname = pathname.slice(detectedLocale.length + 1) || '/'\n\n return { pathname, detectedLocale }\n}\n","import type { normalizeLocalePath as Fn } from '../shared/lib/i18n/normalize-locale-path'\n\nexport const normalizeLocalePath: typeof Fn = (pathname, locales) => {\n if (process.env.__NEXT_I18N_SUPPORT) {\n return (\n require('../shared/lib/i18n/normalize-locale-path') as typeof import('../shared/lib/i18n/normalize-locale-path')\n ).normalizeLocalePath(pathname, locales)\n }\n return { pathname, detectedLocale: undefined }\n}\n","import type { DomainLocale } from '../../../server/config-shared'\n\nexport function detectDomainLocale(\n domainItems?: readonly DomainLocale[],\n hostname?: string,\n detectedLocale?: string\n) {\n if (!domainItems) return\n\n if (detectedLocale) {\n detectedLocale = detectedLocale.toLowerCase()\n }\n\n for (const item of domainItems) {\n // remove port if present\n const domainHostname = item.domain?.split(':', 1)[0].toLowerCase()\n if (\n hostname === domainHostname ||\n detectedLocale === item.defaultLocale.toLowerCase() ||\n item.locales?.some((locale) => locale.toLowerCase() === detectedLocale)\n ) {\n return item\n }\n }\n}\n","import type { detectDomainLocale as Fn } from '../shared/lib/i18n/detect-domain-locale'\n\nexport const detectDomainLocale: typeof Fn = (...args) => {\n if (process.env.__NEXT_I18N_SUPPORT) {\n return (\n require('../shared/lib/i18n/detect-domain-locale') as typeof import('../shared/lib/i18n/detect-domain-locale')\n ).detectDomainLocale(...args)\n }\n}\n","import type { DomainLocale } from '../server/config'\nimport type { normalizeLocalePath as NormalizeFn } from './normalize-locale-path'\nimport type { detectDomainLocale as DetectFn } from './detect-domain-locale'\nimport { normalizePathTrailingSlash } from './normalize-trailing-slash'\n\nconst basePath = (process.env.__NEXT_ROUTER_BASEPATH as string) || ''\n\nexport function getDomainLocale(\n path: string,\n locale?: string | false,\n locales?: readonly string[],\n domainLocales?: readonly DomainLocale[]\n) {\n if (process.env.__NEXT_I18N_SUPPORT) {\n const normalizeLocalePath: typeof NormalizeFn = (\n require('./normalize-locale-path') as typeof import('./normalize-locale-path')\n ).normalizeLocalePath\n const detectDomainLocale: typeof DetectFn = (\n require('./detect-domain-locale') as typeof import('./detect-domain-locale')\n ).detectDomainLocale\n\n const target = locale || normalizeLocalePath(path, locales).detectedLocale\n const domain = detectDomainLocale(domainLocales, undefined, target)\n if (domain) {\n const proto = `http${domain.http ? '' : 's'}://`\n const finalLocale = target === domain.defaultLocale ? '' : `/${target}`\n return `${proto}${domain.domain}${normalizePathTrailingSlash(\n `${basePath}${finalLocale}${path}`\n )}`\n }\n return false\n } else {\n return false\n }\n}\n","import { addPathPrefix } from '../shared/lib/router/utils/add-path-prefix'\nimport { normalizePathTrailingSlash } from './normalize-trailing-slash'\n\nconst basePath = (process.env.__NEXT_ROUTER_BASEPATH as string) || ''\n\nexport function addBasePath(path: string, required?: boolean): string {\n return normalizePathTrailingSlash(\n process.env.__NEXT_MANUAL_CLIENT_BASE_PATH && !required\n ? path\n : addPathPrefix(path, basePath)\n )\n}\n","import { useCallback, useRef, type Ref } from 'react'\n\n// This is a compatibility hook to support React 18 and 19 refs.\n// In 19, a cleanup function from refs may be returned.\n// In 18, returning a cleanup function creates a warning.\n// Since we take userspace refs, we don't know ahead of time if a cleanup function will be returned.\n// This implements cleanup functions with the old behavior in 18.\n// We know refs are always called alternating with `null` and then `T`.\n// So a call with `null` means we need to call the previous cleanup functions.\nexport function useMergedRef<TElement>(\n refA: Ref<TElement>,\n refB: Ref<TElement>\n): Ref<TElement> {\n const cleanupA = useRef<(() => void) | null>(null)\n const cleanupB = useRef<(() => void) | null>(null)\n\n // NOTE: In theory, we could skip the wrapping if only one of the refs is non-null.\n // (this happens often if the user doesn't pass a ref to Link/Form/Image)\n // But this can cause us to leak a cleanup-ref into user code (previously via `<Link legacyBehavior>`),\n // and the user might pass that ref into ref-merging library that doesn't support cleanup refs\n // (because it hasn't been updated for React 19)\n // which can then cause things to blow up, because a cleanup-returning ref gets called with `null`.\n // So in practice, it's safer to be defensive and always wrap the ref, even on React 19.\n return useCallback(\n (current: TElement | null): void => {\n if (current === null) {\n const cleanupFnA = cleanupA.current\n if (cleanupFnA) {\n cleanupA.current = null\n cleanupFnA()\n }\n const cleanupFnB = cleanupB.current\n if (cleanupFnB) {\n cleanupB.current = null\n cleanupFnB()\n }\n } else {\n if (refA) {\n cleanupA.current = applyRef(refA, current)\n }\n if (refB) {\n cleanupB.current = applyRef(refB, current)\n }\n }\n },\n [refA, refB]\n )\n}\n\nfunction applyRef<TElement>(\n refA: NonNullable<Ref<TElement>>,\n current: TElement\n) {\n if (typeof refA === 'function') {\n const cleanup = refA(current)\n if (typeof cleanup === 'function') {\n return cleanup\n } else {\n return () => refA(null)\n }\n } else {\n refA.current = current\n return () => {\n refA.current = null\n }\n }\n}\n","let errorOnce = (_: string) => {}\nif (process.env.NODE_ENV !== 'production') {\n const errors = new Set<string>()\n errorOnce = (msg: string) => {\n if (!errors.has(msg)) {\n console.error(msg)\n }\n errors.add(msg)\n }\n}\n\nexport { errorOnce }\n","'use client'\n\nimport type {\n NextRouter,\n PrefetchOptions as RouterPrefetchOptions,\n} from '../shared/lib/router/router'\n\nimport React, { createContext, useContext } from 'react'\nimport type { UrlObject } from 'url'\nimport { resolveHref } from './resolve-href'\nimport { isLocalURL } from '../shared/lib/router/utils/is-local-url'\nimport { formatUrl } from '../shared/lib/router/utils/format-url'\nimport { isAbsoluteUrl } from '../shared/lib/utils'\nimport { addLocale } from './add-locale'\nimport { RouterContext } from '../shared/lib/router-context.shared-runtime'\nimport type { AppRouterInstance } from '../shared/lib/app-router-context.shared-runtime'\nimport { useIntersection } from './use-intersection'\nimport { getDomainLocale } from './get-domain-locale'\nimport { addBasePath } from './add-base-path'\nimport { useMergedRef } from './use-merged-ref'\nimport { errorOnce } from '../shared/lib/utils/error-once'\n\ntype Url = string | UrlObject\ntype RequiredKeys<T> = {\n [K in keyof T]-?: {} extends Pick<T, K> ? never : K\n}[keyof T]\ntype OptionalKeys<T> = {\n [K in keyof T]-?: {} extends Pick<T, K> ? K : never\n}[keyof T]\n\ntype OnNavigateEventHandler = (event: { preventDefault: () => void }) => void\n\ntype InternalLinkProps = {\n /**\n * The path or URL to navigate to. It can also be an object.\n *\n * @example https://nextjs.org/docs/api-reference/next/link#with-url-object\n */\n href: Url\n /**\n * Optional decorator for the path that will be shown in the browser URL bar. Before Next.js 9.5.3 this was used for dynamic routes, check our [previous docs](https://github.com/vercel/next.js/blob/v9.5.2/docs/api-reference/next/link.md#dynamic-routes) to see how it worked. Note: when this path differs from the one provided in `href` the previous `href`/`as` behavior is used as shown in the [previous docs](https://github.com/vercel/next.js/blob/v9.5.2/docs/api-reference/next/link.md#dynamic-routes).\n */\n as?: Url\n /**\n * Replace the current `history` state instead of adding a new url into the stack.\n *\n * @defaultValue `false`\n */\n replace?: boolean\n /**\n * Whether to override the default scroll behavior\n *\n * @example https://nextjs.org/docs/api-reference/next/link#disable-scrolling-to-the-top-of-the-page\n *\n * @defaultValue `true`\n */\n scroll?: boolean\n /**\n * Update the path of the current page without rerunning [`getStaticProps`](https://nextjs.org/docs/pages/building-your-application/data-fetching/get-static-props), [`getServerSideProps`](https://nextjs.org/docs/pages/building-your-application/data-fetching/get-server-side-props) or [`getInitialProps`](/docs/pages/api-reference/functions/get-initial-props).\n *\n * @defaultValue `false`\n */\n shallow?: boolean\n /**\n * Forces `Link` to send the `href` property to its child.\n *\n * @defaultValue `false`\n */\n passHref?: boolean\n /**\n * Prefetch the page in the background.\n * Any `<Link />` that is in the viewport (initially or through scroll) will be prefetched.\n * Prefetch can be disabled by passing `prefetch={false}`. Prefetching is only enabled in production.\n *\n * In App Router:\n * - \"auto\", null, undefined (default): For statically generated pages, this will prefetch the full React Server Component data. For dynamic pages, this will prefetch up to the nearest route segment with a [`loading.js`](https://nextjs.org/docs/app/api-reference/file-conventions/loading) file. If there is no loading file, it will not fetch the full tree to avoid fetching too much data.\n * - `true`: This will prefetch the full React Server Component data for all route segments, regardless of whether they contain a segment with `loading.js`.\n * - `false`: This will not prefetch any data, even on hover.\n *\n * In Pages Router:\n * - `true` (default): The full route & its data will be prefetched.\n * - `false`: Prefetching will not happen when entering the viewport, but will still happen on hover.\n * @defaultValue `true` (pages router) or `null` (app router)\n */\n prefetch?: boolean | 'auto' | null\n /**\n * The active locale is automatically prepended. `locale` allows for providing a different locale.\n * When `false` `href` has to include the locale as the default behavior is disabled.\n * Note: This is only available in the Pages Router.\n */\n locale?: string | false\n /**\n * Enable legacy link behavior.\n *\n * @deprecated This will be removed in a future version\n * @defaultValue `false`\n * @see https://github.com/vercel/next.js/commit/489e65ed98544e69b0afd7e0cfc3f9f6c2b803b7\n */\n legacyBehavior?: boolean\n /**\n * Optional event handler for when the mouse pointer is moved onto Link\n */\n onMouseEnter?: React.MouseEventHandler<HTMLAnchorElement>\n /**\n * Optional event handler for when Link is touched.\n */\n onTouchStart?: React.TouchEventHandler<HTMLAnchorElement>\n /**\n * Optional event handler for when Link is clicked.\n */\n onClick?: React.MouseEventHandler<HTMLAnchorElement>\n /**\n * Optional event handler for when the `<Link>` is navigated.\n */\n onNavigate?: OnNavigateEventHandler\n}\n\n// TODO-APP: Include the full set of Anchor props\n// adding this to the publicly exported type currently breaks existing apps\n\n// `RouteInferType` is a stub here to avoid breaking `typedRoutes` when the type\n// isn't generated yet. It will be replaced when type generation runs.\n// WARNING: This should be an interface to prevent TypeScript from inlining it\n// in declarations of libraries dependending on Next.js.\n// Not trivial to reproduce so only convert to an interface when needed.\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport interface LinkProps<RouteInferType = any> extends InternalLinkProps {}\ntype LinkPropsRequired = RequiredKeys<LinkProps>\ntype LinkPropsOptional = OptionalKeys<InternalLinkProps>\n\nconst prefetched = new Set<string>()\n\ntype PrefetchOptions = RouterPrefetchOptions & {\n /**\n * bypassPrefetchedCheck will bypass the check to see if the `href` has\n * already been fetched.\n */\n bypassPrefetchedCheck?: boolean\n}\n\nfunction prefetch(\n router: NextRouter,\n href: string,\n as: string,\n options: PrefetchOptions\n): void {\n if (typeof window === 'undefined') {\n return\n }\n\n if (!isLocalURL(href)) {\n return\n }\n\n // We should only dedupe requests when experimental.optimisticClientCache is\n // disabled.\n if (!options.bypassPrefetchedCheck) {\n const locale =\n // Let the link's locale prop override the default router locale.\n typeof options.locale !== 'undefined'\n ? options.locale\n : // Otherwise fallback to the router's locale.\n 'locale' in router\n ? router.locale\n : undefined\n\n const prefetchedKey = href + '%' + as + '%' + locale\n\n // If we've already fetched the key, then don't prefetch it again!\n if (prefetched.has(prefetchedKey)) {\n return\n }\n\n // Mark this URL as prefetched.\n prefetched.add(prefetchedKey)\n }\n\n // Prefetch the JSON page if asked (only in the client)\n // We need to handle a prefetch error here since we may be\n // loading with priority which can reject but we don't\n // want to force navigation since this is only a prefetch\n router.prefetch(href, as, options).catch((err) => {\n if (process.env.NODE_ENV !== 'production') {\n // rethrow to show invalid URL errors\n throw err\n }\n })\n}\n\nfunction isModifiedEvent(event: React.MouseEvent): boolean {\n const eventTarget = event.currentTarget as HTMLAnchorElement | SVGAElement\n const target = eventTarget.getAttribute('target')\n return (\n (target && target !== '_self') ||\n event.metaKey ||\n event.ctrlKey ||\n event.shiftKey ||\n event.altKey || // triggers resource download\n (event.nativeEvent && event.nativeEvent.which === 2)\n )\n}\n\nfunction linkClicked(\n e: React.MouseEvent,\n router: NextRouter | AppRouterInstance,\n href: string,\n as: string,\n replace?: boolean,\n shallow?: boolean,\n scroll?: boolean,\n locale?: string | false,\n onNavigate?: OnNavigateEventHandler\n): void {\n const { nodeName } = e.currentTarget\n\n // anchors inside an svg have a lowercase nodeName\n const isAnchorNodeName = nodeName.toUpperCase() === 'A'\n\n if (\n (isAnchorNodeName && isModifiedEvent(e)) ||\n e.currentTarget.hasAttribute('download')\n ) {\n // ignore click for browser’s default behavior\n return\n }\n\n if (!isLocalURL(href)) {\n if (replace) {\n // browser default behavior does not replace the history state\n // so we need to do it manually\n e.preventDefault()\n location.replace(href)\n }\n\n // ignore click for browser’s default behavior\n return\n }\n\n e.preventDefault()\n\n const navigate = () => {\n if (onNavigate) {\n let isDefaultPrevented = false\n\n onNavigate({\n preventDefault: () => {\n isDefaultPrevented = true\n },\n })\n\n if (isDefaultPrevented) {\n return\n }\n }\n\n // If the router is an NextRouter instance it will have `beforePopState`\n const routerScroll = scroll ?? true\n if ('beforePopState' in router) {\n router[replace ? 'replace' : 'push'](href, as, {\n shallow,\n locale,\n scroll: routerScroll,\n })\n } else {\n router[replace ? 'replace' : 'push'](as || href, {\n scroll: routerScroll,\n })\n }\n }\n\n navigate()\n}\n\ntype LinkPropsReal = React.PropsWithChildren<\n Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, keyof LinkProps> &\n LinkProps\n>\n\nfunction formatStringOrUrl(urlObjOrString: UrlObject | string): string {\n if (typeof urlObjOrString === 'string') {\n return urlObjOrString\n }\n\n return formatUrl(urlObjOrString)\n}\n\n/**\n * A React component that extends the HTML `<a>` element to provide [prefetching](https://nextjs.org/docs/app/building-your-application/routing/linking-and-navigating#2-prefetching)\n * and client-side navigation between routes.\n *\n * It is the primary way to navigate between routes in Next.js.\n *\n * Read more: [Next.js docs: `<Link>`](https://nextjs.org/docs/app/api-reference/components/link)\n */\nconst Link = React.forwardRef<HTMLAnchorElement, LinkPropsReal>(\n function LinkComponent(props, forwardedRef) {\n let children: React.ReactNode\n\n const {\n href: hrefProp,\n as: asProp,\n children: childrenProp,\n prefetch: prefetchProp = null,\n passHref,\n replace,\n shallow,\n scroll,\n locale,\n onClick,\n onNavigate,\n onMouseEnter: onMouseEnterProp,\n onTouchStart: onTouchStartProp,\n legacyBehavior = false,\n ...restProps\n } = props\n\n children = childrenProp\n\n if (\n legacyBehavior &&\n (typeof children === 'string' || typeof children === 'number')\n ) {\n children = <a>{children}</a>\n }\n\n const router = React.useContext(RouterContext)\n\n const prefetchEnabled = prefetchProp !== false\n\n if (process.env.NODE_ENV !== 'production') {\n function createPropError(args: {\n key: string\n expected: string\n actual: string\n }) {\n return new Error(\n `Failed prop type: The prop \\`${args.key}\\` expects a ${args.expected} in \\`<Link>\\`, but got \\`${args.actual}\\` instead.` +\n (typeof window !== 'undefined'\n ? // TODO: Remove this addendum if Owner Stacks are available\n \"\\nOpen your browser's console to view the Component stack trace.\"\n : '')\n )\n }\n\n // TypeScript trick for type-guarding:\n const requiredPropsGuard: Record<LinkPropsRequired, true> = {\n href: true,\n } as const\n const requiredProps: LinkPropsRequired[] = Object.keys(\n requiredPropsGuard\n ) as LinkPropsRequired[]\n requiredProps.forEach((key: LinkPropsRequired) => {\n if (key === 'href') {\n if (\n props[key] == null ||\n (typeof props[key] !== 'string' && typeof props[key] !== 'object')\n ) {\n throw createPropError({\n key,\n expected: '`string` or `object`',\n actual: props[key] === null ? 'null' : typeof props[key],\n })\n }\n } else {\n // TypeScript trick for type-guarding:\n const _: never = key\n }\n })\n\n // TypeScript trick for type-guarding:\n const optionalPropsGuard: Record<LinkPropsOptional, true> = {\n as: true,\n replace: true,\n scroll: true,\n shallow: true,\n passHref: true,\n prefetch: true,\n locale: true,\n onClick: true,\n onMouseEnter: true,\n onTouchStart: true,\n legacyBehavior: true,\n onNavigate: true,\n } as const\n const optionalProps: LinkPropsOptional[] = Object.keys(\n optionalPropsGuard\n ) as LinkPropsOptional[]\n optionalProps.forEach((key: LinkPropsOptional) => {\n const valType = typeof props[key]\n\n if (key === 'as') {\n if (props[key] && valType !== 'string' && valType !== 'object') {\n throw createPropError({\n key,\n expected: '`string` or `object`',\n actual: valType,\n })\n }\n } else if (key === 'locale') {\n if (props[key] && valType !== 'string') {\n throw createPropError({\n key,\n expected: '`string`',\n actual: valType,\n })\n }\n } else if (\n key === 'onClick' ||\n key === 'onMouseEnter' ||\n key === 'onTouchStart' ||\n key === 'onNavigate'\n ) {\n if (props[key] && valType !== 'function') {\n throw createPropError({\n key,\n expected: '`function`',\n actual: valType,\n })\n }\n } else if (\n key === 'replace' ||\n key === 'scroll' ||\n key === 'shallow' ||\n key === 'passHref' ||\n key === 'legacyBehavior'\n ) {\n if (props[key] != null && valType !== 'boolean') {\n throw createPropError({\n key,\n expected: '`boolean`',\n actual: valType,\n })\n }\n } else if (key === 'prefetch') {\n if (\n props[key] != null &&\n valType !== 'boolean' &&\n props[key] !== 'auto'\n ) {\n throw createPropError({\n key,\n expected: '`boolean | \"auto\"`',\n actual: valType,\n })\n }\n } else {\n // TypeScript trick for type-guarding:\n const _: never = key\n }\n })\n }\n\n const { href, as } = React.useMemo(() => {\n if (!router) {\n const resolvedHref = formatStringOrUrl(hrefProp)\n return {\n href: resolvedHref,\n as: asProp ? formatStringOrUrl(asProp) : resolvedHref,\n }\n }\n\n const [resolvedHref, resolvedAs] = resolveHref(router, hrefProp, true)\n\n return {\n href: resolvedHref,\n as: asProp ? resolveHref(router, asProp) : resolvedAs || resolvedHref,\n }\n }, [router, hrefProp, asProp])\n\n const previousHref = React.useRef<string>(href)\n const previousAs = React.useRef<string>(as)\n\n // This will return the first child, if multiple are provided it will throw an error\n let child: any\n if (legacyBehavior) {\n if (process.env.NODE_ENV === 'development') {\n if (onClick) {\n console.warn(\n `\"onClick\" was passed to <Link> with \\`href\\` of \\`${hrefProp}\\` but \"legacyBehavior\" was set. The legacy behavior requires onClick be set on the child of next/link`\n )\n }\n if (onMouseEnterProp) {\n console.warn(\n `\"onMouseEnter\" was passed to <Link> with \\`href\\` of \\`${hrefProp}\\` but \"legacyBehavior\" was set. The legacy behavior requires onMouseEnter be set on the child of next/link`\n )\n }\n try {\n child = React.Children.only(children)\n } catch (err) {\n if (!children) {\n throw new Error(\n `No children were passed to <Link> with \\`href\\` of \\`${hrefProp}\\` but one child is required https://nextjs.org/docs/messages/link-no-children`\n )\n }\n throw new Error(\n `Multiple children were passed to <Link> with \\`href\\` of \\`${hrefProp}\\` but only one child is supported https://nextjs.org/docs/messages/link-multiple-children` +\n (typeof window !== 'undefined'\n ? \" \\nOpen your browser's console to view the Component stack trace.\"\n : '')\n )\n }\n } else {\n child = React.Children.only(children)\n }\n } else {\n if (process.env.NODE_ENV === 'development') {\n if ((children as any)?.type === 'a') {\n throw new Error(\n 'Invalid <Link> with <a> child. Please remove <a> or use <Link legacyBehavior>.\\nLearn more: https://nextjs.org/docs/messages/invalid-new-link-with-extra-anchor'\n )\n }\n }\n }\n\n const childRef: any = legacyBehavior\n ? child && typeof child === 'object' && child.ref\n : forwardedRef\n\n const [setIntersectionRef, isVisible, resetVisible] = useIntersection({\n rootMargin: '200px',\n })\n const setIntersectionWithResetRef = React.useCallback(\n (el: Element | null) => {\n // Before the link getting observed, check if visible state need to be reset\n if (previousAs.current !== as || previousHref.current !== href) {\n resetVisible()\n previousAs.current = as\n previousHref.current = href\n }\n\n setIntersectionRef(el)\n },\n [as, href, resetVisible, setIntersectionRef]\n )\n\n const setRef = useMergedRef(setIntersectionWithResetRef, childRef)\n\n // Prefetch the URL if we haven't already and it's visible.\n React.useEffect(() => {\n // in dev, we only prefetch on hover to avoid wasting resources as the prefetch will trigger compiling the page.\n if (process.env.NODE_ENV !== 'production') {\n return\n }\n\n if (!router) {\n return\n }\n\n // If we don't need to prefetch the URL, don't do prefetch.\n if (!isVisible || !prefetchEnabled) {\n return\n }\n\n // Prefetch the URL.\n prefetch(router, href, as, { locale })\n }, [as, href, isVisible, locale, prefetchEnabled, router?.locale, router])\n\n const childProps: {\n onTouchStart?: React.TouchEventHandler<HTMLAnchorElement>\n onMouseEnter: React.MouseEventHandler<HTMLAnchorElement>\n onClick: React.MouseEventHandler<HTMLAnchorElement>\n href?: string\n ref?: any\n } = {\n ref: setRef,\n onClick(e) {\n if (process.env.NODE_ENV !== 'production') {\n if (!e) {\n throw new Error(\n `Component rendered inside next/link has to pass click event to \"onClick\" prop.`\n )\n }\n }\n\n if (!legacyBehavior && typeof onClick === 'function') {\n onClick(e)\n }\n\n if (\n legacyBehavior &&\n child.props &&\n typeof child.props.onClick === 'function'\n ) {\n child.props.onClick(e)\n }\n\n if (!router) {\n return\n }\n\n if (e.defaultPrevented) {\n return\n }\n\n linkClicked(\n e,\n router,\n href,\n as,\n replace,\n shallow,\n scroll,\n locale,\n onNavigate\n )\n },\n onMouseEnter(e) {\n if (!legacyBehavior && typeof onMouseEnterProp === 'function') {\n onMouseEnterProp(e)\n }\n\n if (\n legacyBehavior &&\n child.props &&\n typeof child.props.onMouseEnter === 'function'\n ) {\n child.props.onMouseEnter(e)\n }\n\n if (!router) {\n return\n }\n\n prefetch(router, href, as, {\n locale,\n priority: true,\n // @see {https://github.com/vercel/next.js/discussions/40268?sort=top#discussioncomment-3572642}\n bypassPrefetchedCheck: true,\n })\n },\n onTouchStart: process.env.__NEXT_LINK_NO_TOUCH_START\n ? undefined\n : function onTouchStart(e) {\n if (!legacyBehavior && typeof onTouchStartProp === 'function') {\n onTouchStartProp(e)\n }\n\n if (\n legacyBehavior &&\n child.props &&\n typeof child.props.onTouchStart === 'function'\n ) {\n child.props.onTouchStart(e)\n }\n\n if (!router) {\n return\n }\n\n prefetch(router, href, as, {\n locale,\n priority: true,\n // @see {https://github.com/vercel/next.js/discussions/40268?sort=top#discussioncomment-3572642}\n bypassPrefetchedCheck: true,\n })\n },\n }\n\n // If the url is absolute, we can bypass the logic to prepend the domain and locale.\n if (isAbsoluteUrl(as)) {\n childProps.href = as\n } else if (\n !legacyBehavior ||\n passHref ||\n (child.type === 'a' && !('href' in child.props))\n ) {\n const curLocale = typeof locale !== 'undefined' ? locale : router?.locale\n\n // we only render domain locales if we are currently on a domain locale\n // so that locale links are still visitable in development/preview envs\n const localeDomain =\n router?.isLocaleDomain &&\n getDomainLocale(as, curLocale, router?.locales, router?.domainLocales)\n\n childProps.href =\n localeDomain ||\n addBasePath(addLocale(as, curLocale, router?.defaultLocale))\n }\n\n if (legacyBehavior) {\n if (process.env.NODE_ENV === 'development') {\n errorOnce(\n '`legacyBehavior` is deprecated and will be removed in a future ' +\n 'release. A codemod is available to upgrade your components:\\n\\n' +\n 'npx @next/codemod@latest new-link .\\n\\n' +\n 'Learn more: https://nextjs.org/docs/app/building-your-application/upgrading/codemods#remove-a-tags-from-link-components'\n )\n }\n return React.cloneElement(child, childProps)\n }\n\n return (\n <a {...restProps} {...childProps}>\n {children}\n </a>\n )\n }\n)\n\nconst LinkStatusContext = createContext<{\n pending: boolean\n}>({\n // We do not support link status in the Pages Router, so we always return false\n pending: false,\n})\n\nexport const useLinkStatus = () => {\n // This behaviour is like React's useFormStatus. When the component is not under\n // a <form> tag, it will get the default value, instead of throwing an error.\n return useContext(LinkStatusContext)\n}\n\nexport default Link\n","module.exports = require('./dist/client/link')\n","import { twMerge } from 'tailwind-merge'\nimport type { ButtonProps } from '../index'\n\n/** Primary UI component for user interaction */\nexport default function ActionButton ({\n children,\n disabled = false,\n className = '',\n type = 'button',\n ...props\n}: ButtonProps) {\n const getStyles = () => {\n if (disabled) {\n return {\n container:\n 'flex-1 h-12 rounded inline-flex flex-col justify-center items-center gap-2 overflow-hidden bg-bg-muted dark:bg-bg-muted-dark',\n inner:\n 'self-stretch flex-1 pl-4 pr-6 py-2.5 inline-flex justify-center items-center gap-2',\n text: 'opacity-state-disabled-content text-center justify-center text-text-disabled dark:text-text-disabled-dark text-sm font-semibold font-poppins leading-5',\n }\n }\n return {\n container:\n 'flex-1 h-12 bg-brand-primary rounded inline-flex flex-col justify-center items-center gap-2 overflow-hidden hover:shadow-md transition-shadow duration-200',\n inner:\n 'self-stretch flex-1 pl-4 pr-6 py-2.5 inline-flex justify-center items-center gap-2 hover:opacity-90 focus:opacity-85 active:opacity-85 transition-opacity duration-200',\n text: 'text-center justify-center text-text-inverse text-sm font-semibold font-poppins leading-5',\n }\n }\n\n const styles = getStyles()\n\n const containerClasses = twMerge(\n 'flex-1 px-2 py-1 rounded border border-border-subtle dark:border-border-subtle-dark bg-bg-muted dark:bg-bg-muted-dark text-text-secondary dark:text-text-secondary-dark text-sm font-semibold font-poppins leading-5 hover:border-border-default dark:hover:border-border-default-dark focus:outline-none focus:ring-2 focus:ring-brand-primary',\n disabled && 'cursor-not-allowed',\n className\n )\n\n return (\n <button\n type={type}\n className={containerClasses}\n disabled={disabled}\n {...props}\n >\n <div className={styles.inner}>\n <div className={styles.text}>{children}</div>\n </div>\n </button>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport type { ButtonProps } from '../index'\n\n/** Primary UI component for user interaction */\nexport default function PercentageButton ({\n children,\n disabled = false,\n className = '',\n type = 'button',\n ...props\n}: ButtonProps) {\n const containerClasses = twMerge(\n 'flex-1 px-2 py-1 rounded border border-border-subtle dark:border-border-subtle-dark bg-bg-muted dark:bg-bg-muted-dark text-text-secondary dark:text-text-secondary-dark text-sm font-semibold font-poppins leading-5 hover:border-border-default dark:hover:border-border-default-dark focus:outline-none focus:ring-2 focus:ring-brand-primary',\n disabled && 'cursor-not-allowed',\n className\n )\n\n return (\n <button\n type={type}\n className={containerClasses}\n disabled={disabled}\n {...props}\n >\n {children}\n </button>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport type { ButtonProps } from '../index'\n\n/** Primary UI component for user interaction - uses brand-primary color for theming */\nexport default function PrimaryButton ({\n children,\n disabled = false,\n className = '',\n type = 'button',\n ...props\n}: ButtonProps) {\n /** base button classes */\n const baseClasses = [\n /** layout */\n 'overflow-hidden w-full flex items-center justify-center transition-all duration-200',\n /** typography */\n 'font-[var(--deframe-widget-font-family-primary)]',\n '[font-size:var(--deframe-widget-font-size-md)]',\n '[line-height:var(--deframe-widget-font-leading-md)]',\n '[font-weight:var(--deframe-widget-font-weight-semibold)]',\n /** spacing */\n 'px-[var(--deframe-widget-size-padding-x-xl)]',\n 'py-[var(--deframe-widget-size-padding-y-md)]',\n /** container */\n 'rounded-[var(--deframe-widget-size-radius-xs)]',\n 'border-solid border-[length:var(--deframe-widget-size-border-xs)]',\n 'gap-[var(--deframe-widget-size-gap-sm)]'\n ].join(' ')\n\n const stateClasses = {\n /** enabled state */\n enabled: [\n 'hover:opacity-90',\n 'text-[var(--deframe-widget-color-text-primary)]',\n 'bg-[var(--deframe-widget-color-brand-primary)]',\n 'border-[color:var(--deframe-widget-color-border-primary)]',\n 'cursor-pointer'\n ].join(' '),\n /** disabled state */\n disabled: [\n 'text-[var(--deframe-widget-color-text-primary-disabled)]',\n 'bg-[var(--deframe-widget-color-brand-primary-disabled)]',\n 'border-[color:var(--deframe-widget-color-border-primary-disabled)]',\n 'cursor-not-allowed'\n ].join(' '),\n } as const\n\n /** button classes merge */\n const buttonClasses = twMerge(\n baseClasses,\n stateClasses[disabled ? 'disabled' : 'enabled'],\n className\n )\n\n return (\n <button\n data-slot='primary-button'\n data-test-id='primary-button'\n aria-label='primary action'\n type={type}\n className={buttonClasses}\n disabled={disabled}\n {...props}\n >\n {children}\n </button>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport type { ButtonProps } from '../index'\n\n/** Secondary UI component for user interaction - outline style using brand-primary color */\nexport default function SecondaryButton ({\n children,\n disabled = false,\n className = '',\n type = 'button',\n ...props\n}: ButtonProps) {\n /** base button classes */\n const baseClasses = [\n /** layout */\n 'overflow-hidden w-full flex items-center justify-center transition-all duration-200',\n /** typography */\n 'font-[var(--deframe-widget-font-family-primary)]',\n '[font-size:var(--deframe-widget-font-size-md)]',\n '[line-height:var(--deframe-widget-font-leading-md)]',\n '[font-weight:var(--deframe-widget-font-weight-semibold)]',\n /** spacing */\n 'px-[var(--deframe-widget-size-padding-x-xl)]',\n 'py-[var(--deframe-widget-size-padding-y-md)]',\n /** container */\n 'bg-transparent',\n 'rounded-[var(--deframe-widget-size-radius-xs)]',\n 'border-solid border-[length:var(--deframe-widget-size-border-xs)]',\n 'gap-[var(--deframe-widget-size-gap-sm)]',\n ].join(' ')\n\n /** state classes map */\n const stateClasses = {\n enabled: [\n 'text-[color:var(--deframe-widget-color-brand-secondary)]',\n 'border-[color:var(--deframe-widget-color-border-secondary)]',\n 'hover:opacity-90',\n 'cursor-pointer',\n ].join(' '),\n disabled: [\n 'text-[color:var(--deframe-widget-color-text-secondary-disabled)]',\n 'border-[color:var(--deframe-widget-color-border-secondary-disabled)]',\n 'cursor-not-allowed',\n ].join(' '),\n } as const\n\n /** button classes merge */\n const buttonClasses = twMerge(\n baseClasses,\n stateClasses[disabled ? 'disabled' : 'enabled'],\n className\n )\n\n return (\n <button\n data-slot='secondary-button'\n data-test-id='secondary-button'\n aria-label='secondary action'\n type={type}\n className={buttonClasses}\n disabled={disabled}\n {...props}\n >\n {children}\n </button>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport type { ButtonProps } from '../index'\n\n/** Tertiary UI component for user interaction - ghost style using brand-tertiary color */\nexport default function TertiaryButton ({\n children,\n disabled = false,\n className = '',\n type = 'button',\n ...props\n}: ButtonProps) {\n /** base button classes */\n const baseClasses = [\n /** layout */\n 'overflow-hidden w-full flex items-center justify-center transition-all duration-200',\n /** typography */\n 'font-[var(--deframe-widget-font-family-primary)]',\n '[font-size:var(--deframe-widget-font-size-md)]',\n '[line-height:var(--deframe-widget-font-leading-md)]',\n '[font-weight:var(--deframe-widget-font-weight-semibold)]',\n /** spacing */\n 'px-[var(--deframe-widget-size-padding-x-xl)]',\n 'py-[var(--deframe-widget-size-padding-y-md)]',\n /** container */\n 'bg-transparent border-none',\n 'rounded-[var(--deframe-widget-size-radius-xs)]',\n 'gap-[var(--deframe-widget-size-gap-sm)]',\n ].join(' ')\n\n /** state classes map */\n const stateClasses = {\n enabled: [\n 'text-[color:var(--deframe-widget-color-brand-tertiary)]',\n 'hover:opacity-90',\n 'cursor-pointer',\n ].join(' '),\n disabled: [\n 'text-[color:var(--deframe-widget-color-text-tertiary-disabled)]',\n 'cursor-not-allowed',\n ].join(' '),\n } as const\n\n /** button classes merge */\n const buttonClasses = twMerge(\n baseClasses,\n stateClasses[disabled ? 'disabled' : 'enabled'],\n className\n )\n\n return (\n <button\n data-slot='tertiary-button'\n data-test-id='tertiary-button'\n aria-label='tertiary action'\n type={type}\n className={buttonClasses}\n disabled={disabled}\n {...props}\n >\n {children}\n </button>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport type { ComponentProps } from 'react'\n\nexport interface InputProps extends ComponentProps<'div'> {}\n\nexport function Input ({ className = '', ...props }: InputProps) {\n const baseClasses = [\n 'flex flex-col',\n '[gap:var(--deframe-widget-size-gap-xs)]',\n ].join(' ')\n\n return (\n <div\n data-slot='input'\n data-test-id='input'\n className={twMerge(baseClasses, className)}\n {...props}\n />\n )\n}\n\nexport function InputLabel ({ className = '', ...props }: ComponentProps<'label'>) {\n const baseClasses = [\n '[font-family:var(--deframe-widget-font-family-primary)]',\n '[font-size:var(--deframe-widget-font-size-xs)]',\n '[font-weight:var(--deframe-widget-font-weight-medium)]',\n 'text-[var(--deframe-widget-color-text-primary)]',\n ].join(' ')\n\n return (\n <label\n data-slot='input-label'\n data-test-id='input-label'\n className={twMerge(baseClasses, className)}\n {...props}\n />\n )\n}\n\nexport interface InputFieldProps extends ComponentProps<'input'> {\n hasError?: boolean\n}\n\nexport function InputField ({ hasError = false, disabled, className = '', ...props }: InputFieldProps) {\n const baseClasses = [\n 'w-full',\n '[font-family:var(--deframe-widget-font-family-primary)]',\n '[font-size:var(--deframe-widget-font-size-md)]',\n '[font-weight:var(--deframe-widget-font-weight-regular)]',\n 'text-[var(--deframe-widget-color-text-primary)]',\n 'placeholder-[var(--deframe-widget-color-placeholder-primary)]',\n 'border-[length:var(--deframe-widget-size-border-xs)]',\n 'rounded-[var(--deframe-widget-size-radius-sm)]',\n 'px-[var(--deframe-widget-size-padding-x-md)]',\n 'py-[var(--deframe-widget-size-padding-y-sm)]',\n 'outline-none',\n 'transition-colors',\n ].join(' ')\n\n const stateClasses = {\n error: 'border border-[var(--deframe-widget-color-state-error)]',\n disabled: [\n 'border',\n 'border-[var(--deframe-widget-color-border-primary-disabled)]',\n 'opacity-60',\n 'cursor-not-allowed',\n ].join(' '),\n default: 'border border-[var(--deframe-widget-color-border-primary)]',\n } as const\n\n const stateKey = hasError ? 'error' : disabled ? 'disabled' : 'default'\n const fieldClasses = twMerge(baseClasses, stateClasses[stateKey], className)\n\n return (\n <input\n data-slot='input-field'\n data-test-id='input-field'\n aria-invalid={hasError || undefined}\n disabled={disabled}\n className={fieldClasses}\n {...props}\n />\n )\n}\n","import NextLink from 'next/link'\nimport { twMerge } from 'tailwind-merge'\nimport type { LinkProps } from './index'\n\nexport function Link ({\n children,\n href,\n className = '',\n target = '_blank',\n disabled = false,\n prefetch,\n replace,\n scroll,\n ...props\n}: LinkProps) {\n const baseClasses = [\n '[font-family:var(--deframe-widget-font-family-primary)]',\n '[font-size:var(--deframe-widget-font-size-md)]',\n '[font-weight:var(--deframe-widget-font-weight-medium)]',\n '[line-height:var(--deframe-widget-font-leading-lg)]',\n ].join(' ')\n\n const stateClasses = {\n enabled: [\n 'text-[var(--deframe-widget-color-link)]',\n 'underline',\n 'cursor-pointer',\n ].join(' '),\n disabled: [\n 'text-[var(--deframe-widget-color-link-disabled)]',\n 'cursor-not-allowed',\n 'pointer-events-none',\n ].join(' '),\n } as const\n\n const linkClasses = twMerge(\n baseClasses,\n stateClasses[disabled ? 'disabled' : 'enabled'],\n className\n )\n\n if (disabled) {\n return (\n <span\n data-slot='link'\n data-test-id='link'\n aria-disabled\n className={linkClasses}\n >\n {children}\n </span>\n )\n }\n\n return (\n <NextLink\n href={href}\n target={target}\n prefetch={prefetch}\n replace={replace}\n scroll={scroll}\n data-slot='link'\n data-test-id='link'\n className={linkClasses}\n rel={target === '_blank' ? 'noopener noreferrer' : undefined}\n {...props}\n >\n {children}\n </NextLink>\n )\n}\n\nexport default Link\n","import { Input as InputRoot, InputLabel, InputField } from './InputCompund'\nimport Link from '../texts/Link'\nimport type { InputProps } from './index'\n\nexport function Input ({\n label,\n error,\n placeholder,\n type = 'text',\n repassword = 'Forgot password?',\n href = '/',\n disabled,\n className = '',\n ...props\n}: InputProps) {\n const hasError = !!error\n\n return (\n <InputRoot className={className}>\n {label && <InputLabel>{label}</InputLabel>}\n <InputField\n type={type}\n placeholder={placeholder}\n disabled={disabled}\n hasError={hasError}\n aria-label={label}\n {...props}\n />\n {type === 'password' && (\n <div\n data-slot='input-repassword'\n data-test-id='input-repassword'\n className='text-right'\n >\n <Link href={href} disabled={disabled}>\n {repassword}\n </Link>\n </div>\n )}\n </InputRoot>\n )\n}\n\nexport default Input\n","import { twMerge } from 'tailwind-merge'\nimport type { ListItemProps } from './index'\n\nexport function ListItem ({\n children,\n className,\n containerClassName,\n onClick,\n ...props\n}: ListItemProps) {\n const baseClasses = [\n 'self-stretch min-h-16 relative',\n 'rounded-[var(--deframe-widget-size-radius-xs)]',\n 'border-[length:var(--deframe-widget-size-border-xs)]',\n 'border-[var(--deframe-widget-color-border-primary)]',\n 'flex flex-col justify-center items-center',\n 'transition-colors',\n 'bg-[var(--deframe-widget-color-bg-primary)]',\n ].join(' ')\n\n const stateClasses = {\n clickable: 'cursor-pointer hover:border-[var(--deframe-widget-color-border-secondary)]',\n static: '',\n } as const\n\n const containerClasses = twMerge(\n baseClasses,\n stateClasses[onClick ? 'clickable' : 'static'],\n containerClassName\n )\n\n const innerClasses = twMerge(\n 'self-stretch inline-flex justify-between items-center',\n '[gap:var(--deframe-widget-size-gap-md)]',\n 'px-[var(--deframe-widget-size-padding-x-md)]',\n 'py-[var(--deframe-widget-size-padding-y-sm)]',\n 'text-[var(--deframe-widget-color-text-primary)]',\n className\n )\n\n return (\n <li\n data-slot='list-item'\n data-test-id='list-item'\n className={containerClasses}\n onClick={onClick}\n tabIndex={onClick ? 0 : undefined}\n role={onClick ? 'button' : undefined}\n onKeyDown={onClick ? (e) => e.key === 'Enter' && onClick() : undefined}\n {...props}\n >\n <div className={innerClasses}>\n {children}\n </div>\n </li>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport type { ListContainerProps, ListItemContentProps, ListItemLeftSideProps, ListItemRightSideProps } from './index'\n\nexport function ListContainer ({ className, ...props }: ListContainerProps) {\n const baseClasses = [\n 'flex flex-col list-none',\n '[gap:var(--deframe-widget-size-gap-sm)]',\n ].join(' ')\n\n return (\n <ul\n data-slot='list-container'\n data-test-id='list-container'\n className={twMerge(baseClasses, className)}\n {...props}\n />\n )\n}\n\nexport function ListItemLeftSide ({ children, className, ...props }: ListItemLeftSideProps) {\n const baseClasses = [\n 'flex justify-center items-center',\n 'text-[var(--deframe-widget-color-text-primary)]',\n ].join(' ')\n\n return (\n <div\n data-slot='list-item-left-side'\n data-test-id='list-item-left-side'\n className={twMerge(baseClasses, className)}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nexport function ListItemContent ({ children, className, ...props }: ListItemContentProps) {\n const baseClasses = [\n 'flex-1 self-stretch inline-flex flex-col justify-center items-start overflow-hidden',\n 'text-[var(--deframe-widget-color-text-primary)]',\n ].join(' ')\n\n return (\n <div\n data-slot='list-item-content'\n data-test-id='list-item-content'\n className={twMerge(baseClasses, className)}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nexport function ListItemRightSide ({ children, className, ...props }: ListItemRightSideProps) {\n const baseClasses = [\n 'flex flex-col justify-start items-end',\n 'text-[var(--deframe-widget-color-text-primary)]',\n ].join(' ')\n\n return (\n <div\n data-slot='list-item-right-side'\n data-test-id='list-item-right-side'\n className={twMerge(baseClasses, className)}\n {...props}\n >\n {children}\n </div>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport { ReactNode } from 'react'\n\nexport interface WalletListContainerProps {\n /** Child components (typically WalletItem components) */\n children: ReactNode;\n /** Additional CSS class names */\n className?: string;\n}\n\n/**\n * WalletListContainer - Container wrapper for wallet list items\n * Provides consistent spacing and layout for wallet options\n */\nexport default function WalletListContainer ({\n children,\n className,\n}: WalletListContainerProps) {\n return (\n <div className={twMerge('flex flex-col gap-4', className)}>\n {children}\n </div>\n )\n}\n","import * as React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\ninterface TextProps extends React.HTMLAttributes<HTMLElement> {\n as?: keyof React.JSX.IntrinsicElements\n variantClass?: string\n}\n\n/**\n * Base Text component used internally by other text variants.\n * Handles tag selection, base font, and class merging.\n */\nconst Text = React.forwardRef<HTMLElement, TextProps>(\n ({\n children,\n as: Component = 'p',\n className = '',\n ...props\n },\n ref\n ) => {\n const baseClasses = [\n '[font-family:var(--deframe-widget-font-family-primary)]',\n '[font-size:var(--deframe-widget-font-size-md)]',\n '[line-height:var(--deframe-widget-font-leading-md)]',\n '[font-weight:var(--deframe-widget-font-weight-regular)]',\n 'text-[color:var(--deframe-widget-color-text-primary)]'\n ].join(' ')\n\n const textClasses = twMerge(baseClasses, className)\n\n return React.createElement(\n Component,\n {\n ref,\n className: textClasses,\n ...props,\n },\n children\n )\n }\n)\n\nText.displayName = 'Text'\nexport default Text\n","import * as React from 'react'\nimport Text from './Text'\nimport { TextAccentProps } from './index'\nimport { twMerge } from 'tailwind-merge'\n\nexport const TextAccent = React.forwardRef<HTMLElement, TextAccentProps>(\n ({\n as = 'span',\n variant = 'accent-medium',\n className = '',\n ...props\n },\n ref\n ) => {\n const accentVariants = {\n 'accent-large': [\n '[font-size:var(--deframe-widget-font-size-lg)]',\n '[line-height:var(--deframe-widget-font-leading-lg)]',\n '[font-weight:var(--deframe-widget-font-weight-semibold)]',\n ].join(' '),\n 'accent-medium': [\n '[font-size:var(--deframe-widget-font-size-md)]',\n '[line-height:var(--deframe-widget-font-leading-lg)]',\n '[font-weight:var(--deframe-widget-font-weight-semibold)]',\n ].join(' '),\n 'accent-small': [\n '[font-size:var(--deframe-widget-font-size-sm)]',\n '[line-height:var(--deframe-widget-font-leading-lg)]',\n '[font-weight:var(--deframe-widget-font-weight-semibold)]',\n ].join(' '),\n } as const\n\n type AccentVariant = keyof typeof accentVariants\n const variantClass = accentVariants[variant as AccentVariant]\n const accentClasses = twMerge(variantClass, className)\n\n return (\n <Text\n ref={ref}\n as={as}\n className={accentClasses}\n data-slot='text-accent'\n data-test-id='text-accent'\n {...props}\n />\n )\n }\n)\n\nTextAccent.displayName = 'TextAccent'\nexport default TextAccent\n","import * as React from 'react'\nimport Text from './Text'\nimport { TextBodyProps } from './index'\nimport { twMerge } from 'tailwind-merge'\n\nexport const TextBody = React.forwardRef<HTMLElement, TextBodyProps>(\n ({\n as = 'p',\n variant = 'text-medium',\n className = '',\n ...props\n },\n ref\n ) => {\n const bodyVariants = {\n 'text-large': [\n '[font-size:var(--deframe-widget-font-size-lg)]',\n '[line-height:var(--deframe-widget-font-leading-lg)]',\n '[font-weight:var(--deframe-widget-font-weight-regular)]',\n ].join(' '),\n 'text-medium': [\n '[font-size:var(--deframe-widget-font-size-md)]',\n '[line-height:var(--deframe-widget-font-leading-lg)]',\n '[font-weight:var(--deframe-widget-font-weight-regular)]',\n ].join(' '),\n 'text-small': [\n '[font-size:var(--deframe-widget-font-size-sm)]',\n '[line-height:var(--deframe-widget-font-leading-lg)]',\n '[font-weight:var(--deframe-widget-font-weight-regular)]',\n ].join(' '),\n } as const\n\n type BodyVariant = keyof typeof bodyVariants\n const variantClass = bodyVariants[variant as BodyVariant]\n const bodyClasses = twMerge(variantClass, className)\n\n return (\n <Text\n ref={ref}\n as={as}\n className={bodyClasses}\n data-slot='text-body'\n data-test-id='text-body'\n {...props}\n />\n )\n }\n)\n\nTextBody.displayName = 'TextBody'\nexport default TextBody\n","import * as React from 'react'\nimport Text from './Text'\nimport { TextHeadingProps } from './index'\nimport { twMerge } from 'tailwind-merge'\n\nexport const TextHeading = React.forwardRef<HTMLElement, TextHeadingProps>(\n ({\n as,\n variant = 'h2',\n className = '',\n ...props\n }, ref) => {\n const headingVariants = {\n 'h-large': [\n '[font-size:var(--deframe-widget-font-size-h-large)]',\n '[line-height:var(--deframe-widget-font-leading-sm)]',\n '[font-weight:var(--deframe-widget-font-weight-extrabold)]',\n ].join(' '),\n h1: [\n '[font-size:var(--deframe-widget-font-size-h1)]',\n '[line-height:var(--deframe-widget-font-leading-md)]',\n '[font-weight:var(--deframe-widget-font-weight-extrabold)]',\n ].join(' '),\n h2: [\n '[font-size:var(--deframe-widget-font-size-h2)]',\n '[line-height:var(--deframe-widget-font-leading-lg)]',\n '[font-weight:var(--deframe-widget-font-weight-extrabold)]',\n ].join(' '),\n h3: [\n '[font-size:var(--deframe-widget-font-size-h3)]',\n '[line-height:var(--deframe-widget-font-leading-md)]',\n '[font-weight:var(--deframe-widget-font-weight-bold)]',\n ].join(' '),\n h4: [\n '[font-size:var(--deframe-widget-font-size-h4)]',\n '[line-height:var(--deframe-widget-font-leading-md)]',\n '[font-weight:var(--deframe-widget-font-weight-bold)]',\n ].join(' '),\n h5: [\n '[font-size:var(--deframe-widget-font-size-h5)]',\n '[line-height:var(--deframe-widget-font-leading-md)]',\n '[font-weight:var(--deframe-widget-font-weight-bold)]',\n ].join(' '),\n } as const\n\n type HeadingVariant = keyof typeof headingVariants\n const variantClass = headingVariants[variant as HeadingVariant]\n const headingClasses = twMerge(variantClass, className)\n\n return (\n <Text\n ref={ref}\n as={(variant === 'h-large' ? 'h1' : variant) as keyof React.JSX.IntrinsicElements}\n className={headingClasses}\n data-slot='text-heading'\n data-test-id='text-heading'\n {...props}\n />\n )\n }\n)\n\nTextHeading.displayName = 'TextHeading'\nexport default TextHeading\n","import TextHeading from './TextHeading'\nimport { TextHeadingProps } from './index'\n\n/**\n * Title component for headings and page titles\n * This is an alias for TextHeading with h1 variant as default\n */\nexport default function Title ({\n variant = 'h1',\n className = '',\n ...props\n}: TextHeadingProps) {\n return <TextHeading variant={variant} className={className} {...props} />\n}\n","import { twMerge } from 'tailwind-merge'\nimport WalletListContainer from './WalletListContainer'\nimport { ListItem } from '../List'\nimport {\n ListItemContent,\n ListItemLeftSide,\n ListItemRightSide,\n} from '../ListCompound'\nimport { TextBody } from '../../texts'\n\nexport interface WalletOption {\n /** Unique identifier for the wallet */\n id: string;\n /** Display name of the wallet */\n name: string;\n /** Wallet icon - can be an image URL or React component */\n icon: string | React.ReactNode;\n /** Click handler for wallet selection */\n onClick?: () => void;\n}\n\nexport interface ConnectWalletListProps {\n /** List of wallet options */\n wallets: WalletOption[];\n /** Title text for the wallet connect screen */\n title?: string;\n /** Subtitle text for the wallet connect screen */\n subtitle?: string;\n /** Additional CSS class names */\n className?: string;\n}\n\n/**\n * ConnectWalletList - Displays a list of wallet options for connection\n * Includes title, subtitle, and clickable wallet items\n */\nexport default function ConnectWalletList ({\n wallets,\n className,\n}: ConnectWalletListProps) {\n const handleWalletClick = (wallet: WalletOption) => {\n wallet.onClick?.()\n }\n\n return (\n <div className={twMerge('w-full', className)}>\n <WalletListContainer>\n {wallets.map((wallet) => (\n <ListItem key={wallet.id} onClick={() => handleWalletClick(wallet)}>\n <ListItemLeftSide>\n {typeof wallet.icon === 'string'\n ? (\n <img\n src={wallet.icon}\n alt={wallet.name}\n className='w-10 h-10 rounded-full'\n />\n )\n : (\n wallet.icon\n )}\n </ListItemLeftSide>\n <ListItemContent>\n <TextBody variant='text-medium'>{wallet.name}</TextBody>\n </ListItemContent>\n <ListItemRightSide>\n {/* Chevron */}\n <svg\n className='flex-shrink-0 w-5 h-5 text-gray-400'\n fill='none'\n viewBox='0 0 24 24'\n stroke='currentColor'\n >\n <path\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth={2}\n d='M9 5l7 7-7 7'\n />\n </svg>\n </ListItemRightSide>\n </ListItem>\n ))}\n </WalletListContainer>\n </div>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport { TextBody } from '../../texts'\nimport type { WalletItemProps } from '../index'\n\nexport default function WalletItem ({\n id,\n name,\n icon,\n onClick,\n className,\n}: WalletItemProps) {\n const baseClasses = [\n 'w-full flex items-center',\n '[gap:var(--deframe-widget-size-gap-md)]',\n 'px-[var(--deframe-widget-size-padding-x-md)]',\n 'py-[var(--deframe-widget-size-padding-y-sm)]',\n 'rounded-[var(--deframe-widget-size-radius-xs)]',\n 'bg-[var(--deframe-widget-color-bg-secondary)]',\n 'cursor-pointer',\n 'transition-colors',\n 'hover:bg-[var(--deframe-widget-color-bg-tertiary)]',\n 'focus:outline-none',\n ].join(' ')\n\n return (\n <button\n key={id}\n data-slot='wallet-item'\n data-test-id='wallet-item'\n aria-label={`Connect ${name} wallet`}\n onClick={onClick}\n className={twMerge(baseClasses, className)}\n >\n <div\n data-slot='wallet-item-icon'\n data-test-id='wallet-item-icon'\n className='flex-shrink-0 w-12 h-12 rounded-[var(--deframe-widget-size-radius-full)] overflow-hidden flex items-center justify-center'\n >\n {typeof icon === 'string'\n ? (\n <img\n src={icon}\n alt={name}\n className='w-full h-full object-cover'\n />\n )\n : (\n icon\n )}\n </div>\n\n <TextBody\n data-slot='wallet-item-name'\n data-test-id='wallet-item-name'\n variant='text-medium'\n className='flex-1 text-left text-[var(--deframe-widget-color-text-primary)]'\n >\n {name}\n </TextBody>\n\n <svg\n data-slot='wallet-item-chevron'\n data-test-id='wallet-item-chevron'\n className='flex-shrink-0 w-5 h-5 text-[var(--deframe-widget-color-text-secondary)]'\n fill='none'\n viewBox='0 0 24 24'\n stroke='currentColor'\n >\n <path\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth={2}\n d='M9 5l7 7-7 7'\n />\n </svg>\n </button>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport { CurrencyProps, CurrencyType, FiatProps } from '.'\n\n// Currency configuration\nconst CURRENCY_CONFIG = {\n symbols: {\n USD: '$',\n BRL: 'R$',\n EUR: '€',\n BTC: '₿',\n ETH: 'Ξ',\n USDC: '$',\n USDT: '$',\n } as Record<CurrencyType, string>,\n labels: {\n USD: 'USD',\n BRL: 'BRL',\n EUR: 'EUR',\n BTC: 'BTC',\n ETH: 'ETH',\n USDC: 'USDC',\n USDT: 'USDT',\n } as Record<CurrencyType, string>,\n}\n\n// Style configuration\nconst STYLE_CONFIG = {\n alignment: {\n left: 'items-start',\n center: 'items-center',\n right: 'items-end',\n },\n size: {\n sm: { primary: 'text-3xl', secondary: 'text-sm', gap: 'gap-0.5' },\n md: { primary: 'text-5xl', secondary: 'text-base', gap: 'gap-1' },\n lg: { primary: 'text-6xl', secondary: 'text-lg', gap: 'gap-1' },\n },\n}\n\n/** Flexible currency display component supporting fiat and crypto */\nexport default function Currency (props: CurrencyProps | FiatProps) {\n // Normalize props: convert FiatProps to CurrencyProps format\n const normalizedProps: Required<\n Omit<CurrencyProps, 'secondaryAmount' | 'secondaryCurrency'>\n > &\n Pick<CurrencyProps, 'secondaryAmount' | 'secondaryCurrency'> =\n 'usdValue' in props\n ? {\n amount: props.amount,\n currency: 'USD',\n secondaryAmount: props.usdValue,\n secondaryCurrency: undefined,\n align: props.align ?? 'right',\n size: props.size ?? 'lg',\n showSymbol: false,\n showLabel: false,\n className: props.className ?? '',\n }\n : {\n amount: props.amount,\n currency: props.currency ?? 'USD',\n secondaryAmount: props.secondaryAmount,\n secondaryCurrency: props.secondaryCurrency,\n align: props.align ?? 'right',\n size: props.size ?? 'lg',\n showSymbol: props.showSymbol ?? true,\n showLabel: props.showLabel ?? false,\n className: props.className ?? '',\n }\n\n const {\n amount,\n currency,\n secondaryAmount,\n secondaryCurrency,\n align,\n size,\n showSymbol,\n showLabel,\n className,\n } = normalizedProps\n\n // Format currency value\n const formatAmount = (\n value: string,\n curr: CurrencyType,\n displaySymbol: boolean\n ): string => {\n if (!displaySymbol && !showLabel) return value\n\n const symbol = displaySymbol ? CURRENCY_CONFIG.symbols[curr] : ''\n const label = showLabel ? ` ${CURRENCY_CONFIG.labels[curr]}` : ''\n\n // Crypto currencies: no space between symbol and value\n if (\n ['BTC', 'ETH'].includes(curr) &&\n !value.includes('.') &&\n !value.includes(',')\n ) {\n return `${symbol}${value}${label}`\n }\n\n return `${symbol} ${value}${label}`.trim()\n }\n\n return (\n <div\n className={twMerge(\n 'flex flex-col',\n STYLE_CONFIG.alignment[align],\n STYLE_CONFIG.size[size].gap,\n className\n )}\n >\n {/* Primary amount */}\n <div\n className={twMerge(\n 'font-bold text-text-primary dark:text-text-primary-dark font-poppins',\n STYLE_CONFIG.size[size].primary\n )}\n >\n {formatAmount(amount, currency, showSymbol)}\n </div>\n\n {/* Secondary amount (optional) */}\n {secondaryAmount && (\n <div\n className={twMerge(\n 'text-text-secondary dark:text-text-secondary-dark font-poppins',\n STYLE_CONFIG.size[size].secondary\n )}\n >\n {secondaryCurrency\n ? formatAmount(secondaryAmount, secondaryCurrency, true)\n : secondaryAmount}\n </div>\n )}\n </div>\n )\n}\n","import * as React from 'react'\nimport { twMerge } from 'tailwind-merge'\nimport { motion } from 'framer-motion'\n\n// ============================================================================\n// Context\n// ============================================================================\n\nexport type TabsVariant = 'primary' | 'secondary' | 'default' | 'light' | 'medium' | 'dark' | 'header'\n\ninterface TabsContextValue {\n value: string\n onValueChange: (value: string) => void\n variant: TabsVariant\n}\n\nconst TabsContext = React.createContext<TabsContextValue | undefined>(\n undefined\n)\n\nconst useTabs = () => {\n const ctx = React.useContext(TabsContext)\n if (!ctx) { throw new Error('Tabs compound components must be used within <Tabs />') }\n return ctx\n}\n\n// ============================================================================\n// Tabs (Main Component)\n// ============================================================================\n\nexport interface TabsProps extends React.HTMLAttributes<HTMLDivElement> {\n value?: string\n onValueChange?: (value: string) => void\n defaultValue?: string\n variant?: TabsVariant\n}\n\nexport const Tabs = React.forwardRef<HTMLDivElement, TabsProps>(\n (\n {\n value: controlledValue,\n defaultValue = '',\n onValueChange,\n variant = 'secondary',\n className,\n children,\n ...props\n },\n ref\n ) => {\n const [internal, setInternal] = React.useState(defaultValue)\n const isControlled = controlledValue !== undefined\n const activeValue = isControlled ? controlledValue : internal\n\n const handleChange = (v: string) => {\n if (!isControlled) setInternal(v)\n onValueChange?.(v)\n }\n\n return (\n <TabsContext.Provider\n value={{\n value: activeValue,\n onValueChange: handleChange,\n variant,\n }}\n >\n <div ref={ref} className={twMerge('w-full', className)} {...props}>\n {children}\n </div>\n </TabsContext.Provider>\n )\n }\n)\nTabs.displayName = 'Tabs'\n\n// ============================================================================\n// TabsList\n// ============================================================================\n\nexport interface TabsListProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const TabsList = React.forwardRef<HTMLDivElement, TabsListProps>(\n ({ className, children, ...props }, ref) => {\n const { variant } = useTabs()\n\n // Header variant: full width, space between tabs, minimal padding\n if (variant === 'header') {\n return (\n <div\n ref={ref}\n role='tablist'\n className={twMerge(\n 'relative w-full flex items-center justify-between pt-2',\n className\n )}\n style={{\n paddingLeft: 'var(--spacing-md, 16px)',\n paddingRight: 'var(--spacing-md, 16px)',\n backgroundColor: 'var(--color-bg-default, transparent)'\n }}\n {...props}\n >\n {children}\n </div>\n )\n }\n\n // Default/other variants\n return (\n <div\n ref={ref}\n role='tablist'\n className={twMerge(\n 'relative w-full flex items-center bg-transparent border-b border-border-default dark:border-border-default-dark',\n variant === 'primary' ? 'h-[72px] gap-6' : 'h-12',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\nTabsList.displayName = 'TabsList'\n\n// ============================================================================\n// TabsTrigger\n// ============================================================================\n\nexport interface TabsTriggerProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n value: string\n icon?: React.ReactNode\n}\n\nexport const TabsTrigger = React.forwardRef<HTMLButtonElement, TabsTriggerProps>(\n (\n {\n value,\n className,\n children,\n style,\n ...props\n },\n ref\n ) => {\n const { value: activeValue, onValueChange, variant } = useTabs()\n const isActive = activeValue === value\n\n // Header variant uses inline styles for colors to ensure CSS variables work\n const headerStyle = variant === 'header'\n ? {\n color: isActive\n ? 'var(--color-brand-primary)'\n : 'var(--color-text-secondary)',\n ...style\n }\n : style\n\n return (\n <button\n ref={ref}\n role='tab'\n aria-selected={isActive}\n onClick={() => onValueChange(value)}\n className={twMerge(\n 'relative inline-flex flex-col items-center justify-center whitespace-nowrap font-poppins transition-colors cursor-pointer disabled:pointer-events-none disabled:opacity-50 outline-none',\n variant === 'header'\n ? 'flex-1 text-sm font-semibold py-3'\n : variant === 'primary'\n ? 'h-[72px] text-base font-medium px-0 pb-3 pt-2 flex-none'\n : 'h-12 text-[12px] font-semibold px-4 flex-none',\n variant !== 'header' && (isActive ? 'text-brand-primary' : 'text-text-secondary dark:text-text-secondary-dark hover:text-text-primary dark:hover:text-text-primary-dark'),\n className\n )}\n style={headerStyle}\n {...props}\n >\n <span>{children}</span>\n {isActive && variant === 'header' && (\n <motion.span\n layoutId='header-tab-indicator'\n className='absolute rounded-t-full'\n style={{\n bottom: 0,\n left: 0,\n right: 0,\n marginLeft: 'auto',\n marginRight: 'auto',\n width: '3.5rem',\n height: '3px',\n backgroundColor: 'var(--color-brand-primary)'\n }}\n transition={{ type: 'spring', bounce: 0.2, duration: 0.6 }}\n />\n )}\n {isActive && variant !== 'header' && (\n <motion.span\n layoutId='tab-indicator'\n className='absolute bottom-0 left-0 right-0 h-0.5 bg-brand-primary z-10'\n transition={{ type: 'spring', bounce: 0.2, duration: 0.6 }}\n />\n )}\n </button>\n )\n }\n)\nTabsTrigger.displayName = 'TabsTrigger'\n\n// ============================================================================\n// TabsContent\n// ============================================================================\n\nexport interface TabsContentProps extends React.HTMLAttributes<HTMLDivElement> {\n value: string\n}\n\nexport const TabsContent = React.forwardRef<HTMLDivElement, TabsContentProps>(\n ({ value, className, children, ...props }, ref) => {\n const { value: activeValue, variant } = useTabs()\n if (activeValue !== value) return null\n\n return (\n <div\n ref={ref}\n role='tabpanel'\n className={twMerge(\n 'focus-visible:outline-none',\n variant === 'primary' || variant === 'header' ? 'mt-0' : 'mt-6',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\nTabsContent.displayName = 'TabsContent'\n","import * as React from 'react'\nimport { motion, AnimatePresence } from 'framer-motion'\nimport { twMerge } from 'tailwind-merge'\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface SelectProps {\n value: string\n onValueChange: (value: string) => void\n disabled?: boolean\n children: React.ReactNode\n className?: string\n}\n\nexport interface SelectTriggerProps {\n placeholder?: string\n className?: string\n children?: React.ReactNode\n // Internal props (passed by Select)\n _isOpen?: boolean\n _disabled?: boolean\n _onToggle?: () => void\n}\n\nexport interface SelectContentProps {\n className?: string\n children: React.ReactNode\n // Internal props (passed by Select)\n _isOpen?: boolean\n _value?: string\n _onSelect?: (value: string) => void\n _highlightedIndex?: number\n _setHighlightedIndex?: (index: number) => void\n}\n\nexport interface SelectItemProps {\n value: string\n disabled?: boolean\n className?: string\n children: React.ReactNode\n // Internal props (passed by SelectContent)\n _index?: number\n _isSelected?: boolean\n _isHighlighted?: boolean\n _onSelect?: (value: string) => void\n _onHighlight?: (index: number) => void\n}\n\n// ============================================================================\n// ChevronDownIcon\n// ============================================================================\n\nconst ChevronDownIcon: React.FC<{ className?: string }> = ({ className }) => (\n <svg\n className={className}\n viewBox='0 0 20 20'\n fill='currentColor'\n aria-hidden='true'\n >\n <path\n fillRule='evenodd'\n d='M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z'\n clipRule='evenodd'\n />\n </svg>\n)\n\n// ============================================================================\n// Select\n// ============================================================================\n\nexport const Select: React.FC<SelectProps> = ({\n value,\n onValueChange,\n disabled = false,\n children,\n className,\n}) => {\n const [isOpen, setIsOpen] = React.useState(false)\n const [highlightedIndex, setHighlightedIndex] = React.useState(-1)\n const containerRef = React.useRef<HTMLDivElement>(null)\n\n const handleToggle = React.useCallback(() => {\n if (!disabled) {\n setIsOpen((prev) => !prev)\n if (!isOpen) setHighlightedIndex(0)\n }\n }, [disabled, isOpen])\n\n const handleSelect = React.useCallback(\n (newValue: string) => {\n onValueChange(newValue)\n setIsOpen(false)\n setHighlightedIndex(-1)\n },\n [onValueChange]\n )\n\n // Handle click outside\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node)\n ) {\n setIsOpen(false)\n setHighlightedIndex(-1)\n }\n }\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [isOpen])\n\n // Handle escape key\n React.useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape' && isOpen) {\n setIsOpen(false)\n setHighlightedIndex(-1)\n }\n }\n\n document.addEventListener('keydown', handleEscape)\n return () => document.removeEventListener('keydown', handleEscape)\n }, [isOpen])\n\n // Clone children and inject internal props\n const enhancedChildren = React.Children.map(children, (child) => {\n if (!React.isValidElement(child)) return child\n\n if (child.type === SelectTrigger) {\n return React.cloneElement(child as React.ReactElement<SelectTriggerProps>, {\n _isOpen: isOpen,\n _disabled: disabled,\n _onToggle: handleToggle,\n })\n }\n\n if (child.type === SelectContent) {\n return React.cloneElement(child as React.ReactElement<SelectContentProps>, {\n _isOpen: isOpen,\n _value: value,\n _onSelect: handleSelect,\n _highlightedIndex: highlightedIndex,\n _setHighlightedIndex: setHighlightedIndex,\n })\n }\n\n return child\n })\n\n return (\n <div ref={containerRef} className={twMerge('relative', className)}>\n {enhancedChildren}\n </div>\n )\n}\n\nSelect.displayName = 'Select'\n\n// ============================================================================\n// SelectTrigger\n// ============================================================================\n\nexport const SelectTrigger = React.forwardRef<HTMLButtonElement, SelectTriggerProps>(\n (\n {\n placeholder = 'Select...',\n className,\n children,\n _isOpen,\n _disabled,\n _onToggle,\n },\n ref\n ) => {\n const hasChildren = React.Children.count(children) > 0\n\n return (\n <button\n ref={ref}\n type='button'\n onClick={_onToggle}\n disabled={_disabled}\n aria-haspopup='listbox'\n aria-expanded={_isOpen}\n className={twMerge(\n 'w-full flex items-center justify-between gap-2',\n 'bg-[var(--color-bg-subtle,#1a1a1a)] border border-[var(--color-border-default,#333)] rounded px-3 py-1.5',\n 'text-sm text-[var(--color-text-primary,#fff)] text-left',\n 'transition-colors cursor-pointer',\n 'hover:border-[var(--color-border-strong,#555)]',\n 'focus:outline-none focus:ring-2 focus:ring-[var(--color-brand-primary,#7C3AED)]/50 focus:border-[var(--color-brand-primary,#7C3AED)]',\n _disabled && 'opacity-50 cursor-not-allowed',\n className\n )}\n >\n <span\n className={\n !hasChildren\n ? 'text-[var(--color-text-tertiary,#888)]'\n : undefined\n }\n >\n {hasChildren ? children : placeholder}\n </span>\n <ChevronDownIcon\n className={twMerge(\n 'w-4 h-4 text-[var(--color-text-secondary,#999)] transition-transform',\n _isOpen && 'rotate-180'\n )}\n />\n </button>\n )\n }\n)\n\nSelectTrigger.displayName = 'SelectTrigger'\n\n// ============================================================================\n// SelectContent\n// ============================================================================\n\nexport const SelectContent = React.forwardRef<HTMLUListElement, SelectContentProps>(\n (\n {\n className,\n children,\n _isOpen,\n _value,\n _onSelect,\n _highlightedIndex,\n _setHighlightedIndex,\n },\n ref\n ) => {\n const listRef = React.useRef<HTMLUListElement>(null)\n\n // Merge refs\n const mergedRef = React.useCallback(\n (node: HTMLUListElement | null) => {\n if (typeof ref === 'function') {\n ref(node)\n } else if (ref) {\n ref.current = node\n }\n ;(listRef as React.MutableRefObject<HTMLUListElement | null>).current = node\n },\n [ref]\n )\n\n // Scroll highlighted option into view\n React.useEffect(() => {\n if (_isOpen && _highlightedIndex !== undefined && _highlightedIndex >= 0 && listRef.current) {\n const highlightedElement = listRef.current.children[_highlightedIndex] as HTMLElement\n if (highlightedElement) {\n highlightedElement.scrollIntoView({ block: 'nearest' })\n }\n }\n }, [_isOpen, _highlightedIndex])\n\n // Clone children and inject internal props with index\n let itemIndex = 0\n const enhancedChildren = React.Children.map(children, (child) => {\n if (!React.isValidElement(child)) return child\n\n if (child.type === SelectItem) {\n const currentIndex = itemIndex++\n const itemProps = child.props as SelectItemProps\n return React.cloneElement(child as React.ReactElement<SelectItemProps>, {\n _index: currentIndex,\n _isSelected: _value === itemProps.value,\n _isHighlighted: _highlightedIndex === currentIndex,\n _onSelect,\n _onHighlight: _setHighlightedIndex,\n })\n }\n\n return child\n })\n\n const contentVariants = {\n hidden: { opacity: 0, y: -8 },\n visible: {\n opacity: 1,\n y: 0,\n transition: { type: 'spring' as const, damping: 25, stiffness: 400 },\n },\n exit: { opacity: 0, y: -8, transition: { duration: 0.1 } },\n }\n\n return (\n <AnimatePresence mode='wait'>\n {_isOpen && (\n <motion.ul\n ref={mergedRef}\n role='listbox'\n variants={contentVariants}\n initial='hidden'\n animate='visible'\n exit='exit'\n className={twMerge(\n 'absolute z-50 w-full mt-1',\n 'bg-[var(--color-bg-raised,#1f1f1f)] border border-[var(--color-border-default,#333)] rounded shadow-lg',\n 'max-h-60 overflow-auto',\n 'py-1',\n className\n )}\n >\n {enhancedChildren}\n </motion.ul>\n )}\n </AnimatePresence>\n )\n }\n)\n\nSelectContent.displayName = 'SelectContent'\n\n// ============================================================================\n// SelectItem\n// ============================================================================\n\nexport const SelectItem = React.forwardRef<HTMLLIElement, SelectItemProps>(\n (\n {\n value,\n disabled = false,\n className,\n children,\n _index,\n _isSelected,\n _isHighlighted,\n _onSelect,\n _onHighlight,\n },\n ref\n ) => {\n const handleClick = () => {\n if (!disabled && _onSelect) {\n _onSelect(value)\n }\n }\n\n const handleMouseEnter = () => {\n if (!disabled && _onHighlight && _index !== undefined) {\n _onHighlight(_index)\n }\n }\n\n return (\n <li\n ref={ref}\n role='option'\n aria-selected={_isSelected}\n aria-disabled={disabled}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n className={twMerge(\n 'px-3 py-2 text-sm cursor-pointer transition-colors',\n 'text-[var(--color-text-primary,#fff)]',\n _isSelected && 'text-[var(--color-text-highlight,#7C3AED)]',\n _isHighlighted && 'bg-[var(--color-bg-muted,#2a2a2a)]',\n disabled && 'opacity-50 cursor-not-allowed',\n className\n )}\n >\n {children}\n </li>\n )\n }\n)\n\nSelectItem.displayName = 'SelectItem'\n","import * as React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Width of the skeleton block (px, %, rem, etc.) */\n width?: string | number;\n /** Height of the skeleton block (px, %, rem, etc.) */\n height?: string | number;\n /** Shape of the skeleton */\n variant?: 'rect' | 'circle' | 'text';\n /** Enables shimmer animation */\n shimmer?: boolean;\n /** Custom background color (Tailwind classes) */\n colorClass?: string;\n}\n\nexport const Skeleton: React.FC<SkeletonProps> = ({\n width = '100%',\n height = '1rem',\n variant = 'text',\n shimmer = true,\n className,\n style,\n ...props\n}) => {\n const defaultGradient =\n 'linear-gradient(25deg, #2C2C2C 0%, #2C2C2C 60%, #121212 100%)'\n\n return (\n <div\n className={twMerge(\n 'relative overflow-hidden animate-fade-in',\n variant === 'circle' ? 'rounded-full' : 'rounded',\n className\n )}\n style={{\n width: typeof width === 'number' ? `${width}px` : width,\n height: typeof height === 'number' ? `${height}px` : height,\n background: defaultGradient,\n ...style,\n }}\n {...props}\n >\n {shimmer && (\n <div className='absolute inset-0 animate-shimmer bg-gradient-to-r from-transparent via-white/20 to-transparent dark:via-gray-600/30' />\n )}\n </div>\n )\n}\n\nSkeleton.displayName = 'Skeleton'\n","import { twMerge } from 'tailwind-merge'\nimport type { ComponentProps } from 'react'\nimport { TextHeading, TextBody } from '../texts'\n\nexport function BannerNotificationIcon ({ className, ...props }: ComponentProps<'div'>) {\n const baseClasses = [\n 'flex items-center justify-center',\n 'flex-shrink-0',\n '[font-size:var(--deframe-widget-font-size-xxl)]',\n ].join(' ')\n\n return (\n <div\n data-slot='banner-notification-icon'\n data-test-id='banner-notification-icon'\n className={twMerge(baseClasses, className)}\n {...props}\n />\n )\n}\n\nexport function BannerNotificationContent ({ className, ...props }: ComponentProps<'div'>) {\n const baseClasses = 'flex-1 min-w-0 p-2'\n\n return (\n <div\n data-slot='banner-notification-content'\n data-test-id='banner-notification-content'\n className={twMerge(baseClasses, className)}\n {...props}\n />\n )\n}\n\nexport function BannerNotificationTitle ({ className, ...props }: ComponentProps<'p'>) {\n return (\n <TextHeading\n variant='h4'\n as='p'\n data-slot='banner-notification-title'\n data-test-id='banner-notification-title'\n className={twMerge('[margin-bottom:var(--deframe-widget-size-gap-xs)] text-inherit', className)}\n {...props}\n />\n )\n}\n\nexport function BannerNotificationMessage ({ className, ...props }: ComponentProps<'p'>) {\n return (\n <TextBody\n variant='text-medium'\n data-slot='banner-notification-message'\n data-test-id='banner-notification-message'\n className={twMerge('text-inherit', className)}\n {...props}\n />\n )\n}\n\nexport function BannerNotificationClose ({ className, ...props }: ComponentProps<'button'>) {\n const baseClasses = [\n 'flex-shrink-0',\n 'self-start',\n '[font-size:var(--deframe-widget-font-size-xl)]',\n 'transition-opacity hover:opacity-70 cursor-pointer',\n ].join(' ')\n\n return (\n <button\n data-slot='banner-notification-close'\n data-test-id='banner-notification-close'\n aria-label='Close notification'\n className={twMerge(baseClasses, className)}\n {...props}\n />\n )\n}\n","import * as React from 'react'\nimport { twMerge } from 'tailwind-merge'\nimport {\n MdInfoOutline,\n MdWarningAmber,\n MdErrorOutline,\n MdCheckCircleOutline,\n MdClose,\n} from 'react-icons/md'\nimport {\n BannerNotificationIcon,\n BannerNotificationContent,\n BannerNotificationTitle,\n BannerNotificationMessage,\n BannerNotificationClose,\n} from './BannerNotificationCompound'\nimport type { BannerNotificationProps } from './index'\n\nexport function BannerNotification ({\n type = 'inline',\n variant = 'info',\n title,\n message,\n position = 'top-right',\n autoHideDuration = 5000,\n show = true,\n onClose,\n showIcon = true,\n icon,\n className,\n ...props\n}: BannerNotificationProps) {\n const [isVisible, setIsVisible] = React.useState(show)\n const [isExiting, setIsExiting] = React.useState(false)\n const timerRef = React.useRef<ReturnType<typeof setTimeout> | null>(null)\n\n const variantInlineClasses = {\n info: 'bg-[var(--deframe-widget-color-state-info)]/20 border-[var(--deframe-widget-color-state-info)]',\n warning: 'bg-[var(--deframe-widget-color-state-warning)]/20 border-[var(--deframe-widget-color-state-warning)]',\n error: 'bg-[var(--deframe-widget-color-state-error)]/20 border-[var(--deframe-widget-color-state-error)]',\n success: 'bg-[var(--deframe-widget-color-state-success)]/20 border-[var(--deframe-widget-color-state-success)]',\n } as const\n\n const variantToastClasses = {\n info: 'bg-[var(--deframe-widget-color-state-info)] border-[var(--deframe-widget-color-state-info)]',\n warning: 'bg-[var(--deframe-widget-color-state-warning)] border-[var(--deframe-widget-color-state-warning)]',\n error: 'bg-[var(--deframe-widget-color-state-error)] border-[var(--deframe-widget-color-state-error)]',\n success: 'bg-[var(--deframe-widget-color-state-success)] border-[var(--deframe-widget-color-state-success)]',\n } as const\n\n const variantTextClasses = {\n info: 'text-[var(--deframe-widget-color-state-info)]',\n warning: 'text-[var(--deframe-widget-color-state-warning)]',\n error: 'text-[var(--deframe-widget-color-state-error)]',\n success: 'text-[var(--deframe-widget-color-state-success)]',\n } as const\n\n const variantIcons = {\n info: MdInfoOutline,\n warning: MdWarningAmber,\n error: MdErrorOutline,\n success: MdCheckCircleOutline,\n } as const\n\n const positionClasses = {\n 'top-right': 'top-4 right-4',\n 'top-left': 'top-4 left-4',\n 'top-center': 'top-4 left-1/2 -translate-x-1/2',\n 'bottom-right': 'bottom-4 right-4',\n 'bottom-left': 'bottom-4 left-4',\n 'bottom-center': 'bottom-4 left-1/2 -translate-x-1/2',\n } as const\n\n const handleClose = () => {\n setIsExiting(true)\n setTimeout(() => {\n setIsVisible(false)\n if (timerRef.current) {\n clearTimeout(timerRef.current)\n timerRef.current = null\n }\n onClose?.()\n }, 300)\n }\n\n React.useEffect(() => {\n if (!show) {\n handleClose()\n return\n }\n setIsVisible(true)\n setIsExiting(false)\n }, [show])\n\n React.useEffect(() => {\n if (type === 'toast' && show && autoHideDuration > 0 && !isExiting) {\n timerRef.current = setTimeout(handleClose, autoHideDuration)\n }\n return () => {\n if (timerRef.current) {\n clearTimeout(timerRef.current)\n timerRef.current = null\n }\n }\n }, [type, show, autoHideDuration, isExiting])\n\n if (!isVisible) return null\n\n type Variant = 'info' | 'warning' | 'error' | 'success'\n type BannerType = 'inline' | 'toast'\n type Position = keyof typeof positionClasses\n\n const v = variant as Variant\n const t = type as BannerType\n const p = position as Position\n\n const baseClasses = [\n 'flex items-center',\n '[gap:var(--deframe-widget-size-gap-md)]',\n 'px-[var(--deframe-widget-size-padding-x-md)]',\n 'py-[var(--deframe-widget-size-padding-y-sm)]',\n 'rounded-[var(--deframe-widget-size-radius-xs)]',\n 'border',\n 'transition-all duration-300',\n ].join(' ')\n\n const typeClasses = {\n inline: variantInlineClasses[v],\n toast: [\n variantToastClasses[v],\n 'fixed z-50 w-[clamp(18rem,40vw,30rem)] shadow-lg',\n positionClasses[p],\n ].join(' '),\n } as const\n\n const bannerClasses = twMerge(\n baseClasses,\n typeClasses[t],\n variantTextClasses[v],\n isExiting && 'opacity-0 -translate-y-2',\n className\n )\n\n const IconComponent = variantIcons[v]\n const resolvedIcon = icon ?? <IconComponent />\n\n return (\n <div\n data-slot='banner-notification'\n data-test-id='banner-notification'\n role='alert'\n className={bannerClasses}\n {...props}\n >\n {showIcon && (\n <BannerNotificationIcon>{resolvedIcon}</BannerNotificationIcon>\n )}\n\n <BannerNotificationContent>\n {title && <BannerNotificationTitle>{title}</BannerNotificationTitle>}\n <BannerNotificationMessage>{message}</BannerNotificationMessage>\n </BannerNotificationContent>\n\n <BannerNotificationClose onClick={handleClose}>\n <MdClose />\n </BannerNotificationClose>\n </div>\n )\n}\n\nBannerNotification.displayName = 'BannerNotification'\n","import * as React from 'react'\nimport { twMerge } from 'tailwind-merge'\nimport { TextBody } from '../texts'\n\nexport interface AddressDisplayProps {\n /** The full address to display */\n address: string;\n /** Optional truncated display text shown instead of the full address */\n displayText?: string;\n /** Callback when copy button is clicked */\n onCopy?: (address: string) => void;\n /** Custom className for the container */\n className?: string;\n /** Custom className for the text */\n textClassName?: string;\n /** Show copy button */\n showCopyButton?: boolean;\n}\n\nexport const AddressDisplay: React.FC<AddressDisplayProps> = ({\n address,\n onCopy,\n className = '',\n textClassName = '',\n showCopyButton = true,\n}) => {\n const [copied, setCopied] = React.useState(false)\n\n const handleCopy = async () => {\n try {\n await navigator.clipboard.writeText(address)\n setCopied(true)\n onCopy?.(address)\n\n // Reset copied state after 2 seconds\n setTimeout(() => setCopied(false), 2000)\n } catch (err) {\n console.error('Failed to copy address:', err)\n }\n }\n\n return (\n <div\n className={twMerge(\n 'bg-[#121212] rounded p-3 flex items-center justify-between gap-2 border border-gray-700',\n className\n )}\n >\n <TextBody\n className={twMerge(\n 'block w-full whitespace-nowrap overflow-hidden',\n textClassName\n )}\n >\n {address}\n </TextBody>\n {showCopyButton && (\n <button\n onClick={handleCopy}\n className='text-gray-400 hover:text-white transition-colors flex-shrink-0 cursor-pointer'\n aria-label='Copy address'\n >\n {copied\n ? (\n <svg\n className='w-5 h-5 text-green-500'\n fill='none'\n stroke='currentColor'\n viewBox='0 0 24 24'\n >\n <path\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth={2}\n d='M5 13l4 4L19 7'\n />\n </svg>\n )\n : (\n <svg\n className='w-5 h-5'\n fill='none'\n stroke='currentColor'\n viewBox='0 0 24 24'\n >\n <path\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth={2}\n d='M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z'\n />\n </svg>\n )}\n </button>\n )}\n </div>\n )\n}\n\nAddressDisplay.displayName = 'AddressDisplay'\n","import * as React from 'react'\nimport { TextBody } from '@/stories/texts'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface DetailItem {\n /** Label for the detail row */\n label: string;\n /** Value to display */\n value: string | React.ReactNode;\n /** Optional custom className for the value */\n valueClassName?: string;\n /** Optional custom className for the label */\n labelClassName?: string;\n}\n\nexport interface SummaryDetailsProps {\n /** Title displayed in the summary header */\n title: string;\n /** Array of detail items to render */\n items: DetailItem[];\n /** Whether the details are open by default */\n defaultOpen?: boolean;\n /** Custom className for the details container */\n className?: string;\n /** Custom className for the summary header */\n summaryClassName?: string;\n /** Custom className for the content area */\n contentClassName?: string;\n /** Show dividers between items */\n showDividers?: boolean;\n}\n\nexport const SummaryDetails: React.FC<SummaryDetailsProps> = ({\n title,\n items,\n defaultOpen = false,\n className = '',\n summaryClassName = '',\n contentClassName = '',\n showDividers = true,\n}) => {\n return (\n <details\n className={twMerge('bg-[#1A1A1A] rounded p-4 group', className)}\n open={defaultOpen}\n >\n {/* Summary Header */}\n <summary className={twMerge('cursor-pointer block ', summaryClassName)}>\n <div className='flex items-center justify-between'>\n <TextBody className='text-white font-medium'>{title}</TextBody>\n <svg\n className='w-5 h-5 text-gray-400 transition-transform duration-300 group-open:rotate-180'\n fill='none'\n stroke='currentColor'\n viewBox='0 0 24 24'\n aria-hidden='true'\n >\n <path\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth={2}\n d='M5 9l7 7 7-7'\n />\n </svg>\n </div>\n </summary>\n\n {/* Details Content */}\n <div\n className={twMerge(\n 'mt-4',\n showDividers && 'divide-y divide-[#2A2A2A]',\n contentClassName\n )}\n >\n {items.map((item, index) => (\n <div key={index} className='flex justify-between py-2'>\n <TextBody\n variant='text-small'\n className={twMerge('text-text-tertiary dark:text-text-tertiary-dark', item.labelClassName)}\n >\n {item.label}\n </TextBody>\n {typeof item.value === 'string'\n ? (\n <TextBody\n variant='text-small'\n className={twMerge('text-text-primary dark:text-text-primary-dark font-medium', item.valueClassName)}\n >\n {item.value}\n </TextBody>\n )\n : (\n <div className={item.valueClassName}>{item.value}</div>\n )}\n </div>\n ))}\n </div>\n </details>\n )\n}\n","import * as React from 'react'\nimport { twMerge } from 'tailwind-merge'\nimport { type SummaryDetailsProps } from './SummaryDetails'\n\nexport const SummaryDetailsCryptoControlV2: React.FC<SummaryDetailsProps> = ({\n title,\n items,\n defaultOpen = false,\n className = '',\n summaryClassName = '',\n contentClassName = '',\n showDividers = true,\n}) => {\n return (\n <details\n data-test-id='summary-details-v2'\n data-slot='summary-details-v2'\n className={twMerge(\n 'bg-[var(--color-bg-subtle,#1a1a1a)] rounded-lg border border-border-default dark:border-border-default-dark p-4 w-full max-w-[320px] group',\n className\n )}\n open={defaultOpen}\n >\n {/* Header */}\n <summary\n data-test-id='summary-details-v2-summary'\n data-slot='summary-details-v2-summary'\n className={twMerge('cursor-pointer list-none', summaryClassName)}\n >\n <div className='flex items-center justify-between'>\n <span\n data-test-id='summary-details-v2-title'\n data-slot='summary-details-v2-title'\n className='text-[15px] font-semibold text-text-primary dark:text-text-primary-dark'\n >\n {title}\n </span>\n <svg\n data-test-id='summary-details-v2-chevron'\n data-slot='summary-details-v2-chevron'\n className='w-4 h-4 text-text-secondary dark:text-text-secondary-dark transition-transform duration-300 group-open:rotate-180 flex-shrink-0'\n viewBox='0 0 24 24'\n fill='none'\n stroke='currentColor'\n aria-hidden='true'\n >\n <path strokeLinecap='round' strokeLinejoin='round' strokeWidth={2} d='M5 9l7 7 7-7' />\n </svg>\n </div>\n </summary>\n\n {/* Top divider */}\n <div\n data-test-id='summary-details-v2-top-divider'\n data-slot='summary-details-v2-top-divider'\n className='h-px bg-border-default dark:bg-border-default-dark mt-3'\n />\n\n {/* Rows */}\n <div\n data-test-id='summary-details-v2-content'\n data-slot='summary-details-v2-content'\n className={twMerge('mt-0', contentClassName)}\n >\n {items.map((item, i) => (\n <React.Fragment key={i}>\n <div\n data-test-id='summary-details-v2-row'\n data-slot='summary-details-v2-row'\n className='flex justify-between items-center py-[10px] gap-3'\n >\n <span\n data-test-id='summary-details-v2-row-label'\n data-slot='summary-details-v2-row-label'\n className={twMerge(\n 'text-[11px] font-medium uppercase tracking-[0.07em] text-text-tertiary dark:text-text-tertiary-dark flex-shrink-0',\n item.labelClassName\n )}\n >\n {item.label}\n </span>\n\n {typeof item.value === 'string'\n ? (\n <span\n data-test-id='summary-details-v2-row-value'\n data-slot='summary-details-v2-row-value'\n className={twMerge(\n 'text-[13px] font-semibold text-text-primary dark:text-text-primary-dark text-right',\n item.valueClassName\n )}\n >\n {item.value}\n </span>\n )\n : (\n <div\n data-test-id='summary-details-v2-row-value'\n data-slot='summary-details-v2-row-value'\n className={twMerge('text-right', item.valueClassName)}\n >\n {item.value}\n </div>\n )}\n </div>\n\n {showDividers && i < items.length - 1 && (\n <div\n data-test-id='summary-details-v2-row-divider'\n data-slot='summary-details-v2-row-divider'\n className='h-px bg-border-default dark:bg-border-default-dark'\n />\n )}\n </React.Fragment>\n ))}\n </div>\n </details>\n )\n}\n","import * as React from 'react'\nimport { motion, AnimatePresence } from 'framer-motion'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface ActionSheetItem {\n id: string\n label: string\n icon?: React.ReactNode\n variant?: 'default' | 'destructive' | 'success'\n disabled?: boolean\n onClick?: () => void\n}\n\nexport interface ActionSheetProps {\n /** Unique identifier for this action sheet */\n id: string\n /** Current action sheet ID from state */\n currentActionSheetId?: string | null\n /** Whether the action sheet is open */\n isOpen?: boolean\n /** Function to close the action sheet */\n onClose?: () => void\n /** Custom content to render */\n children?: React.ReactNode\n /** Custom className for the container */\n className?: string\n /** Custom className for the content area */\n contentClassName?: string\n /** Position of the action sheet */\n position?: 'bottom' | 'center'\n /** Height of the sheet */\n height?: 'auto' | 'full' | 'half'\n /** Whether clicking the backdrop should close the sheet (default: true) */\n closeOnBackdropClick?: boolean\n /** Title displayed in the header */\n title?: string\n /** Description displayed below the title */\n description?: string\n /** List of action items to render */\n items?: ActionSheetItem[]\n /** Whether to show a cancel button (default: true) */\n showCancel?: boolean\n}\n\n/**\n * ActionSheet - A flexible bottom sheet / modal component\n *\n * Pure custom content mode for maximum flexibility.\n * Compose your content using existing library components.\n *\n * Features:\n * - Smooth framer-motion animations with spring physics\n * - Multiple height options (auto, full, half)\n * - Position options (bottom, center)\n * - Dark mode support via CSS custom properties\n * - Keyboard navigation (ESC to close)\n * - Backdrop click to dismiss\n * - ARIA labels for accessibility\n *\n * @example\n * <ActionSheet\n * id=\"token-selector\"\n * currentActionSheetId={currentId}\n * isOpen={isOpen}\n * height=\"full\"\n * onClose={handleClose}\n * >\n * <div className=\"flex flex-col h-full bg-black p-6\">\n * <h2>Select Token</h2>\n * <Input placeholder=\"Search here...\" />\n * <ListItem>...</ListItem>\n * </div>\n * </ActionSheet>\n */\nexport const ActionSheet: React.FC<ActionSheetProps> = ({\n id,\n currentActionSheetId,\n isOpen,\n onClose,\n children,\n className = '',\n contentClassName = '',\n position = 'bottom',\n height = 'auto',\n closeOnBackdropClick = true,\n title,\n description,\n items,\n showCancel = true,\n}) => {\n const isThisSheetActive = isOpen && currentActionSheetId === id\n\n React.useEffect(() => {\n if (isThisSheetActive) {\n // Prevent body scroll when action sheet is open\n document.body.style.overflow = 'hidden'\n } else {\n document.body.style.overflow = ''\n }\n\n return () => {\n document.body.style.overflow = ''\n }\n }, [isThisSheetActive])\n\n // Handle escape key\n React.useEffect(() => {\n if (!isThisSheetActive) return\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n onClose?.()\n }\n }\n\n document.addEventListener('keydown', handleEscape)\n return () => document.removeEventListener('keydown', handleEscape)\n }, [isThisSheetActive, onClose])\n\n // Handle backdrop click\n const handleBackdropClick = (e: React.MouseEvent) => {\n if (closeOnBackdropClick && e.target === e.currentTarget) {\n onClose?.()\n }\n }\n\n // Animation variants\n const backdropVariants = {\n hidden: { opacity: 0 },\n visible: { opacity: 1 },\n exit: { opacity: 0 },\n }\n\n const sheetVariants = {\n hidden: position === 'bottom' ? { y: '100%' } : { opacity: 0, scale: 0.95 },\n visible:\n position === 'bottom'\n ? {\n y: '0%',\n transition: {\n type: 'spring' as const,\n damping: 25,\n stiffness: 300,\n },\n }\n : {\n opacity: 1,\n scale: 1,\n transition: {\n type: 'spring' as const,\n damping: 25,\n stiffness: 300,\n },\n },\n exit:\n position === 'bottom'\n ? {\n y: '100%',\n transition: {\n type: 'spring' as const,\n damping: 25,\n stiffness: 300,\n },\n }\n : {\n opacity: 0,\n scale: 0.95,\n transition: {\n type: 'spring' as const,\n damping: 25,\n stiffness: 300,\n },\n },\n }\n\n // Height classes\n const getHeightClass = () => {\n switch (height) {\n case 'full':\n return 'h-full'\n case 'half':\n return 'h-[50vh]'\n case 'auto':\n default:\n return 'h-auto'\n }\n }\n\n return (\n <AnimatePresence mode='wait'>\n {isThisSheetActive && (\n <motion.div\n className={twMerge(\n 'fixed inset-0 z-50 flex justify-center',\n position === 'bottom' ? 'items-end' : 'items-center',\n className\n )}\n role='dialog'\n aria-modal='true'\n onClick={handleBackdropClick}\n variants={backdropVariants}\n initial='hidden'\n animate='visible'\n exit='exit'\n transition={{ duration: 0.2 }}\n >\n {/* Backdrop */}\n <div\n className='absolute inset-0 bg-black/50 backdrop-blur-sm'\n aria-hidden='true'\n />\n\n {/* Action Sheet Content */}\n <motion.div\n className={twMerge(\n 'relative w-full bg-[var(--sheet-bg,#0A0A0A)] shadow-2xl overflow-hidden',\n position === 'bottom'\n ? 'max-w-full rounded-t-[32px]'\n : 'max-w-lg rounded-2xl mx-4',\n getHeightClass(),\n contentClassName\n )}\n variants={sheetVariants}\n initial='hidden'\n animate='visible'\n exit='exit'\n >\n {children}\n </motion.div>\n </motion.div>\n )}\n </AnimatePresence>\n )\n}\n\nexport default ActionSheet\n","/**\n * Theme color configuration for Deframe components\n */\nexport interface DeframeThemeColors {\n // Brand colors\n /** Primary brand color - used for buttons, links, accents */\n brandPrimary?: string\n /** Secondary brand color - used for secondary accents */\n brandSecondary?: string\n\n // Background colors\n /** Main background color */\n bgDefault?: string\n /** Subtle background color */\n bgSubtle?: string\n /** Muted/disabled background color */\n bgMuted?: string\n\n // Text colors\n /** Primary text color */\n textPrimary?: string\n /** Secondary text color */\n textSecondary?: string\n /** Disabled text color */\n textDisabled?: string\n /** Text color for dark backgrounds */\n textInverse?: string\n\n // State colors\n /** Success state color */\n stateSuccess?: string\n /** Error state color */\n stateError?: string\n /** Warning state color */\n stateWarning?: string\n}\n\n/**\n * Complete theme configuration for Deframe components\n */\nexport interface DeframeTheme {\n colors?: DeframeThemeColors\n}\n\n/**\n * Theme mode - controls light/dark appearance\n */\nexport type ThemeMode = 'light' | 'dark' | 'auto'\n\n/**\n * Theme preset - predefined color schemes\n */\nexport type ThemePreset = 'default' | 'cryptocontrol'\n\n/**\n * Structured theme configuration with mode, preset, and overrides\n */\nexport interface DeframeThemeConfig {\n /** Theme mode: 'light', 'dark', or 'auto' (follows system preference) */\n mode?: ThemeMode\n /** Theme preset: 'default' or 'cryptocontrol' */\n preset?: ThemePreset\n /** Custom color overrides for each mode */\n overrides?: {\n light?: DeframeTheme\n dark?: DeframeTheme\n }\n}\n\n/**\n * Default theme values - these serve as fallbacks when no custom theme is provided\n */\nexport const defaultThemeColors: Required<DeframeThemeColors> = {\n // Brand\n brandPrimary: '#405EFF',\n brandSecondary: '#A9ABF7',\n\n // Backgrounds\n bgDefault: '#FFFFFF',\n bgSubtle: '#F8F9FA',\n bgMuted: '#E3E4E8',\n\n // Text\n textPrimary: '#252050',\n textSecondary: '#5C5F66',\n textDisabled: '#C6C8CC',\n textInverse: '#FFFFFF',\n\n // States\n stateSuccess: '#2BA176',\n stateError: '#FF4D4F',\n stateWarning: '#F6A700'\n}\n\n/**\n * Dark mode theme values\n */\nexport const darkThemeColors: Required<DeframeThemeColors> = {\n // Brand\n brandPrimary: '#405EFF',\n brandSecondary: '#A9ABF7',\n\n // Backgrounds\n bgDefault: '#121212',\n bgSubtle: '#1E1E1E',\n bgMuted: '#2C2C2C',\n\n // Text\n textPrimary: '#FFFFFF',\n textSecondary: '#E3E4E8',\n textDisabled: '#898D95',\n textInverse: '#252050',\n\n // States\n stateSuccess: '#2BA176',\n stateError: '#FF4D4F',\n stateWarning: '#F6A700'\n}\n\n/**\n * Cryptocontrol theme values\n */\nexport const cryptocontrolThemeColors: Required<DeframeThemeColors> = {\n // Brand - green primary for cryptocontrol\n brandPrimary: '#1FC16B',\n brandSecondary: '#A9ABF7',\n\n // Backgrounds (same as dark)\n bgDefault: '#121212',\n bgSubtle: '#1E1E1E',\n bgMuted: '#2C2C2C',\n\n // Text (same as dark)\n textPrimary: '#FFFFFF',\n textSecondary: '#E3E4E8',\n textDisabled: '#898D95',\n textInverse: '#252050',\n\n // States\n stateSuccess: '#2BA176',\n stateError: '#FF4D4F',\n stateWarning: '#F6A700'\n}\n\n/**\n * Convert theme colors to CSS variable style object\n */\nexport function themeToCSS (theme?: DeframeTheme): React.CSSProperties {\n if (!theme?.colors) return {}\n\n const vars: Record<string, string> = {}\n const colors = theme.colors\n\n if (colors.brandPrimary) vars['--deframe-brand-primary'] = colors.brandPrimary\n if (colors.brandSecondary) vars['--deframe-brand-secondary'] = colors.brandSecondary\n if (colors.bgDefault) vars['--deframe-bg-default'] = colors.bgDefault\n if (colors.bgSubtle) vars['--deframe-bg-subtle'] = colors.bgSubtle\n if (colors.bgMuted) vars['--deframe-bg-muted'] = colors.bgMuted\n if (colors.textPrimary) vars['--deframe-text-primary'] = colors.textPrimary\n if (colors.textSecondary) vars['--deframe-text-secondary'] = colors.textSecondary\n if (colors.textDisabled) vars['--deframe-text-disabled'] = colors.textDisabled\n if (colors.textInverse) vars['--deframe-text-inverse'] = colors.textInverse\n if (colors.stateSuccess) vars['--deframe-state-success'] = colors.stateSuccess\n if (colors.stateError) vars['--deframe-state-error'] = colors.stateError\n if (colors.stateWarning) vars['--deframe-state-warning'] = colors.stateWarning\n\n return vars as React.CSSProperties\n}\n","import { useEffect, useState, useMemo } from 'react'\nimport { twMerge } from 'tailwind-merge'\nimport {\n type DeframeTheme,\n type DeframeThemeConfig,\n type ThemePreset,\n themeToCSS\n} from './types'\n\n/**\n * Get system color mode preference\n */\nfunction getSystemColorMode (): 'light' | 'dark' {\n if (typeof window === 'undefined' || !window.matchMedia) return 'light'\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'\n}\n\n/**\n * Resolve theme configuration to provider theme and custom styles\n */\nfunction resolveThemeConfig (\n config: DeframeThemeConfig | undefined,\n systemMode: 'light' | 'dark'\n): { providerTheme: 'light' | 'dark' | 'cryptocontrol'; customTheme?: DeframeTheme } {\n const mode: 'light' | 'dark' = config?.mode === 'auto'\n ? systemMode\n : (config?.mode ?? 'light')\n\n const preset: ThemePreset = config?.preset ?? 'default'\n\n const providerTheme: 'light' | 'dark' | 'cryptocontrol' =\n preset === 'cryptocontrol' ? 'cryptocontrol' : mode === 'dark' ? 'dark' : 'light'\n\n // Get override colors for the active mode\n const overrideColors = mode === 'dark'\n ? config?.overrides?.dark?.colors\n : config?.overrides?.light?.colors\n\n const customTheme = overrideColors ? { colors: overrideColors } : undefined\n\n return { providerTheme, customTheme }\n}\n\nexport interface DeframeComponentsProviderProps {\n /** Theme preset: 'light' | 'dark' | 'cryptocontrol' (legacy) */\n theme?: string\n /** Structured theme configuration (preferred) */\n themeConfig?: DeframeThemeConfig\n /** Custom theme colors that override the preset */\n customTheme?: DeframeTheme\n /** Optional extra className applied to the `.deframe-widget` root */\n className?: string\n /** Child components */\n children: React.ReactNode\n}\n\nexport default function DeframeComponentsProvider ({\n theme = 'light',\n themeConfig,\n customTheme,\n className,\n children\n}: DeframeComponentsProviderProps) {\n // Track system color mode for 'auto' mode\n const [systemMode, setSystemMode] = useState<'light' | 'dark'>(() => getSystemColorMode())\n\n // Listen for system color mode changes when using 'auto' mode\n useEffect(() => {\n const needsSystem = themeConfig?.mode === 'auto'\n if (!needsSystem || typeof window === 'undefined' || !window.matchMedia) return\n\n const mq = window.matchMedia('(prefers-color-scheme: dark)')\n const handler = () => setSystemMode(mq.matches ? 'dark' : 'light')\n handler()\n mq.addEventListener?.('change', handler)\n return () => mq.removeEventListener?.('change', handler)\n }, [themeConfig?.mode])\n\n // Resolve the final theme values\n const resolvedTheme = useMemo(() => {\n // If using new themeConfig, resolve it\n if (themeConfig) {\n return resolveThemeConfig(themeConfig, systemMode)\n }\n\n // Legacy: use theme string directly\n return {\n providerTheme: theme as 'light' | 'dark' | 'cryptocontrol',\n customTheme\n }\n }, [themeConfig, theme, customTheme, systemMode])\n\n const themeClass = resolvedTheme.providerTheme === 'light' ? '' : resolvedTheme.providerTheme\n const colorScheme = resolvedTheme.providerTheme === 'light' ? 'light' : 'dark'\n\n // Convert custom theme to CSS variables\n const customCSSVars = themeToCSS(resolvedTheme.customTheme)\n\n return (\n <div\n className={twMerge('deframe-widget', themeClass, className)}\n style={{ colorScheme, ...customCSSVars }}\n >\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface InfoRowProps {\n children: React.ReactNode;\n borderBottom?: boolean;\n className?: string;\n}\n\nexport const InfoRow: React.FC<InfoRowProps> = ({ children, borderBottom, className }) => {\n const baseClasses = 'self-stretch inline-flex justify-between items-start'\n const borderClasses = borderBottom ? 'border-b border-border-default dark:border-border-default-dark pb-sm' : ''\n\n return (\n <div data-test-id='info-row' className={twMerge(baseClasses, borderClasses, className)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface InfoLabelProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport const InfoLabel: React.FC<InfoLabelProps> = ({ children, className }) => {\n const baseClasses = 'text-sm text-text-secondary dark:text-text-secondary-dark'\n\n return (\n <div data-test-id='info-label' className={twMerge(baseClasses, className)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface InfoValueProps {\n children: React.ReactNode;\n variant?: 'default' | 'success' | 'warning' | 'error';\n className?: string;\n}\n\nconst variantClasses = {\n default: 'text-text-primary dark:text-text-primary-dark',\n success: 'text-state-success',\n warning: 'text-state-warning',\n error: 'text-state-error',\n} as const\n\nexport const InfoValue: React.FC<InfoValueProps> = ({ children, variant = 'default', className }) => {\n const baseClasses = 'text-sm font-semibold'\n\n return (\n <div data-test-id='info-value' className={twMerge(baseClasses, variantClasses[variant], className)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface InfoRowWithIconProps {\n children: React.ReactNode;\n borderBottom?: boolean;\n className?: string;\n}\n\nexport const InfoRowWithIcon: React.FC<InfoRowWithIconProps> = ({ children, borderBottom, className }) => {\n const baseClasses = 'flex items-start justify-between h-[17px]'\n const borderClasses = borderBottom ? 'border-b border-border-default dark:border-border-default-dark pb-sm' : ''\n\n return (\n <div data-test-id='info-row-with-icon' className={twMerge(baseClasses, borderClasses, className)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface InfoRowIconLabelProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport const InfoRowIconLabel: React.FC<InfoRowIconLabelProps> = ({ children, className }) => {\n const baseClasses = 'text-sm text-text-secondary dark:text-text-secondary-dark'\n\n return (\n <div data-test-id='info-row-icon-label' className={twMerge(baseClasses, className)}>\n • {children}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface InfoRowIconValueProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport const InfoRowIconValue: React.FC<InfoRowIconValueProps> = ({ children, className }) => {\n const baseClasses = 'text-sm font-semibold text-text-primary dark:text-text-primary-dark'\n\n return (\n <div data-test-id='info-row-icon-value' className={twMerge(baseClasses, className)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { HiChevronDown, HiChevronUp } from 'react-icons/hi2'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface CollapsibleInfoRowProps {\n label: string;\n value: string;\n children?: React.ReactNode;\n defaultOpen?: boolean;\n className?: string;\n collapseLabel: string;\n expandLabel: string;\n}\n\nexport const CollapsibleInfoRow: React.FC<CollapsibleInfoRowProps> = ({\n label,\n value,\n children,\n defaultOpen = false,\n className,\n collapseLabel,\n expandLabel,\n}) => {\n const [isOpen, setIsOpen] = React.useState(defaultOpen)\n\n const baseClasses = 'flex flex-col gap-sm w-full'\n\n return (\n <div data-test-id='collapsible-info-row' className={twMerge(baseClasses, className)}>\n <button\n type='button'\n onClick={() => setIsOpen(!isOpen)}\n className='flex items-start justify-between w-full text-left h-[18px] cursor-pointer'\n aria-expanded={isOpen}\n aria-label={`${isOpen ? collapseLabel : expandLabel} ${label}`}\n >\n <div className='flex items-start gap-[2px]'>\n <span className='text-text-sm text-text-secondary dark:text-text-secondary-dark'>\n {label}\n </span>\n <div className='flex items-center justify-center w-[18px] h-[18px]'>\n {isOpen\n ? (\n <HiChevronUp className='w-3 h-3 text-text-secondary dark:text-text-secondary-dark' />\n )\n : (\n <HiChevronDown className='w-3 h-3 text-text-secondary dark:text-text-secondary-dark' />\n )}\n </div>\n </div>\n <span className='text-text-sm font-semibold text-text-secondary dark:text-text-secondary-dark'>\n {value}\n </span>\n </button>\n {isOpen && children}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface BackgroundContainerProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport const BackgroundContainer: React.FC<BackgroundContainerProps> = ({ children, className }) => {\n const baseClasses = 'w-full flex-1 min-h-0 px-md bg-bg-default lg:bg-bg-subtle dark:bg-bg-default-dark lg:dark:bg-bg-subtle-dark text-text-primary dark:text-text-primary-dark flex flex-col relative overflow-y-auto'\n\n return (\n <div data-test-id='background-container' className={twMerge(baseClasses, className)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface SectionCardProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport const SectionCard: React.FC<SectionCardProps> = ({ children, className }) => {\n const baseClasses = 'bg-bg-subtle dark:bg-bg-subtle-dark lg:!bg-bg-raised rounded shadow-sm p-md flex flex-col gap-sm'\n\n return (\n <div data-test-id='section-card' className={twMerge(baseClasses, className)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface NavbarProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport const Navbar: React.FC<NavbarProps> = ({ children, className }) => {\n const baseClasses = 'w-full px-sm pr-md pt-sm pb-md border-b items-center border-border-subtle dark:border-border-subtle-dark flex'\n\n return (\n <nav data-test-id='navbar' className={twMerge(baseClasses, className)}>\n {children}\n </nav>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface FlexColProps {\n children: React.ReactNode;\n className?: string;\n gap?: 'xs' | 'sm' | 'md' | 'lg';\n}\n\nconst gapClasses = {\n xs: 'gap-xs',\n sm: 'gap-sm',\n md: 'gap-md',\n lg: 'gap-lg',\n} as const\n\nexport const FlexCol: React.FC<FlexColProps> = ({ children, className, gap = 'xs' }) => {\n const baseClasses = 'flex flex-col'\n\n return (\n <div data-test-id='flex-col' className={twMerge(baseClasses, gapClasses[gap], className)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface FlexRowProps {\n children: React.ReactNode;\n className?: string;\n gap?: 'xs' | 'sm' | 'md' | 'lg';\n}\n\nconst gapClasses = {\n xs: 'gap-xs',\n sm: 'gap-sm',\n md: 'gap-md',\n lg: 'gap-lg',\n} as const\n\nexport const FlexRow: React.FC<FlexRowProps> = ({ children, className, gap = 'xs' }) => {\n const baseClasses = 'flex items-center'\n\n return (\n <div data-test-id='flex-row' className={twMerge(baseClasses, gapClasses[gap], className)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface ScrollableContentProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport const ScrollableContent: React.FC<ScrollableContentProps> = ({ children, className }) => {\n const baseClasses = 'flex-1 overflow-y-auto px-md py-lg'\n\n return (\n <div data-test-id='scrollable-content' className={twMerge(baseClasses, className)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { HiChevronLeft } from 'react-icons/hi2'\nimport { twMerge } from 'tailwind-merge'\nimport { TextHeading } from '../texts'\n\nexport interface DetailsHeaderProps {\n title: string;\n onBack?: () => void;\n className?: string;\n backAriaLabel?: string;\n}\n\nexport const DetailsHeader: React.FC<DetailsHeaderProps> = ({ title, onBack, className, backAriaLabel = 'Back' }) => {\n const baseClasses = 'w-full px-sm pr-md pt-sm pb-md border-b border-border-subtle dark:border-border-subtle-dark flex items-center'\n\n return (\n <div data-test-id='details-header' className={twMerge(baseClasses, className)}>\n <button\n data-test-id='details-header-back-button'\n onClick={onBack}\n className='w-12 h-12 rounded-full flex items-center justify-center text-text-secondary dark:text-text-secondary-dark hover:text-brand-primary cursor-pointer'\n aria-label={backAriaLabel}\n >\n <HiChevronLeft className='w-6 h-6 text-text-tertiary dark:text-text-tertiary-dark' />\n </button>\n <div className='flex-1 flex items-center'>\n <TextHeading variant='h-large'>{title}</TextHeading>\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport { HiXMark } from 'react-icons/hi2'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface CloseButtonProps {\n onClick?: () => void;\n testId?: string;\n ariaLabel?: string;\n className?: string;\n}\n\nexport const CloseButton: React.FC<CloseButtonProps> = ({ onClick, testId, ariaLabel = 'Close', className }) => {\n const baseClasses = 'w-12 h-12 rounded-full flex items-center justify-center text-text-secondary dark:text-text-secondary-dark hover:text-brand-primary transition-colors cursor-pointer'\n\n return (\n <button\n data-test-id={testId ?? 'close-button'}\n onClick={onClick}\n className={twMerge(baseClasses, className)}\n aria-label={ariaLabel}\n >\n <HiXMark className='w-6 h-6' />\n </button>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface HighRiskBadgeProps {\n className?: string;\n label?: string;\n}\n\nexport const HighRiskBadge: React.FC<HighRiskBadgeProps> = ({ className, label }) => {\n const baseClasses = 'inline-flex justify-start items-start gap-1'\n\n return (\n <div data-test-id='high-risk-badge' className={twMerge(baseClasses, className)}>\n <div\n data-size='Small'\n data-type='Failed'\n className='h-6 px-2 py-1 opacity-95 bg-red-500/20 rounded-lg outline outline-1 outline-offset-[-1px] outline-state-error flex justify-center items-center gap-1'\n >\n <div className='flex justify-start items-center gap-2.5'>\n <div className='justify-start text-state-error text-xs font-normal font-poppins leading-4'>\n {label}\n </div>\n </div>\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface MediumRiskBadgeProps {\n className?: string;\n label?: string;\n}\n\nexport const MediumRiskBadge: React.FC<MediumRiskBadgeProps> = ({ className, label }) => {\n const baseClasses = 'inline-flex justify-start items-start gap-1'\n\n return (\n <div data-test-id='medium-risk-badge' className={twMerge(baseClasses, className)}>\n <div\n data-size='Small'\n data-type='Warning'\n className='h-6 px-2 py-1 opacity-95 bg-amber-500/20 rounded-lg outline outline-1 outline-offset-[-1px] outline-state-warning flex justify-center items-center gap-1'\n >\n <div className='flex justify-start items-center gap-2.5'>\n <div className='justify-start text-state-warning text-xs font-normal font-poppins leading-4'>\n {label}\n </div>\n </div>\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface LowRiskBadgeProps {\n className?: string;\n label: string;\n}\n\nexport const LowRiskBadge: React.FC<LowRiskBadgeProps> = ({ className, label }) => {\n const baseClasses = 'inline-flex justify-start items-start gap-1'\n\n return (\n <div data-test-id='low-risk-badge' className={twMerge(baseClasses, className)}>\n <div\n data-size='Small'\n data-type='Completed'\n className='h-6 px-2 py-1 opacity-95 bg-teal-600/20 rounded-lg outline outline-1 outline-offset-[-1px] outline-state-success flex justify-center items-center gap-1'\n >\n <div className='flex justify-start items-center gap-2.5'>\n <div className='justify-start text-state-success text-xs font-normal font-poppins leading-4'>\n {label}\n </div>\n </div>\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\nimport { AddressDisplay } from '../address'\n\n// Layout components\nexport interface FlexColCompProps {\n children: React.ReactNode;\n className?: string;\n gap?: 'xs' | 'sm' | 'md' | 'lg';\n}\n\nconst gapClasses = {\n xs: 'gap-xs',\n sm: 'gap-sm',\n md: 'gap-md',\n lg: 'gap-lg',\n} as const\n\nexport const HistoryFlexCol: React.FC<FlexColCompProps> = ({ children, className, gap = 'xs' }) => (\n <div data-test-id='history-flex-col' className={twMerge('flex flex-col', gapClasses[gap], className)}>\n {children}\n </div>\n)\n\nexport interface FlexRowCompProps {\n children: React.ReactNode;\n className?: string;\n gap?: 'xs' | 'sm' | 'md' | 'lg';\n}\n\nexport const HistoryFlexRow: React.FC<FlexRowCompProps> = ({ children, className, gap = 'xs' }) => (\n <div data-test-id='history-flex-row' className={twMerge('flex items-center', gapClasses[gap], className)}>\n {children}\n </div>\n)\n\nexport const HistoryScrollableContent: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n <div data-test-id='history-scrollable-content' className='flex-1 overflow-y-auto px-md py-lg'>\n {children}\n </div>\n)\n\n// Typography components\nexport const TransactionTypeLabel: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n <p data-test-id='transaction-type-label' className='text-text-sm-mobile text-text-secondary dark:text-text-secondary-dark'>\n {children}\n </p>\n)\n\nexport const StrategyName: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n <p data-test-id='strategy-name' className='text-accent-md-mobile text-text-secondary dark:text-text-secondary-dark'>\n {children}\n </p>\n)\n\nexport const Amount: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n <p data-test-id='amount' className='text-accent-md-mobile text-text-secondary dark:text-text-secondary-dark'>\n {children}\n </p>\n)\n\nexport const AmountInUsd: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n <p data-test-id='amount-in-usd' className='text-text-sm-mobile text-text-secondary dark:text-text-secondary-dark'>\n ~ {children}\n </p>\n)\n\nexport const EmptyValue: React.FC = () => (\n <p data-test-id='empty-value' className='text-text-sm-mobile text-text-secondary dark:text-text-secondary-dark'>\n -\n </p>\n)\n\n// Icon components\nexport interface TokenIconProps {\n src: string;\n alt: string;\n}\n\nexport const TokenIcon: React.FC<TokenIconProps> = ({ src, alt }) => (\n <img\n data-test-id='token-icon'\n src={src}\n alt={alt}\n className='w-8 h-8 rounded-full'\n onError={(e) => {\n const fallbackText = encodeURIComponent((alt || 'TOK').slice(0, 3).toUpperCase());\n (e.target as HTMLImageElement).src = `https://placehold.co/40x40?text=${fallbackText}`\n }}\n />\n)\n\n// Status badge\nexport const SuccessBadge: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n <div data-test-id='success-badge' className='bg-[rgba(43,161,118,0.12)] flex items-center gap-xs px-[8px] py-[2px] rounded-[24px]'>\n <span className='w-2 h-2 rounded-full bg-state-success' />\n <span className='text-text-sm-mobile text-text-primary dark:text-text-primary-dark'>\n {children}\n </span>\n </div>\n)\n\n// Transaction ID with truncated display and copy button\nconst truncateHash = (hash: string, chars: number = 6): string => {\n if (hash.length <= chars * 2 + 3) return hash\n return `${hash.slice(0, chars + 2)}...${hash.slice(-chars)}`\n}\n\nexport interface TransactionIdProps {\n hash: string | null;\n}\n\nexport const TransactionId: React.FC<TransactionIdProps> = ({ hash }) => {\n if (!hash) {\n return <span data-test-id='transaction-id' className='text-text-sm-mobile text-text-primary dark:text-text-primary-dark'>-</span>\n }\n\n return (\n <div data-test-id='transaction-id' className='flex items-center gap-xs'>\n <span className='text-text-sm-mobile text-text-primary dark:text-text-primary-dark'>\n {truncateHash(hash)}\n </span>\n <AddressDisplay\n address={hash}\n className='border-none bg-transparent p-0 gap-0'\n textClassName='hidden'\n />\n </div>\n )\n}\n\n// Explorer link\nexport interface ExplorerLinkProps {\n href: string;\n children: React.ReactNode;\n}\n\nexport const ExplorerLink: React.FC<ExplorerLinkProps> = ({ href, children }) => (\n <a\n data-test-id='explorer-link'\n href={href}\n target='_blank'\n rel='noopener noreferrer'\n className='text-brand-primary underline text-sm font-semibold font-poppins'\n >\n {children}\n </a>\n)\n\n// Two-line value\nexport interface TwoLineValueProps {\n primary: React.ReactNode;\n secondary: React.ReactNode;\n}\n\nexport const TwoLineValue: React.FC<TwoLineValueProps> = ({ primary, secondary }) => (\n <HistoryFlexCol className='items-end'>\n <p data-test-id='two-line-value-primary' className='text-text-sm-mobile text-text-secondary dark:text-text-secondary-dark font-semibold'>\n {primary}\n </p>\n <p data-test-id='two-line-value-secondary' className='text-text-sm-mobile text-text-secondary dark:text-text-secondary-dark'>\n {secondary}\n </p>\n </HistoryFlexCol>\n)\n\n// Error state\nexport const NotFoundMessage: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n <div data-test-id='not-found-message' className='flex flex-col items-center justify-center h-full'>\n <p className='text-text-primary dark:text-text-primary-dark'>{children}</p>\n </div>\n)\n","import React from 'react'\nimport { DetailsHeader } from '../details-header'\nimport { SectionCard, FlexCol, FlexRow, ScrollableContent, BackgroundContainer } from '../layout'\nimport { InfoRow, InfoLabel, InfoValue } from '../info-display'\nimport {\n TransactionTypeLabel,\n Amount,\n AmountInUsd,\n TokenIcon,\n SuccessBadge,\n TransactionId,\n ExplorerLink,\n TwoLineValue,\n} from './HistoryDetailsComponents'\nimport type { HistoryDetailsLabels } from './history-details-labels'\n\nexport interface HistoryAssetViewProps {\n iconUrl: string;\n symbol: string;\n amount: string;\n amountInUSD: string | null;\n}\n\nexport interface HistoryDetailsViewProps {\n transactionTypeLabel: string;\n symbol: string;\n amountWithSymbol: string;\n amountInUsdFormatted: string;\n shouldShowFlow: boolean;\n assetIn?: HistoryAssetViewProps;\n assetOut?: HistoryAssetViewProps;\n primaryAssetIconUrl: string;\n protocolLabel: string;\n statusLabel: string;\n txHash: string | null;\n date: string;\n explorerUrl: string | null;\n onClose: () => void;\n labels: HistoryDetailsLabels;\n}\n\nexport const HistoryDepositDetailsView: React.FC<HistoryDetailsViewProps> = ({\n transactionTypeLabel,\n symbol,\n amountWithSymbol,\n amountInUsdFormatted,\n shouldShowFlow,\n assetIn,\n assetOut,\n primaryAssetIconUrl,\n protocolLabel,\n statusLabel,\n txHash,\n date,\n explorerUrl,\n onClose,\n labels,\n}) => {\n return (\n <BackgroundContainer>\n <DetailsHeader title={labels.transactionDetailsTitle} onBack={onClose} />\n\n <ScrollableContent>\n <FlexCol gap='lg'>\n {/* Transaction Summary Card */}\n <SectionCard className='!p-[24px]'>\n <FlexCol gap='xs'>\n <TransactionTypeLabel>{transactionTypeLabel}</TransactionTypeLabel>\n\n {shouldShowFlow && assetIn && assetOut\n ? (\n <FlexCol gap='sm'>\n <FlexRow gap='sm'>\n <TokenIcon src={assetIn.iconUrl} alt={assetIn.symbol} />\n <FlexCol>\n <Amount>\n {assetIn.amount} {assetIn.symbol}\n </Amount>\n {assetIn.amountInUSD\n ? (\n <AmountInUsd>{assetIn.amountInUSD}</AmountInUsd>\n )\n : null}\n </FlexCol>\n </FlexRow>\n <FlexRow gap='sm'>\n <TokenIcon src={assetOut.iconUrl} alt={assetOut.symbol} />\n <FlexCol>\n <Amount>\n {assetOut.amount} {assetOut.symbol}\n </Amount>\n {assetOut.amountInUSD\n ? (\n <AmountInUsd>{assetOut.amountInUSD}</AmountInUsd>\n )\n : null}\n </FlexCol>\n </FlexRow>\n </FlexCol>\n )\n : (\n <FlexRow gap='sm'>\n <TokenIcon src={primaryAssetIconUrl} alt={symbol} />\n <FlexCol>\n <FlexRow gap='xs'>\n <Amount>{amountWithSymbol}</Amount>\n {amountInUsdFormatted !== '-'\n ? (\n <AmountInUsd>{amountInUsdFormatted}</AmountInUsd>\n )\n : null}\n </FlexRow>\n </FlexCol>\n </FlexRow>\n )}\n </FlexCol>\n </SectionCard>\n\n {/* Details Card */}\n <SectionCard className='!p-md'>\n <FlexCol gap='sm'>\n <InfoRow borderBottom>\n <InfoLabel>{labels.currencyLabel}</InfoLabel>\n <InfoValue>{symbol}</InfoValue>\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.totalAmountLabel}</InfoLabel>\n <TwoLineValue primary={amountInUsdFormatted} secondary={amountWithSymbol} />\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.operationCostLabel}</InfoLabel>\n <InfoValue>{labels.operationCostSponsoredLabel}</InfoValue>\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.protocolLabel}</InfoLabel>\n <InfoValue>{protocolLabel}</InfoValue>\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.statusLabel}</InfoLabel>\n <SuccessBadge>{statusLabel}</SuccessBadge>\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.transactionIdLabel}</InfoLabel>\n <TransactionId hash={txHash} />\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.dateLabel}</InfoLabel>\n <InfoValue>{date}</InfoValue>\n </InfoRow>\n\n {explorerUrl && (\n <InfoRow>\n <InfoLabel>{labels.transactionLabel}</InfoLabel>\n <ExplorerLink href={explorerUrl}>{labels.viewOnExplorerLabel}</ExplorerLink>\n </InfoRow>\n )}\n </FlexCol>\n </SectionCard>\n </FlexCol>\n </ScrollableContent>\n </BackgroundContainer>\n )\n}\n","import React from 'react'\nimport { BackgroundContainer } from '../layout/BackgroundContainer'\nimport { DetailsHeader } from '../details-header'\nimport { SectionCard, FlexCol, FlexRow, ScrollableContent } from '../layout'\nimport { InfoRow, InfoLabel, InfoValue } from '../info-display'\nimport {\n TransactionTypeLabel,\n Amount,\n AmountInUsd,\n TokenIcon,\n SuccessBadge,\n TransactionId,\n ExplorerLink,\n TwoLineValue,\n} from './HistoryDetailsComponents'\nimport type { HistoryAssetViewProps, HistoryDetailsViewProps } from './HistoryDepositDetailsView'\n\nexport type { HistoryDetailsViewProps, HistoryAssetViewProps }\n\nexport const HistoryWithdrawDetailsView: React.FC<HistoryDetailsViewProps> = ({\n transactionTypeLabel,\n symbol,\n amountWithSymbol,\n amountInUsdFormatted,\n shouldShowFlow,\n assetIn,\n assetOut,\n primaryAssetIconUrl,\n protocolLabel,\n statusLabel,\n txHash,\n date,\n explorerUrl,\n onClose,\n labels,\n}) => {\n return (\n <BackgroundContainer>\n <DetailsHeader title={labels.transactionDetailsTitle} onBack={onClose} />\n\n <ScrollableContent>\n <FlexCol gap='lg'>\n <SectionCard className='!p-[24px]'>\n <FlexCol gap='xs'>\n <TransactionTypeLabel>{transactionTypeLabel}</TransactionTypeLabel>\n\n {shouldShowFlow && assetIn && assetOut\n ? (\n <FlexCol gap='sm'>\n <FlexRow gap='sm'>\n <TokenIcon src={assetIn.iconUrl} alt={assetIn.symbol} />\n <FlexCol>\n <Amount>\n {assetIn.amount} {assetIn.symbol}\n </Amount>\n {assetIn.amountInUSD\n ? (\n <AmountInUsd>{assetIn.amountInUSD}</AmountInUsd>\n )\n : null}\n </FlexCol>\n </FlexRow>\n <FlexRow gap='sm'>\n <TokenIcon src={assetOut.iconUrl} alt={assetOut.symbol} />\n <FlexCol>\n <Amount>\n {assetOut.amount} {assetOut.symbol}\n </Amount>\n {assetOut.amountInUSD\n ? (\n <AmountInUsd>{assetOut.amountInUSD}</AmountInUsd>\n )\n : null}\n </FlexCol>\n </FlexRow>\n </FlexCol>\n )\n : (\n <FlexRow gap='sm'>\n <TokenIcon src={primaryAssetIconUrl} alt={symbol} />\n <FlexCol>\n <FlexRow gap='xs'>\n <Amount>{amountWithSymbol}</Amount>\n {amountInUsdFormatted !== '-'\n ? (\n <AmountInUsd>{amountInUsdFormatted}</AmountInUsd>\n )\n : null}\n </FlexRow>\n </FlexCol>\n </FlexRow>\n )}\n </FlexCol>\n </SectionCard>\n\n <SectionCard className='!p-md'>\n <FlexCol gap='sm'>\n <InfoRow borderBottom>\n <InfoLabel>{labels.currencyLabel}</InfoLabel>\n <InfoValue>{symbol}</InfoValue>\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.totalAmountLabel}</InfoLabel>\n <TwoLineValue primary={amountInUsdFormatted} secondary={amountWithSymbol} />\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.operationCostLabel}</InfoLabel>\n <InfoValue>{labels.operationCostSponsoredLabel}</InfoValue>\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.protocolLabel}</InfoLabel>\n <InfoValue>{protocolLabel}</InfoValue>\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.statusLabel}</InfoLabel>\n <SuccessBadge>{statusLabel}</SuccessBadge>\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.transactionIdLabel}</InfoLabel>\n <TransactionId hash={txHash} />\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.dateLabel}</InfoLabel>\n <InfoValue>{date}</InfoValue>\n </InfoRow>\n\n {explorerUrl && (\n <InfoRow>\n <InfoLabel>{labels.transactionLabel}</InfoLabel>\n <ExplorerLink href={explorerUrl}>{labels.viewOnExplorerLabel}</ExplorerLink>\n </InfoRow>\n )}\n </FlexCol>\n </SectionCard>\n </FlexCol>\n </ScrollableContent>\n </BackgroundContainer>\n )\n}\n","import React from 'react'\nimport { HiChevronDown } from 'react-icons/hi2'\nimport { twMerge } from 'tailwind-merge'\nimport { TextBody } from '../texts'\n\nexport interface SwapNetworkSelectorViewProps {\n chainLabel: string;\n chainImage?: string;\n onClick: () => void;\n directionLabel?: string;\n testId?: string;\n className?: string;\n}\n\nexport const SwapNetworkSelectorView: React.FC<SwapNetworkSelectorViewProps> = ({\n chainLabel,\n chainImage,\n onClick,\n directionLabel = 'De',\n testId = 'swap-network-selector',\n className,\n}) => {\n const baseClasses = 'flex flex-row items-center gap-xs'\n\n return (\n <div data-test-id={testId} className={twMerge(baseClasses, className)}>\n <TextBody as='span' variant='text-small' className='tracking-wide text-text-tertiary dark:text-text-tertiary-dark'>\n {directionLabel}\n </TextBody>\n <button\n data-testid={testId}\n type='button'\n onClick={onClick}\n className='ml-6 bg-bg-muted dark:bg-bg-muted-dark border border-border-subtle dark:border-border-subtle-dark rounded-lg flex items-center gap-xs px-sm py-xs hover:border-border-default dark:hover:border-border-default-dark transition-colors text-text-sm text-text-secondary dark:text-text-secondary-dark cursor-pointer'\n aria-label={`${directionLabel} ${chainLabel}`}\n >\n {chainImage\n ? (\n <img src={chainImage} alt={chainLabel} className='w-3 h-3 rounded-full' />\n )\n : null}\n <span>{chainLabel}</span>\n <div className='flex items-center justify-center w-[18px] h-[18px]'>\n <HiChevronDown className='w-3 h-3 text-text-tertiary dark:text-text-tertiary-dark' />\n </div>\n </button>\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\nimport { TextBody } from '../texts'\n\nexport interface SwapQuoteHeaderViewProps {\n label: React.ReactNode;\n timerElement?: React.ReactNode;\n className?: string;\n}\n\nexport const SwapQuoteHeaderView: React.FC<SwapQuoteHeaderViewProps> = ({\n label,\n timerElement,\n className,\n}) => {\n const baseClasses = 'border-b border-border-default dark:border-border-default-dark pb-sm'\n\n return (\n <div data-test-id='swap-quote-header' className={twMerge(baseClasses, className)}>\n <div className='flex items-center justify-between'>\n <TextBody as='span' variant='text-small' className='font-semibold text-text-secondary dark:text-text-secondary-dark inline-flex items-center'>\n {label}\n </TextBody>\n <div className='flex items-center gap-md'>\n {timerElement}\n </div>\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface InputFieldRegistration {\n name: string;\n onBlur: React.FocusEventHandler<HTMLInputElement>;\n ref: React.Ref<HTMLInputElement>;\n}\n\nexport interface SwapAmountInputViewProps {\n value: string;\n hasError: boolean;\n onChange: (value: string) => void;\n maxFractionDigits?: number;\n field?: InputFieldRegistration;\n ariaLabel?: string;\n className?: string;\n}\n\nexport const SwapAmountInputView: React.FC<SwapAmountInputViewProps> = ({\n value,\n hasError,\n onChange,\n maxFractionDigits = 6,\n field,\n ariaLabel = 'Amount to swap',\n className,\n}) => {\n const normalizeAmountInput = (raw: string) => {\n let val = raw.replace(/[^\\d.,]/g, '')\n const endsWithSeparator = /[.,]$/.test(val)\n val = val.replace(/,/g, '.')\n const firstDot = val.indexOf('.')\n if (firstDot !== -1) {\n const intPart = val.slice(0, firstDot)\n const fractional = val\n .slice(firstDot + 1)\n .replace(/\\./g, '')\n .slice(0, maxFractionDigits)\n if (fractional.length > 0) {\n val = `${intPart}.${fractional}`\n } else {\n val = endsWithSeparator ? `${intPart}.` : intPart\n }\n }\n if (val.startsWith('.')) {\n val = `0${val}`\n }\n return val\n }\n\n const baseClasses = 'text-h2-mobile font-extrabold bg-transparent outline-none text-right w-full min-w-[120px] placeholder:text-text-disabled dark:placeholder:text-text-disabled-dark'\n const colorClasses = hasError\n ? 'text-state-error dark:text-state-error'\n : 'text-text-primary dark:text-text-primary-dark'\n\n return (\n <input\n data-test-id='swap-flow-amount-input'\n placeholder='0.00'\n type='text'\n inputMode='decimal'\n autoComplete='off'\n aria-label={ariaLabel}\n min='0'\n step='any'\n value={value}\n className={twMerge(baseClasses, colorClasses, className)}\n {...field}\n onChange={(event) => {\n let normalized = normalizeAmountInput(event.target.value)\n if (normalized && parseFloat(normalized) < 0) {\n normalized = '0'\n }\n onChange(normalized)\n }}\n onWheel={(event: React.WheelEvent<HTMLInputElement>) => {\n event.currentTarget.blur()\n }}\n />\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\nimport { TextBody } from '../texts'\n\nexport interface SwapOutputAmountViewProps {\n displayOutput: string | number;\n isLoading: boolean;\n loadingElement?: React.ReactNode;\n searchingQuoteLabel?: string;\n className?: string;\n}\n\nexport const SwapOutputAmountView: React.FC<SwapOutputAmountViewProps> = ({\n displayOutput,\n isLoading,\n loadingElement,\n searchingQuoteLabel = 'Searching quote...',\n className,\n}) => {\n const baseClasses = 'text-h2-mobile font-extrabold text-right w-full min-w-[120px] text-text-primary dark:text-text-primary-dark'\n\n return (\n <div data-test-id='swap-flow-output-amount' className={twMerge(baseClasses, className)}>\n {isLoading\n ? (\n <TextBody as='span' variant='text-small' className='text-text-disabled dark:text-text-disabled-dark inline-flex items-center'>\n {loadingElement ?? searchingQuoteLabel}\n </TextBody>\n )\n : (\n displayOutput\n )}\n </div>\n )\n}\n","import React from 'react'\nimport { BannerNotification } from '../banner'\n\nexport interface SwapQuoteErrorsViewProps {\n hasQuoteError: boolean;\n hasBytecodeError: boolean;\n quoteErrorMessage?: string;\n bytecodeErrorMessage?: string;\n}\n\nexport const SwapQuoteErrorsView: React.FC<SwapQuoteErrorsViewProps> = ({\n hasQuoteError,\n hasBytecodeError,\n quoteErrorMessage = 'Unable to get quote for this transaction',\n bytecodeErrorMessage = 'Error building transaction',\n}) => {\n return (\n <div data-test-id='swap-quote-errors'>\n {hasQuoteError && (\n <div className='mt-sm'>\n <BannerNotification\n type='inline'\n variant='error'\n message={quoteErrorMessage}\n />\n </div>\n )}\n {hasBytecodeError && (\n <div className='mt-sm'>\n <BannerNotification\n type='inline'\n variant='error'\n message={bytecodeErrorMessage}\n />\n </div>\n )}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nconst SLIPPAGE_OPTIONS = [10, 50, 100] // basis points\n\nexport interface SwapSlippageToleranceButtonsViewProps {\n slippageBps: number;\n onSelect: (bps: number) => void;\n formatPercentage: (bps: number) => string;\n className?: string;\n}\n\nexport const SwapSlippageToleranceButtonsView: React.FC<SwapSlippageToleranceButtonsViewProps> = ({\n slippageBps,\n onSelect,\n formatPercentage,\n className,\n}) => {\n const baseClasses = 'flex gap-xs'\n\n return (\n <div data-test-id='swap-slippage-tolerance-buttons' className={twMerge(baseClasses, className)}>\n {SLIPPAGE_OPTIONS.map((option) => {\n const isActive = slippageBps === option\n const activeClasses = 'border-brand-primary text-brand-primary bg-brand-tint dark:bg-brand-tint-dark'\n const inactiveClasses = 'border-border-subtle dark:border-border-subtle-dark text-text-secondary dark:text-text-secondary-dark bg-bg-default dark:bg-bg-default-dark'\n const buttonBase = 'px-sm py-xs rounded border text-text-sm cursor-pointer'\n\n return (\n <button\n key={option}\n data-test-id={`slippage-option-${option}`}\n type='button'\n onClick={() => onSelect(option)}\n className={twMerge(buttonBase, isActive ? activeClasses : inactiveClasses)}\n aria-label={`${formatPercentage(option)}% slippage`}\n aria-pressed={isActive}\n >\n {formatPercentage(option)}%\n </button>\n )\n })}\n </div>\n )\n}\n","import React from 'react'\nimport { HiChevronDown } from 'react-icons/hi2'\nimport { twMerge } from 'tailwind-merge'\nimport { TextBody } from '../texts'\n\nexport interface SwapTokenSelectorViewProps {\n token: { symbol: string; logoURI?: string } | null;\n onClick: () => void;\n testId?: string;\n selectTokenLabel?: string;\n className?: string;\n}\n\nexport const SwapTokenSelectorView: React.FC<SwapTokenSelectorViewProps> = ({\n token,\n onClick,\n testId = 'swap-token-selector',\n selectTokenLabel = 'Select token',\n className,\n}) => {\n const baseClasses = 'h-[56px] border border-border-default dark:border-border-default-dark rounded overflow-hidden hover:border-border-strong dark:hover:border-border-strong-dark transition-colors flex items-center px-sm py-[6px] w-full cursor-pointer'\n\n return (\n <button\n data-test-id={testId}\n type='button'\n onClick={onClick}\n className={twMerge(baseClasses, className)}\n aria-label={token ? token.symbol : selectTokenLabel}\n >\n <div className='flex items-center gap-sm flex-1'>\n {token\n ? (\n <>\n {token.logoURI\n ? (\n <img src={token.logoURI} alt={token.symbol} className='w-6 h-6 rounded-full' />\n )\n : (\n <div className='w-6 h-6 rounded-full bg-bg-raised dark:bg-bg-raised-dark text-text-secondary dark:text-text-secondary-dark flex items-center justify-center text-[10px] font-semibold'>\n {(token.symbol || '').slice(0, 3).toUpperCase()}\n </div>\n )}\n <TextBody as='span' className='text-text-primary dark:text-text-primary-dark'>\n {token.symbol}\n </TextBody>\n </>\n )\n : (\n <TextBody as='span' className='text-text-secondary dark:text-text-secondary-dark'>\n {selectTokenLabel}\n </TextBody>\n )}\n </div>\n <div className='flex items-center justify-center w-[18px] h-[18px]'>\n <HiChevronDown className='w-3 h-3 text-text-tertiary dark:text-text-tertiary-dark' />\n </div>\n </button>\n )\n}\n","import React from 'react'\nimport { CollapsibleInfoRow } from '../info-display/CollapsibleInfoRow'\nimport { InfoRowWithIcon } from '../info-display/InfoRowWithIcon'\nimport { InfoRowIconLabel } from '../info-display/InfoRowIconLabel'\nimport { InfoRowIconValue } from '../info-display/InfoRowIconValue'\n\nexport interface SwapQuoteBlockchainCostsViewProps {\n totalCostFormatted: string;\n feePercentage: string;\n gasCostFormatted: string;\n protocolFee: string;\n blockchainCostsLabel?: string;\n networkGasLabel?: string;\n protocolFeeLabel?: string;\n collapseLabel?: string;\n expandLabel?: string;\n}\n\nexport const SwapQuoteBlockchainCostsView: React.FC<SwapQuoteBlockchainCostsViewProps> = ({\n totalCostFormatted,\n feePercentage,\n gasCostFormatted,\n protocolFee,\n blockchainCostsLabel = 'Blockchain Costs',\n networkGasLabel = 'Network Gas',\n protocolFeeLabel = 'Protocol Fee',\n collapseLabel = 'Collapse',\n expandLabel = 'Expand',\n}) => {\n return (\n <div data-test-id='swap-quote-blockchain-costs'>\n <CollapsibleInfoRow\n label={blockchainCostsLabel}\n value={`${totalCostFormatted} ~ ${feePercentage}%`}\n defaultOpen\n collapseLabel={collapseLabel}\n expandLabel={expandLabel}\n >\n <div className='flex flex-col gap-sm'>\n <InfoRowWithIcon>\n <InfoRowIconLabel>{networkGasLabel}</InfoRowIconLabel>\n <InfoRowIconValue>{gasCostFormatted}</InfoRowIconValue>\n </InfoRowWithIcon>\n <InfoRowWithIcon borderBottom>\n <InfoRowIconLabel>{protocolFeeLabel}</InfoRowIconLabel>\n <InfoRowIconValue>{protocolFee}</InfoRowIconValue>\n </InfoRowWithIcon>\n </div>\n </CollapsibleInfoRow>\n </div>\n )\n}\n","import React from 'react'\nimport { HiArrowRight } from 'react-icons/hi2'\nimport { ActionSheet } from '../action-sheet'\nimport { ListItem, ListItemContent, ListItemLeftSide, ListItemRightSide } from '../lists'\nimport { TextBody, TextHeading } from '../texts'\nimport { HighRiskBadge } from '../badges/HighRiskBadge'\nimport { LowRiskBadge } from '../badges/LowRiskBadge'\nimport { MediumRiskBadge } from '../badges/MediumRiskBadge'\nimport { BackgroundContainer, Navbar } from '../layout'\nimport { CloseButton } from '../close-button'\n\nexport interface ChooseAStrategyActionsheetViewProps {\n isOpen: boolean;\n currentActionSheetId: string | null;\n assetName: string;\n apy: string;\n logoUrl: string;\n strategyId: string;\n riskLevel: 'low' | 'medium' | 'high';\n onStrategyClick: () => void;\n onClose: () => void;\n yieldLabel?: string;\n apyLabel?: string;\n riskBadgeLabels: { low: string; medium: string; high: string };\n closeAriaLabel?: string;\n}\n\nexport const ChooseAStrategyActionsheetView: React.FC<ChooseAStrategyActionsheetViewProps> = ({\n isOpen,\n currentActionSheetId,\n assetName,\n apy,\n logoUrl,\n riskLevel,\n onStrategyClick,\n onClose,\n yieldLabel,\n apyLabel = 'APY',\n riskBadgeLabels,\n closeAriaLabel = 'Close',\n}) => {\n const resolvedYieldLabel = yieldLabel ?? `Yield ${assetName}`\n\n const badges = {\n low: <LowRiskBadge label={riskBadgeLabels.low} />,\n medium: <MediumRiskBadge label={riskBadgeLabels.medium} />,\n high: <HighRiskBadge label={riskBadgeLabels.high} />,\n }\n\n const Badge = badges[riskLevel]\n\n return (\n <div data-test-id='choose-strategy-actionsheet' className='flex justify-center'>\n <ActionSheet\n id='choose-strategy'\n currentActionSheetId={currentActionSheetId}\n isOpen={isOpen}\n onClose={onClose}\n position='bottom'\n height='full'\n contentClassName='w-full max-w-[620px] mx-auto'\n >\n <BackgroundContainer className='flex flex-col h-full'>\n <Navbar>\n <CloseButton onClick={onClose} ariaLabel={closeAriaLabel} />\n </Navbar>\n <div className='flex flex-col flex-1 w-full p-6 overflow-hidden'>\n <div className='flex-shrink-0'>\n <TextHeading>{resolvedYieldLabel}</TextHeading>\n <br />\n </div>\n <div className='flex flex-col gap-2 w-full mt-4 overflow-y-auto flex-1 min-h-0'>\n <ListItem className='flex-shrink-0' onClick={onStrategyClick}>\n <ListItemLeftSide>\n <img src={logoUrl} alt={assetName} className='w-10 h-10 rounded-full' />\n </ListItemLeftSide>\n <ListItemContent className='gap-1'>\n <TextBody>{resolvedYieldLabel}</TextBody>\n <TextBody variant='text-small'>{Badge}</TextBody>\n </ListItemContent>\n <ListItemRightSide>\n <div className='flex justify-center items-center gap-1'>\n <span className='text-state-success'>{apy}% {apyLabel}</span>\n <HiArrowRight className='w-4 h-4' />\n </div>\n </ListItemRightSide>\n </ListItem>\n </div>\n </div>\n </BackgroundContainer>\n </ActionSheet>\n </div>\n )\n}\n","import React from 'react'\nimport { TextBody, TextHeading } from '../texts'\nimport { SummaryDetails } from '../details'\nimport { PrimaryButton } from '../buttons'\nimport { BackgroundContainer } from '../layout'\nimport { DetailsHeader } from '../details-header'\n\nexport interface StrategyDetailsViewProps {\n logoUrl: string;\n title: string;\n description: string;\n strategyInfo: { label: string; value: string }[];\n onBack?: () => void;\n onDeposit?: () => void;\n headerTitle?: string;\n strategyInfoTitle?: string;\n depositButtonLabel?: string;\n backAriaLabel?: string;\n}\n\nexport const StrategyDetailsView: React.FC<StrategyDetailsViewProps> = ({\n logoUrl,\n title,\n description,\n strategyInfo,\n onBack,\n onDeposit,\n headerTitle = 'Details',\n strategyInfoTitle = 'Strategy Info',\n depositButtonLabel = 'Deposit',\n backAriaLabel = 'Back',\n}) => {\n return (\n <BackgroundContainer>\n <DetailsHeader title={headerTitle} onBack={onBack} backAriaLabel={backAriaLabel} />\n\n <div data-test-id='strategy-details-content' className='flex-1 min-h-0 overflow-y-auto p-md py-lg pb-24'>\n <div className='flex flex-col gap-lg min-h-full'>\n <div className='inline-flex flex-col items-start gap-sm'>\n <img data-test-id='strategy-logo' src={logoUrl} alt={title} className='w-20 h-20 rounded-full' />\n <TextHeading variant='h5'>{title}</TextHeading>\n </div>\n\n <TextBody variant='text-small'>{description}</TextBody>\n\n <SummaryDetails\n title={strategyInfoTitle}\n items={strategyInfo}\n defaultOpen\n className='bg-bg-subtle dark:bg-bg-subtle-dark lg:!bg-bg-raised'\n />\n </div>\n </div>\n\n <div data-test-id='strategy-details-footer' className='sticky bottom-0 left-0 right-0 border-t border-border-subtle dark:border-border-subtle-dark px-md py-md'>\n <PrimaryButton onClick={onDeposit} className='w-full'>\n {depositButtonLabel}\n </PrimaryButton>\n </div>\n </BackgroundContainer>\n )\n}\n","import React from 'react'\n\nexport interface ProgressIndicatorProps {\n /** Progress percentage (0-100) */\n progress: number;\n /** Optional className for custom styling */\n className?: string;\n}\n\nexport const ProgressIndicator: React.FC<ProgressIndicatorProps> = ({\n progress,\n className = ''\n}) => {\n const clampedProgress = Math.min(100, Math.max(0, progress))\n\n return (\n <div className={`relative h-[12px] w-full ${className}`}>\n <div className='absolute left-0 right-0 top-1/2 -translate-y-1/2 flex items-center'>\n <div\n className='h-[4px] bg-brand-primary rounded-lg transition-all duration-300'\n style={{ width: `${clampedProgress}%` }}\n />\n <div className='flex-1 h-[4px] bg-bg-muted dark:bg-bg-muted-dark rounded-lg ml-1' />\n </div>\n </div>\n )\n}\n","import React from 'react'\n\nexport interface LoadingDotsProps {\n className?: string;\n}\n\n/**\n * Animated loading dots component with a bouncing effect\n * Used to indicate loading states throughout the application\n */\nexport const LoadingDots: React.FC<LoadingDotsProps> = ({ className = '' }) => {\n return (\n <span className={`flex gap-0.5 ${className}`}>\n <span className='animate-bounce' style={{ animationDelay: '0ms', animationDuration: '1.4s' }}>.</span>\n <span className='animate-bounce' style={{ animationDelay: '200ms', animationDuration: '1.4s' }}>.</span>\n <span className='animate-bounce' style={{ animationDelay: '400ms', animationDuration: '1.4s' }}>.</span>\n </span>\n )\n}\n","import React, { useState, useEffect } from 'react'\nimport { MdOutlineSearch } from 'react-icons/md'\n\nexport interface SearchInputProps {\n /**\n * Placeholder text (default: \"Search\")\n */\n placeholder?: string;\n /**\n * Current value\n */\n value?: string;\n /**\n * Whether the input is disabled\n */\n disabled?: boolean;\n /**\n * Change handler — called immediately on every keystroke\n */\n onChange?: (value: string) => void;\n /**\n * Search handler — called immediately on every keystroke (debounce in the container)\n */\n onSearch?: (value: string) => void;\n /**\n * Additional CSS class names for container\n */\n className?: string;\n /**\n * Additional CSS class names for input element (e.g., custom background)\n */\n inputClassName?: string;\n /**\n * Whether the input should be auto focused\n */\n autoFocus?: boolean;\n /**\n * test id for the container\n */\n containerTestId?: string;\n /**\n * test id for the input element\n */\n inputTestId?: string;\n}\n\n/**\n * SearchInput - Search input component with search icon\n */\nexport const SearchInput: React.FC<SearchInputProps> = ({\n placeholder = 'Search',\n value: controlledValue,\n disabled = false,\n onChange,\n onSearch,\n className = '',\n inputClassName,\n autoFocus = false,\n containerTestId,\n inputTestId,\n}) => {\n const [internalValue, setInternalValue] = useState(controlledValue || '')\n\n // Update internal value when controlled value changes\n useEffect(() => {\n if (controlledValue !== undefined) {\n setInternalValue(controlledValue)\n }\n }, [controlledValue])\n\n const handleInputChange = (newValue: string) => {\n setInternalValue(newValue)\n onChange?.(newValue)\n onSearch?.(newValue)\n }\n\n return (\n <div className={`flex-1 flex items-center relative ${className}`} data-testid={containerTestId}>\n <input\n data-testid={inputTestId}\n type='text'\n value={internalValue}\n placeholder={placeholder}\n disabled={disabled}\n autoFocus={autoFocus}\n onChange={(e) => handleInputChange(e.target.value)}\n className={[\n 'w-full h-full rounded p-4 pr-12 leading-normal tracking-wide',\n !inputClassName ? 'bg-bg-subtle dark:bg-bg-subtle-dark' : '',\n 'placeholder:text-text-disabled dark:placeholder:text-text-disabled-dark text-text-primary dark:text-text-primary-dark',\n 'focus:outline-none focus:ring-2 focus:ring-brand-primary',\n disabled ? 'cursor-not-allowed opacity-50' : '',\n inputClassName || '',\n ].filter(Boolean).join(' ')}\n />\n <MdOutlineSearch className='w-4 h-4 text-text-secondary absolute right-4' />\n </div>\n )\n}\n\nexport default SearchInput\n","import React from 'react'\nimport { MdOutlineSearchOff } from 'react-icons/md'\nimport { TextBody, TextHeading } from '../texts'\n\nexport interface SearchEmptyStateProps {\n title: string;\n description: string;\n}\n\nexport const SearchEmptyState: React.FC<SearchEmptyStateProps> = ({\n title,\n description,\n}) => {\n return (\n <div className='w-full py-md bg-bg-default dark:bg-bg-default-dark rounded-lg flex flex-col justify-center items-center gap-sm h-full'>\n <div className='w-full flex flex-col justify-center items-center gap-md py-20'>\n <div className='flex flex-col justify-center items-center gap-md text-center'>\n <div className='w-20 h-20 bg-bg-muted dark:bg-bg-muted-dark rounded-full flex justify-center items-center'>\n <MdOutlineSearchOff className='w-10 h-10 text-text-tertiary dark:text-text-tertiary-dark' />\n </div>\n <TextHeading variant='h3'>{title}</TextHeading>\n </div>\n <div className='self-stretch text-center'>\n <TextBody variant='text-small'>{description}</TextBody>\n </div>\n </div>\n </div>\n )\n}\n","import { TextBody } from '../texts'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport React from 'react'\n\nexport interface CollapsibleSectionProps {\n /** Section title */\n title: string;\n /** Optional subtitle shown next to title */\n subtitle?: string;\n /** Content to show when expanded */\n children: React.ReactNode;\n /** Whether section is open by default (uncontrolled mode) */\n defaultOpen?: boolean;\n /** Controlled open state */\n open?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n /** Optional className */\n className?: string;\n /** Aria label text for \"Collapse\" */\n collapseText: string;\n /** Aria label text for \"Expand\" */\n expandText: string;\n}\n\nexport const CollapsibleSection: React.FC<CollapsibleSectionProps> = ({\n title,\n subtitle,\n children,\n defaultOpen = false,\n open: controlledOpen,\n onOpenChange,\n className = '',\n collapseText,\n expandText,\n}) => {\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen)\n\n // Use controlled state if provided, otherwise use internal state\n const isOpen = controlledOpen !== undefined ? controlledOpen : internalOpen\n\n const handleToggle = () => {\n const newOpenState = !isOpen\n if (controlledOpen === undefined) {\n setInternalOpen(newOpenState)\n }\n onOpenChange?.(newOpenState)\n }\n\n return (\n <div className={`flex flex-col gap-sm w-full ${className}`}>\n <button\n type='button'\n onClick={handleToggle}\n className='flex items-center justify-between w-full text-left cursor-pointer'\n aria-expanded={isOpen}\n aria-label={`${isOpen ? collapseText : expandText} ${title}`}\n >\n <div className='flex items-center gap-xs'>\n <TextBody className='text-white font-medium'>{title}</TextBody>\n </div>\n <div className='flex items-center gap-xs'>\n {subtitle && (\n <TextBody variant='text-small'>{subtitle}</TextBody>\n )}\n <motion.svg\n className='w-5 h-5 text-gray-400'\n fill='none'\n stroke='currentColor'\n viewBox='0 0 24 24'\n animate={{ rotate: isOpen ? 180 : 0 }}\n transition={{ duration: 0.2, ease: 'easeInOut' }}\n >\n <path strokeLinecap='round' strokeLinejoin='round' strokeWidth={2} d='M5 9l7 7 7-7' />\n </motion.svg>\n </div>\n </button>\n <AnimatePresence>\n {isOpen && (\n <motion.div\n initial={{ height: 0, opacity: 0 }}\n animate={{ height: 'auto', opacity: 1 }}\n exit={{ height: 0, opacity: 0 }}\n transition={{ duration: 0.2, ease: 'easeInOut' }}\n style={{ overflow: 'hidden' }}\n >\n {children}\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n )\n}\n","import React from 'react'\n\nexport interface TransactionScreenIconProps {\n type: 'processing' | 'success' | 'warning';\n gradient?: string;\n}\n\nexport const TransactionScreenIcon: React.FC<TransactionScreenIconProps> = ({\n type,\n gradient = 'linear-gradient(135deg, #F6A700 0%, #F59E0B 100%)'\n}) => {\n if (type === 'success') {\n return (\n <div className='relative w-20 h-20'>\n <div className='w-full h-full rounded-full bg-brand-primary flex items-center justify-center'>\n <svg className='w-8 h-8 text-white' fill='none' viewBox='0 0 24 24' stroke='currentColor' strokeWidth={3}>\n <path strokeLinecap='round' strokeLinejoin='round' d='M5 13l4 4L19 7' />\n </svg>\n </div>\n </div>\n )\n }\n\n if (type === 'warning') {\n return (\n <div className='relative w-[83px] h-[83px]'>\n <div className='w-full h-full rounded-full flex items-center justify-center' style={{ background: gradient }}>\n <svg className='w-8 h-8 text-bg-default dark:text-bg-default-dark' fill='currentColor' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'>\n <path d='M16 5.33334C15.6444 5.33334 15.3111 5.51112 15.1111 5.8L5.11112 21.8C4.91112 22.0889 4.91112 22.4667 5.11112 22.7556C5.31112 23.0444 5.64445 23.2222 6.00001 23.2222H26C26.3556 23.2222 26.6889 23.0444 26.8889 22.7556C27.0889 22.4667 27.0889 22.0889 26.8889 21.8L16.8889 5.8C16.6889 5.51112 16.3556 5.33334 16 5.33334ZM16 10.6667C16.5333 10.6667 17 11.1333 17 11.6667V16C17 16.5333 16.5333 17 16 17C15.4667 17 15 16.5333 15 16V11.6667C15 11.1333 15.4667 10.6667 16 10.6667ZM16 19.3333C16.7333 19.3333 17.3333 19.9333 17.3333 20.6667C17.3333 21.4 16.7333 22 16 22C15.2667 22 14.6667 21.4 14.6667 20.6667C14.6667 19.9333 15.2667 19.3333 16 19.3333Z' />\n </svg>\n </div>\n </div>\n )\n }\n\n return (\n <div className='relative w-[83px] h-[83px]'>\n <div className='w-full h-full rounded-full flex items-center justify-center' style={{ background: gradient }}>\n <svg width='11' height='10' viewBox='0 0 11 10' fill='none' xmlns='http://www.w3.org/2000/svg' className='w-8 h-8 text-white'>\n <path d='M3.66659 8.33301H7.33325V7.08301C7.33325 6.62468 7.15374 6.23231 6.79471 5.90593C6.43568 5.57954 6.00409 5.41634 5.49992 5.41634C4.99575 5.41634 4.56415 5.57954 4.20513 5.90593C3.8461 6.23231 3.66659 6.62468 3.66659 7.08301V8.33301ZM5.49992 4.58301C6.00409 4.58301 6.43568 4.41981 6.79471 4.09342C7.15374 3.76704 7.33325 3.37467 7.33325 2.91634V1.66634H3.66659V2.91634C3.66659 3.37467 3.8461 3.76704 4.20513 4.09342C4.56415 4.41981 4.99575 4.58301 5.49992 4.58301ZM2.29159 9.16634C2.16172 9.16634 2.05287 9.12641 1.96502 9.04655C1.87718 8.96669 1.83325 8.86773 1.83325 8.74968C1.83325 8.63162 1.87718 8.53266 1.96502 8.4528C2.05287 8.37294 2.16172 8.33301 2.29159 8.33301H2.74992V7.08301C2.74992 6.6594 2.85877 6.26183 3.07648 5.8903C3.29419 5.51877 3.59784 5.2219 3.98742 4.99967C3.59784 4.77745 3.29419 4.48058 3.07648 4.10905C2.85877 3.73752 2.74992 3.33995 2.74992 2.91634V1.66634H2.29159C2.16172 1.66634 2.05287 1.62641 1.96502 1.54655C1.87718 1.46669 1.83325 1.36773 1.83325 1.24967C1.83325 1.13162 1.87718 1.03266 1.96502 0.952799C2.05287 0.872938 2.16172 0.833008 2.29159 0.833008H8.70825C8.83811 0.833008 8.94697 0.872938 9.03481 0.952799C9.12266 1.03266 9.16659 1.13162 9.16659 1.24967C9.16659 1.36773 9.12266 1.46669 9.03481 1.54655C8.94697 1.62641 8.83811 1.66634 8.70825 1.66634H8.24992V2.91634C8.24992 3.33995 8.14106 3.73752 7.92336 4.10905C7.70565 4.48058 7.402 4.77745 7.01242 4.99967C7.402 5.2219 7.70565 5.51877 7.92336 5.8903C8.14106 6.26183 8.24992 6.6594 8.24992 7.08301V8.33301H8.70825C8.83811 8.33301 8.94697 8.37294 9.03481 8.4528C9.12266 8.53266 9.16659 8.63162 9.16659 8.74968C9.16659 8.86773 9.12266 8.96669 9.03481 9.04655C8.94697 9.12641 8.83811 9.16634 8.70825 9.16634H2.29159Z' fill='currentColor' />\n </svg>\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport { BackgroundContainer } from '../layout'\nimport { DetailsHeader } from '../details-header'\nimport { CloseButton } from '../close-button'\nimport { ProgressIndicator } from '../progress'\nimport { TextHeading } from '../texts'\nimport { TransactionScreenIcon } from '../transaction-screen-icon/TransactionScreenIcon'\nimport type { TransactionScreenIconProps } from '../transaction-screen-icon/TransactionScreenIcon'\n\nexport interface TransactionScreenProps {\n progress: number;\n iconType: TransactionScreenIconProps['type'];\n iconGradient?: string;\n title: React.ReactNode;\n description: React.ReactNode;\n /** Renders a close (X) button in the top-left */\n onClose?: () => void;\n /** Renders a back-arrow header */\n onBack?: () => void;\n backTitle?: string;\n /** Bottom action bar (buttons) */\n actions?: React.ReactNode;\n /** Card / details content between hero and actions */\n children?: React.ReactNode;\n /** data-testid placed on the header wrapper div when onClose is used */\n testId?: string;\n}\n\nexport const TransactionScreen: React.FC<TransactionScreenProps> = ({\n progress,\n iconType,\n iconGradient,\n title,\n description,\n onClose,\n onBack,\n backTitle = '',\n actions,\n children,\n testId,\n}) => {\n return (\n <BackgroundContainer>\n <div className='flex flex-col h-full'>\n {onBack && <DetailsHeader title={backTitle} onBack={onBack} />}\n {onClose && (\n <div data-testid={testId} className='flex justify-start px-md pt-md'>\n <CloseButton onClick={onClose} />\n </div>\n )}\n\n <div className='w-full px-md pt-sm'>\n <ProgressIndicator progress={progress} />\n </div>\n\n <div className='flex-1 overflow-y-auto px-md py-lg flex flex-col gap-lg'>\n <div className='flex flex-col items-center gap-md pt-lg'>\n <TransactionScreenIcon type={iconType} gradient={iconGradient} />\n <TextHeading variant='h-large'>{title}</TextHeading>\n <div className='text-text-md-mobile font-poppins text-text-secondary dark:text-text-secondary-dark text-center' style={{ maxWidth: '350px' }}>\n {description}\n </div>\n </div>\n\n {children}\n\n <div className='flex-1' />\n </div>\n\n {actions && (\n <div className='px-md pb-md'>\n {actions}\n </div>\n )}\n </div>\n </BackgroundContainer>\n )\n}\n","import React from 'react'\nimport { SectionCard } from '../layout'\nimport { TextBody } from '../texts'\n\nexport interface TransactionScreenInvestmentCardProps {\n strategyName: React.ReactNode;\n apyLabel: string;\n apyValue: string;\n iconSrc?: string;\n iconAlt?: string;\n amountUSD: React.ReactNode;\n amountToken: React.ReactNode;\n}\n\nexport const TransactionScreenInvestmentCard: React.FC<TransactionScreenInvestmentCardProps> = ({\n strategyName,\n apyLabel,\n apyValue,\n iconSrc,\n iconAlt,\n amountUSD,\n amountToken,\n}) => {\n const [hasImageError, setHasImageError] = React.useState(false)\n\n React.useEffect(() => {\n setHasImageError(false)\n }, [iconSrc])\n\n const shouldShowImage = Boolean(iconSrc) && !hasImageError\n const fallbackLabel = (iconAlt || '?').slice(0, 1).toUpperCase()\n\n return (\n <SectionCard className='!p-[22px]'>\n <div className='flex items-center justify-between'>\n <div className='flex flex-col items-start gap-xs'>\n <div className='text-accent-lg-mobile font-poppins text-text-secondary dark:text-text-secondary-dark'>\n {strategyName}\n </div>\n <div className='text-text-sm-mobile font-poppins text-text-secondary dark:text-text-secondary-dark'>\n {apyLabel} <TextBody as='span' className='text-state-success'>{apyValue}</TextBody>\n </div>\n </div>\n <div className='flex items-start gap-sm'>\n <div className='w-8 h-8 rounded-full bg-bg-muted dark:bg-bg-muted-dark flex items-center justify-center'>\n {shouldShowImage\n ? <img src={iconSrc} alt={iconAlt} className='w-6 h-6 rounded-full' onError={() => setHasImageError(true)} />\n : <span className='text-xs font-semibold text-text-secondary dark:text-text-secondary-dark'>{fallbackLabel}</span>}\n </div>\n <div className='flex flex-col items-end'>\n <div className='text-h2-mobile font-extrabold font-poppins text-text-primary dark:text-text-primary-dark'>\n {amountUSD}\n </div>\n <div className='text-text-sm-mobile font-poppins text-text-secondary dark:text-text-secondary-dark'>\n {amountToken}\n </div>\n </div>\n </div>\n </div>\n </SectionCard>\n )\n}\n","import { IoCheckmarkOutline, IoTimeOutline, IoAlertCircleOutline } from 'react-icons/io5'\nimport type { TransactionStepStatus } from '../../types/transaction'\n\nexport interface StepStatusIconProps {\n status: TransactionStepStatus;\n}\n\n/**\n * Renders a step status icon based on the step status\n * Only three icon types: success (checkmark), timer (clock), and error (alert)\n */\nexport function StepStatusIcon ({ status }: StepStatusIconProps) {\n switch (status) {\n case 'completed':\n return (\n <div className='w-6 h-6 rounded-full bg-bg-muted dark:bg-bg-muted-dark flex items-center justify-center flex-shrink-0'>\n <IoCheckmarkOutline className='w-4 h-4' style={{ color: 'var(--color-state-success, #2BA176)' }} />\n </div>\n )\n case 'processing':\n return (\n <div className='w-6 h-6 rounded-full bg-bg-muted dark:bg-bg-muted-dark flex items-center justify-center flex-shrink-0'>\n <IoTimeOutline className='w-4 h-4' style={{ color: 'var(--color-state-warning, #F6A700)' }} />\n </div>\n )\n case 'failed':\n return (\n <div className='w-6 h-6 rounded-full bg-bg-muted dark:bg-bg-muted-dark flex items-center justify-center flex-shrink-0'>\n <IoAlertCircleOutline className='w-4 h-4' style={{ color: 'var(--color-state-error, #FF4D4F)' }} />\n </div>\n )\n }\n}\n","import type { TransactionStep } from '../../types/transaction'\n\nexport interface StepStatusTextProps {\n step: TransactionStep;\n completedText: string;\n processingText: string;\n failedText: string;\n viewOnExplorerText: string;\n}\n\n/**\n * Renders the status text and optional explorer link for a step\n */\nexport function StepStatusText ({\n step,\n completedText,\n processingText,\n failedText,\n viewOnExplorerText,\n}: StepStatusTextProps) {\n // Use custom status text if provided\n if (step.statusText) {\n const textColorClass =\n step.status === 'completed'\n ? 'text-text-primary dark:text-text-primary-dark'\n : step.status === 'processing'\n ? 'text-text-secondary dark:text-text-secondary-dark'\n : step.status === 'failed'\n ? 'text-state-error'\n : 'text-text-disabled dark:text-text-disabled-dark'\n\n return <span className={`text-sm ${textColorClass}`}>{step.statusText}</span>\n }\n\n // Show explorer link if completed and URL exists\n if (step.status === 'completed' && step.explorerUrl) {\n return (\n <a\n href={step.explorerUrl}\n target='_blank'\n rel='noopener noreferrer'\n className='text-sm text-brand-primary dark:text-brand-primary-dark underline hover:no-underline'\n >\n {viewOnExplorerText}\n </a>\n )\n }\n\n // Default status text\n const defaultText =\n step.status === 'completed'\n ? completedText\n : step.status === 'processing'\n ? processingText\n : failedText\n\n const textColorClass =\n step.status === 'completed'\n ? 'text-text-primary dark:text-text-primary-dark'\n : step.status === 'processing'\n ? 'text-text-secondary dark:text-text-secondary-dark'\n : 'text-state-error'\n\n return <span className={`text-sm ${textColorClass}`}>{defaultText}</span>\n}\n","import type { TransactionStep } from '../../types/transaction'\nimport { StepStatusText } from './StepStatusText'\n\nexport interface StepDisplayProps {\n step: TransactionStep;\n completedText: string;\n processingText: string;\n failedText: string;\n viewOnExplorerText: string;\n}\n\n/**\n * Renders a single processing step with icon, label, and status\n */\nexport function StepDisplay ({ step, completedText, processingText, failedText, viewOnExplorerText }: StepDisplayProps) {\n return (\n <div className='flex items-start justify-between gap-4 w-full'>\n <div className='flex-1 min-w-0'>\n <p className='text-sm text-text-primary dark:text-text-primary-dark font-medium'>\n {step.label}\n </p>\n </div>\n <div className='flex-shrink-0'>\n {step.value\n ? (\n <span className='text-sm text-text-secondary dark:text-text-secondary-dark'>\n {step.value}\n </span>\n )\n : (\n <StepStatusText step={step} completedText={completedText} processingText={processingText} failedText={failedText} viewOnExplorerText={viewOnExplorerText} />\n )}\n </div>\n </div>\n )\n}\n","/**\n * Transaction Processing Details Component\n *\n * Displays a visual breakdown of transaction processing steps with status icons,\n * vertical connectors, and explorer links for deposit/withdraw flows.\n */\n\nimport { SummaryDetails } from '../details'\nimport type { TransactionStep } from '../../types/transaction'\nimport { StepStatusIcon } from './StepStatusIcon'\nimport { StepDisplay } from './StepDisplay'\nimport type { TransactionProcessingDetailsLabels } from '../../types/transaction-processing-details-labels'\n\nexport interface TransactionProcessingDetailsProps {\n /** Array of transaction steps to display */\n steps: TransactionStep[];\n /** Optional CSS class name */\n className?: string;\n /** Whether the details section is open by default */\n defaultOpen?: boolean;\n /** All translated strings for this component */\n labels: TransactionProcessingDetailsLabels;\n}\n\n/**\n * Displays transaction processing steps with visual breakdown using vertical connectors\n * Similar to SwapProcessingDetails but designed for deposit/withdraw flows\n */\nexport function TransactionProcessingDetails ({\n steps,\n className = 'bg-bg-subtle dark:bg-bg-subtle-dark lg:!bg-bg-raised',\n defaultOpen = true,\n labels,\n}: TransactionProcessingDetailsProps) {\n if (!steps || steps.length === 0) {\n return null\n }\n\n const getProcessingSteps = () => {\n return (\n <div className='flex flex-col w-full'>\n {steps.map((step, index) => (\n <div key={`step-${index}`} className='flex gap-3'>\n {/* Icon column with vertical connector */}\n <div className='flex flex-col items-center'>\n {step.status && <StepStatusIcon status={step.status} />}\n {index < steps.length - 1 && step.status && (\n <div className='w-px flex-1 min-h-[16px] bg-white my-1' />\n )}\n </div>\n\n {/* Content column */}\n <div className='flex-1 pb-2 min-w-0'>\n <StepDisplay step={step} completedText={labels.completedText} processingText={labels.processingText} failedText={labels.failedText} viewOnExplorerText={labels.viewOnExplorerText} />\n </div>\n </div>\n ))}\n </div>\n )\n }\n\n // Build items array for SummaryDetails\n const items = [\n {\n label: '',\n value: getProcessingSteps(),\n valueClassName: 'flex flex-col gap-0 w-full',\n },\n ]\n\n return (\n <SummaryDetails\n title={labels.title}\n items={items}\n defaultOpen={defaultOpen}\n className={className}\n />\n )\n}\n","import React from 'react'\n\nexport interface TokenWithChainBadgeProps {\n tokenLogoUrl?: string;\n tokenAlt?: string;\n chainId?: number;\n chainLogoUrl?: string;\n chainName?: string;\n}\n\nexport const TokenWithChainBadge: React.FC<TokenWithChainBadgeProps> = ({\n tokenLogoUrl,\n tokenAlt,\n chainLogoUrl,\n chainName,\n}) => {\n const fallbackText = encodeURIComponent((tokenAlt || 'TOK').slice(0, 3).toUpperCase())\n const fallbackSrc = `https://placehold.co/40x40?text=${fallbackText}`\n\n return (\n <div className='relative w-10 h-10'>\n <img\n src={tokenLogoUrl || fallbackSrc}\n alt={tokenAlt || ''}\n className='object-cover w-10 h-10 rounded-full'\n onError={(e) => {\n (e.target as HTMLImageElement).src = fallbackSrc\n }}\n />\n {chainLogoUrl && (\n <img\n src={chainLogoUrl}\n alt={chainName}\n className='absolute object-cover w-6 h-6 p-px bg-white border rounded-full -bottom-1 -right-1 border-bg-default'\n onError={(e) => {\n (e.target as HTMLImageElement).style.display = 'none'\n }}\n />\n )}\n </div>\n )\n}\n","import React from 'react'\nimport { SectionCard } from '../layout'\nimport { TransactionScreen } from '../transaction-screen'\nimport { MdOutlineSwapHoriz } from 'react-icons/md'\nimport type { TransactionStep } from '../../types/transaction'\nimport type { TransactionProcessingDetailsLabels } from '../../types/transaction-processing-details-labels'\nimport { TransactionProcessingDetails } from '../transaction-processing-details'\n\nexport interface SwapProcessingViewProps {\n fromTokenSymbol: string;\n fromTokenIcon: string;\n toTokenSymbol: string;\n toTokenIcon: string;\n formattedInputAmount: string;\n formattedOutputAmount: string;\n formattedInputAmountUSD: string;\n formattedOutputAmountUSD: string;\n progress: number;\n transactionSteps: TransactionStep[];\n onClose: () => void;\n onGoToHistory: () => void;\n titleText: string;\n descriptionPrefix: string;\n activityHistoryText: string;\n processingDetailsLabels: TransactionProcessingDetailsLabels;\n}\n\nexport const SwapProcessingView: React.FC<SwapProcessingViewProps> = ({\n fromTokenSymbol,\n fromTokenIcon,\n toTokenSymbol,\n toTokenIcon,\n formattedInputAmount,\n formattedOutputAmount,\n formattedInputAmountUSD,\n formattedOutputAmountUSD,\n progress,\n transactionSteps,\n onClose,\n onGoToHistory,\n titleText,\n descriptionPrefix,\n activityHistoryText,\n processingDetailsLabels,\n}) => {\n return (\n <TransactionScreen\n testId='swap-processing-screen'\n onClose={onClose}\n progress={progress}\n iconType='processing'\n title={<span data-testid='swap-processing-title'>{titleText}</span>}\n description={\n <>\n {descriptionPrefix}{' '}\n <span\n className='font-semibold underline underline-offset-2 cursor-pointer text-brand-primary'\n onClick={onGoToHistory}\n >\n {activityHistoryText}.\n </span>\n </>\n }\n >\n <SectionCard className='!p-[22px]'>\n <div className='flex items-center justify-between w-full relative px-md'>\n <div className='flex flex-col items-center gap-sm'>\n <img src={fromTokenIcon} alt={fromTokenSymbol} className='w-8 h-8 rounded-full' />\n <div className='flex flex-col items-center gap-xs'>\n <div className='text-text-sm-mobile font-poppins text-text-secondary dark:text-text-secondary-dark'>\n {formattedInputAmount} {fromTokenSymbol}\n </div>\n <div className='text-h2-mobile font-extrabold font-poppins text-text-primary dark:text-text-primary-dark'>\n {formattedInputAmountUSD}\n </div>\n </div>\n </div>\n\n <div className='absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 bg-brand-secondary rounded-full p-2 shadow-md z-10'>\n <MdOutlineSwapHoriz className='w-5 h-5' />\n </div>\n\n <div className='flex flex-col items-center gap-sm'>\n <img src={toTokenIcon} alt={toTokenSymbol} className='w-8 h-8 rounded-full' />\n <div className='flex flex-col items-center gap-xs'>\n <div className='text-text-sm-mobile font-poppins text-text-secondary dark:text-text-secondary-dark'>\n ~{formattedOutputAmount} {toTokenSymbol}\n </div>\n <div className='text-h2-mobile font-extrabold font-poppins text-text-primary dark:text-text-primary-dark'>\n {formattedOutputAmountUSD}\n </div>\n </div>\n </div>\n </div>\n </SectionCard>\n\n <TransactionProcessingDetails\n steps={transactionSteps}\n className='bg-bg-subtle dark:bg-bg-subtle-dark lg:!bg-bg-raised dark:lg:!bg-bg-raised-dark'\n labels={processingDetailsLabels}\n />\n </TransactionScreen>\n )\n}\n","import React from 'react'\nimport { TransactionProcessingDetails } from '../transaction-processing-details'\nimport { TransactionScreen } from '../transaction-screen'\nimport { MdOutlineSwapHoriz } from 'react-icons/md'\nimport { TokenWithChainBadge } from '../token-with-chain-badge'\nimport { SectionCard } from '../layout'\nimport type { TransactionStep } from '../../types/transaction'\nimport type { TransactionProcessingDetailsLabels } from '../../types/transaction-processing-details-labels'\n\nexport interface SwapCrossChainProcessingViewProps {\n fromTokenSymbol: string;\n fromTokenIcon: string;\n toTokenSymbol: string;\n toTokenIcon: string;\n originChainId?: number;\n destinationChainId?: number;\n originChainLogoUrl: string;\n originChainName: string;\n destinationChainLogoUrl: string;\n destinationChainName: string;\n formattedInputAmount: string;\n formattedOutputAmount: string;\n formattedInputAmountUSD: string;\n formattedOutputAmountUSD: string;\n progress: number;\n title: string;\n description: string;\n transactionSteps: TransactionStep[];\n onClose: () => void;\n onGoToHistory: () => void;\n viewHistoryText: string;\n processingDetailsLabels: TransactionProcessingDetailsLabels;\n}\n\nexport const SwapCrossChainProcessingView: React.FC<SwapCrossChainProcessingViewProps> = ({\n fromTokenSymbol,\n fromTokenIcon,\n toTokenSymbol,\n toTokenIcon,\n originChainId,\n destinationChainId,\n originChainLogoUrl,\n originChainName,\n destinationChainLogoUrl,\n destinationChainName,\n formattedInputAmount,\n formattedOutputAmount,\n formattedInputAmountUSD,\n formattedOutputAmountUSD,\n progress,\n title,\n description,\n transactionSteps,\n onClose,\n onGoToHistory,\n viewHistoryText,\n processingDetailsLabels,\n}) => {\n return (\n <TransactionScreen\n onClose={onClose}\n progress={progress}\n iconType='processing'\n title={title}\n description={\n <>\n {description}{' '}\n <span\n className='font-semibold underline cursor-pointer underline-offset-2 text-brand-primary'\n onClick={onGoToHistory}\n >\n {viewHistoryText}\n </span>\n .\n </>\n }\n >\n <SectionCard className='!p-[22px]'>\n <div className='relative flex items-center justify-between w-full px-md'>\n <div className='flex flex-col items-center gap-sm'>\n <TokenWithChainBadge\n tokenLogoUrl={fromTokenIcon}\n tokenAlt={fromTokenSymbol}\n chainId={originChainId}\n chainLogoUrl={originChainLogoUrl}\n chainName={originChainName}\n />\n <div className='flex flex-col items-center gap-xs'>\n <div className='text-text-sm-mobile font-poppins text-text-secondary dark:text-text-secondary-dark'>\n {formattedInputAmount} {fromTokenSymbol}\n </div>\n <div className='text-h2-mobile font-extrabold font-poppins text-text-primary dark:text-text-primary-dark'>\n {formattedInputAmountUSD}\n </div>\n </div>\n </div>\n\n <div className='absolute z-10 p-2 -translate-x-1/2 -translate-y-1/2 rounded-full shadow-md left-1/2 top-1/2 bg-brand-secondary'>\n <MdOutlineSwapHoriz className='w-5 h-5' />\n </div>\n\n <div className='flex flex-col items-center gap-sm'>\n <TokenWithChainBadge\n tokenLogoUrl={toTokenIcon}\n tokenAlt={toTokenSymbol}\n chainId={destinationChainId}\n chainLogoUrl={destinationChainLogoUrl}\n chainName={destinationChainName}\n />\n <div className='flex flex-col items-center gap-xs'>\n <div className='text-text-sm-mobile font-poppins text-text-secondary dark:text-text-secondary-dark'>\n ~{formattedOutputAmount} {toTokenSymbol}\n </div>\n <div className='text-h2-mobile font-extrabold font-poppins text-text-primary dark:text-text-primary-dark'>\n {formattedOutputAmountUSD}\n </div>\n </div>\n </div>\n </div>\n </SectionCard>\n\n <TransactionProcessingDetails\n steps={transactionSteps}\n className='bg-bg-subtle dark:bg-bg-subtle-dark lg:!bg-bg-raised dark:lg:!bg-bg-raised-dark'\n labels={processingDetailsLabels}\n />\n </TransactionScreen>\n )\n}\n","import React from 'react'\nimport { PrimaryButton, SecondaryButton } from '../buttons'\nimport { SectionCard } from '../layout'\nimport { TransactionScreen } from '../transaction-screen'\nimport { MdOutlineSwapHoriz } from 'react-icons/md'\nimport { TransactionProcessingDetails } from '../transaction-processing-details'\nimport type { TransactionStep } from '../../types/transaction'\nimport type { TransactionProcessingDetailsLabels } from '../../types/transaction-processing-details-labels'\n\nexport interface SwapSignatureWarningViewProps {\n fromTokenSymbol: string;\n fromTokenIcon: string;\n toTokenSymbol: string;\n toTokenIcon: string;\n formattedInputAmount: string;\n formattedOutputAmount: string;\n formattedInputAmountUSD: string;\n formattedOutputAmountUSD: string;\n progress: number;\n errorTitle: string;\n errorDescription: string;\n transactionSteps: TransactionStep[];\n onCancel: () => void;\n onTryAgain: () => void;\n cancelButtonText: string;\n retryButtonText: string;\n processingDetailsLabels: TransactionProcessingDetailsLabels;\n}\n\nexport const SwapSignatureWarningView: React.FC<SwapSignatureWarningViewProps> = ({\n fromTokenSymbol,\n fromTokenIcon,\n toTokenSymbol,\n toTokenIcon,\n formattedInputAmount,\n formattedOutputAmount,\n formattedInputAmountUSD,\n formattedOutputAmountUSD,\n progress,\n errorTitle,\n errorDescription,\n transactionSteps,\n onCancel,\n onTryAgain,\n cancelButtonText,\n retryButtonText,\n processingDetailsLabels,\n}) => {\n return (\n <TransactionScreen\n testId='swap-signature-warning-screen'\n onClose={onCancel}\n progress={progress}\n iconType='warning'\n title={<span data-testid='swap-signature-warning-title'>{errorTitle}</span>}\n description={errorDescription}\n actions={\n <div data-testid='swap-signature-warning-actions' className='flex gap-sm w-full'>\n <SecondaryButton data-testid='swap-signature-warning-cancel' className='flex-1' onClick={onCancel}>\n {cancelButtonText}\n </SecondaryButton>\n <PrimaryButton data-testid='swap-signature-warning-retry' className='flex-1' onClick={onTryAgain}>\n {retryButtonText}\n </PrimaryButton>\n </div>\n }\n >\n <SectionCard className='!p-[22px]'>\n <div className='flex items-center justify-between w-full relative px-md'>\n <div className='flex flex-col items-center gap-sm'>\n <img src={fromTokenIcon} alt={fromTokenSymbol} className='w-8 h-8 rounded-full' />\n <div className='flex flex-col items-center gap-xs'>\n <div className='text-text-sm-mobile font-poppins text-text-secondary dark:text-text-secondary-dark'>\n {formattedInputAmount} {fromTokenSymbol}\n </div>\n <div className='text-h2-mobile font-extrabold font-poppins text-text-primary dark:text-text-primary-dark'>\n {formattedInputAmountUSD}\n </div>\n </div>\n </div>\n\n <div className='absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 bg-brand-secondary rounded-full p-2 shadow-md z-10'>\n <MdOutlineSwapHoriz className='w-5 h-5' />\n </div>\n\n <div className='flex flex-col items-center gap-sm'>\n <img src={toTokenIcon} alt={toTokenSymbol} className='w-8 h-8 rounded-full' />\n <div className='flex flex-col items-center gap-xs'>\n <div className='text-text-sm-mobile font-poppins text-text-secondary dark:text-text-secondary-dark'>\n ~{formattedOutputAmount} {toTokenSymbol}\n </div>\n <div className='text-h2-mobile font-extrabold font-poppins text-text-primary dark:text-text-primary-dark'>\n {formattedOutputAmountUSD}\n </div>\n </div>\n </div>\n </div>\n </SectionCard>\n\n <TransactionProcessingDetails\n steps={transactionSteps}\n defaultOpen\n className='bg-bg-subtle dark:bg-bg-subtle-dark lg:!bg-bg-raised dark:lg:!bg-bg-raised-dark'\n labels={processingDetailsLabels}\n />\n </TransactionScreen>\n )\n}\n","import React from 'react'\nimport { PrimaryButton } from '../buttons'\nimport { SectionCard } from '../layout'\nimport { TransactionScreen } from '../transaction-screen'\nimport { MdOutlineSwapHoriz } from 'react-icons/md'\nimport type { TransactionStep } from '../../types/transaction'\nimport type { SwapSuccessLabels } from '../../types/swap-success-labels'\nimport type { TransactionProcessingDetailsLabels } from '../../types/transaction-processing-details-labels'\nimport { TransactionProcessingDetails } from '../transaction-processing-details'\n\nexport interface SwapSuccessViewProps {\n fromTokenSymbol: string;\n fromTokenIcon: string;\n toTokenSymbol: string;\n toTokenIcon: string;\n formattedInputAmount: string;\n formattedOutputAmount: string;\n formattedInputAmountUSD: string;\n formattedOutputAmountUSD: string;\n transactionSteps: TransactionStep[];\n onClose: () => void;\n onStartNewSwap: () => void;\n onGoToWallet: () => void;\n labels: SwapSuccessLabels;\n processingDetailsLabels: TransactionProcessingDetailsLabels;\n}\n\nexport const SwapSuccessView: React.FC<SwapSuccessViewProps> = ({\n fromTokenSymbol,\n fromTokenIcon,\n toTokenSymbol,\n toTokenIcon,\n formattedInputAmount,\n formattedOutputAmount,\n formattedInputAmountUSD,\n formattedOutputAmountUSD,\n transactionSteps,\n onClose,\n onStartNewSwap,\n onGoToWallet,\n labels,\n processingDetailsLabels,\n}) => {\n return (\n <TransactionScreen\n testId='swap-success-screen'\n onClose={onClose}\n progress={100}\n iconType='success'\n title={<span data-testid='swap-success-title'>{labels.title}</span>}\n description={\n <>\n {labels.descriptionPrefix} <strong className='font-semibold'>{formattedInputAmount} {fromTokenSymbol}</strong> {labels.descriptionMiddle}{' '}\n <strong className='font-semibold'>{formattedOutputAmount} {toTokenSymbol}</strong>\n <br />\n {labels.descriptionSuffix}{' '}\n <strong className='font-semibold text-brand-primary cursor-pointer' onClick={onGoToWallet}>\n {labels.walletLinkText}\n </strong>\n </>\n }\n actions={\n <div data-testid='swap-start-new-wrapper' className='w-full'>\n <PrimaryButton data-testid='swap-start-new-button' className='w-full' onClick={onStartNewSwap}>\n {labels.startNewSwapButton}\n </PrimaryButton>\n </div>\n }\n >\n <SectionCard className='!p-[22px]'>\n <div className='flex items-center justify-between w-full relative px-md'>\n <div className='flex flex-col items-center gap-sm'>\n <img src={fromTokenIcon} alt={fromTokenSymbol} className='w-8 h-8 rounded-full' />\n <div className='flex flex-col items-center gap-xs'>\n <div className='text-text-sm-mobile font-poppins text-text-secondary dark:text-text-secondary-dark'>\n {formattedInputAmount} {fromTokenSymbol}\n </div>\n <div className='text-h2-mobile font-extrabold font-poppins text-text-primary dark:text-text-primary-dark'>\n {formattedInputAmountUSD}\n </div>\n </div>\n </div>\n\n <div className='absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 bg-brand-secondary rounded-full p-2 shadow-md z-10'>\n <MdOutlineSwapHoriz className='w-5 h-5' />\n </div>\n\n <div className='flex flex-col items-center gap-sm'>\n <img src={toTokenIcon} alt={toTokenSymbol} className='w-8 h-8 rounded-full' />\n <div className='flex flex-col items-center gap-xs'>\n <div className='text-text-sm-mobile font-poppins text-text-secondary dark:text-text-secondary-dark'>\n ~{formattedOutputAmount} {toTokenSymbol}\n </div>\n <div className='text-h2-mobile font-extrabold font-poppins text-text-primary dark:text-text-primary-dark'>\n {formattedOutputAmountUSD}\n </div>\n </div>\n </div>\n </div>\n </SectionCard>\n\n <TransactionProcessingDetails\n steps={transactionSteps}\n defaultOpen\n className='bg-bg-subtle dark:bg-bg-subtle-dark lg:!bg-bg-raised dark:lg:!bg-bg-raised-dark'\n labels={processingDetailsLabels}\n />\n </TransactionScreen>\n )\n}\n","import React from 'react'\nimport { PrimaryButton, SecondaryButton } from '../buttons'\nimport { SectionCard } from '../layout'\nimport { TransactionScreen } from '../transaction-screen'\nimport { MdOutlineSwapHoriz } from 'react-icons/md'\nimport type { TransactionStep } from '../../types/transaction'\nimport type { TransactionProcessingDetailsLabels } from '../../types/transaction-processing-details-labels'\nimport { TransactionProcessingDetails } from '../transaction-processing-details'\n\nexport interface SwapTransactionFailedViewProps {\n fromTokenSymbol: string;\n fromTokenIcon: string;\n toTokenSymbol: string;\n toTokenIcon: string;\n formattedInputAmount: string;\n formattedOutputAmount: string;\n formattedInputAmountUSD: string;\n formattedOutputAmountUSD: string;\n progress: number;\n errorTitle: string;\n errorDescription: string;\n transactionSteps: TransactionStep[];\n hasExplorerLink: boolean;\n onBack: () => void;\n onViewExplorer: () => void;\n onTryAgain: () => void;\n viewOnExplorerText: string;\n retryButtonText: string;\n processingDetailsLabels: TransactionProcessingDetailsLabels;\n}\n\nexport const SwapTransactionFailedView: React.FC<SwapTransactionFailedViewProps> = ({\n fromTokenSymbol,\n fromTokenIcon,\n toTokenSymbol,\n toTokenIcon,\n formattedInputAmount,\n formattedOutputAmount,\n formattedInputAmountUSD,\n formattedOutputAmountUSD,\n progress,\n errorTitle,\n errorDescription,\n transactionSteps,\n hasExplorerLink,\n onBack,\n onViewExplorer,\n onTryAgain,\n viewOnExplorerText,\n retryButtonText,\n processingDetailsLabels,\n}) => {\n return (\n <TransactionScreen\n testId='swap-failed-screen'\n onClose={onBack}\n progress={progress}\n iconType='warning'\n iconGradient='linear-gradient(135deg, #EF4444 0%, #DC2626 100%)'\n title={<span data-testid='swap-failed-title'>{errorTitle}</span>}\n description={errorDescription}\n actions={\n <div data-testid='swap-failed-actions' className='flex gap-sm w-full'>\n <SecondaryButton data-testid='swap-failed-view-explorer' className='flex-1' onClick={onViewExplorer} disabled={!hasExplorerLink}>\n {viewOnExplorerText}\n </SecondaryButton>\n <PrimaryButton data-testid='swap-failed-retry' className='flex-1' onClick={onTryAgain}>\n {retryButtonText}\n </PrimaryButton>\n </div>\n }\n >\n <SectionCard className='!p-[22px]'>\n <div className='flex items-center justify-between w-full relative px-md'>\n <div className='flex flex-col items-center gap-sm'>\n <img src={fromTokenIcon} alt={fromTokenSymbol} className='w-8 h-8 rounded-full' />\n <div className='flex flex-col items-center gap-xs'>\n <div className='text-text-sm-mobile font-poppins text-text-secondary dark:text-text-secondary-dark'>\n ~{formattedInputAmount} {fromTokenSymbol}\n </div>\n <div className='text-h2-mobile font-extrabold font-poppins text-text-primary dark:text-text-primary-dark'>\n {formattedInputAmountUSD}\n </div>\n </div>\n </div>\n\n <div className='absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 bg-brand-secondary rounded-full p-2 shadow-md z-10'>\n <MdOutlineSwapHoriz className='w-5 h-5' />\n </div>\n\n <div className='flex flex-col items-center gap-sm'>\n <img src={toTokenIcon} alt={toTokenSymbol} className='w-8 h-8 rounded-full' />\n <div className='flex flex-col items-center gap-xs'>\n <div className='text-text-sm-mobile font-poppins text-text-secondary dark:text-text-secondary-dark'>\n ~{formattedOutputAmount} {toTokenSymbol}\n </div>\n <div className='text-h2-mobile font-extrabold font-poppins text-text-primary dark:text-text-primary-dark'>\n {formattedOutputAmountUSD}\n </div>\n </div>\n </div>\n </div>\n </SectionCard>\n\n <TransactionProcessingDetails\n steps={transactionSteps}\n defaultOpen\n className='bg-bg-subtle dark:bg-bg-subtle-dark lg:!bg-bg-raised dark:lg:!bg-bg-raised-dark'\n labels={processingDetailsLabels}\n />\n </TransactionScreen>\n )\n}\n","import React from 'react'\nimport { ActionSheet } from '../action-sheet'\nimport { BackgroundContainer, Navbar } from '../layout'\nimport { CloseButton } from '../close-button'\nimport { ListItem, ListItemContent, ListItemLeftSide, ListItemRightSide } from '../lists'\nimport { TextBody, TextHeading } from '../texts'\nimport { TertiaryButton } from '../buttons'\nimport { SearchInput } from '../search-input'\nimport { SearchEmptyState } from '../search-empty-state'\nimport { LoadingDots } from '../loading-dots'\nimport type { ChooseAnAssetSwapLabels } from '../../types/choose-an-asset-swap-labels'\nimport type { TokenData } from '../../types/token-data'\nimport type { BalanceDomain } from '../../types/balance-domain'\n\nexport type { TokenData, BalanceDomain }\n\nexport interface ChooseAnAssetSwapViewProps {\n actionSheetId: string;\n isOpen: boolean;\n currentActionSheetId: string | null;\n onClose: () => void;\n onSearch: (value: string) => void;\n autoFocus: boolean;\n displayedTokens: TokenData[];\n hasMore: boolean;\n onLoadMore: () => void;\n findBalance: (token: TokenData) => BalanceDomain | undefined;\n isFetching: boolean;\n onAssetClick: (token: TokenData) => void;\n labels: ChooseAnAssetSwapLabels;\n formatTokenAmount: (amountUI: string, priceUSD: number, decimals: number) => string;\n formatCurrencyValue: (value: number) => string;\n}\n\nexport const ChooseAnAssetSwapView: React.FC<ChooseAnAssetSwapViewProps> = ({\n actionSheetId,\n isOpen,\n currentActionSheetId,\n onClose,\n onSearch,\n autoFocus,\n displayedTokens,\n hasMore,\n onLoadMore,\n findBalance,\n isFetching,\n onAssetClick,\n labels,\n formatTokenAmount,\n formatCurrencyValue,\n}) => {\n const [searchValue, setSearchValue] = React.useState('')\n\n const handleSearch = (value: string) => {\n setSearchValue(value)\n onSearch(value)\n }\n\n return (\n <div className='flex justify-center' data-testid={`swap-token-actionsheet-wrapper-${actionSheetId}`}>\n <ActionSheet\n id={actionSheetId}\n currentActionSheetId={currentActionSheetId}\n isOpen={isOpen}\n onClose={onClose}\n position='bottom'\n height='full'\n contentClassName='w-full max-w-[620px] mx-auto'\n >\n <BackgroundContainer className='flex flex-col h-full'>\n <Navbar>\n <CloseButton testId={`swap-token-actionsheet-close-${actionSheetId}`} onClick={onClose} />\n </Navbar>\n <div className='flex flex-col flex-1 w-full p-6 overflow-hidden'>\n <div className='flex-shrink-0'>\n <TextHeading>{labels.title}</TextHeading>\n <br />\n <SearchInput\n onSearch={handleSearch}\n placeholder={labels.searchPlaceholder}\n autoFocus={autoFocus}\n inputClassName='bg-bg-subtle dark:bg-bg-subtle-dark lg:!bg-bg-raised lg:dark:!bg-bg-raised-dark'\n containerTestId={`swap-token-search-container-${actionSheetId}`}\n inputTestId={`swap-token-search-input-${actionSheetId}`}\n />\n </div>\n {(searchValue && displayedTokens.length === 0 && !isFetching)\n ? (\n <SearchEmptyState title={labels.searchEmptyTitle} description={labels.searchEmptyDescription} />\n )\n : (\n <div className='flex flex-col gap-2 w-full mt-4 overflow-y-auto flex-1 min-h-0'>\n {isFetching && (\n <div className='flex justify-center items-center w-full py-4'>\n <div className='flex items-center gap-1'>\n <TextBody variant='text-small' className='text-text-secondary dark:text-text-secondary-dark'>\n {labels.searchingText}\n </TextBody>\n <LoadingDots />\n </div>\n </div>\n )}\n {displayedTokens.map((token, index) => {\n const balance = findBalance(token)\n const tokenPriceUSD = Number(balance?.priceUSD) || 0\n const formattedBalance = balance?.amountUI\n ? formatTokenAmount(balance.amountUI, tokenPriceUSD, 2)\n : '0'\n\n return (\n <ListItem\n className='w-full flex-shrink-0'\n onClick={() => onAssetClick(token)}\n key={`token-${token.address}-${index}`}\n data-testid={`swap-token-item-${token.symbol.toLowerCase()}-${token.chainId}`}\n data-address={token.address}\n data-chain-id={token.chainId}\n data-symbol={token.symbol}\n >\n <ListItemLeftSide>\n <img src={token.logoURI || ''} alt={token.name} className='w-10 h-10 rounded-full' />\n </ListItemLeftSide>\n <ListItemContent>\n <TextBody>{token.name}</TextBody>\n <TextBody variant='text-small'>{token.symbol}</TextBody>\n </ListItemContent>\n <ListItemRightSide>\n <TextBody>{formattedBalance}</TextBody>\n <TextBody variant='text-small'>{formatCurrencyValue(Number(balance?.amountInUSD) || 0)}</TextBody>\n </ListItemRightSide>\n </ListItem>\n )\n })}\n {hasMore && (\n <div className='flex justify-center items-center w-full py-4 flex-shrink-0'>\n <TertiaryButton onClick={onLoadMore}>{labels.loadMoreButton}</TertiaryButton>\n </div>\n )}\n </div>\n )}\n </div>\n </BackgroundContainer>\n </ActionSheet>\n </div>\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/stories/buttons/action-button/ActionButton.tsx","../src/stories/buttons/percentage-button/PercentageButton.tsx","../src/stories/buttons/primary-button/PrimaryButton.tsx","../src/stories/buttons/secondary-button/SecondaryButton.tsx","../src/stories/buttons/tertiary-button/TertiaryButton.tsx","../src/stories/inputs/InputCompund.tsx","../src/stories/texts/Link.tsx","../src/stories/inputs/Input.tsx","../src/stories/lists/List.tsx","../src/stories/lists/ListCompound.tsx","../src/stories/lists/wallet-list/WalletListContainer.tsx","../src/stories/texts/Text.tsx","../src/stories/texts/TextAccent.tsx","../src/stories/texts/TextBody.tsx","../src/stories/texts/TextHeading.tsx","../src/stories/texts/Title.tsx","../src/stories/lists/wallet-list/WalletList.tsx","../src/stories/lists/wallet-list/WalletItem.tsx","../src/stories/currency/Currency.tsx","../src/stories/tabs/Tabs.tsx","../src/stories/select/Select.tsx","../src/stories/loading/Skeleton.tsx","../src/stories/banner/BannerNotificationCompound.tsx","../src/stories/banner/BannerNotification.tsx","../src/stories/address/AddressDisplay.tsx","../src/stories/details/SummaryDetails.tsx","../src/stories/details/SummaryDetailsCryptoControlV2.tsx","../src/stories/action-sheet/ActionSheet.tsx","../src/stories/providers/types.ts","../src/stories/providers/DeframeComponentsProvider.tsx","../src/stories/info-display/InfoRow.tsx","../src/stories/info-display/InfoLabel.tsx","../src/stories/info-display/InfoValue.tsx","../src/stories/info-display/InfoRowWithIcon.tsx","../src/stories/info-display/InfoRowIconLabel.tsx","../src/stories/info-display/InfoRowIconValue.tsx","../src/stories/info-display/CollapsibleInfoRow.tsx","../src/stories/layout/BackgroundContainer.tsx","../src/stories/layout/SectionCard.tsx","../src/stories/layout/Navbar.tsx","../src/stories/layout/FlexCol.tsx","../src/stories/layout/FlexRow.tsx","../src/stories/layout/ScrollableContent.tsx","../src/stories/details-header/DetailsHeader.tsx","../src/stories/close-button/CloseButton.tsx","../src/stories/badges/HighRiskBadge.tsx","../src/stories/badges/MediumRiskBadge.tsx","../src/stories/badges/LowRiskBadge.tsx","../src/stories/history-details/HistoryDetailsComponents.tsx","../src/stories/history-details/HistoryDepositDetailsView.tsx","../src/stories/history-details/HistoryWithdrawDetailsView.tsx","../src/stories/swap-network-selector/SwapNetworkSelectorView.tsx","../src/stories/swap-quote-header/SwapQuoteHeaderView.tsx","../src/stories/swap-amount-input/SwapAmountInputView.tsx","../src/stories/swap-output-amount/SwapOutputAmountView.tsx","../src/stories/swap-quote-errors/SwapQuoteErrorsView.tsx","../src/stories/swap-slippage-tolerance-buttons/SwapSlippageToleranceButtonsView.tsx","../src/stories/swap-token-selector/SwapTokenSelectorView.tsx","../src/stories/swap-quote-blockchain-costs/SwapQuoteBlockchainCostsView.tsx","../src/stories/choose-strategy-actionsheet/ChooseAStrategyActionsheetView.tsx","../src/stories/strategy-details/StrategyDetailsView.tsx","../src/stories/progress/ProgressIndicator.tsx","../src/stories/loading-dots/LoadingDots.tsx","../src/stories/search-input/SearchInput.tsx","../src/stories/search-empty-state/SearchEmptyState.tsx","../src/stories/collapsible-section/CollapsibleSection.tsx","../src/stories/transaction-screen-icon/TransactionScreenIcon.tsx","../src/stories/transaction-screen/TransactionScreen.tsx","../src/stories/transaction-screen-investment-card/TransactionScreenInvestmentCard.tsx","../src/stories/transaction-processing-details/StepStatusIcon.tsx","../src/stories/transaction-processing-details/StepStatusText.tsx","../src/stories/transaction-processing-details/StepDisplay.tsx","../src/stories/transaction-processing-details/TransactionProcessingDetails.tsx","../src/stories/token-with-chain-badge/TokenWithChainBadge.tsx","../src/stories/swap-processing-view/SwapProcessingView.tsx","../src/stories/swap-crosschain-processing-view/SwapCrossChainProcessingView.tsx","../src/stories/swap-signature-warning-view/SwapSignatureWarningView.tsx","../src/stories/swap-success-view/SwapSuccessView.tsx","../src/stories/swap-transaction-failed-view/SwapTransactionFailedView.tsx","../src/stories/choose-an-asset-swap-view/ChooseAnAssetSwapView.tsx"],"names":["twMerge","jsx","Input","jsxs","React","React2","React3","React4","React5","motion","React6","AnimatePresence","React7","MdInfoOutline","MdWarningAmber","MdErrorOutline","MdCheckCircleOutline","MdClose","React8","React9","React10","useState","useEffect","_a","useMemo","HiChevronUp","HiChevronDown","gapClasses","HiChevronLeft","HiXMark","Fragment","HiArrowRight","MdOutlineSearch","MdOutlineSearchOff","IoCheckmarkOutline","IoTimeOutline","IoAlertCircleOutline","textColorClass","MdOutlineSwapHoriz"],"mappings":"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","file":"index.js","sourcesContent":["import { twMerge } from 'tailwind-merge'\nimport type { ButtonProps } from '../index'\n\n/** Primary UI component for user interaction */\nexport default function ActionButton ({\n children,\n disabled = false,\n className = '',\n type = 'button',\n ...props\n}: ButtonProps) {\n const getStyles = () => {\n if (disabled) {\n return {\n container:\n 'flex-1 h-12 rounded inline-flex flex-col justify-center items-center gap-2 overflow-hidden bg-bg-muted dark:bg-bg-muted-dark',\n inner:\n 'self-stretch flex-1 pl-4 pr-6 py-2.5 inline-flex justify-center items-center gap-2',\n text: 'opacity-state-disabled-content text-center justify-center text-text-disabled dark:text-text-disabled-dark text-sm font-semibold font-poppins leading-5',\n }\n }\n return {\n container:\n 'flex-1 h-12 bg-brand-primary rounded inline-flex flex-col justify-center items-center gap-2 overflow-hidden hover:shadow-md transition-shadow duration-200',\n inner:\n 'self-stretch flex-1 pl-4 pr-6 py-2.5 inline-flex justify-center items-center gap-2 hover:opacity-90 focus:opacity-85 active:opacity-85 transition-opacity duration-200',\n text: 'text-center justify-center text-text-inverse text-sm font-semibold font-poppins leading-5',\n }\n }\n\n const styles = getStyles()\n\n const containerClasses = twMerge(\n 'flex-1 px-2 py-1 rounded border border-border-subtle dark:border-border-subtle-dark bg-bg-muted dark:bg-bg-muted-dark text-text-secondary dark:text-text-secondary-dark text-sm font-semibold font-poppins leading-5 hover:border-border-default dark:hover:border-border-default-dark focus:outline-none focus:ring-2 focus:ring-brand-primary',\n disabled && 'cursor-not-allowed',\n className\n )\n\n return (\n <button\n type={type}\n className={containerClasses}\n disabled={disabled}\n {...props}\n >\n <div className={styles.inner}>\n <div className={styles.text}>{children}</div>\n </div>\n </button>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport type { ButtonProps } from '../index'\n\n/** Primary UI component for user interaction */\nexport default function PercentageButton ({\n children,\n disabled = false,\n className = '',\n type = 'button',\n ...props\n}: ButtonProps) {\n const containerClasses = twMerge(\n 'flex-1 px-2 py-1 rounded border border-border-subtle dark:border-border-subtle-dark bg-bg-muted dark:bg-bg-muted-dark text-text-secondary dark:text-text-secondary-dark text-sm font-semibold font-poppins leading-5 hover:border-border-default dark:hover:border-border-default-dark focus:outline-none focus:ring-2 focus:ring-brand-primary',\n disabled && 'cursor-not-allowed',\n className\n )\n\n return (\n <button\n type={type}\n className={containerClasses}\n disabled={disabled}\n {...props}\n >\n {children}\n </button>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport type { ButtonProps } from '../index'\n\n/** Primary UI component for user interaction - uses brand-primary color for theming */\nexport default function PrimaryButton ({\n children,\n disabled = false,\n className = '',\n type = 'button',\n ...props\n}: ButtonProps) {\n /** base button classes */\n const baseClasses = [\n /** layout */\n 'overflow-hidden w-full flex items-center justify-center transition-all duration-200',\n /** typography */\n 'font-[var(--deframe-widget-font-family-primary)]',\n '[font-size:var(--deframe-widget-font-size-md)]',\n '[line-height:var(--deframe-widget-font-leading-md)]',\n '[font-weight:var(--deframe-widget-font-weight-semibold)]',\n /** spacing */\n 'px-[var(--deframe-widget-size-padding-x-xl)]',\n 'py-[var(--deframe-widget-size-padding-y-md)]',\n /** container */\n 'rounded-[var(--deframe-widget-size-radius-xs)]',\n 'border-solid border-[length:var(--deframe-widget-size-border-xs)]',\n 'gap-[var(--deframe-widget-size-gap-sm)]'\n ].join(' ')\n\n const stateClasses = {\n /** enabled state */\n enabled: [\n 'hover:opacity-90',\n 'text-[var(--deframe-widget-color-text-primary)]',\n 'bg-[var(--deframe-widget-color-brand-primary)]',\n 'border-[color:var(--deframe-widget-color-border-primary)]',\n 'cursor-pointer'\n ].join(' '),\n /** disabled state */\n disabled: [\n 'text-[var(--deframe-widget-color-text-primary-disabled)]',\n 'bg-[var(--deframe-widget-color-brand-primary-disabled)]',\n 'border-[color:var(--deframe-widget-color-border-primary-disabled)]',\n 'cursor-not-allowed'\n ].join(' '),\n } as const\n\n /** button classes merge */\n const buttonClasses = twMerge(\n baseClasses,\n stateClasses[disabled ? 'disabled' : 'enabled'],\n className\n )\n\n return (\n <button\n data-slot='primary-button'\n data-test-id='primary-button'\n aria-label='primary action'\n type={type}\n className={buttonClasses}\n disabled={disabled}\n {...props}\n >\n {children}\n </button>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport type { ButtonProps } from '../index'\n\n/** Secondary UI component for user interaction - outline style using brand-primary color */\nexport default function SecondaryButton ({\n children,\n disabled = false,\n className = '',\n type = 'button',\n ...props\n}: ButtonProps) {\n /** base button classes */\n const baseClasses = [\n /** layout */\n 'overflow-hidden w-full flex items-center justify-center transition-all duration-200',\n /** typography */\n 'font-[var(--deframe-widget-font-family-primary)]',\n '[font-size:var(--deframe-widget-font-size-md)]',\n '[line-height:var(--deframe-widget-font-leading-md)]',\n '[font-weight:var(--deframe-widget-font-weight-semibold)]',\n /** spacing */\n 'px-[var(--deframe-widget-size-padding-x-xl)]',\n 'py-[var(--deframe-widget-size-padding-y-md)]',\n /** container */\n 'bg-transparent',\n 'rounded-[var(--deframe-widget-size-radius-xs)]',\n 'border-solid border-[length:var(--deframe-widget-size-border-xs)]',\n 'gap-[var(--deframe-widget-size-gap-sm)]',\n ].join(' ')\n\n /** state classes map */\n const stateClasses = {\n enabled: [\n 'text-[color:var(--deframe-widget-color-brand-secondary)]',\n 'border-[color:var(--deframe-widget-color-border-secondary)]',\n 'hover:opacity-90',\n 'cursor-pointer',\n ].join(' '),\n disabled: [\n 'text-[color:var(--deframe-widget-color-text-secondary-disabled)]',\n 'border-[color:var(--deframe-widget-color-border-secondary-disabled)]',\n 'cursor-not-allowed',\n ].join(' '),\n } as const\n\n /** button classes merge */\n const buttonClasses = twMerge(\n baseClasses,\n stateClasses[disabled ? 'disabled' : 'enabled'],\n className\n )\n\n return (\n <button\n data-slot='secondary-button'\n data-test-id='secondary-button'\n aria-label='secondary action'\n type={type}\n className={buttonClasses}\n disabled={disabled}\n {...props}\n >\n {children}\n </button>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport type { ButtonProps } from '../index'\n\n/** Tertiary UI component for user interaction - ghost style using brand-tertiary color */\nexport default function TertiaryButton ({\n children,\n disabled = false,\n className = '',\n type = 'button',\n ...props\n}: ButtonProps) {\n /** base button classes */\n const baseClasses = [\n /** layout */\n 'overflow-hidden w-full flex items-center justify-center transition-all duration-200',\n /** typography */\n 'font-[var(--deframe-widget-font-family-primary)]',\n '[font-size:var(--deframe-widget-font-size-md)]',\n '[line-height:var(--deframe-widget-font-leading-md)]',\n '[font-weight:var(--deframe-widget-font-weight-semibold)]',\n /** spacing */\n 'px-[var(--deframe-widget-size-padding-x-xl)]',\n 'py-[var(--deframe-widget-size-padding-y-md)]',\n /** container */\n 'bg-transparent border-none',\n 'rounded-[var(--deframe-widget-size-radius-xs)]',\n 'gap-[var(--deframe-widget-size-gap-sm)]',\n ].join(' ')\n\n /** state classes map */\n const stateClasses = {\n enabled: [\n 'text-[color:var(--deframe-widget-color-brand-tertiary)]',\n 'hover:opacity-90',\n 'cursor-pointer',\n ].join(' '),\n disabled: [\n 'text-[color:var(--deframe-widget-color-text-tertiary-disabled)]',\n 'cursor-not-allowed',\n ].join(' '),\n } as const\n\n /** button classes merge */\n const buttonClasses = twMerge(\n baseClasses,\n stateClasses[disabled ? 'disabled' : 'enabled'],\n className\n )\n\n return (\n <button\n data-slot='tertiary-button'\n data-test-id='tertiary-button'\n aria-label='tertiary action'\n type={type}\n className={buttonClasses}\n disabled={disabled}\n {...props}\n >\n {children}\n </button>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport type { ComponentProps } from 'react'\n\nexport interface InputProps extends ComponentProps<'div'> {}\n\nexport function Input ({ className = '', ...props }: InputProps) {\n const baseClasses = [\n 'flex flex-col',\n '[gap:var(--deframe-widget-size-gap-xs)]',\n ].join(' ')\n\n return (\n <div\n data-slot='input'\n data-test-id='input'\n className={twMerge(baseClasses, className)}\n {...props}\n />\n )\n}\n\nexport function InputLabel ({ className = '', ...props }: ComponentProps<'label'>) {\n const baseClasses = [\n '[font-family:var(--deframe-widget-font-family-primary)]',\n '[font-size:var(--deframe-widget-font-size-xs)]',\n '[font-weight:var(--deframe-widget-font-weight-medium)]',\n 'text-[var(--deframe-widget-color-text-primary)]',\n ].join(' ')\n\n return (\n <label\n data-slot='input-label'\n data-test-id='input-label'\n className={twMerge(baseClasses, className)}\n {...props}\n />\n )\n}\n\nexport interface InputFieldProps extends ComponentProps<'input'> {\n hasError?: boolean\n}\n\nexport function InputField ({ hasError = false, disabled, className = '', ...props }: InputFieldProps) {\n const baseClasses = [\n 'w-full',\n '[font-family:var(--deframe-widget-font-family-primary)]',\n '[font-size:var(--deframe-widget-font-size-md)]',\n '[font-weight:var(--deframe-widget-font-weight-regular)]',\n 'text-[var(--deframe-widget-color-text-primary)]',\n 'placeholder-[var(--deframe-widget-color-placeholder-primary)]',\n 'border-[length:var(--deframe-widget-size-border-xs)]',\n 'rounded-[var(--deframe-widget-size-radius-sm)]',\n 'px-[var(--deframe-widget-size-padding-x-md)]',\n 'py-[var(--deframe-widget-size-padding-y-sm)]',\n 'outline-none',\n 'transition-colors',\n ].join(' ')\n\n const stateClasses = {\n error: 'border border-[var(--deframe-widget-color-state-error)]',\n disabled: [\n 'border',\n 'border-[var(--deframe-widget-color-border-primary-disabled)]',\n 'opacity-60',\n 'cursor-not-allowed',\n ].join(' '),\n default: 'border border-[var(--deframe-widget-color-border-primary)]',\n } as const\n\n const stateKey = hasError ? 'error' : disabled ? 'disabled' : 'default'\n const fieldClasses = twMerge(baseClasses, stateClasses[stateKey], className)\n\n return (\n <input\n data-slot='input-field'\n data-test-id='input-field'\n aria-invalid={hasError || undefined}\n disabled={disabled}\n className={fieldClasses}\n {...props}\n />\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport type { LinkProps } from './index'\n\nexport function Link ({\n children,\n href,\n className = '',\n target = '_blank',\n disabled = false,\n prefetch: _prefetch,\n replace: _replace,\n scroll: _scroll,\n ...props\n}: LinkProps) {\n const baseClasses = [\n '[font-family:var(--deframe-widget-font-family-primary)]',\n '[font-size:var(--deframe-widget-font-size-md)]',\n '[font-weight:var(--deframe-widget-font-weight-medium)]',\n '[line-height:var(--deframe-widget-font-leading-lg)]',\n ].join(' ')\n\n const stateClasses = {\n enabled: [\n 'text-[var(--deframe-widget-color-link)]',\n 'underline',\n 'cursor-pointer',\n ].join(' '),\n disabled: [\n 'text-[var(--deframe-widget-color-link-disabled)]',\n 'cursor-not-allowed',\n 'pointer-events-none',\n ].join(' '),\n } as const\n\n const linkClasses = twMerge(\n baseClasses,\n stateClasses[disabled ? 'disabled' : 'enabled'],\n className\n )\n\n if (disabled) {\n return (\n <span\n data-slot='link'\n data-test-id='link'\n aria-disabled\n className={linkClasses}\n >\n {children}\n </span>\n )\n }\n\n return (\n <a\n href={href}\n target={target}\n data-slot='link'\n data-test-id='link'\n className={linkClasses}\n rel={target === '_blank' ? 'noopener noreferrer' : undefined}\n {...props}\n >\n {children}\n </a>\n )\n}\n\nexport default Link\n","import { Input as InputRoot, InputLabel, InputField } from './InputCompund'\nimport Link from '../texts/Link'\nimport type { InputProps } from './index'\n\nexport function Input ({\n label,\n error,\n placeholder,\n type = 'text',\n repassword = 'Forgot password?',\n href = '/',\n disabled,\n className = '',\n ...props\n}: InputProps) {\n const hasError = !!error\n\n return (\n <InputRoot className={className}>\n {label && <InputLabel>{label}</InputLabel>}\n <InputField\n type={type}\n placeholder={placeholder}\n disabled={disabled}\n hasError={hasError}\n aria-label={label}\n {...props}\n />\n {type === 'password' && (\n <div\n data-slot='input-repassword'\n data-test-id='input-repassword'\n className='text-right'\n >\n <Link href={href} disabled={disabled}>\n {repassword}\n </Link>\n </div>\n )}\n </InputRoot>\n )\n}\n\nexport default Input\n","import { twMerge } from 'tailwind-merge'\nimport type { ListItemProps } from './index'\n\nexport function ListItem ({\n children,\n className,\n containerClassName,\n onClick,\n ...props\n}: ListItemProps) {\n const baseClasses = [\n 'self-stretch min-h-16 relative',\n 'rounded-[var(--deframe-widget-size-radius-xs)]',\n 'border-[length:var(--deframe-widget-size-border-xs)]',\n 'border-[var(--deframe-widget-color-border-primary)]',\n 'flex flex-col justify-center items-center',\n 'transition-colors',\n 'bg-[var(--deframe-widget-color-bg-primary)]',\n ].join(' ')\n\n const stateClasses = {\n clickable: 'cursor-pointer hover:border-[var(--deframe-widget-color-border-secondary)]',\n static: '',\n } as const\n\n const containerClasses = twMerge(\n baseClasses,\n stateClasses[onClick ? 'clickable' : 'static'],\n containerClassName\n )\n\n const innerClasses = twMerge(\n 'self-stretch inline-flex justify-between items-center',\n '[gap:var(--deframe-widget-size-gap-md)]',\n 'px-[var(--deframe-widget-size-padding-x-md)]',\n 'py-[var(--deframe-widget-size-padding-y-sm)]',\n 'text-[var(--deframe-widget-color-text-primary)]',\n className\n )\n\n return (\n <li\n data-slot='list-item'\n data-test-id='list-item'\n className={containerClasses}\n onClick={onClick}\n tabIndex={onClick ? 0 : undefined}\n role={onClick ? 'button' : undefined}\n onKeyDown={onClick ? (e) => e.key === 'Enter' && onClick() : undefined}\n {...props}\n >\n <div className={innerClasses}>\n {children}\n </div>\n </li>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport type { ListContainerProps, ListItemContentProps, ListItemLeftSideProps, ListItemRightSideProps } from './index'\n\nexport function ListContainer ({ className, ...props }: ListContainerProps) {\n const baseClasses = [\n 'flex flex-col list-none',\n '[gap:var(--deframe-widget-size-gap-sm)]',\n ].join(' ')\n\n return (\n <ul\n data-slot='list-container'\n data-test-id='list-container'\n className={twMerge(baseClasses, className)}\n {...props}\n />\n )\n}\n\nexport function ListItemLeftSide ({ children, className, ...props }: ListItemLeftSideProps) {\n const baseClasses = [\n 'flex justify-center items-center',\n 'text-[var(--deframe-widget-color-text-primary)]',\n ].join(' ')\n\n return (\n <div\n data-slot='list-item-left-side'\n data-test-id='list-item-left-side'\n className={twMerge(baseClasses, className)}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nexport function ListItemContent ({ children, className, ...props }: ListItemContentProps) {\n const baseClasses = [\n 'flex-1 self-stretch inline-flex flex-col justify-center items-start overflow-hidden',\n 'text-[var(--deframe-widget-color-text-primary)]',\n ].join(' ')\n\n return (\n <div\n data-slot='list-item-content'\n data-test-id='list-item-content'\n className={twMerge(baseClasses, className)}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nexport function ListItemRightSide ({ children, className, ...props }: ListItemRightSideProps) {\n const baseClasses = [\n 'flex flex-col justify-start items-end',\n 'text-[var(--deframe-widget-color-text-primary)]',\n ].join(' ')\n\n return (\n <div\n data-slot='list-item-right-side'\n data-test-id='list-item-right-side'\n className={twMerge(baseClasses, className)}\n {...props}\n >\n {children}\n </div>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport { ReactNode } from 'react'\n\nexport interface WalletListContainerProps {\n /** Child components (typically WalletItem components) */\n children: ReactNode;\n /** Additional CSS class names */\n className?: string;\n}\n\n/**\n * WalletListContainer - Container wrapper for wallet list items\n * Provides consistent spacing and layout for wallet options\n */\nexport default function WalletListContainer ({\n children,\n className,\n}: WalletListContainerProps) {\n return (\n <div className={twMerge('flex flex-col gap-4', className)}>\n {children}\n </div>\n )\n}\n","import * as React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\ninterface TextProps extends React.HTMLAttributes<HTMLElement> {\n as?: keyof React.JSX.IntrinsicElements\n variantClass?: string\n}\n\n/**\n * Base Text component used internally by other text variants.\n * Handles tag selection, base font, and class merging.\n */\nconst Text = React.forwardRef<HTMLElement, TextProps>(\n ({\n children,\n as: Component = 'p',\n className = '',\n ...props\n },\n ref\n ) => {\n const baseClasses = [\n '[font-family:var(--deframe-widget-font-family-primary)]',\n '[font-size:var(--deframe-widget-font-size-md)]',\n '[line-height:var(--deframe-widget-font-leading-md)]',\n '[font-weight:var(--deframe-widget-font-weight-regular)]',\n 'text-[color:var(--deframe-widget-color-text-primary)]'\n ].join(' ')\n\n const textClasses = twMerge(baseClasses, className)\n\n return React.createElement(\n Component,\n {\n ref,\n className: textClasses,\n ...props,\n },\n children\n )\n }\n)\n\nText.displayName = 'Text'\nexport default Text\n","import * as React from 'react'\nimport Text from './Text'\nimport { TextAccentProps } from './index'\nimport { twMerge } from 'tailwind-merge'\n\nexport const TextAccent = React.forwardRef<HTMLElement, TextAccentProps>(\n ({\n as = 'span',\n variant = 'accent-medium',\n className = '',\n ...props\n },\n ref\n ) => {\n const accentVariants = {\n 'accent-large': [\n '[font-size:var(--deframe-widget-font-size-lg)]',\n '[line-height:var(--deframe-widget-font-leading-lg)]',\n '[font-weight:var(--deframe-widget-font-weight-semibold)]',\n ].join(' '),\n 'accent-medium': [\n '[font-size:var(--deframe-widget-font-size-md)]',\n '[line-height:var(--deframe-widget-font-leading-lg)]',\n '[font-weight:var(--deframe-widget-font-weight-semibold)]',\n ].join(' '),\n 'accent-small': [\n '[font-size:var(--deframe-widget-font-size-sm)]',\n '[line-height:var(--deframe-widget-font-leading-lg)]',\n '[font-weight:var(--deframe-widget-font-weight-semibold)]',\n ].join(' '),\n } as const\n\n type AccentVariant = keyof typeof accentVariants\n const variantClass = accentVariants[variant as AccentVariant]\n const accentClasses = twMerge(variantClass, className)\n\n return (\n <Text\n ref={ref}\n as={as}\n className={accentClasses}\n data-slot='text-accent'\n data-test-id='text-accent'\n {...props}\n />\n )\n }\n)\n\nTextAccent.displayName = 'TextAccent'\nexport default TextAccent\n","import * as React from 'react'\nimport Text from './Text'\nimport { TextBodyProps } from './index'\nimport { twMerge } from 'tailwind-merge'\n\nexport const TextBody = React.forwardRef<HTMLElement, TextBodyProps>(\n ({\n as = 'p',\n variant = 'text-medium',\n className = '',\n ...props\n },\n ref\n ) => {\n const bodyVariants = {\n 'text-large': [\n '[font-size:var(--deframe-widget-font-size-lg)]',\n '[line-height:var(--deframe-widget-font-leading-lg)]',\n '[font-weight:var(--deframe-widget-font-weight-regular)]',\n ].join(' '),\n 'text-medium': [\n '[font-size:var(--deframe-widget-font-size-md)]',\n '[line-height:var(--deframe-widget-font-leading-lg)]',\n '[font-weight:var(--deframe-widget-font-weight-regular)]',\n ].join(' '),\n 'text-small': [\n '[font-size:var(--deframe-widget-font-size-sm)]',\n '[line-height:var(--deframe-widget-font-leading-lg)]',\n '[font-weight:var(--deframe-widget-font-weight-regular)]',\n ].join(' '),\n } as const\n\n type BodyVariant = keyof typeof bodyVariants\n const variantClass = bodyVariants[variant as BodyVariant]\n const bodyClasses = twMerge(variantClass, className)\n\n return (\n <Text\n ref={ref}\n as={as}\n className={bodyClasses}\n data-slot='text-body'\n data-test-id='text-body'\n {...props}\n />\n )\n }\n)\n\nTextBody.displayName = 'TextBody'\nexport default TextBody\n","import * as React from 'react'\nimport Text from './Text'\nimport { TextHeadingProps } from './index'\nimport { twMerge } from 'tailwind-merge'\n\nexport const TextHeading = React.forwardRef<HTMLElement, TextHeadingProps>(\n ({\n as,\n variant = 'h2',\n className = '',\n ...props\n }, ref) => {\n const headingVariants = {\n 'h-large': [\n '[font-size:var(--deframe-widget-font-size-h-large)]',\n '[line-height:var(--deframe-widget-font-leading-sm)]',\n '[font-weight:var(--deframe-widget-font-weight-extrabold)]',\n ].join(' '),\n h1: [\n '[font-size:var(--deframe-widget-font-size-h1)]',\n '[line-height:var(--deframe-widget-font-leading-md)]',\n '[font-weight:var(--deframe-widget-font-weight-extrabold)]',\n ].join(' '),\n h2: [\n '[font-size:var(--deframe-widget-font-size-h2)]',\n '[line-height:var(--deframe-widget-font-leading-lg)]',\n '[font-weight:var(--deframe-widget-font-weight-extrabold)]',\n ].join(' '),\n h3: [\n '[font-size:var(--deframe-widget-font-size-h3)]',\n '[line-height:var(--deframe-widget-font-leading-md)]',\n '[font-weight:var(--deframe-widget-font-weight-bold)]',\n ].join(' '),\n h4: [\n '[font-size:var(--deframe-widget-font-size-h4)]',\n '[line-height:var(--deframe-widget-font-leading-md)]',\n '[font-weight:var(--deframe-widget-font-weight-bold)]',\n ].join(' '),\n h5: [\n '[font-size:var(--deframe-widget-font-size-h5)]',\n '[line-height:var(--deframe-widget-font-leading-md)]',\n '[font-weight:var(--deframe-widget-font-weight-bold)]',\n ].join(' '),\n } as const\n\n type HeadingVariant = keyof typeof headingVariants\n const variantClass = headingVariants[variant as HeadingVariant]\n const headingClasses = twMerge(variantClass, className)\n\n return (\n <Text\n ref={ref}\n as={(variant === 'h-large' ? 'h1' : variant) as keyof React.JSX.IntrinsicElements}\n className={headingClasses}\n data-slot='text-heading'\n data-test-id='text-heading'\n {...props}\n />\n )\n }\n)\n\nTextHeading.displayName = 'TextHeading'\nexport default TextHeading\n","import TextHeading from './TextHeading'\nimport { TextHeadingProps } from './index'\n\n/**\n * Title component for headings and page titles\n * This is an alias for TextHeading with h1 variant as default\n */\nexport default function Title ({\n variant = 'h1',\n className = '',\n ...props\n}: TextHeadingProps) {\n return <TextHeading variant={variant} className={className} {...props} />\n}\n","import { twMerge } from 'tailwind-merge'\nimport WalletListContainer from './WalletListContainer'\nimport { ListItem } from '../List'\nimport {\n ListItemContent,\n ListItemLeftSide,\n ListItemRightSide,\n} from '../ListCompound'\nimport { TextBody } from '../../texts'\n\nexport interface WalletOption {\n /** Unique identifier for the wallet */\n id: string;\n /** Display name of the wallet */\n name: string;\n /** Wallet icon - can be an image URL or React component */\n icon: string | React.ReactNode;\n /** Click handler for wallet selection */\n onClick?: () => void;\n}\n\nexport interface ConnectWalletListProps {\n /** List of wallet options */\n wallets: WalletOption[];\n /** Title text for the wallet connect screen */\n title?: string;\n /** Subtitle text for the wallet connect screen */\n subtitle?: string;\n /** Additional CSS class names */\n className?: string;\n}\n\n/**\n * ConnectWalletList - Displays a list of wallet options for connection\n * Includes title, subtitle, and clickable wallet items\n */\nexport default function ConnectWalletList ({\n wallets,\n className,\n}: ConnectWalletListProps) {\n const handleWalletClick = (wallet: WalletOption) => {\n wallet.onClick?.()\n }\n\n return (\n <div className={twMerge('w-full', className)}>\n <WalletListContainer>\n {wallets.map((wallet) => (\n <ListItem key={wallet.id} onClick={() => handleWalletClick(wallet)}>\n <ListItemLeftSide>\n {typeof wallet.icon === 'string'\n ? (\n <img\n src={wallet.icon}\n alt={wallet.name}\n className='w-10 h-10 rounded-full'\n />\n )\n : (\n wallet.icon\n )}\n </ListItemLeftSide>\n <ListItemContent>\n <TextBody variant='text-medium'>{wallet.name}</TextBody>\n </ListItemContent>\n <ListItemRightSide>\n {/* Chevron */}\n <svg\n className='flex-shrink-0 w-5 h-5 text-gray-400'\n fill='none'\n viewBox='0 0 24 24'\n stroke='currentColor'\n >\n <path\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth={2}\n d='M9 5l7 7-7 7'\n />\n </svg>\n </ListItemRightSide>\n </ListItem>\n ))}\n </WalletListContainer>\n </div>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport { TextBody } from '../../texts'\nimport type { WalletItemProps } from '../index'\n\nexport default function WalletItem ({\n id,\n name,\n icon,\n onClick,\n className,\n}: WalletItemProps) {\n const baseClasses = [\n 'w-full flex items-center',\n '[gap:var(--deframe-widget-size-gap-md)]',\n 'px-[var(--deframe-widget-size-padding-x-md)]',\n 'py-[var(--deframe-widget-size-padding-y-sm)]',\n 'rounded-[var(--deframe-widget-size-radius-xs)]',\n 'bg-[var(--deframe-widget-color-bg-secondary)]',\n 'cursor-pointer',\n 'transition-colors',\n 'hover:bg-[var(--deframe-widget-color-bg-tertiary)]',\n 'focus:outline-none',\n ].join(' ')\n\n return (\n <button\n key={id}\n data-slot='wallet-item'\n data-test-id='wallet-item'\n aria-label={`Connect ${name} wallet`}\n onClick={onClick}\n className={twMerge(baseClasses, className)}\n >\n <div\n data-slot='wallet-item-icon'\n data-test-id='wallet-item-icon'\n className='flex-shrink-0 w-12 h-12 rounded-[var(--deframe-widget-size-radius-full)] overflow-hidden flex items-center justify-center'\n >\n {typeof icon === 'string'\n ? (\n <img\n src={icon}\n alt={name}\n className='w-full h-full object-cover'\n />\n )\n : (\n icon\n )}\n </div>\n\n <TextBody\n data-slot='wallet-item-name'\n data-test-id='wallet-item-name'\n variant='text-medium'\n className='flex-1 text-left text-[var(--deframe-widget-color-text-primary)]'\n >\n {name}\n </TextBody>\n\n <svg\n data-slot='wallet-item-chevron'\n data-test-id='wallet-item-chevron'\n className='flex-shrink-0 w-5 h-5 text-[var(--deframe-widget-color-text-secondary)]'\n fill='none'\n viewBox='0 0 24 24'\n stroke='currentColor'\n >\n <path\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth={2}\n d='M9 5l7 7-7 7'\n />\n </svg>\n </button>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport { CurrencyProps, CurrencyType, FiatProps } from '.'\n\n// Currency configuration\nconst CURRENCY_CONFIG = {\n symbols: {\n USD: '$',\n BRL: 'R$',\n EUR: '€',\n BTC: '₿',\n ETH: 'Ξ',\n USDC: '$',\n USDT: '$',\n } as Record<CurrencyType, string>,\n labels: {\n USD: 'USD',\n BRL: 'BRL',\n EUR: 'EUR',\n BTC: 'BTC',\n ETH: 'ETH',\n USDC: 'USDC',\n USDT: 'USDT',\n } as Record<CurrencyType, string>,\n}\n\n// Style configuration\nconst STYLE_CONFIG = {\n alignment: {\n left: 'items-start',\n center: 'items-center',\n right: 'items-end',\n },\n size: {\n sm: { primary: 'text-3xl', secondary: 'text-sm', gap: 'gap-0.5' },\n md: { primary: 'text-5xl', secondary: 'text-base', gap: 'gap-1' },\n lg: { primary: 'text-6xl', secondary: 'text-lg', gap: 'gap-1' },\n },\n}\n\n/** Flexible currency display component supporting fiat and crypto */\nexport default function Currency (props: CurrencyProps | FiatProps) {\n // Normalize props: convert FiatProps to CurrencyProps format\n const normalizedProps: Required<\n Omit<CurrencyProps, 'secondaryAmount' | 'secondaryCurrency'>\n > &\n Pick<CurrencyProps, 'secondaryAmount' | 'secondaryCurrency'> =\n 'usdValue' in props\n ? {\n amount: props.amount,\n currency: 'USD',\n secondaryAmount: props.usdValue,\n secondaryCurrency: undefined,\n align: props.align ?? 'right',\n size: props.size ?? 'lg',\n showSymbol: false,\n showLabel: false,\n className: props.className ?? '',\n }\n : {\n amount: props.amount,\n currency: props.currency ?? 'USD',\n secondaryAmount: props.secondaryAmount,\n secondaryCurrency: props.secondaryCurrency,\n align: props.align ?? 'right',\n size: props.size ?? 'lg',\n showSymbol: props.showSymbol ?? true,\n showLabel: props.showLabel ?? false,\n className: props.className ?? '',\n }\n\n const {\n amount,\n currency,\n secondaryAmount,\n secondaryCurrency,\n align,\n size,\n showSymbol,\n showLabel,\n className,\n } = normalizedProps\n\n // Format currency value\n const formatAmount = (\n value: string,\n curr: CurrencyType,\n displaySymbol: boolean\n ): string => {\n if (!displaySymbol && !showLabel) return value\n\n const symbol = displaySymbol ? CURRENCY_CONFIG.symbols[curr] : ''\n const label = showLabel ? ` ${CURRENCY_CONFIG.labels[curr]}` : ''\n\n // Crypto currencies: no space between symbol and value\n if (\n ['BTC', 'ETH'].includes(curr) &&\n !value.includes('.') &&\n !value.includes(',')\n ) {\n return `${symbol}${value}${label}`\n }\n\n return `${symbol} ${value}${label}`.trim()\n }\n\n return (\n <div\n className={twMerge(\n 'flex flex-col',\n STYLE_CONFIG.alignment[align],\n STYLE_CONFIG.size[size].gap,\n className\n )}\n >\n {/* Primary amount */}\n <div\n className={twMerge(\n 'font-bold text-text-primary dark:text-text-primary-dark font-poppins',\n STYLE_CONFIG.size[size].primary\n )}\n >\n {formatAmount(amount, currency, showSymbol)}\n </div>\n\n {/* Secondary amount (optional) */}\n {secondaryAmount && (\n <div\n className={twMerge(\n 'text-text-secondary dark:text-text-secondary-dark font-poppins',\n STYLE_CONFIG.size[size].secondary\n )}\n >\n {secondaryCurrency\n ? formatAmount(secondaryAmount, secondaryCurrency, true)\n : secondaryAmount}\n </div>\n )}\n </div>\n )\n}\n","import * as React from 'react'\nimport { twMerge } from 'tailwind-merge'\nimport { motion } from 'framer-motion'\n\n// ============================================================================\n// Context\n// ============================================================================\n\nexport type TabsVariant = 'primary' | 'secondary' | 'default' | 'light' | 'medium' | 'dark' | 'header'\n\ninterface TabsContextValue {\n value: string\n onValueChange: (value: string) => void\n variant: TabsVariant\n}\n\nconst TabsContext = React.createContext<TabsContextValue | undefined>(\n undefined\n)\n\nconst useTabs = () => {\n const ctx = React.useContext(TabsContext)\n if (!ctx) { throw new Error('Tabs compound components must be used within <Tabs />') }\n return ctx\n}\n\n// ============================================================================\n// Tabs (Main Component)\n// ============================================================================\n\nexport interface TabsProps extends React.HTMLAttributes<HTMLDivElement> {\n value?: string\n onValueChange?: (value: string) => void\n defaultValue?: string\n variant?: TabsVariant\n}\n\nexport const Tabs = React.forwardRef<HTMLDivElement, TabsProps>(\n (\n {\n value: controlledValue,\n defaultValue = '',\n onValueChange,\n variant = 'secondary',\n className,\n children,\n ...props\n },\n ref\n ) => {\n const [internal, setInternal] = React.useState(defaultValue)\n const isControlled = controlledValue !== undefined\n const activeValue = isControlled ? controlledValue : internal\n\n const handleChange = (v: string) => {\n if (!isControlled) setInternal(v)\n onValueChange?.(v)\n }\n\n return (\n <TabsContext.Provider\n value={{\n value: activeValue,\n onValueChange: handleChange,\n variant,\n }}\n >\n <div ref={ref} className={twMerge('w-full', className)} {...props}>\n {children}\n </div>\n </TabsContext.Provider>\n )\n }\n)\nTabs.displayName = 'Tabs'\n\n// ============================================================================\n// TabsList\n// ============================================================================\n\nexport interface TabsListProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const TabsList = React.forwardRef<HTMLDivElement, TabsListProps>(\n ({ className, children, ...props }, ref) => {\n const { variant } = useTabs()\n\n // Header variant: full width, space between tabs, minimal padding\n if (variant === 'header') {\n return (\n <div\n ref={ref}\n role='tablist'\n className={twMerge(\n 'relative w-full flex items-center justify-between pt-2',\n className\n )}\n style={{\n paddingLeft: 'var(--spacing-md, 16px)',\n paddingRight: 'var(--spacing-md, 16px)',\n backgroundColor: 'var(--color-bg-default, transparent)'\n }}\n {...props}\n >\n {children}\n </div>\n )\n }\n\n // Default/other variants\n return (\n <div\n ref={ref}\n role='tablist'\n className={twMerge(\n 'relative w-full flex items-center bg-transparent border-b border-border-default dark:border-border-default-dark',\n variant === 'primary' ? 'h-[72px] gap-6' : 'h-12',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\nTabsList.displayName = 'TabsList'\n\n// ============================================================================\n// TabsTrigger\n// ============================================================================\n\nexport interface TabsTriggerProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n value: string\n icon?: React.ReactNode\n}\n\nexport const TabsTrigger = React.forwardRef<HTMLButtonElement, TabsTriggerProps>(\n (\n {\n value,\n className,\n children,\n style,\n ...props\n },\n ref\n ) => {\n const { value: activeValue, onValueChange, variant } = useTabs()\n const isActive = activeValue === value\n\n // Header variant uses inline styles for colors to ensure CSS variables work\n const headerStyle = variant === 'header'\n ? {\n color: isActive\n ? 'var(--color-brand-primary)'\n : 'var(--color-text-secondary)',\n ...style\n }\n : style\n\n return (\n <button\n ref={ref}\n role='tab'\n aria-selected={isActive}\n onClick={() => onValueChange(value)}\n className={twMerge(\n 'relative inline-flex flex-col items-center justify-center whitespace-nowrap font-poppins transition-colors cursor-pointer disabled:pointer-events-none disabled:opacity-50 outline-none',\n variant === 'header'\n ? 'flex-1 text-sm font-semibold py-3'\n : variant === 'primary'\n ? 'h-[72px] text-base font-medium px-0 pb-3 pt-2 flex-none'\n : 'h-12 text-[12px] font-semibold px-4 flex-none',\n variant !== 'header' && (isActive ? 'text-brand-primary' : 'text-text-secondary dark:text-text-secondary-dark hover:text-text-primary dark:hover:text-text-primary-dark'),\n className\n )}\n style={headerStyle}\n {...props}\n >\n <span>{children}</span>\n {isActive && variant === 'header' && (\n <motion.span\n layoutId='header-tab-indicator'\n className='absolute rounded-t-full'\n style={{\n bottom: 0,\n left: 0,\n right: 0,\n marginLeft: 'auto',\n marginRight: 'auto',\n width: '3.5rem',\n height: '3px',\n backgroundColor: 'var(--color-brand-primary)'\n }}\n transition={{ type: 'spring', bounce: 0.2, duration: 0.6 }}\n />\n )}\n {isActive && variant !== 'header' && (\n <motion.span\n layoutId='tab-indicator'\n className='absolute bottom-0 left-0 right-0 h-0.5 bg-brand-primary z-10'\n transition={{ type: 'spring', bounce: 0.2, duration: 0.6 }}\n />\n )}\n </button>\n )\n }\n)\nTabsTrigger.displayName = 'TabsTrigger'\n\n// ============================================================================\n// TabsContent\n// ============================================================================\n\nexport interface TabsContentProps extends React.HTMLAttributes<HTMLDivElement> {\n value: string\n}\n\nexport const TabsContent = React.forwardRef<HTMLDivElement, TabsContentProps>(\n ({ value, className, children, ...props }, ref) => {\n const { value: activeValue, variant } = useTabs()\n if (activeValue !== value) return null\n\n return (\n <div\n ref={ref}\n role='tabpanel'\n className={twMerge(\n 'focus-visible:outline-none',\n variant === 'primary' || variant === 'header' ? 'mt-0' : 'mt-6',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\nTabsContent.displayName = 'TabsContent'\n","import * as React from 'react'\nimport { motion, AnimatePresence } from 'framer-motion'\nimport { twMerge } from 'tailwind-merge'\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface SelectProps {\n value: string\n onValueChange: (value: string) => void\n disabled?: boolean\n children: React.ReactNode\n className?: string\n}\n\nexport interface SelectTriggerProps {\n placeholder?: string\n className?: string\n children?: React.ReactNode\n // Internal props (passed by Select)\n _isOpen?: boolean\n _disabled?: boolean\n _onToggle?: () => void\n}\n\nexport interface SelectContentProps {\n className?: string\n children: React.ReactNode\n // Internal props (passed by Select)\n _isOpen?: boolean\n _value?: string\n _onSelect?: (value: string) => void\n _highlightedIndex?: number\n _setHighlightedIndex?: (index: number) => void\n}\n\nexport interface SelectItemProps {\n value: string\n disabled?: boolean\n className?: string\n children: React.ReactNode\n // Internal props (passed by SelectContent)\n _index?: number\n _isSelected?: boolean\n _isHighlighted?: boolean\n _onSelect?: (value: string) => void\n _onHighlight?: (index: number) => void\n}\n\n// ============================================================================\n// ChevronDownIcon\n// ============================================================================\n\nconst ChevronDownIcon: React.FC<{ className?: string }> = ({ className }) => (\n <svg\n className={className}\n viewBox='0 0 20 20'\n fill='currentColor'\n aria-hidden='true'\n >\n <path\n fillRule='evenodd'\n d='M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z'\n clipRule='evenodd'\n />\n </svg>\n)\n\n// ============================================================================\n// Select\n// ============================================================================\n\nexport const Select: React.FC<SelectProps> = ({\n value,\n onValueChange,\n disabled = false,\n children,\n className,\n}) => {\n const [isOpen, setIsOpen] = React.useState(false)\n const [highlightedIndex, setHighlightedIndex] = React.useState(-1)\n const containerRef = React.useRef<HTMLDivElement>(null)\n\n const handleToggle = React.useCallback(() => {\n if (!disabled) {\n setIsOpen((prev) => !prev)\n if (!isOpen) setHighlightedIndex(0)\n }\n }, [disabled, isOpen])\n\n const handleSelect = React.useCallback(\n (newValue: string) => {\n onValueChange(newValue)\n setIsOpen(false)\n setHighlightedIndex(-1)\n },\n [onValueChange]\n )\n\n // Handle click outside\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node)\n ) {\n setIsOpen(false)\n setHighlightedIndex(-1)\n }\n }\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [isOpen])\n\n // Handle escape key\n React.useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape' && isOpen) {\n setIsOpen(false)\n setHighlightedIndex(-1)\n }\n }\n\n document.addEventListener('keydown', handleEscape)\n return () => document.removeEventListener('keydown', handleEscape)\n }, [isOpen])\n\n // Clone children and inject internal props\n const enhancedChildren = React.Children.map(children, (child) => {\n if (!React.isValidElement(child)) return child\n\n if (child.type === SelectTrigger) {\n return React.cloneElement(child as React.ReactElement<SelectTriggerProps>, {\n _isOpen: isOpen,\n _disabled: disabled,\n _onToggle: handleToggle,\n })\n }\n\n if (child.type === SelectContent) {\n return React.cloneElement(child as React.ReactElement<SelectContentProps>, {\n _isOpen: isOpen,\n _value: value,\n _onSelect: handleSelect,\n _highlightedIndex: highlightedIndex,\n _setHighlightedIndex: setHighlightedIndex,\n })\n }\n\n return child\n })\n\n return (\n <div ref={containerRef} className={twMerge('relative', className)}>\n {enhancedChildren}\n </div>\n )\n}\n\nSelect.displayName = 'Select'\n\n// ============================================================================\n// SelectTrigger\n// ============================================================================\n\nexport const SelectTrigger = React.forwardRef<HTMLButtonElement, SelectTriggerProps>(\n (\n {\n placeholder = 'Select...',\n className,\n children,\n _isOpen,\n _disabled,\n _onToggle,\n },\n ref\n ) => {\n const hasChildren = React.Children.count(children) > 0\n\n return (\n <button\n ref={ref}\n type='button'\n onClick={_onToggle}\n disabled={_disabled}\n aria-haspopup='listbox'\n aria-expanded={_isOpen}\n className={twMerge(\n 'w-full flex items-center justify-between gap-2',\n 'bg-[var(--color-bg-subtle,#1a1a1a)] border border-[var(--color-border-default,#333)] rounded px-3 py-1.5',\n 'text-sm text-[var(--color-text-primary,#fff)] text-left',\n 'transition-colors cursor-pointer',\n 'hover:border-[var(--color-border-strong,#555)]',\n 'focus:outline-none focus:ring-2 focus:ring-[var(--color-brand-primary,#7C3AED)]/50 focus:border-[var(--color-brand-primary,#7C3AED)]',\n _disabled && 'opacity-50 cursor-not-allowed',\n className\n )}\n >\n <span\n className={\n !hasChildren\n ? 'text-[var(--color-text-tertiary,#888)]'\n : undefined\n }\n >\n {hasChildren ? children : placeholder}\n </span>\n <ChevronDownIcon\n className={twMerge(\n 'w-4 h-4 text-[var(--color-text-secondary,#999)] transition-transform',\n _isOpen && 'rotate-180'\n )}\n />\n </button>\n )\n }\n)\n\nSelectTrigger.displayName = 'SelectTrigger'\n\n// ============================================================================\n// SelectContent\n// ============================================================================\n\nexport const SelectContent = React.forwardRef<HTMLUListElement, SelectContentProps>(\n (\n {\n className,\n children,\n _isOpen,\n _value,\n _onSelect,\n _highlightedIndex,\n _setHighlightedIndex,\n },\n ref\n ) => {\n const listRef = React.useRef<HTMLUListElement>(null)\n\n // Merge refs\n const mergedRef = React.useCallback(\n (node: HTMLUListElement | null) => {\n if (typeof ref === 'function') {\n ref(node)\n } else if (ref) {\n ref.current = node\n }\n ;(listRef as React.MutableRefObject<HTMLUListElement | null>).current = node\n },\n [ref]\n )\n\n // Scroll highlighted option into view\n React.useEffect(() => {\n if (_isOpen && _highlightedIndex !== undefined && _highlightedIndex >= 0 && listRef.current) {\n const highlightedElement = listRef.current.children[_highlightedIndex] as HTMLElement\n if (highlightedElement) {\n highlightedElement.scrollIntoView({ block: 'nearest' })\n }\n }\n }, [_isOpen, _highlightedIndex])\n\n // Clone children and inject internal props with index\n let itemIndex = 0\n const enhancedChildren = React.Children.map(children, (child) => {\n if (!React.isValidElement(child)) return child\n\n if (child.type === SelectItem) {\n const currentIndex = itemIndex++\n const itemProps = child.props as SelectItemProps\n return React.cloneElement(child as React.ReactElement<SelectItemProps>, {\n _index: currentIndex,\n _isSelected: _value === itemProps.value,\n _isHighlighted: _highlightedIndex === currentIndex,\n _onSelect,\n _onHighlight: _setHighlightedIndex,\n })\n }\n\n return child\n })\n\n const contentVariants = {\n hidden: { opacity: 0, y: -8 },\n visible: {\n opacity: 1,\n y: 0,\n transition: { type: 'spring' as const, damping: 25, stiffness: 400 },\n },\n exit: { opacity: 0, y: -8, transition: { duration: 0.1 } },\n }\n\n return (\n <AnimatePresence mode='wait'>\n {_isOpen && (\n <motion.ul\n ref={mergedRef}\n role='listbox'\n variants={contentVariants}\n initial='hidden'\n animate='visible'\n exit='exit'\n className={twMerge(\n 'absolute z-50 w-full mt-1',\n 'bg-[var(--color-bg-raised,#1f1f1f)] border border-[var(--color-border-default,#333)] rounded shadow-lg',\n 'max-h-60 overflow-auto',\n 'py-1',\n className\n )}\n >\n {enhancedChildren}\n </motion.ul>\n )}\n </AnimatePresence>\n )\n }\n)\n\nSelectContent.displayName = 'SelectContent'\n\n// ============================================================================\n// SelectItem\n// ============================================================================\n\nexport const SelectItem = React.forwardRef<HTMLLIElement, SelectItemProps>(\n (\n {\n value,\n disabled = false,\n className,\n children,\n _index,\n _isSelected,\n _isHighlighted,\n _onSelect,\n _onHighlight,\n },\n ref\n ) => {\n const handleClick = () => {\n if (!disabled && _onSelect) {\n _onSelect(value)\n }\n }\n\n const handleMouseEnter = () => {\n if (!disabled && _onHighlight && _index !== undefined) {\n _onHighlight(_index)\n }\n }\n\n return (\n <li\n ref={ref}\n role='option'\n aria-selected={_isSelected}\n aria-disabled={disabled}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n className={twMerge(\n 'px-3 py-2 text-sm cursor-pointer transition-colors',\n 'text-[var(--color-text-primary,#fff)]',\n _isSelected && 'text-[var(--color-text-highlight,#7C3AED)]',\n _isHighlighted && 'bg-[var(--color-bg-muted,#2a2a2a)]',\n disabled && 'opacity-50 cursor-not-allowed',\n className\n )}\n >\n {children}\n </li>\n )\n }\n)\n\nSelectItem.displayName = 'SelectItem'\n","import * as React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Width of the skeleton block (px, %, rem, etc.) */\n width?: string | number;\n /** Height of the skeleton block (px, %, rem, etc.) */\n height?: string | number;\n /** Shape of the skeleton */\n variant?: 'rect' | 'circle' | 'text';\n /** Enables shimmer animation */\n shimmer?: boolean;\n /** Custom background color (Tailwind classes) */\n colorClass?: string;\n}\n\nexport const Skeleton: React.FC<SkeletonProps> = ({\n width = '100%',\n height = '1rem',\n variant = 'text',\n shimmer = true,\n className,\n style,\n ...props\n}) => {\n const defaultGradient =\n 'linear-gradient(25deg, #2C2C2C 0%, #2C2C2C 60%, #121212 100%)'\n\n return (\n <div\n className={twMerge(\n 'relative overflow-hidden animate-fade-in',\n variant === 'circle' ? 'rounded-full' : 'rounded',\n className\n )}\n style={{\n width: typeof width === 'number' ? `${width}px` : width,\n height: typeof height === 'number' ? `${height}px` : height,\n background: defaultGradient,\n ...style,\n }}\n {...props}\n >\n {shimmer && (\n <div className='absolute inset-0 animate-shimmer bg-gradient-to-r from-transparent via-white/20 to-transparent dark:via-gray-600/30' />\n )}\n </div>\n )\n}\n\nSkeleton.displayName = 'Skeleton'\n","import { twMerge } from 'tailwind-merge'\nimport type { ComponentProps } from 'react'\nimport { TextHeading, TextBody } from '../texts'\n\nexport function BannerNotificationIcon ({ className, ...props }: ComponentProps<'div'>) {\n const baseClasses = [\n 'flex items-center justify-center',\n 'flex-shrink-0',\n '[font-size:var(--deframe-widget-font-size-xxl)]',\n ].join(' ')\n\n return (\n <div\n data-slot='banner-notification-icon'\n data-test-id='banner-notification-icon'\n className={twMerge(baseClasses, className)}\n {...props}\n />\n )\n}\n\nexport function BannerNotificationContent ({ className, ...props }: ComponentProps<'div'>) {\n const baseClasses = 'flex-1 min-w-0 p-2'\n\n return (\n <div\n data-slot='banner-notification-content'\n data-test-id='banner-notification-content'\n className={twMerge(baseClasses, className)}\n {...props}\n />\n )\n}\n\nexport function BannerNotificationTitle ({ className, ...props }: ComponentProps<'p'>) {\n return (\n <TextHeading\n variant='h4'\n as='p'\n data-slot='banner-notification-title'\n data-test-id='banner-notification-title'\n className={twMerge('[margin-bottom:var(--deframe-widget-size-gap-xs)] text-inherit', className)}\n {...props}\n />\n )\n}\n\nexport function BannerNotificationMessage ({ className, ...props }: ComponentProps<'p'>) {\n return (\n <TextBody\n variant='text-medium'\n data-slot='banner-notification-message'\n data-test-id='banner-notification-message'\n className={twMerge('text-inherit', className)}\n {...props}\n />\n )\n}\n\nexport function BannerNotificationClose ({ className, ...props }: ComponentProps<'button'>) {\n const baseClasses = [\n 'flex-shrink-0',\n 'self-start',\n '[font-size:var(--deframe-widget-font-size-xl)]',\n 'transition-opacity hover:opacity-70 cursor-pointer',\n ].join(' ')\n\n return (\n <button\n data-slot='banner-notification-close'\n data-test-id='banner-notification-close'\n aria-label='Close notification'\n className={twMerge(baseClasses, className)}\n {...props}\n />\n )\n}\n","import * as React from 'react'\nimport { twMerge } from 'tailwind-merge'\nimport {\n MdInfoOutline,\n MdWarningAmber,\n MdErrorOutline,\n MdCheckCircleOutline,\n MdClose,\n} from 'react-icons/md'\nimport {\n BannerNotificationIcon,\n BannerNotificationContent,\n BannerNotificationTitle,\n BannerNotificationMessage,\n BannerNotificationClose,\n} from './BannerNotificationCompound'\nimport type { BannerNotificationProps } from './index'\n\nexport function BannerNotification ({\n type = 'inline',\n variant = 'info',\n title,\n message,\n position = 'top-right',\n autoHideDuration = 5000,\n show = true,\n onClose,\n showIcon = true,\n icon,\n className,\n ...props\n}: BannerNotificationProps) {\n const [isVisible, setIsVisible] = React.useState(show)\n const [isExiting, setIsExiting] = React.useState(false)\n const timerRef = React.useRef<ReturnType<typeof setTimeout> | null>(null)\n\n const variantInlineClasses = {\n info: 'bg-[var(--deframe-widget-color-state-info)]/20 border-[var(--deframe-widget-color-state-info)]',\n warning: 'bg-[var(--deframe-widget-color-state-warning)]/20 border-[var(--deframe-widget-color-state-warning)]',\n error: 'bg-[var(--deframe-widget-color-state-error)]/20 border-[var(--deframe-widget-color-state-error)]',\n success: 'bg-[var(--deframe-widget-color-state-success)]/20 border-[var(--deframe-widget-color-state-success)]',\n } as const\n\n const variantToastClasses = {\n info: 'bg-[var(--deframe-widget-color-state-info)] border-[var(--deframe-widget-color-state-info)]',\n warning: 'bg-[var(--deframe-widget-color-state-warning)] border-[var(--deframe-widget-color-state-warning)]',\n error: 'bg-[var(--deframe-widget-color-state-error)] border-[var(--deframe-widget-color-state-error)]',\n success: 'bg-[var(--deframe-widget-color-state-success)] border-[var(--deframe-widget-color-state-success)]',\n } as const\n\n const variantTextClasses = {\n info: 'text-[var(--deframe-widget-color-state-info)]',\n warning: 'text-[var(--deframe-widget-color-state-warning)]',\n error: 'text-[var(--deframe-widget-color-state-error)]',\n success: 'text-[var(--deframe-widget-color-state-success)]',\n } as const\n\n const variantIcons = {\n info: MdInfoOutline,\n warning: MdWarningAmber,\n error: MdErrorOutline,\n success: MdCheckCircleOutline,\n } as const\n\n const positionClasses = {\n 'top-right': 'top-4 right-4',\n 'top-left': 'top-4 left-4',\n 'top-center': 'top-4 left-1/2 -translate-x-1/2',\n 'bottom-right': 'bottom-4 right-4',\n 'bottom-left': 'bottom-4 left-4',\n 'bottom-center': 'bottom-4 left-1/2 -translate-x-1/2',\n } as const\n\n const handleClose = () => {\n setIsExiting(true)\n setTimeout(() => {\n setIsVisible(false)\n if (timerRef.current) {\n clearTimeout(timerRef.current)\n timerRef.current = null\n }\n onClose?.()\n }, 300)\n }\n\n React.useEffect(() => {\n if (!show) {\n handleClose()\n return\n }\n setIsVisible(true)\n setIsExiting(false)\n }, [show])\n\n React.useEffect(() => {\n if (type === 'toast' && show && autoHideDuration > 0 && !isExiting) {\n timerRef.current = setTimeout(handleClose, autoHideDuration)\n }\n return () => {\n if (timerRef.current) {\n clearTimeout(timerRef.current)\n timerRef.current = null\n }\n }\n }, [type, show, autoHideDuration, isExiting])\n\n if (!isVisible) return null\n\n type Variant = 'info' | 'warning' | 'error' | 'success'\n type BannerType = 'inline' | 'toast'\n type Position = keyof typeof positionClasses\n\n const v = variant as Variant\n const t = type as BannerType\n const p = position as Position\n\n const baseClasses = [\n 'flex items-center',\n '[gap:var(--deframe-widget-size-gap-md)]',\n 'px-[var(--deframe-widget-size-padding-x-md)]',\n 'py-[var(--deframe-widget-size-padding-y-sm)]',\n 'rounded-[var(--deframe-widget-size-radius-xs)]',\n 'border',\n 'transition-all duration-300',\n ].join(' ')\n\n const typeClasses = {\n inline: variantInlineClasses[v],\n toast: [\n variantToastClasses[v],\n 'fixed z-50 w-[clamp(18rem,40vw,30rem)] shadow-lg',\n positionClasses[p],\n ].join(' '),\n } as const\n\n const bannerClasses = twMerge(\n baseClasses,\n typeClasses[t],\n variantTextClasses[v],\n isExiting && 'opacity-0 -translate-y-2',\n className\n )\n\n const IconComponent = variantIcons[v]\n const resolvedIcon = icon ?? <IconComponent />\n\n return (\n <div\n data-slot='banner-notification'\n data-test-id='banner-notification'\n role='alert'\n className={bannerClasses}\n {...props}\n >\n {showIcon && (\n <BannerNotificationIcon>{resolvedIcon}</BannerNotificationIcon>\n )}\n\n <BannerNotificationContent>\n {title && <BannerNotificationTitle>{title}</BannerNotificationTitle>}\n <BannerNotificationMessage>{message}</BannerNotificationMessage>\n </BannerNotificationContent>\n\n <BannerNotificationClose onClick={handleClose}>\n <MdClose />\n </BannerNotificationClose>\n </div>\n )\n}\n\nBannerNotification.displayName = 'BannerNotification'\n","import * as React from 'react'\nimport { twMerge } from 'tailwind-merge'\nimport { TextBody } from '../texts'\n\nexport interface AddressDisplayProps {\n /** The full address to display */\n address: string;\n /** Optional truncated display text shown instead of the full address */\n displayText?: string;\n /** Callback when copy button is clicked */\n onCopy?: (address: string) => void;\n /** Custom className for the container */\n className?: string;\n /** Custom className for the text */\n textClassName?: string;\n /** Show copy button */\n showCopyButton?: boolean;\n}\n\nexport const AddressDisplay: React.FC<AddressDisplayProps> = ({\n address,\n onCopy,\n className = '',\n textClassName = '',\n showCopyButton = true,\n}) => {\n const [copied, setCopied] = React.useState(false)\n\n const handleCopy = async () => {\n try {\n await navigator.clipboard.writeText(address)\n setCopied(true)\n onCopy?.(address)\n\n // Reset copied state after 2 seconds\n setTimeout(() => setCopied(false), 2000)\n } catch (err) {\n console.error('Failed to copy address:', err)\n }\n }\n\n return (\n <div\n className={twMerge(\n 'bg-[#121212] rounded p-3 flex items-center justify-between gap-2 border border-gray-700',\n className\n )}\n >\n <TextBody\n className={twMerge(\n 'block w-full whitespace-nowrap overflow-hidden',\n textClassName\n )}\n >\n {address}\n </TextBody>\n {showCopyButton && (\n <button\n onClick={handleCopy}\n className='text-gray-400 hover:text-white transition-colors flex-shrink-0 cursor-pointer'\n aria-label='Copy address'\n >\n {copied\n ? (\n <svg\n className='w-5 h-5 text-green-500'\n fill='none'\n stroke='currentColor'\n viewBox='0 0 24 24'\n >\n <path\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth={2}\n d='M5 13l4 4L19 7'\n />\n </svg>\n )\n : (\n <svg\n className='w-5 h-5'\n fill='none'\n stroke='currentColor'\n viewBox='0 0 24 24'\n >\n <path\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth={2}\n d='M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z'\n />\n </svg>\n )}\n </button>\n )}\n </div>\n )\n}\n\nAddressDisplay.displayName = 'AddressDisplay'\n","import * as React from 'react'\nimport { TextBody } from '@/stories/texts'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface DetailItem {\n /** Label for the detail row */\n label: string;\n /** Value to display */\n value: string | React.ReactNode;\n /** Optional custom className for the value */\n valueClassName?: string;\n /** Optional custom className for the label */\n labelClassName?: string;\n}\n\nexport interface SummaryDetailsProps {\n /** Title displayed in the summary header */\n title: string;\n /** Array of detail items to render */\n items: DetailItem[];\n /** Whether the details are open by default */\n defaultOpen?: boolean;\n /** Custom className for the details container */\n className?: string;\n /** Custom className for the summary header */\n summaryClassName?: string;\n /** Custom className for the content area */\n contentClassName?: string;\n /** Show dividers between items */\n showDividers?: boolean;\n}\n\nexport const SummaryDetails: React.FC<SummaryDetailsProps> = ({\n title,\n items,\n defaultOpen = false,\n className = '',\n summaryClassName = '',\n contentClassName = '',\n showDividers = true,\n}) => {\n return (\n <details\n className={twMerge('bg-[#1A1A1A] rounded p-4 group', className)}\n open={defaultOpen}\n >\n {/* Summary Header */}\n <summary className={twMerge('cursor-pointer block ', summaryClassName)}>\n <div className='flex items-center justify-between'>\n <TextBody className='text-white font-medium'>{title}</TextBody>\n <svg\n className='w-5 h-5 text-gray-400 transition-transform duration-300 group-open:rotate-180'\n fill='none'\n stroke='currentColor'\n viewBox='0 0 24 24'\n aria-hidden='true'\n >\n <path\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth={2}\n d='M5 9l7 7 7-7'\n />\n </svg>\n </div>\n </summary>\n\n {/* Details Content */}\n <div\n className={twMerge(\n 'mt-4',\n showDividers && 'divide-y divide-[#2A2A2A]',\n contentClassName\n )}\n >\n {items.map((item, index) => (\n <div key={index} className='flex justify-between py-2'>\n <TextBody\n variant='text-small'\n className={twMerge('text-text-tertiary dark:text-text-tertiary-dark', item.labelClassName)}\n >\n {item.label}\n </TextBody>\n {typeof item.value === 'string'\n ? (\n <TextBody\n variant='text-small'\n className={twMerge('text-text-primary dark:text-text-primary-dark font-medium', item.valueClassName)}\n >\n {item.value}\n </TextBody>\n )\n : (\n <div className={item.valueClassName}>{item.value}</div>\n )}\n </div>\n ))}\n </div>\n </details>\n )\n}\n","import * as React from 'react'\nimport { twMerge } from 'tailwind-merge'\nimport { type SummaryDetailsProps } from './SummaryDetails'\n\nexport const SummaryDetailsCryptoControlV2: React.FC<SummaryDetailsProps> = ({\n title,\n items,\n defaultOpen = false,\n className = '',\n summaryClassName = '',\n contentClassName = '',\n showDividers = true,\n}) => {\n return (\n <details\n data-test-id='summary-details-v2'\n data-slot='summary-details-v2'\n className={twMerge(\n 'bg-[var(--color-bg-subtle,#1a1a1a)] rounded-lg border border-border-default dark:border-border-default-dark p-4 w-full max-w-[320px] group',\n className\n )}\n open={defaultOpen}\n >\n {/* Header */}\n <summary\n data-test-id='summary-details-v2-summary'\n data-slot='summary-details-v2-summary'\n className={twMerge('cursor-pointer list-none', summaryClassName)}\n >\n <div className='flex items-center justify-between'>\n <span\n data-test-id='summary-details-v2-title'\n data-slot='summary-details-v2-title'\n className='text-[15px] font-semibold text-text-primary dark:text-text-primary-dark'\n >\n {title}\n </span>\n <svg\n data-test-id='summary-details-v2-chevron'\n data-slot='summary-details-v2-chevron'\n className='w-4 h-4 text-text-secondary dark:text-text-secondary-dark transition-transform duration-300 group-open:rotate-180 flex-shrink-0'\n viewBox='0 0 24 24'\n fill='none'\n stroke='currentColor'\n aria-hidden='true'\n >\n <path strokeLinecap='round' strokeLinejoin='round' strokeWidth={2} d='M5 9l7 7 7-7' />\n </svg>\n </div>\n </summary>\n\n {/* Top divider */}\n <div\n data-test-id='summary-details-v2-top-divider'\n data-slot='summary-details-v2-top-divider'\n className='h-px bg-border-default dark:bg-border-default-dark mt-3'\n />\n\n {/* Rows */}\n <div\n data-test-id='summary-details-v2-content'\n data-slot='summary-details-v2-content'\n className={twMerge('mt-0', contentClassName)}\n >\n {items.map((item, i) => (\n <React.Fragment key={i}>\n <div\n data-test-id='summary-details-v2-row'\n data-slot='summary-details-v2-row'\n className='flex justify-between items-center py-[10px] gap-3'\n >\n <span\n data-test-id='summary-details-v2-row-label'\n data-slot='summary-details-v2-row-label'\n className={twMerge(\n 'text-[11px] font-medium uppercase tracking-[0.07em] text-text-tertiary dark:text-text-tertiary-dark flex-shrink-0',\n item.labelClassName\n )}\n >\n {item.label}\n </span>\n\n {typeof item.value === 'string'\n ? (\n <span\n data-test-id='summary-details-v2-row-value'\n data-slot='summary-details-v2-row-value'\n className={twMerge(\n 'text-[13px] font-semibold text-text-primary dark:text-text-primary-dark text-right',\n item.valueClassName\n )}\n >\n {item.value}\n </span>\n )\n : (\n <div\n data-test-id='summary-details-v2-row-value'\n data-slot='summary-details-v2-row-value'\n className={twMerge('text-right', item.valueClassName)}\n >\n {item.value}\n </div>\n )}\n </div>\n\n {showDividers && i < items.length - 1 && (\n <div\n data-test-id='summary-details-v2-row-divider'\n data-slot='summary-details-v2-row-divider'\n className='h-px bg-border-default dark:bg-border-default-dark'\n />\n )}\n </React.Fragment>\n ))}\n </div>\n </details>\n )\n}\n","import * as React from 'react'\nimport { motion, AnimatePresence } from 'framer-motion'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface ActionSheetItem {\n id: string\n label: string\n icon?: React.ReactNode\n variant?: 'default' | 'destructive' | 'success'\n disabled?: boolean\n onClick?: () => void\n}\n\nexport interface ActionSheetProps {\n /** Unique identifier for this action sheet */\n id: string\n /** Current action sheet ID from state */\n currentActionSheetId?: string | null\n /** Whether the action sheet is open */\n isOpen?: boolean\n /** Function to close the action sheet */\n onClose?: () => void\n /** Custom content to render */\n children?: React.ReactNode\n /** Custom className for the container */\n className?: string\n /** Custom className for the content area */\n contentClassName?: string\n /** Position of the action sheet */\n position?: 'bottom' | 'center'\n /** Height of the sheet */\n height?: 'auto' | 'full' | 'half'\n /** Whether clicking the backdrop should close the sheet (default: true) */\n closeOnBackdropClick?: boolean\n /** Title displayed in the header */\n title?: string\n /** Description displayed below the title */\n description?: string\n /** List of action items to render */\n items?: ActionSheetItem[]\n /** Whether to show a cancel button (default: true) */\n showCancel?: boolean\n}\n\n/**\n * ActionSheet - A flexible bottom sheet / modal component\n *\n * Pure custom content mode for maximum flexibility.\n * Compose your content using existing library components.\n *\n * Features:\n * - Smooth framer-motion animations with spring physics\n * - Multiple height options (auto, full, half)\n * - Position options (bottom, center)\n * - Dark mode support via CSS custom properties\n * - Keyboard navigation (ESC to close)\n * - Backdrop click to dismiss\n * - ARIA labels for accessibility\n *\n * @example\n * <ActionSheet\n * id=\"token-selector\"\n * currentActionSheetId={currentId}\n * isOpen={isOpen}\n * height=\"full\"\n * onClose={handleClose}\n * >\n * <div className=\"flex flex-col h-full bg-black p-6\">\n * <h2>Select Token</h2>\n * <Input placeholder=\"Search here...\" />\n * <ListItem>...</ListItem>\n * </div>\n * </ActionSheet>\n */\nexport const ActionSheet: React.FC<ActionSheetProps> = ({\n id,\n currentActionSheetId,\n isOpen,\n onClose,\n children,\n className = '',\n contentClassName = '',\n position = 'bottom',\n height = 'auto',\n closeOnBackdropClick = true,\n title,\n description,\n items,\n showCancel = true,\n}) => {\n const isThisSheetActive = isOpen && currentActionSheetId === id\n\n React.useEffect(() => {\n if (isThisSheetActive) {\n // Prevent body scroll when action sheet is open\n document.body.style.overflow = 'hidden'\n } else {\n document.body.style.overflow = ''\n }\n\n return () => {\n document.body.style.overflow = ''\n }\n }, [isThisSheetActive])\n\n // Handle escape key\n React.useEffect(() => {\n if (!isThisSheetActive) return\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n onClose?.()\n }\n }\n\n document.addEventListener('keydown', handleEscape)\n return () => document.removeEventListener('keydown', handleEscape)\n }, [isThisSheetActive, onClose])\n\n // Handle backdrop click\n const handleBackdropClick = (e: React.MouseEvent) => {\n if (closeOnBackdropClick && e.target === e.currentTarget) {\n onClose?.()\n }\n }\n\n // Animation variants\n const backdropVariants = {\n hidden: { opacity: 0 },\n visible: { opacity: 1 },\n exit: { opacity: 0 },\n }\n\n const sheetVariants = {\n hidden: position === 'bottom' ? { y: '100%' } : { opacity: 0, scale: 0.95 },\n visible:\n position === 'bottom'\n ? {\n y: '0%',\n transition: {\n type: 'spring' as const,\n damping: 25,\n stiffness: 300,\n },\n }\n : {\n opacity: 1,\n scale: 1,\n transition: {\n type: 'spring' as const,\n damping: 25,\n stiffness: 300,\n },\n },\n exit:\n position === 'bottom'\n ? {\n y: '100%',\n transition: {\n type: 'spring' as const,\n damping: 25,\n stiffness: 300,\n },\n }\n : {\n opacity: 0,\n scale: 0.95,\n transition: {\n type: 'spring' as const,\n damping: 25,\n stiffness: 300,\n },\n },\n }\n\n // Height classes\n const getHeightClass = () => {\n switch (height) {\n case 'full':\n return 'h-full'\n case 'half':\n return 'h-[50vh]'\n case 'auto':\n default:\n return 'h-auto'\n }\n }\n\n return (\n <AnimatePresence mode='wait'>\n {isThisSheetActive && (\n <motion.div\n className={twMerge(\n 'fixed inset-0 z-50 flex justify-center',\n position === 'bottom' ? 'items-end' : 'items-center',\n className\n )}\n role='dialog'\n aria-modal='true'\n onClick={handleBackdropClick}\n variants={backdropVariants}\n initial='hidden'\n animate='visible'\n exit='exit'\n transition={{ duration: 0.2 }}\n >\n {/* Backdrop */}\n <div\n className='absolute inset-0 bg-black/50 backdrop-blur-sm'\n aria-hidden='true'\n />\n\n {/* Action Sheet Content */}\n <motion.div\n className={twMerge(\n 'relative w-full bg-[var(--sheet-bg,#0A0A0A)] shadow-2xl overflow-hidden',\n position === 'bottom'\n ? 'max-w-full rounded-t-[32px]'\n : 'max-w-lg rounded-2xl mx-4',\n getHeightClass(),\n contentClassName\n )}\n variants={sheetVariants}\n initial='hidden'\n animate='visible'\n exit='exit'\n >\n {children}\n </motion.div>\n </motion.div>\n )}\n </AnimatePresence>\n )\n}\n\nexport default ActionSheet\n","/**\n * Theme color configuration for Deframe components\n */\nexport interface DeframeThemeColors {\n // Brand colors\n /** Primary brand color - used for buttons, links, accents */\n brandPrimary?: string\n /** Secondary brand color - used for secondary accents */\n brandSecondary?: string\n\n // Background colors\n /** Main background color */\n bgDefault?: string\n /** Subtle background color */\n bgSubtle?: string\n /** Muted/disabled background color */\n bgMuted?: string\n\n // Text colors\n /** Primary text color */\n textPrimary?: string\n /** Secondary text color */\n textSecondary?: string\n /** Disabled text color */\n textDisabled?: string\n /** Text color for dark backgrounds */\n textInverse?: string\n\n // State colors\n /** Success state color */\n stateSuccess?: string\n /** Error state color */\n stateError?: string\n /** Warning state color */\n stateWarning?: string\n}\n\n/**\n * Complete theme configuration for Deframe components\n */\nexport interface DeframeTheme {\n colors?: DeframeThemeColors\n}\n\n/**\n * Theme mode - controls light/dark appearance\n */\nexport type ThemeMode = 'light' | 'dark' | 'auto'\n\n/**\n * Theme preset - predefined color schemes\n */\nexport type ThemePreset = 'default' | 'cryptocontrol'\n\n/**\n * Structured theme configuration with mode, preset, and overrides\n */\nexport interface DeframeThemeConfig {\n /** Theme mode: 'light', 'dark', or 'auto' (follows system preference) */\n mode?: ThemeMode\n /** Theme preset: 'default' or 'cryptocontrol' */\n preset?: ThemePreset\n /** Custom color overrides for each mode */\n overrides?: {\n light?: DeframeTheme\n dark?: DeframeTheme\n }\n}\n\n/**\n * Default theme values - these serve as fallbacks when no custom theme is provided\n */\nexport const defaultThemeColors: Required<DeframeThemeColors> = {\n // Brand\n brandPrimary: '#405EFF',\n brandSecondary: '#A9ABF7',\n\n // Backgrounds\n bgDefault: '#FFFFFF',\n bgSubtle: '#F8F9FA',\n bgMuted: '#E3E4E8',\n\n // Text\n textPrimary: '#252050',\n textSecondary: '#5C5F66',\n textDisabled: '#C6C8CC',\n textInverse: '#FFFFFF',\n\n // States\n stateSuccess: '#2BA176',\n stateError: '#FF4D4F',\n stateWarning: '#F6A700'\n}\n\n/**\n * Dark mode theme values\n */\nexport const darkThemeColors: Required<DeframeThemeColors> = {\n // Brand\n brandPrimary: '#405EFF',\n brandSecondary: '#A9ABF7',\n\n // Backgrounds\n bgDefault: '#121212',\n bgSubtle: '#1E1E1E',\n bgMuted: '#2C2C2C',\n\n // Text\n textPrimary: '#FFFFFF',\n textSecondary: '#E3E4E8',\n textDisabled: '#898D95',\n textInverse: '#252050',\n\n // States\n stateSuccess: '#2BA176',\n stateError: '#FF4D4F',\n stateWarning: '#F6A700'\n}\n\n/**\n * Cryptocontrol theme values\n */\nexport const cryptocontrolThemeColors: Required<DeframeThemeColors> = {\n // Brand - green primary for cryptocontrol\n brandPrimary: '#1FC16B',\n brandSecondary: '#A9ABF7',\n\n // Backgrounds (same as dark)\n bgDefault: '#121212',\n bgSubtle: '#1E1E1E',\n bgMuted: '#2C2C2C',\n\n // Text (same as dark)\n textPrimary: '#FFFFFF',\n textSecondary: '#E3E4E8',\n textDisabled: '#898D95',\n textInverse: '#252050',\n\n // States\n stateSuccess: '#2BA176',\n stateError: '#FF4D4F',\n stateWarning: '#F6A700'\n}\n\n/**\n * Convert theme colors to CSS variable style object\n */\nexport function themeToCSS (theme?: DeframeTheme): React.CSSProperties {\n if (!theme?.colors) return {}\n\n const vars: Record<string, string> = {}\n const colors = theme.colors\n\n if (colors.brandPrimary) vars['--deframe-brand-primary'] = colors.brandPrimary\n if (colors.brandSecondary) vars['--deframe-brand-secondary'] = colors.brandSecondary\n if (colors.bgDefault) vars['--deframe-bg-default'] = colors.bgDefault\n if (colors.bgSubtle) vars['--deframe-bg-subtle'] = colors.bgSubtle\n if (colors.bgMuted) vars['--deframe-bg-muted'] = colors.bgMuted\n if (colors.textPrimary) vars['--deframe-text-primary'] = colors.textPrimary\n if (colors.textSecondary) vars['--deframe-text-secondary'] = colors.textSecondary\n if (colors.textDisabled) vars['--deframe-text-disabled'] = colors.textDisabled\n if (colors.textInverse) vars['--deframe-text-inverse'] = colors.textInverse\n if (colors.stateSuccess) vars['--deframe-state-success'] = colors.stateSuccess\n if (colors.stateError) vars['--deframe-state-error'] = colors.stateError\n if (colors.stateWarning) vars['--deframe-state-warning'] = colors.stateWarning\n\n return vars as React.CSSProperties\n}\n","import { useEffect, useState, useMemo } from 'react'\nimport { twMerge } from 'tailwind-merge'\nimport {\n type DeframeTheme,\n type DeframeThemeConfig,\n type ThemePreset,\n themeToCSS\n} from './types'\n\n/**\n * Get system color mode preference\n */\nfunction getSystemColorMode (): 'light' | 'dark' {\n if (typeof window === 'undefined' || !window.matchMedia) return 'light'\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'\n}\n\n/**\n * Resolve theme configuration to provider theme and custom styles\n */\nfunction resolveThemeConfig (\n config: DeframeThemeConfig | undefined,\n systemMode: 'light' | 'dark'\n): { providerTheme: 'light' | 'dark' | 'cryptocontrol'; customTheme?: DeframeTheme } {\n const mode: 'light' | 'dark' = config?.mode === 'auto'\n ? systemMode\n : (config?.mode ?? 'light')\n\n const preset: ThemePreset = config?.preset ?? 'default'\n\n const providerTheme: 'light' | 'dark' | 'cryptocontrol' =\n preset === 'cryptocontrol' ? 'cryptocontrol' : mode === 'dark' ? 'dark' : 'light'\n\n // Get override colors for the active mode\n const overrideColors = mode === 'dark'\n ? config?.overrides?.dark?.colors\n : config?.overrides?.light?.colors\n\n const customTheme = overrideColors ? { colors: overrideColors } : undefined\n\n return { providerTheme, customTheme }\n}\n\nexport interface DeframeComponentsProviderProps {\n /** Theme preset: 'light' | 'dark' | 'cryptocontrol' (legacy) */\n theme?: string\n /** Structured theme configuration (preferred) */\n themeConfig?: DeframeThemeConfig\n /** Custom theme colors that override the preset */\n customTheme?: DeframeTheme\n /** Optional extra className applied to the `.deframe-widget` root */\n className?: string\n /** Child components */\n children: React.ReactNode\n}\n\nexport default function DeframeComponentsProvider ({\n theme = 'light',\n themeConfig,\n customTheme,\n className,\n children\n}: DeframeComponentsProviderProps) {\n // Track system color mode for 'auto' mode\n const [systemMode, setSystemMode] = useState<'light' | 'dark'>(() => getSystemColorMode())\n\n // Listen for system color mode changes when using 'auto' mode\n useEffect(() => {\n const needsSystem = themeConfig?.mode === 'auto'\n if (!needsSystem || typeof window === 'undefined' || !window.matchMedia) return\n\n const mq = window.matchMedia('(prefers-color-scheme: dark)')\n const handler = () => setSystemMode(mq.matches ? 'dark' : 'light')\n handler()\n mq.addEventListener?.('change', handler)\n return () => mq.removeEventListener?.('change', handler)\n }, [themeConfig?.mode])\n\n // Resolve the final theme values\n const resolvedTheme = useMemo(() => {\n // If using new themeConfig, resolve it\n if (themeConfig) {\n return resolveThemeConfig(themeConfig, systemMode)\n }\n\n // Legacy: use theme string directly\n return {\n providerTheme: theme as 'light' | 'dark' | 'cryptocontrol',\n customTheme\n }\n }, [themeConfig, theme, customTheme, systemMode])\n\n const themeClass = resolvedTheme.providerTheme === 'light' ? '' : resolvedTheme.providerTheme\n const colorScheme = resolvedTheme.providerTheme === 'light' ? 'light' : 'dark'\n\n // Convert custom theme to CSS variables\n const customCSSVars = themeToCSS(resolvedTheme.customTheme)\n\n return (\n <div\n className={twMerge('deframe-widget', themeClass, className)}\n style={{ colorScheme, ...customCSSVars }}\n >\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface InfoRowProps {\n children: React.ReactNode;\n borderBottom?: boolean;\n className?: string;\n}\n\nexport const InfoRow: React.FC<InfoRowProps> = ({ children, borderBottom, className }) => {\n const baseClasses = 'self-stretch inline-flex justify-between items-start'\n const borderClasses = borderBottom ? 'border-b border-border-default dark:border-border-default-dark pb-sm' : ''\n\n return (\n <div data-test-id='info-row' className={twMerge(baseClasses, borderClasses, className)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface InfoLabelProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport const InfoLabel: React.FC<InfoLabelProps> = ({ children, className }) => {\n const baseClasses = 'text-sm text-text-secondary dark:text-text-secondary-dark'\n\n return (\n <div data-test-id='info-label' className={twMerge(baseClasses, className)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface InfoValueProps {\n children: React.ReactNode;\n variant?: 'default' | 'success' | 'warning' | 'error';\n className?: string;\n}\n\nconst variantClasses = {\n default: 'text-text-primary dark:text-text-primary-dark',\n success: 'text-state-success',\n warning: 'text-state-warning',\n error: 'text-state-error',\n} as const\n\nexport const InfoValue: React.FC<InfoValueProps> = ({ children, variant = 'default', className }) => {\n const baseClasses = 'text-sm font-semibold'\n\n return (\n <div data-test-id='info-value' className={twMerge(baseClasses, variantClasses[variant], className)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface InfoRowWithIconProps {\n children: React.ReactNode;\n borderBottom?: boolean;\n className?: string;\n}\n\nexport const InfoRowWithIcon: React.FC<InfoRowWithIconProps> = ({ children, borderBottom, className }) => {\n const baseClasses = 'flex items-start justify-between h-[17px]'\n const borderClasses = borderBottom ? 'border-b border-border-default dark:border-border-default-dark pb-sm' : ''\n\n return (\n <div data-test-id='info-row-with-icon' className={twMerge(baseClasses, borderClasses, className)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface InfoRowIconLabelProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport const InfoRowIconLabel: React.FC<InfoRowIconLabelProps> = ({ children, className }) => {\n const baseClasses = 'text-sm text-text-secondary dark:text-text-secondary-dark'\n\n return (\n <div data-test-id='info-row-icon-label' className={twMerge(baseClasses, className)}>\n • {children}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface InfoRowIconValueProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport const InfoRowIconValue: React.FC<InfoRowIconValueProps> = ({ children, className }) => {\n const baseClasses = 'text-sm font-semibold text-text-primary dark:text-text-primary-dark'\n\n return (\n <div data-test-id='info-row-icon-value' className={twMerge(baseClasses, className)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { HiChevronDown, HiChevronUp } from 'react-icons/hi2'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface CollapsibleInfoRowProps {\n label: string;\n value: string;\n children?: React.ReactNode;\n defaultOpen?: boolean;\n className?: string;\n collapseLabel: string;\n expandLabel: string;\n}\n\nexport const CollapsibleInfoRow: React.FC<CollapsibleInfoRowProps> = ({\n label,\n value,\n children,\n defaultOpen = false,\n className,\n collapseLabel,\n expandLabel,\n}) => {\n const [isOpen, setIsOpen] = React.useState(defaultOpen)\n\n const baseClasses = 'flex flex-col gap-sm w-full'\n\n return (\n <div data-test-id='collapsible-info-row' className={twMerge(baseClasses, className)}>\n <button\n type='button'\n onClick={() => setIsOpen(!isOpen)}\n className='flex items-start justify-between w-full text-left h-[18px] cursor-pointer'\n aria-expanded={isOpen}\n aria-label={`${isOpen ? collapseLabel : expandLabel} ${label}`}\n >\n <div className='flex items-start gap-[2px]'>\n <span className='text-text-sm text-text-secondary dark:text-text-secondary-dark'>\n {label}\n </span>\n <div className='flex items-center justify-center w-[18px] h-[18px]'>\n {isOpen\n ? (\n <HiChevronUp className='w-3 h-3 text-text-secondary dark:text-text-secondary-dark' />\n )\n : (\n <HiChevronDown className='w-3 h-3 text-text-secondary dark:text-text-secondary-dark' />\n )}\n </div>\n </div>\n <span className='text-text-sm font-semibold text-text-secondary dark:text-text-secondary-dark'>\n {value}\n </span>\n </button>\n {isOpen && children}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface BackgroundContainerProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport const BackgroundContainer: React.FC<BackgroundContainerProps> = ({ children, className }) => {\n const baseClasses = 'w-full flex-1 min-h-0 px-md bg-bg-default lg:bg-bg-subtle dark:bg-bg-default-dark lg:dark:bg-bg-subtle-dark text-text-primary dark:text-text-primary-dark flex flex-col relative overflow-y-auto'\n\n return (\n <div data-test-id='background-container' className={twMerge(baseClasses, className)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface SectionCardProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport const SectionCard: React.FC<SectionCardProps> = ({ children, className }) => {\n const baseClasses = 'bg-bg-subtle dark:bg-bg-subtle-dark lg:!bg-bg-raised rounded shadow-sm p-md flex flex-col gap-sm'\n\n return (\n <div data-test-id='section-card' className={twMerge(baseClasses, className)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface NavbarProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport const Navbar: React.FC<NavbarProps> = ({ children, className }) => {\n const baseClasses = 'w-full px-sm pr-md pt-sm pb-md border-b items-center border-border-subtle dark:border-border-subtle-dark flex'\n\n return (\n <nav data-test-id='navbar' className={twMerge(baseClasses, className)}>\n {children}\n </nav>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface FlexColProps {\n children: React.ReactNode;\n className?: string;\n gap?: 'xs' | 'sm' | 'md' | 'lg';\n}\n\nconst gapClasses = {\n xs: 'gap-xs',\n sm: 'gap-sm',\n md: 'gap-md',\n lg: 'gap-lg',\n} as const\n\nexport const FlexCol: React.FC<FlexColProps> = ({ children, className, gap = 'xs' }) => {\n const baseClasses = 'flex flex-col'\n\n return (\n <div data-test-id='flex-col' className={twMerge(baseClasses, gapClasses[gap], className)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface FlexRowProps {\n children: React.ReactNode;\n className?: string;\n gap?: 'xs' | 'sm' | 'md' | 'lg';\n}\n\nconst gapClasses = {\n xs: 'gap-xs',\n sm: 'gap-sm',\n md: 'gap-md',\n lg: 'gap-lg',\n} as const\n\nexport const FlexRow: React.FC<FlexRowProps> = ({ children, className, gap = 'xs' }) => {\n const baseClasses = 'flex items-center'\n\n return (\n <div data-test-id='flex-row' className={twMerge(baseClasses, gapClasses[gap], className)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface ScrollableContentProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport const ScrollableContent: React.FC<ScrollableContentProps> = ({ children, className }) => {\n const baseClasses = 'flex-1 overflow-y-auto px-md py-lg'\n\n return (\n <div data-test-id='scrollable-content' className={twMerge(baseClasses, className)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { HiChevronLeft } from 'react-icons/hi2'\nimport { twMerge } from 'tailwind-merge'\nimport { TextHeading } from '../texts'\n\nexport interface DetailsHeaderProps {\n title: string;\n onBack?: () => void;\n className?: string;\n backAriaLabel?: string;\n}\n\nexport const DetailsHeader: React.FC<DetailsHeaderProps> = ({ title, onBack, className, backAriaLabel = 'Back' }) => {\n const baseClasses = 'w-full px-sm pr-md pt-sm pb-md border-b border-border-subtle dark:border-border-subtle-dark flex items-center'\n\n return (\n <div data-test-id='details-header' className={twMerge(baseClasses, className)}>\n <button\n data-test-id='details-header-back-button'\n onClick={onBack}\n className='w-12 h-12 rounded-full flex items-center justify-center text-text-secondary dark:text-text-secondary-dark hover:text-brand-primary cursor-pointer'\n aria-label={backAriaLabel}\n >\n <HiChevronLeft className='w-6 h-6 text-text-tertiary dark:text-text-tertiary-dark' />\n </button>\n <div className='flex-1 flex items-center'>\n <TextHeading variant='h-large'>{title}</TextHeading>\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport { HiXMark } from 'react-icons/hi2'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface CloseButtonProps {\n onClick?: () => void;\n testId?: string;\n ariaLabel?: string;\n className?: string;\n}\n\nexport const CloseButton: React.FC<CloseButtonProps> = ({ onClick, testId, ariaLabel = 'Close', className }) => {\n const baseClasses = 'w-12 h-12 rounded-full flex items-center justify-center text-text-secondary dark:text-text-secondary-dark hover:text-brand-primary transition-colors cursor-pointer'\n\n return (\n <button\n data-test-id={testId ?? 'close-button'}\n onClick={onClick}\n className={twMerge(baseClasses, className)}\n aria-label={ariaLabel}\n >\n <HiXMark className='w-6 h-6' />\n </button>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface HighRiskBadgeProps {\n className?: string;\n label?: string;\n}\n\nexport const HighRiskBadge: React.FC<HighRiskBadgeProps> = ({ className, label }) => {\n const baseClasses = 'inline-flex justify-start items-start gap-1'\n\n return (\n <div data-test-id='high-risk-badge' className={twMerge(baseClasses, className)}>\n <div\n data-size='Small'\n data-type='Failed'\n className='h-6 px-2 py-1 opacity-95 bg-red-500/20 rounded-lg outline outline-1 outline-offset-[-1px] outline-state-error flex justify-center items-center gap-1'\n >\n <div className='flex justify-start items-center gap-2.5'>\n <div className='justify-start text-state-error text-xs font-normal font-poppins leading-4'>\n {label}\n </div>\n </div>\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface MediumRiskBadgeProps {\n className?: string;\n label?: string;\n}\n\nexport const MediumRiskBadge: React.FC<MediumRiskBadgeProps> = ({ className, label }) => {\n const baseClasses = 'inline-flex justify-start items-start gap-1'\n\n return (\n <div data-test-id='medium-risk-badge' className={twMerge(baseClasses, className)}>\n <div\n data-size='Small'\n data-type='Warning'\n className='h-6 px-2 py-1 opacity-95 bg-amber-500/20 rounded-lg outline outline-1 outline-offset-[-1px] outline-state-warning flex justify-center items-center gap-1'\n >\n <div className='flex justify-start items-center gap-2.5'>\n <div className='justify-start text-state-warning text-xs font-normal font-poppins leading-4'>\n {label}\n </div>\n </div>\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface LowRiskBadgeProps {\n className?: string;\n label: string;\n}\n\nexport const LowRiskBadge: React.FC<LowRiskBadgeProps> = ({ className, label }) => {\n const baseClasses = 'inline-flex justify-start items-start gap-1'\n\n return (\n <div data-test-id='low-risk-badge' className={twMerge(baseClasses, className)}>\n <div\n data-size='Small'\n data-type='Completed'\n className='h-6 px-2 py-1 opacity-95 bg-teal-600/20 rounded-lg outline outline-1 outline-offset-[-1px] outline-state-success flex justify-center items-center gap-1'\n >\n <div className='flex justify-start items-center gap-2.5'>\n <div className='justify-start text-state-success text-xs font-normal font-poppins leading-4'>\n {label}\n </div>\n </div>\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\nimport { AddressDisplay } from '../address'\n\n// Layout components\nexport interface FlexColCompProps {\n children: React.ReactNode;\n className?: string;\n gap?: 'xs' | 'sm' | 'md' | 'lg';\n}\n\nconst gapClasses = {\n xs: 'gap-xs',\n sm: 'gap-sm',\n md: 'gap-md',\n lg: 'gap-lg',\n} as const\n\nexport const HistoryFlexCol: React.FC<FlexColCompProps> = ({ children, className, gap = 'xs' }) => (\n <div data-test-id='history-flex-col' className={twMerge('flex flex-col', gapClasses[gap], className)}>\n {children}\n </div>\n)\n\nexport interface FlexRowCompProps {\n children: React.ReactNode;\n className?: string;\n gap?: 'xs' | 'sm' | 'md' | 'lg';\n}\n\nexport const HistoryFlexRow: React.FC<FlexRowCompProps> = ({ children, className, gap = 'xs' }) => (\n <div data-test-id='history-flex-row' className={twMerge('flex items-center', gapClasses[gap], className)}>\n {children}\n </div>\n)\n\nexport const HistoryScrollableContent: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n <div data-test-id='history-scrollable-content' className='flex-1 overflow-y-auto px-md py-lg'>\n {children}\n </div>\n)\n\n// Typography components\nexport const TransactionTypeLabel: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n <p data-test-id='transaction-type-label' className='text-text-sm-mobile text-text-secondary dark:text-text-secondary-dark'>\n {children}\n </p>\n)\n\nexport const StrategyName: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n <p data-test-id='strategy-name' className='text-accent-md-mobile text-text-secondary dark:text-text-secondary-dark'>\n {children}\n </p>\n)\n\nexport const Amount: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n <p data-test-id='amount' className='text-accent-md-mobile text-text-secondary dark:text-text-secondary-dark'>\n {children}\n </p>\n)\n\nexport const AmountInUsd: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n <p data-test-id='amount-in-usd' className='text-text-sm-mobile text-text-secondary dark:text-text-secondary-dark'>\n ~ {children}\n </p>\n)\n\nexport const EmptyValue: React.FC = () => (\n <p data-test-id='empty-value' className='text-text-sm-mobile text-text-secondary dark:text-text-secondary-dark'>\n -\n </p>\n)\n\n// Icon components\nexport interface TokenIconProps {\n src: string;\n alt: string;\n}\n\nexport const TokenIcon: React.FC<TokenIconProps> = ({ src, alt }) => (\n <img\n data-test-id='token-icon'\n src={src}\n alt={alt}\n className='w-8 h-8 rounded-full'\n onError={(e) => {\n const fallbackText = encodeURIComponent((alt || 'TOK').slice(0, 3).toUpperCase());\n (e.target as HTMLImageElement).src = `https://placehold.co/40x40?text=${fallbackText}`\n }}\n />\n)\n\n// Status badge\nexport const SuccessBadge: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n <div data-test-id='success-badge' className='bg-[rgba(43,161,118,0.12)] flex items-center gap-xs px-[8px] py-[2px] rounded-[24px]'>\n <span className='w-2 h-2 rounded-full bg-state-success' />\n <span className='text-text-sm-mobile text-text-primary dark:text-text-primary-dark'>\n {children}\n </span>\n </div>\n)\n\n// Transaction ID with truncated display and copy button\nconst truncateHash = (hash: string, chars: number = 6): string => {\n if (hash.length <= chars * 2 + 3) return hash\n return `${hash.slice(0, chars + 2)}...${hash.slice(-chars)}`\n}\n\nexport interface TransactionIdProps {\n hash: string | null;\n}\n\nexport const TransactionId: React.FC<TransactionIdProps> = ({ hash }) => {\n if (!hash) {\n return <span data-test-id='transaction-id' className='text-text-sm-mobile text-text-primary dark:text-text-primary-dark'>-</span>\n }\n\n return (\n <div data-test-id='transaction-id' className='flex items-center gap-xs'>\n <span className='text-text-sm-mobile text-text-primary dark:text-text-primary-dark'>\n {truncateHash(hash)}\n </span>\n <AddressDisplay\n address={hash}\n className='border-none bg-transparent p-0 gap-0'\n textClassName='hidden'\n />\n </div>\n )\n}\n\n// Explorer link\nexport interface ExplorerLinkProps {\n href: string;\n children: React.ReactNode;\n}\n\nexport const ExplorerLink: React.FC<ExplorerLinkProps> = ({ href, children }) => (\n <a\n data-test-id='explorer-link'\n href={href}\n target='_blank'\n rel='noopener noreferrer'\n className='text-brand-primary underline text-sm font-semibold font-poppins'\n >\n {children}\n </a>\n)\n\n// Two-line value\nexport interface TwoLineValueProps {\n primary: React.ReactNode;\n secondary: React.ReactNode;\n}\n\nexport const TwoLineValue: React.FC<TwoLineValueProps> = ({ primary, secondary }) => (\n <HistoryFlexCol className='items-end'>\n <p data-test-id='two-line-value-primary' className='text-text-sm-mobile text-text-secondary dark:text-text-secondary-dark font-semibold'>\n {primary}\n </p>\n <p data-test-id='two-line-value-secondary' className='text-text-sm-mobile text-text-secondary dark:text-text-secondary-dark'>\n {secondary}\n </p>\n </HistoryFlexCol>\n)\n\n// Error state\nexport const NotFoundMessage: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n <div data-test-id='not-found-message' className='flex flex-col items-center justify-center h-full'>\n <p className='text-text-primary dark:text-text-primary-dark'>{children}</p>\n </div>\n)\n","import React from 'react'\nimport { DetailsHeader } from '../details-header'\nimport { SectionCard, FlexCol, FlexRow, ScrollableContent, BackgroundContainer } from '../layout'\nimport { InfoRow, InfoLabel, InfoValue } from '../info-display'\nimport {\n TransactionTypeLabel,\n Amount,\n AmountInUsd,\n TokenIcon,\n SuccessBadge,\n TransactionId,\n ExplorerLink,\n TwoLineValue,\n} from './HistoryDetailsComponents'\nimport type { HistoryDetailsLabels } from './history-details-labels'\n\nexport interface HistoryAssetViewProps {\n iconUrl: string;\n symbol: string;\n amount: string;\n amountInUSD: string | null;\n}\n\nexport interface HistoryDetailsViewProps {\n transactionTypeLabel: string;\n symbol: string;\n amountWithSymbol: string;\n amountInUsdFormatted: string;\n shouldShowFlow: boolean;\n assetIn?: HistoryAssetViewProps;\n assetOut?: HistoryAssetViewProps;\n primaryAssetIconUrl: string;\n protocolLabel: string;\n statusLabel: string;\n txHash: string | null;\n date: string;\n explorerUrl: string | null;\n onClose: () => void;\n labels: HistoryDetailsLabels;\n}\n\nexport const HistoryDepositDetailsView: React.FC<HistoryDetailsViewProps> = ({\n transactionTypeLabel,\n symbol,\n amountWithSymbol,\n amountInUsdFormatted,\n shouldShowFlow,\n assetIn,\n assetOut,\n primaryAssetIconUrl,\n protocolLabel,\n statusLabel,\n txHash,\n date,\n explorerUrl,\n onClose,\n labels,\n}) => {\n return (\n <BackgroundContainer>\n <DetailsHeader title={labels.transactionDetailsTitle} onBack={onClose} />\n\n <ScrollableContent>\n <FlexCol gap='lg'>\n {/* Transaction Summary Card */}\n <SectionCard className='!p-[24px]'>\n <FlexCol gap='xs'>\n <TransactionTypeLabel>{transactionTypeLabel}</TransactionTypeLabel>\n\n {shouldShowFlow && assetIn && assetOut\n ? (\n <FlexCol gap='sm'>\n <FlexRow gap='sm'>\n <TokenIcon src={assetIn.iconUrl} alt={assetIn.symbol} />\n <FlexCol>\n <Amount>\n {assetIn.amount} {assetIn.symbol}\n </Amount>\n {assetIn.amountInUSD\n ? (\n <AmountInUsd>{assetIn.amountInUSD}</AmountInUsd>\n )\n : null}\n </FlexCol>\n </FlexRow>\n <FlexRow gap='sm'>\n <TokenIcon src={assetOut.iconUrl} alt={assetOut.symbol} />\n <FlexCol>\n <Amount>\n {assetOut.amount} {assetOut.symbol}\n </Amount>\n {assetOut.amountInUSD\n ? (\n <AmountInUsd>{assetOut.amountInUSD}</AmountInUsd>\n )\n : null}\n </FlexCol>\n </FlexRow>\n </FlexCol>\n )\n : (\n <FlexRow gap='sm'>\n <TokenIcon src={primaryAssetIconUrl} alt={symbol} />\n <FlexCol>\n <FlexRow gap='xs'>\n <Amount>{amountWithSymbol}</Amount>\n {amountInUsdFormatted !== '-'\n ? (\n <AmountInUsd>{amountInUsdFormatted}</AmountInUsd>\n )\n : null}\n </FlexRow>\n </FlexCol>\n </FlexRow>\n )}\n </FlexCol>\n </SectionCard>\n\n {/* Details Card */}\n <SectionCard className='!p-md'>\n <FlexCol gap='sm'>\n <InfoRow borderBottom>\n <InfoLabel>{labels.currencyLabel}</InfoLabel>\n <InfoValue>{symbol}</InfoValue>\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.totalAmountLabel}</InfoLabel>\n <TwoLineValue primary={amountInUsdFormatted} secondary={amountWithSymbol} />\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.operationCostLabel}</InfoLabel>\n <InfoValue>{labels.operationCostSponsoredLabel}</InfoValue>\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.protocolLabel}</InfoLabel>\n <InfoValue>{protocolLabel}</InfoValue>\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.statusLabel}</InfoLabel>\n <SuccessBadge>{statusLabel}</SuccessBadge>\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.transactionIdLabel}</InfoLabel>\n <TransactionId hash={txHash} />\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.dateLabel}</InfoLabel>\n <InfoValue>{date}</InfoValue>\n </InfoRow>\n\n {explorerUrl && (\n <InfoRow>\n <InfoLabel>{labels.transactionLabel}</InfoLabel>\n <ExplorerLink href={explorerUrl}>{labels.viewOnExplorerLabel}</ExplorerLink>\n </InfoRow>\n )}\n </FlexCol>\n </SectionCard>\n </FlexCol>\n </ScrollableContent>\n </BackgroundContainer>\n )\n}\n","import React from 'react'\nimport { BackgroundContainer } from '../layout/BackgroundContainer'\nimport { DetailsHeader } from '../details-header'\nimport { SectionCard, FlexCol, FlexRow, ScrollableContent } from '../layout'\nimport { InfoRow, InfoLabel, InfoValue } from '../info-display'\nimport {\n TransactionTypeLabel,\n Amount,\n AmountInUsd,\n TokenIcon,\n SuccessBadge,\n TransactionId,\n ExplorerLink,\n TwoLineValue,\n} from './HistoryDetailsComponents'\nimport type { HistoryAssetViewProps, HistoryDetailsViewProps } from './HistoryDepositDetailsView'\n\nexport type { HistoryDetailsViewProps, HistoryAssetViewProps }\n\nexport const HistoryWithdrawDetailsView: React.FC<HistoryDetailsViewProps> = ({\n transactionTypeLabel,\n symbol,\n amountWithSymbol,\n amountInUsdFormatted,\n shouldShowFlow,\n assetIn,\n assetOut,\n primaryAssetIconUrl,\n protocolLabel,\n statusLabel,\n txHash,\n date,\n explorerUrl,\n onClose,\n labels,\n}) => {\n return (\n <BackgroundContainer>\n <DetailsHeader title={labels.transactionDetailsTitle} onBack={onClose} />\n\n <ScrollableContent>\n <FlexCol gap='lg'>\n <SectionCard className='!p-[24px]'>\n <FlexCol gap='xs'>\n <TransactionTypeLabel>{transactionTypeLabel}</TransactionTypeLabel>\n\n {shouldShowFlow && assetIn && assetOut\n ? (\n <FlexCol gap='sm'>\n <FlexRow gap='sm'>\n <TokenIcon src={assetIn.iconUrl} alt={assetIn.symbol} />\n <FlexCol>\n <Amount>\n {assetIn.amount} {assetIn.symbol}\n </Amount>\n {assetIn.amountInUSD\n ? (\n <AmountInUsd>{assetIn.amountInUSD}</AmountInUsd>\n )\n : null}\n </FlexCol>\n </FlexRow>\n <FlexRow gap='sm'>\n <TokenIcon src={assetOut.iconUrl} alt={assetOut.symbol} />\n <FlexCol>\n <Amount>\n {assetOut.amount} {assetOut.symbol}\n </Amount>\n {assetOut.amountInUSD\n ? (\n <AmountInUsd>{assetOut.amountInUSD}</AmountInUsd>\n )\n : null}\n </FlexCol>\n </FlexRow>\n </FlexCol>\n )\n : (\n <FlexRow gap='sm'>\n <TokenIcon src={primaryAssetIconUrl} alt={symbol} />\n <FlexCol>\n <FlexRow gap='xs'>\n <Amount>{amountWithSymbol}</Amount>\n {amountInUsdFormatted !== '-'\n ? (\n <AmountInUsd>{amountInUsdFormatted}</AmountInUsd>\n )\n : null}\n </FlexRow>\n </FlexCol>\n </FlexRow>\n )}\n </FlexCol>\n </SectionCard>\n\n <SectionCard className='!p-md'>\n <FlexCol gap='sm'>\n <InfoRow borderBottom>\n <InfoLabel>{labels.currencyLabel}</InfoLabel>\n <InfoValue>{symbol}</InfoValue>\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.totalAmountLabel}</InfoLabel>\n <TwoLineValue primary={amountInUsdFormatted} secondary={amountWithSymbol} />\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.operationCostLabel}</InfoLabel>\n <InfoValue>{labels.operationCostSponsoredLabel}</InfoValue>\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.protocolLabel}</InfoLabel>\n <InfoValue>{protocolLabel}</InfoValue>\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.statusLabel}</InfoLabel>\n <SuccessBadge>{statusLabel}</SuccessBadge>\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.transactionIdLabel}</InfoLabel>\n <TransactionId hash={txHash} />\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.dateLabel}</InfoLabel>\n <InfoValue>{date}</InfoValue>\n </InfoRow>\n\n {explorerUrl && (\n <InfoRow>\n <InfoLabel>{labels.transactionLabel}</InfoLabel>\n <ExplorerLink href={explorerUrl}>{labels.viewOnExplorerLabel}</ExplorerLink>\n </InfoRow>\n )}\n </FlexCol>\n </SectionCard>\n </FlexCol>\n </ScrollableContent>\n </BackgroundContainer>\n )\n}\n","import React from 'react'\nimport { HiChevronDown } from 'react-icons/hi2'\nimport { twMerge } from 'tailwind-merge'\nimport { TextBody } from '../texts'\n\nexport interface SwapNetworkSelectorViewProps {\n chainLabel: string;\n chainImage?: string;\n onClick: () => void;\n directionLabel?: string;\n testId?: string;\n className?: string;\n}\n\nexport const SwapNetworkSelectorView: React.FC<SwapNetworkSelectorViewProps> = ({\n chainLabel,\n chainImage,\n onClick,\n directionLabel = 'De',\n testId = 'swap-network-selector',\n className,\n}) => {\n const baseClasses = 'flex flex-row items-center gap-xs'\n\n return (\n <div data-test-id={testId} className={twMerge(baseClasses, className)}>\n <TextBody as='span' variant='text-small' className='tracking-wide text-text-tertiary dark:text-text-tertiary-dark'>\n {directionLabel}\n </TextBody>\n <button\n data-testid={testId}\n type='button'\n onClick={onClick}\n className='ml-6 bg-bg-muted dark:bg-bg-muted-dark border border-border-subtle dark:border-border-subtle-dark rounded-lg flex items-center gap-xs px-sm py-xs hover:border-border-default dark:hover:border-border-default-dark transition-colors text-text-sm text-text-secondary dark:text-text-secondary-dark cursor-pointer'\n aria-label={`${directionLabel} ${chainLabel}`}\n >\n {chainImage\n ? (\n <img src={chainImage} alt={chainLabel} className='w-3 h-3 rounded-full' />\n )\n : null}\n <span>{chainLabel}</span>\n <div className='flex items-center justify-center w-[18px] h-[18px]'>\n <HiChevronDown className='w-3 h-3 text-text-tertiary dark:text-text-tertiary-dark' />\n </div>\n </button>\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\nimport { TextBody } from '../texts'\n\nexport interface SwapQuoteHeaderViewProps {\n label: React.ReactNode;\n timerElement?: React.ReactNode;\n className?: string;\n}\n\nexport const SwapQuoteHeaderView: React.FC<SwapQuoteHeaderViewProps> = ({\n label,\n timerElement,\n className,\n}) => {\n const baseClasses = 'border-b border-border-default dark:border-border-default-dark pb-sm'\n\n return (\n <div data-test-id='swap-quote-header' className={twMerge(baseClasses, className)}>\n <div className='flex items-center justify-between'>\n <TextBody as='span' variant='text-small' className='font-semibold text-text-secondary dark:text-text-secondary-dark inline-flex items-center'>\n {label}\n </TextBody>\n <div className='flex items-center gap-md'>\n {timerElement}\n </div>\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface InputFieldRegistration {\n name: string;\n onBlur: React.FocusEventHandler<HTMLInputElement>;\n ref: React.Ref<HTMLInputElement>;\n}\n\nexport interface SwapAmountInputViewProps {\n value: string;\n hasError: boolean;\n onChange: (value: string) => void;\n maxFractionDigits?: number;\n field?: InputFieldRegistration;\n ariaLabel?: string;\n className?: string;\n}\n\nexport const SwapAmountInputView: React.FC<SwapAmountInputViewProps> = ({\n value,\n hasError,\n onChange,\n maxFractionDigits = 6,\n field,\n ariaLabel = 'Amount to swap',\n className,\n}) => {\n const normalizeAmountInput = (raw: string) => {\n let val = raw.replace(/[^\\d.,]/g, '')\n const endsWithSeparator = /[.,]$/.test(val)\n val = val.replace(/,/g, '.')\n const firstDot = val.indexOf('.')\n if (firstDot !== -1) {\n const intPart = val.slice(0, firstDot)\n const fractional = val\n .slice(firstDot + 1)\n .replace(/\\./g, '')\n .slice(0, maxFractionDigits)\n if (fractional.length > 0) {\n val = `${intPart}.${fractional}`\n } else {\n val = endsWithSeparator ? `${intPart}.` : intPart\n }\n }\n if (val.startsWith('.')) {\n val = `0${val}`\n }\n return val\n }\n\n const baseClasses = 'text-h2-mobile font-extrabold bg-transparent outline-none text-right w-full min-w-[120px] placeholder:text-text-disabled dark:placeholder:text-text-disabled-dark'\n const colorClasses = hasError\n ? 'text-state-error dark:text-state-error'\n : 'text-text-primary dark:text-text-primary-dark'\n\n return (\n <input\n data-test-id='swap-flow-amount-input'\n placeholder='0.00'\n type='text'\n inputMode='decimal'\n autoComplete='off'\n aria-label={ariaLabel}\n min='0'\n step='any'\n value={value}\n className={twMerge(baseClasses, colorClasses, className)}\n {...field}\n onChange={(event) => {\n let normalized = normalizeAmountInput(event.target.value)\n if (normalized && parseFloat(normalized) < 0) {\n normalized = '0'\n }\n onChange(normalized)\n }}\n onWheel={(event: React.WheelEvent<HTMLInputElement>) => {\n event.currentTarget.blur()\n }}\n />\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\nimport { TextBody } from '../texts'\n\nexport interface SwapOutputAmountViewProps {\n displayOutput: string | number;\n isLoading: boolean;\n loadingElement?: React.ReactNode;\n searchingQuoteLabel?: string;\n className?: string;\n}\n\nexport const SwapOutputAmountView: React.FC<SwapOutputAmountViewProps> = ({\n displayOutput,\n isLoading,\n loadingElement,\n searchingQuoteLabel = 'Searching quote...',\n className,\n}) => {\n const baseClasses = 'text-h2-mobile font-extrabold text-right w-full min-w-[120px] text-text-primary dark:text-text-primary-dark'\n\n return (\n <div data-test-id='swap-flow-output-amount' className={twMerge(baseClasses, className)}>\n {isLoading\n ? (\n <TextBody as='span' variant='text-small' className='text-text-disabled dark:text-text-disabled-dark inline-flex items-center'>\n {loadingElement ?? searchingQuoteLabel}\n </TextBody>\n )\n : (\n displayOutput\n )}\n </div>\n )\n}\n","import React from 'react'\nimport { BannerNotification } from '../banner'\n\nexport interface SwapQuoteErrorsViewProps {\n hasQuoteError: boolean;\n hasBytecodeError: boolean;\n quoteErrorMessage?: string;\n bytecodeErrorMessage?: string;\n}\n\nexport const SwapQuoteErrorsView: React.FC<SwapQuoteErrorsViewProps> = ({\n hasQuoteError,\n hasBytecodeError,\n quoteErrorMessage = 'Unable to get quote for this transaction',\n bytecodeErrorMessage = 'Error building transaction',\n}) => {\n return (\n <div data-test-id='swap-quote-errors'>\n {hasQuoteError && (\n <div className='mt-sm'>\n <BannerNotification\n type='inline'\n variant='error'\n message={quoteErrorMessage}\n />\n </div>\n )}\n {hasBytecodeError && (\n <div className='mt-sm'>\n <BannerNotification\n type='inline'\n variant='error'\n message={bytecodeErrorMessage}\n />\n </div>\n )}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nconst SLIPPAGE_OPTIONS = [10, 50, 100] // basis points\n\nexport interface SwapSlippageToleranceButtonsViewProps {\n slippageBps: number;\n onSelect: (bps: number) => void;\n formatPercentage: (bps: number) => string;\n className?: string;\n}\n\nexport const SwapSlippageToleranceButtonsView: React.FC<SwapSlippageToleranceButtonsViewProps> = ({\n slippageBps,\n onSelect,\n formatPercentage,\n className,\n}) => {\n const baseClasses = 'flex gap-xs'\n\n return (\n <div data-test-id='swap-slippage-tolerance-buttons' className={twMerge(baseClasses, className)}>\n {SLIPPAGE_OPTIONS.map((option) => {\n const isActive = slippageBps === option\n const activeClasses = 'border-brand-primary text-brand-primary bg-brand-tint dark:bg-brand-tint-dark'\n const inactiveClasses = 'border-border-subtle dark:border-border-subtle-dark text-text-secondary dark:text-text-secondary-dark bg-bg-default dark:bg-bg-default-dark'\n const buttonBase = 'px-sm py-xs rounded border text-text-sm cursor-pointer'\n\n return (\n <button\n key={option}\n data-test-id={`slippage-option-${option}`}\n type='button'\n onClick={() => onSelect(option)}\n className={twMerge(buttonBase, isActive ? activeClasses : inactiveClasses)}\n aria-label={`${formatPercentage(option)}% slippage`}\n aria-pressed={isActive}\n >\n {formatPercentage(option)}%\n </button>\n )\n })}\n </div>\n )\n}\n","import React from 'react'\nimport { HiChevronDown } from 'react-icons/hi2'\nimport { twMerge } from 'tailwind-merge'\nimport { TextBody } from '../texts'\n\nexport interface SwapTokenSelectorViewProps {\n token: { symbol: string; logoURI?: string } | null;\n onClick: () => void;\n testId?: string;\n selectTokenLabel?: string;\n className?: string;\n}\n\nexport const SwapTokenSelectorView: React.FC<SwapTokenSelectorViewProps> = ({\n token,\n onClick,\n testId = 'swap-token-selector',\n selectTokenLabel = 'Select token',\n className,\n}) => {\n const baseClasses = 'h-[56px] border border-border-default dark:border-border-default-dark rounded overflow-hidden hover:border-border-strong dark:hover:border-border-strong-dark transition-colors flex items-center px-sm py-[6px] w-full cursor-pointer'\n\n return (\n <button\n data-test-id={testId}\n type='button'\n onClick={onClick}\n className={twMerge(baseClasses, className)}\n aria-label={token ? token.symbol : selectTokenLabel}\n >\n <div className='flex items-center gap-sm flex-1'>\n {token\n ? (\n <>\n {token.logoURI\n ? (\n <img src={token.logoURI} alt={token.symbol} className='w-6 h-6 rounded-full' />\n )\n : (\n <div className='w-6 h-6 rounded-full bg-bg-raised dark:bg-bg-raised-dark text-text-secondary dark:text-text-secondary-dark flex items-center justify-center text-[10px] font-semibold'>\n {(token.symbol || '').slice(0, 3).toUpperCase()}\n </div>\n )}\n <TextBody as='span' className='text-text-primary dark:text-text-primary-dark'>\n {token.symbol}\n </TextBody>\n </>\n )\n : (\n <TextBody as='span' className='text-text-secondary dark:text-text-secondary-dark'>\n {selectTokenLabel}\n </TextBody>\n )}\n </div>\n <div className='flex items-center justify-center w-[18px] h-[18px]'>\n <HiChevronDown className='w-3 h-3 text-text-tertiary dark:text-text-tertiary-dark' />\n </div>\n </button>\n )\n}\n","import React from 'react'\nimport { CollapsibleInfoRow } from '../info-display/CollapsibleInfoRow'\nimport { InfoRowWithIcon } from '../info-display/InfoRowWithIcon'\nimport { InfoRowIconLabel } from '../info-display/InfoRowIconLabel'\nimport { InfoRowIconValue } from '../info-display/InfoRowIconValue'\n\nexport interface SwapQuoteBlockchainCostsViewProps {\n totalCostFormatted: string;\n feePercentage: string;\n gasCostFormatted: string;\n protocolFee: string;\n blockchainCostsLabel?: string;\n networkGasLabel?: string;\n protocolFeeLabel?: string;\n collapseLabel?: string;\n expandLabel?: string;\n}\n\nexport const SwapQuoteBlockchainCostsView: React.FC<SwapQuoteBlockchainCostsViewProps> = ({\n totalCostFormatted,\n feePercentage,\n gasCostFormatted,\n protocolFee,\n blockchainCostsLabel = 'Blockchain Costs',\n networkGasLabel = 'Network Gas',\n protocolFeeLabel = 'Protocol Fee',\n collapseLabel = 'Collapse',\n expandLabel = 'Expand',\n}) => {\n return (\n <div data-test-id='swap-quote-blockchain-costs'>\n <CollapsibleInfoRow\n label={blockchainCostsLabel}\n value={`${totalCostFormatted} ~ ${feePercentage}%`}\n defaultOpen\n collapseLabel={collapseLabel}\n expandLabel={expandLabel}\n >\n <div className='flex flex-col gap-sm'>\n <InfoRowWithIcon>\n <InfoRowIconLabel>{networkGasLabel}</InfoRowIconLabel>\n <InfoRowIconValue>{gasCostFormatted}</InfoRowIconValue>\n </InfoRowWithIcon>\n <InfoRowWithIcon borderBottom>\n <InfoRowIconLabel>{protocolFeeLabel}</InfoRowIconLabel>\n <InfoRowIconValue>{protocolFee}</InfoRowIconValue>\n </InfoRowWithIcon>\n </div>\n </CollapsibleInfoRow>\n </div>\n )\n}\n","import React from 'react'\nimport { HiArrowRight } from 'react-icons/hi2'\nimport { ActionSheet } from '../action-sheet'\nimport { ListItem, ListItemContent, ListItemLeftSide, ListItemRightSide } from '../lists'\nimport { TextBody, TextHeading } from '../texts'\nimport { HighRiskBadge } from '../badges/HighRiskBadge'\nimport { LowRiskBadge } from '../badges/LowRiskBadge'\nimport { MediumRiskBadge } from '../badges/MediumRiskBadge'\nimport { BackgroundContainer, Navbar } from '../layout'\nimport { CloseButton } from '../close-button'\n\nexport interface ChooseAStrategyActionsheetViewProps {\n isOpen: boolean;\n currentActionSheetId: string | null;\n assetName: string;\n apy: string;\n logoUrl: string;\n strategyId: string;\n riskLevel: 'low' | 'medium' | 'high';\n onStrategyClick: () => void;\n onClose: () => void;\n yieldLabel?: string;\n apyLabel?: string;\n riskBadgeLabels: { low: string; medium: string; high: string };\n closeAriaLabel?: string;\n}\n\nexport const ChooseAStrategyActionsheetView: React.FC<ChooseAStrategyActionsheetViewProps> = ({\n isOpen,\n currentActionSheetId,\n assetName,\n apy,\n logoUrl,\n riskLevel,\n onStrategyClick,\n onClose,\n yieldLabel,\n apyLabel = 'APY',\n riskBadgeLabels,\n closeAriaLabel = 'Close',\n}) => {\n const resolvedYieldLabel = yieldLabel ?? `Yield ${assetName}`\n\n const badges = {\n low: <LowRiskBadge label={riskBadgeLabels.low} />,\n medium: <MediumRiskBadge label={riskBadgeLabels.medium} />,\n high: <HighRiskBadge label={riskBadgeLabels.high} />,\n }\n\n const Badge = badges[riskLevel]\n\n return (\n <div data-test-id='choose-strategy-actionsheet' className='flex justify-center'>\n <ActionSheet\n id='choose-strategy'\n currentActionSheetId={currentActionSheetId}\n isOpen={isOpen}\n onClose={onClose}\n position='bottom'\n height='full'\n contentClassName='w-full max-w-[620px] mx-auto'\n >\n <BackgroundContainer className='flex flex-col h-full'>\n <Navbar>\n <CloseButton onClick={onClose} ariaLabel={closeAriaLabel} />\n </Navbar>\n <div className='flex flex-col flex-1 w-full p-6 overflow-hidden'>\n <div className='flex-shrink-0'>\n <TextHeading>{resolvedYieldLabel}</TextHeading>\n <br />\n </div>\n <div className='flex flex-col gap-2 w-full mt-4 overflow-y-auto flex-1 min-h-0'>\n <ListItem className='flex-shrink-0' onClick={onStrategyClick}>\n <ListItemLeftSide>\n <img src={logoUrl} alt={assetName} className='w-10 h-10 rounded-full' />\n </ListItemLeftSide>\n <ListItemContent className='gap-1'>\n <TextBody>{resolvedYieldLabel}</TextBody>\n <TextBody variant='text-small'>{Badge}</TextBody>\n </ListItemContent>\n <ListItemRightSide>\n <div className='flex justify-center items-center gap-1'>\n <span className='text-state-success'>{apy}% {apyLabel}</span>\n <HiArrowRight className='w-4 h-4' />\n </div>\n </ListItemRightSide>\n </ListItem>\n </div>\n </div>\n </BackgroundContainer>\n </ActionSheet>\n </div>\n )\n}\n","import React from 'react'\nimport { TextBody, TextHeading } from '../texts'\nimport { SummaryDetails } from '../details'\nimport { PrimaryButton } from '../buttons'\nimport { BackgroundContainer } from '../layout'\nimport { DetailsHeader } from '../details-header'\n\nexport interface StrategyDetailsViewProps {\n logoUrl: string;\n title: string;\n description: string;\n strategyInfo: { label: string; value: string }[];\n onBack?: () => void;\n onDeposit?: () => void;\n headerTitle?: string;\n strategyInfoTitle?: string;\n depositButtonLabel?: string;\n backAriaLabel?: string;\n}\n\nexport const StrategyDetailsView: React.FC<StrategyDetailsViewProps> = ({\n logoUrl,\n title,\n description,\n strategyInfo,\n onBack,\n onDeposit,\n headerTitle = 'Details',\n strategyInfoTitle = 'Strategy Info',\n depositButtonLabel = 'Deposit',\n backAriaLabel = 'Back',\n}) => {\n return (\n <BackgroundContainer>\n <DetailsHeader title={headerTitle} onBack={onBack} backAriaLabel={backAriaLabel} />\n\n <div data-test-id='strategy-details-content' className='flex-1 min-h-0 overflow-y-auto p-md py-lg pb-24'>\n <div className='flex flex-col gap-lg min-h-full'>\n <div className='inline-flex flex-col items-start gap-sm'>\n <img data-test-id='strategy-logo' src={logoUrl} alt={title} className='w-20 h-20 rounded-full' />\n <TextHeading variant='h5'>{title}</TextHeading>\n </div>\n\n <TextBody variant='text-small'>{description}</TextBody>\n\n <SummaryDetails\n title={strategyInfoTitle}\n items={strategyInfo}\n defaultOpen\n className='bg-bg-subtle dark:bg-bg-subtle-dark lg:!bg-bg-raised'\n />\n </div>\n </div>\n\n <div data-test-id='strategy-details-footer' className='sticky bottom-0 left-0 right-0 border-t border-border-subtle dark:border-border-subtle-dark px-md py-md'>\n <PrimaryButton onClick={onDeposit} className='w-full'>\n {depositButtonLabel}\n </PrimaryButton>\n </div>\n </BackgroundContainer>\n )\n}\n","import React from 'react'\n\nexport interface ProgressIndicatorProps {\n /** Progress percentage (0-100) */\n progress: number;\n /** Optional className for custom styling */\n className?: string;\n}\n\nexport const ProgressIndicator: React.FC<ProgressIndicatorProps> = ({\n progress,\n className = ''\n}) => {\n const clampedProgress = Math.min(100, Math.max(0, progress))\n\n return (\n <div className={`relative h-[12px] w-full ${className}`}>\n <div className='absolute left-0 right-0 top-1/2 -translate-y-1/2 flex items-center'>\n <div\n className='h-[4px] bg-brand-primary rounded-lg transition-all duration-300'\n style={{ width: `${clampedProgress}%` }}\n />\n <div className='flex-1 h-[4px] bg-bg-muted dark:bg-bg-muted-dark rounded-lg ml-1' />\n </div>\n </div>\n )\n}\n","import React from 'react'\n\nexport interface LoadingDotsProps {\n className?: string;\n}\n\n/**\n * Animated loading dots component with a bouncing effect\n * Used to indicate loading states throughout the application\n */\nexport const LoadingDots: React.FC<LoadingDotsProps> = ({ className = '' }) => {\n return (\n <span className={`flex gap-0.5 ${className}`}>\n <span className='animate-bounce' style={{ animationDelay: '0ms', animationDuration: '1.4s' }}>.</span>\n <span className='animate-bounce' style={{ animationDelay: '200ms', animationDuration: '1.4s' }}>.</span>\n <span className='animate-bounce' style={{ animationDelay: '400ms', animationDuration: '1.4s' }}>.</span>\n </span>\n )\n}\n","import React, { useState, useEffect } from 'react'\nimport { MdOutlineSearch } from 'react-icons/md'\n\nexport interface SearchInputProps {\n /**\n * Placeholder text (default: \"Search\")\n */\n placeholder?: string;\n /**\n * Current value\n */\n value?: string;\n /**\n * Whether the input is disabled\n */\n disabled?: boolean;\n /**\n * Change handler — called immediately on every keystroke\n */\n onChange?: (value: string) => void;\n /**\n * Search handler — called immediately on every keystroke (debounce in the container)\n */\n onSearch?: (value: string) => void;\n /**\n * Additional CSS class names for container\n */\n className?: string;\n /**\n * Additional CSS class names for input element (e.g., custom background)\n */\n inputClassName?: string;\n /**\n * Whether the input should be auto focused\n */\n autoFocus?: boolean;\n /**\n * test id for the container\n */\n containerTestId?: string;\n /**\n * test id for the input element\n */\n inputTestId?: string;\n}\n\n/**\n * SearchInput - Search input component with search icon\n */\nexport const SearchInput: React.FC<SearchInputProps> = ({\n placeholder = 'Search',\n value: controlledValue,\n disabled = false,\n onChange,\n onSearch,\n className = '',\n inputClassName,\n autoFocus = false,\n containerTestId,\n inputTestId,\n}) => {\n const [internalValue, setInternalValue] = useState(controlledValue || '')\n\n // Update internal value when controlled value changes\n useEffect(() => {\n if (controlledValue !== undefined) {\n setInternalValue(controlledValue)\n }\n }, [controlledValue])\n\n const handleInputChange = (newValue: string) => {\n setInternalValue(newValue)\n onChange?.(newValue)\n onSearch?.(newValue)\n }\n\n return (\n <div className={`flex-1 flex items-center relative ${className}`} data-testid={containerTestId}>\n <input\n data-testid={inputTestId}\n type='text'\n value={internalValue}\n placeholder={placeholder}\n disabled={disabled}\n autoFocus={autoFocus}\n onChange={(e) => handleInputChange(e.target.value)}\n className={[\n 'w-full h-full rounded p-4 pr-12 leading-normal tracking-wide',\n !inputClassName ? 'bg-bg-subtle dark:bg-bg-subtle-dark' : '',\n 'placeholder:text-text-disabled dark:placeholder:text-text-disabled-dark text-text-primary dark:text-text-primary-dark',\n 'focus:outline-none focus:ring-2 focus:ring-brand-primary',\n disabled ? 'cursor-not-allowed opacity-50' : '',\n inputClassName || '',\n ].filter(Boolean).join(' ')}\n />\n <MdOutlineSearch className='w-4 h-4 text-text-secondary absolute right-4' />\n </div>\n )\n}\n\nexport default SearchInput\n","import React from 'react'\nimport { MdOutlineSearchOff } from 'react-icons/md'\nimport { TextBody, TextHeading } from '../texts'\n\nexport interface SearchEmptyStateProps {\n title: string;\n description: string;\n}\n\nexport const SearchEmptyState: React.FC<SearchEmptyStateProps> = ({\n title,\n description,\n}) => {\n return (\n <div className='w-full py-md bg-bg-default dark:bg-bg-default-dark rounded-lg flex flex-col justify-center items-center gap-sm h-full'>\n <div className='w-full flex flex-col justify-center items-center gap-md py-20'>\n <div className='flex flex-col justify-center items-center gap-md text-center'>\n <div className='w-20 h-20 bg-bg-muted dark:bg-bg-muted-dark rounded-full flex justify-center items-center'>\n <MdOutlineSearchOff className='w-10 h-10 text-text-tertiary dark:text-text-tertiary-dark' />\n </div>\n <TextHeading variant='h3'>{title}</TextHeading>\n </div>\n <div className='self-stretch text-center'>\n <TextBody variant='text-small'>{description}</TextBody>\n </div>\n </div>\n </div>\n )\n}\n","import { TextBody } from '../texts'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport React from 'react'\n\nexport interface CollapsibleSectionProps {\n /** Section title */\n title: string;\n /** Optional subtitle shown next to title */\n subtitle?: string;\n /** Content to show when expanded */\n children: React.ReactNode;\n /** Whether section is open by default (uncontrolled mode) */\n defaultOpen?: boolean;\n /** Controlled open state */\n open?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n /** Optional className */\n className?: string;\n /** Aria label text for \"Collapse\" */\n collapseText: string;\n /** Aria label text for \"Expand\" */\n expandText: string;\n}\n\nexport const CollapsibleSection: React.FC<CollapsibleSectionProps> = ({\n title,\n subtitle,\n children,\n defaultOpen = false,\n open: controlledOpen,\n onOpenChange,\n className = '',\n collapseText,\n expandText,\n}) => {\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen)\n\n // Use controlled state if provided, otherwise use internal state\n const isOpen = controlledOpen !== undefined ? controlledOpen : internalOpen\n\n const handleToggle = () => {\n const newOpenState = !isOpen\n if (controlledOpen === undefined) {\n setInternalOpen(newOpenState)\n }\n onOpenChange?.(newOpenState)\n }\n\n return (\n <div className={`flex flex-col gap-sm w-full ${className}`}>\n <button\n type='button'\n onClick={handleToggle}\n className='flex items-center justify-between w-full text-left cursor-pointer'\n aria-expanded={isOpen}\n aria-label={`${isOpen ? collapseText : expandText} ${title}`}\n >\n <div className='flex items-center gap-xs'>\n <TextBody className='text-white font-medium'>{title}</TextBody>\n </div>\n <div className='flex items-center gap-xs'>\n {subtitle && (\n <TextBody variant='text-small'>{subtitle}</TextBody>\n )}\n <motion.svg\n className='w-5 h-5 text-gray-400'\n fill='none'\n stroke='currentColor'\n viewBox='0 0 24 24'\n animate={{ rotate: isOpen ? 180 : 0 }}\n transition={{ duration: 0.2, ease: 'easeInOut' }}\n >\n <path strokeLinecap='round' strokeLinejoin='round' strokeWidth={2} d='M5 9l7 7 7-7' />\n </motion.svg>\n </div>\n </button>\n <AnimatePresence>\n {isOpen && (\n <motion.div\n initial={{ height: 0, opacity: 0 }}\n animate={{ height: 'auto', opacity: 1 }}\n exit={{ height: 0, opacity: 0 }}\n transition={{ duration: 0.2, ease: 'easeInOut' }}\n style={{ overflow: 'hidden' }}\n >\n {children}\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n )\n}\n","import React from 'react'\n\nexport interface TransactionScreenIconProps {\n type: 'processing' | 'success' | 'warning';\n gradient?: string;\n}\n\nexport const TransactionScreenIcon: React.FC<TransactionScreenIconProps> = ({\n type,\n gradient = 'linear-gradient(135deg, #F6A700 0%, #F59E0B 100%)'\n}) => {\n if (type === 'success') {\n return (\n <div className='relative w-20 h-20'>\n <div className='w-full h-full rounded-full bg-brand-primary flex items-center justify-center'>\n <svg className='w-8 h-8 text-white' fill='none' viewBox='0 0 24 24' stroke='currentColor' strokeWidth={3}>\n <path strokeLinecap='round' strokeLinejoin='round' d='M5 13l4 4L19 7' />\n </svg>\n </div>\n </div>\n )\n }\n\n if (type === 'warning') {\n return (\n <div className='relative w-[83px] h-[83px]'>\n <div className='w-full h-full rounded-full flex items-center justify-center' style={{ background: gradient }}>\n <svg className='w-8 h-8 text-bg-default dark:text-bg-default-dark' fill='currentColor' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'>\n <path d='M16 5.33334C15.6444 5.33334 15.3111 5.51112 15.1111 5.8L5.11112 21.8C4.91112 22.0889 4.91112 22.4667 5.11112 22.7556C5.31112 23.0444 5.64445 23.2222 6.00001 23.2222H26C26.3556 23.2222 26.6889 23.0444 26.8889 22.7556C27.0889 22.4667 27.0889 22.0889 26.8889 21.8L16.8889 5.8C16.6889 5.51112 16.3556 5.33334 16 5.33334ZM16 10.6667C16.5333 10.6667 17 11.1333 17 11.6667V16C17 16.5333 16.5333 17 16 17C15.4667 17 15 16.5333 15 16V11.6667C15 11.1333 15.4667 10.6667 16 10.6667ZM16 19.3333C16.7333 19.3333 17.3333 19.9333 17.3333 20.6667C17.3333 21.4 16.7333 22 16 22C15.2667 22 14.6667 21.4 14.6667 20.6667C14.6667 19.9333 15.2667 19.3333 16 19.3333Z' />\n </svg>\n </div>\n </div>\n )\n }\n\n return (\n <div className='relative w-[83px] h-[83px]'>\n <div className='w-full h-full rounded-full flex items-center justify-center' style={{ background: gradient }}>\n <svg width='11' height='10' viewBox='0 0 11 10' fill='none' xmlns='http://www.w3.org/2000/svg' className='w-8 h-8 text-white'>\n <path d='M3.66659 8.33301H7.33325V7.08301C7.33325 6.62468 7.15374 6.23231 6.79471 5.90593C6.43568 5.57954 6.00409 5.41634 5.49992 5.41634C4.99575 5.41634 4.56415 5.57954 4.20513 5.90593C3.8461 6.23231 3.66659 6.62468 3.66659 7.08301V8.33301ZM5.49992 4.58301C6.00409 4.58301 6.43568 4.41981 6.79471 4.09342C7.15374 3.76704 7.33325 3.37467 7.33325 2.91634V1.66634H3.66659V2.91634C3.66659 3.37467 3.8461 3.76704 4.20513 4.09342C4.56415 4.41981 4.99575 4.58301 5.49992 4.58301ZM2.29159 9.16634C2.16172 9.16634 2.05287 9.12641 1.96502 9.04655C1.87718 8.96669 1.83325 8.86773 1.83325 8.74968C1.83325 8.63162 1.87718 8.53266 1.96502 8.4528C2.05287 8.37294 2.16172 8.33301 2.29159 8.33301H2.74992V7.08301C2.74992 6.6594 2.85877 6.26183 3.07648 5.8903C3.29419 5.51877 3.59784 5.2219 3.98742 4.99967C3.59784 4.77745 3.29419 4.48058 3.07648 4.10905C2.85877 3.73752 2.74992 3.33995 2.74992 2.91634V1.66634H2.29159C2.16172 1.66634 2.05287 1.62641 1.96502 1.54655C1.87718 1.46669 1.83325 1.36773 1.83325 1.24967C1.83325 1.13162 1.87718 1.03266 1.96502 0.952799C2.05287 0.872938 2.16172 0.833008 2.29159 0.833008H8.70825C8.83811 0.833008 8.94697 0.872938 9.03481 0.952799C9.12266 1.03266 9.16659 1.13162 9.16659 1.24967C9.16659 1.36773 9.12266 1.46669 9.03481 1.54655C8.94697 1.62641 8.83811 1.66634 8.70825 1.66634H8.24992V2.91634C8.24992 3.33995 8.14106 3.73752 7.92336 4.10905C7.70565 4.48058 7.402 4.77745 7.01242 4.99967C7.402 5.2219 7.70565 5.51877 7.92336 5.8903C8.14106 6.26183 8.24992 6.6594 8.24992 7.08301V8.33301H8.70825C8.83811 8.33301 8.94697 8.37294 9.03481 8.4528C9.12266 8.53266 9.16659 8.63162 9.16659 8.74968C9.16659 8.86773 9.12266 8.96669 9.03481 9.04655C8.94697 9.12641 8.83811 9.16634 8.70825 9.16634H2.29159Z' fill='currentColor' />\n </svg>\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport { BackgroundContainer } from '../layout'\nimport { DetailsHeader } from '../details-header'\nimport { CloseButton } from '../close-button'\nimport { ProgressIndicator } from '../progress'\nimport { TextHeading } from '../texts'\nimport { TransactionScreenIcon } from '../transaction-screen-icon/TransactionScreenIcon'\nimport type { TransactionScreenIconProps } from '../transaction-screen-icon/TransactionScreenIcon'\n\nexport interface TransactionScreenProps {\n progress: number;\n iconType: TransactionScreenIconProps['type'];\n iconGradient?: string;\n title: React.ReactNode;\n description: React.ReactNode;\n /** Renders a close (X) button in the top-left */\n onClose?: () => void;\n /** Renders a back-arrow header */\n onBack?: () => void;\n backTitle?: string;\n /** Bottom action bar (buttons) */\n actions?: React.ReactNode;\n /** Card / details content between hero and actions */\n children?: React.ReactNode;\n /** data-testid placed on the header wrapper div when onClose is used */\n testId?: string;\n}\n\nexport const TransactionScreen: React.FC<TransactionScreenProps> = ({\n progress,\n iconType,\n iconGradient,\n title,\n description,\n onClose,\n onBack,\n backTitle = '',\n actions,\n children,\n testId,\n}) => {\n return (\n <BackgroundContainer>\n <div className='flex flex-col h-full'>\n {onBack && <DetailsHeader title={backTitle} onBack={onBack} />}\n {onClose && (\n <div data-testid={testId} className='flex justify-start px-md pt-md'>\n <CloseButton onClick={onClose} />\n </div>\n )}\n\n <div className='w-full px-md pt-sm'>\n <ProgressIndicator progress={progress} />\n </div>\n\n <div className='flex-1 overflow-y-auto px-md py-lg flex flex-col gap-lg'>\n <div className='flex flex-col items-center gap-md pt-lg'>\n <TransactionScreenIcon type={iconType} gradient={iconGradient} />\n <TextHeading variant='h-large'>{title}</TextHeading>\n <div className='text-text-md-mobile font-poppins text-text-secondary dark:text-text-secondary-dark text-center' style={{ maxWidth: '350px' }}>\n {description}\n </div>\n </div>\n\n {children}\n\n <div className='flex-1' />\n </div>\n\n {actions && (\n <div className='px-md pb-md'>\n {actions}\n </div>\n )}\n </div>\n </BackgroundContainer>\n )\n}\n","import React from 'react'\nimport { SectionCard } from '../layout'\nimport { TextBody } from '../texts'\n\nexport interface TransactionScreenInvestmentCardProps {\n strategyName: React.ReactNode;\n apyLabel: string;\n apyValue: string;\n iconSrc?: string;\n iconAlt?: string;\n amountUSD: React.ReactNode;\n amountToken: React.ReactNode;\n}\n\nexport const TransactionScreenInvestmentCard: React.FC<TransactionScreenInvestmentCardProps> = ({\n strategyName,\n apyLabel,\n apyValue,\n iconSrc,\n iconAlt,\n amountUSD,\n amountToken,\n}) => {\n const [hasImageError, setHasImageError] = React.useState(false)\n\n React.useEffect(() => {\n setHasImageError(false)\n }, [iconSrc])\n\n const shouldShowImage = Boolean(iconSrc) && !hasImageError\n const fallbackLabel = (iconAlt || '?').slice(0, 1).toUpperCase()\n\n return (\n <SectionCard className='!p-[22px]'>\n <div className='flex items-center justify-between'>\n <div className='flex flex-col items-start gap-xs'>\n <div className='text-accent-lg-mobile font-poppins text-text-secondary dark:text-text-secondary-dark'>\n {strategyName}\n </div>\n <div className='text-text-sm-mobile font-poppins text-text-secondary dark:text-text-secondary-dark'>\n {apyLabel} <TextBody as='span' className='text-state-success'>{apyValue}</TextBody>\n </div>\n </div>\n <div className='flex items-start gap-sm'>\n <div className='w-8 h-8 rounded-full bg-bg-muted dark:bg-bg-muted-dark flex items-center justify-center'>\n {shouldShowImage\n ? <img src={iconSrc} alt={iconAlt} className='w-6 h-6 rounded-full' onError={() => setHasImageError(true)} />\n : <span className='text-xs font-semibold text-text-secondary dark:text-text-secondary-dark'>{fallbackLabel}</span>}\n </div>\n <div className='flex flex-col items-end'>\n <div className='text-h2-mobile font-extrabold font-poppins text-text-primary dark:text-text-primary-dark'>\n {amountUSD}\n </div>\n <div className='text-text-sm-mobile font-poppins text-text-secondary dark:text-text-secondary-dark'>\n {amountToken}\n </div>\n </div>\n </div>\n </div>\n </SectionCard>\n )\n}\n","import { IoCheckmarkOutline, IoTimeOutline, IoAlertCircleOutline } from 'react-icons/io5'\nimport type { TransactionStepStatus } from '../../types/transaction'\n\nexport interface StepStatusIconProps {\n status: TransactionStepStatus;\n}\n\n/**\n * Renders a step status icon based on the step status\n * Only three icon types: success (checkmark), timer (clock), and error (alert)\n */\nexport function StepStatusIcon ({ status }: StepStatusIconProps) {\n switch (status) {\n case 'completed':\n return (\n <div className='w-6 h-6 rounded-full bg-bg-muted dark:bg-bg-muted-dark flex items-center justify-center flex-shrink-0'>\n <IoCheckmarkOutline className='w-4 h-4' style={{ color: 'var(--color-state-success, #2BA176)' }} />\n </div>\n )\n case 'processing':\n return (\n <div className='w-6 h-6 rounded-full bg-bg-muted dark:bg-bg-muted-dark flex items-center justify-center flex-shrink-0'>\n <IoTimeOutline className='w-4 h-4' style={{ color: 'var(--color-state-warning, #F6A700)' }} />\n </div>\n )\n case 'failed':\n return (\n <div className='w-6 h-6 rounded-full bg-bg-muted dark:bg-bg-muted-dark flex items-center justify-center flex-shrink-0'>\n <IoAlertCircleOutline className='w-4 h-4' style={{ color: 'var(--color-state-error, #FF4D4F)' }} />\n </div>\n )\n }\n}\n","import type { TransactionStep } from '../../types/transaction'\n\nexport interface StepStatusTextProps {\n step: TransactionStep;\n completedText: string;\n processingText: string;\n failedText: string;\n viewOnExplorerText: string;\n}\n\n/**\n * Renders the status text and optional explorer link for a step\n */\nexport function StepStatusText ({\n step,\n completedText,\n processingText,\n failedText,\n viewOnExplorerText,\n}: StepStatusTextProps) {\n // Use custom status text if provided\n if (step.statusText) {\n const textColorClass =\n step.status === 'completed'\n ? 'text-text-primary dark:text-text-primary-dark'\n : step.status === 'processing'\n ? 'text-text-secondary dark:text-text-secondary-dark'\n : step.status === 'failed'\n ? 'text-state-error'\n : 'text-text-disabled dark:text-text-disabled-dark'\n\n return <span className={`text-sm ${textColorClass}`}>{step.statusText}</span>\n }\n\n // Show explorer link if completed and URL exists\n if (step.status === 'completed' && step.explorerUrl) {\n return (\n <a\n href={step.explorerUrl}\n target='_blank'\n rel='noopener noreferrer'\n className='text-sm text-brand-primary dark:text-brand-primary-dark underline hover:no-underline'\n >\n {viewOnExplorerText}\n </a>\n )\n }\n\n // Default status text\n const defaultText =\n step.status === 'completed'\n ? completedText\n : step.status === 'processing'\n ? processingText\n : failedText\n\n const textColorClass =\n step.status === 'completed'\n ? 'text-text-primary dark:text-text-primary-dark'\n : step.status === 'processing'\n ? 'text-text-secondary dark:text-text-secondary-dark'\n : 'text-state-error'\n\n return <span className={`text-sm ${textColorClass}`}>{defaultText}</span>\n}\n","import type { TransactionStep } from '../../types/transaction'\nimport { StepStatusText } from './StepStatusText'\n\nexport interface StepDisplayProps {\n step: TransactionStep;\n completedText: string;\n processingText: string;\n failedText: string;\n viewOnExplorerText: string;\n}\n\n/**\n * Renders a single processing step with icon, label, and status\n */\nexport function StepDisplay ({ step, completedText, processingText, failedText, viewOnExplorerText }: StepDisplayProps) {\n return (\n <div className='flex items-start justify-between gap-4 w-full'>\n <div className='flex-1 min-w-0'>\n <p className='text-sm text-text-primary dark:text-text-primary-dark font-medium'>\n {step.label}\n </p>\n </div>\n <div className='flex-shrink-0'>\n {step.value\n ? (\n <span className='text-sm text-text-secondary dark:text-text-secondary-dark'>\n {step.value}\n </span>\n )\n : (\n <StepStatusText step={step} completedText={completedText} processingText={processingText} failedText={failedText} viewOnExplorerText={viewOnExplorerText} />\n )}\n </div>\n </div>\n )\n}\n","/**\n * Transaction Processing Details Component\n *\n * Displays a visual breakdown of transaction processing steps with status icons,\n * vertical connectors, and explorer links for deposit/withdraw flows.\n */\n\nimport { SummaryDetails } from '../details'\nimport type { TransactionStep } from '../../types/transaction'\nimport { StepStatusIcon } from './StepStatusIcon'\nimport { StepDisplay } from './StepDisplay'\nimport type { TransactionProcessingDetailsLabels } from '../../types/transaction-processing-details-labels'\n\nexport interface TransactionProcessingDetailsProps {\n /** Array of transaction steps to display */\n steps: TransactionStep[];\n /** Optional CSS class name */\n className?: string;\n /** Whether the details section is open by default */\n defaultOpen?: boolean;\n /** All translated strings for this component */\n labels: TransactionProcessingDetailsLabels;\n}\n\n/**\n * Displays transaction processing steps with visual breakdown using vertical connectors\n * Similar to SwapProcessingDetails but designed for deposit/withdraw flows\n */\nexport function TransactionProcessingDetails ({\n steps,\n className = 'bg-bg-subtle dark:bg-bg-subtle-dark lg:!bg-bg-raised',\n defaultOpen = true,\n labels,\n}: TransactionProcessingDetailsProps) {\n if (!steps || steps.length === 0) {\n return null\n }\n\n const getProcessingSteps = () => {\n return (\n <div className='flex flex-col w-full'>\n {steps.map((step, index) => (\n <div key={`step-${index}`} className='flex gap-3'>\n {/* Icon column with vertical connector */}\n <div className='flex flex-col items-center'>\n {step.status && <StepStatusIcon status={step.status} />}\n {index < steps.length - 1 && step.status && (\n <div className='w-px flex-1 min-h-[16px] bg-white my-1' />\n )}\n </div>\n\n {/* Content column */}\n <div className='flex-1 pb-2 min-w-0'>\n <StepDisplay step={step} completedText={labels.completedText} processingText={labels.processingText} failedText={labels.failedText} viewOnExplorerText={labels.viewOnExplorerText} />\n </div>\n </div>\n ))}\n </div>\n )\n }\n\n // Build items array for SummaryDetails\n const items = [\n {\n label: '',\n value: getProcessingSteps(),\n valueClassName: 'flex flex-col gap-0 w-full',\n },\n ]\n\n return (\n <SummaryDetails\n title={labels.title}\n items={items}\n defaultOpen={defaultOpen}\n className={className}\n />\n )\n}\n","import React from 'react'\n\nexport interface TokenWithChainBadgeProps {\n tokenLogoUrl?: string;\n tokenAlt?: string;\n chainId?: number;\n chainLogoUrl?: string;\n chainName?: string;\n}\n\nexport const TokenWithChainBadge: React.FC<TokenWithChainBadgeProps> = ({\n tokenLogoUrl,\n tokenAlt,\n chainLogoUrl,\n chainName,\n}) => {\n const fallbackText = encodeURIComponent((tokenAlt || 'TOK').slice(0, 3).toUpperCase())\n const fallbackSrc = `https://placehold.co/40x40?text=${fallbackText}`\n\n return (\n <div className='relative w-10 h-10'>\n <img\n src={tokenLogoUrl || fallbackSrc}\n alt={tokenAlt || ''}\n className='object-cover w-10 h-10 rounded-full'\n onError={(e) => {\n (e.target as HTMLImageElement).src = fallbackSrc\n }}\n />\n {chainLogoUrl && (\n <img\n src={chainLogoUrl}\n alt={chainName}\n className='absolute object-cover w-6 h-6 p-px bg-white border rounded-full -bottom-1 -right-1 border-bg-default'\n onError={(e) => {\n (e.target as HTMLImageElement).style.display = 'none'\n }}\n />\n )}\n </div>\n )\n}\n","import React from 'react'\nimport { SectionCard } from '../layout'\nimport { TransactionScreen } from '../transaction-screen'\nimport { MdOutlineSwapHoriz } from 'react-icons/md'\nimport type { TransactionStep } from '../../types/transaction'\nimport type { TransactionProcessingDetailsLabels } from '../../types/transaction-processing-details-labels'\nimport { TransactionProcessingDetails } from '../transaction-processing-details'\n\nexport interface SwapProcessingViewProps {\n fromTokenSymbol: string;\n fromTokenIcon: string;\n toTokenSymbol: string;\n toTokenIcon: string;\n formattedInputAmount: string;\n formattedOutputAmount: string;\n formattedInputAmountUSD: string;\n formattedOutputAmountUSD: string;\n progress: number;\n transactionSteps: TransactionStep[];\n onClose: () => void;\n onGoToHistory: () => void;\n titleText: string;\n descriptionPrefix: string;\n activityHistoryText: string;\n processingDetailsLabels: TransactionProcessingDetailsLabels;\n}\n\nexport const SwapProcessingView: React.FC<SwapProcessingViewProps> = ({\n fromTokenSymbol,\n fromTokenIcon,\n toTokenSymbol,\n toTokenIcon,\n formattedInputAmount,\n formattedOutputAmount,\n formattedInputAmountUSD,\n formattedOutputAmountUSD,\n progress,\n transactionSteps,\n onClose,\n onGoToHistory,\n titleText,\n descriptionPrefix,\n activityHistoryText,\n processingDetailsLabels,\n}) => {\n return (\n <TransactionScreen\n testId='swap-processing-screen'\n onClose={onClose}\n progress={progress}\n iconType='processing'\n title={<span data-testid='swap-processing-title'>{titleText}</span>}\n description={\n <>\n {descriptionPrefix}{' '}\n <span\n className='font-semibold underline underline-offset-2 cursor-pointer text-brand-primary'\n onClick={onGoToHistory}\n >\n {activityHistoryText}.\n </span>\n </>\n }\n >\n <SectionCard className='!p-[22px]'>\n <div className='flex items-center justify-between w-full relative px-md'>\n <div className='flex flex-col items-center gap-sm'>\n <img src={fromTokenIcon} alt={fromTokenSymbol} className='w-8 h-8 rounded-full' />\n <div className='flex flex-col items-center gap-xs'>\n <div className='text-text-sm-mobile font-poppins text-text-secondary dark:text-text-secondary-dark'>\n {formattedInputAmount} {fromTokenSymbol}\n </div>\n <div className='text-h2-mobile font-extrabold font-poppins text-text-primary dark:text-text-primary-dark'>\n {formattedInputAmountUSD}\n </div>\n </div>\n </div>\n\n <div className='absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 bg-brand-secondary rounded-full p-2 shadow-md z-10'>\n <MdOutlineSwapHoriz className='w-5 h-5' />\n </div>\n\n <div className='flex flex-col items-center gap-sm'>\n <img src={toTokenIcon} alt={toTokenSymbol} className='w-8 h-8 rounded-full' />\n <div className='flex flex-col items-center gap-xs'>\n <div className='text-text-sm-mobile font-poppins text-text-secondary dark:text-text-secondary-dark'>\n ~{formattedOutputAmount} {toTokenSymbol}\n </div>\n <div className='text-h2-mobile font-extrabold font-poppins text-text-primary dark:text-text-primary-dark'>\n {formattedOutputAmountUSD}\n </div>\n </div>\n </div>\n </div>\n </SectionCard>\n\n <TransactionProcessingDetails\n steps={transactionSteps}\n className='bg-bg-subtle dark:bg-bg-subtle-dark lg:!bg-bg-raised dark:lg:!bg-bg-raised-dark'\n labels={processingDetailsLabels}\n />\n </TransactionScreen>\n )\n}\n","import React from 'react'\nimport { TransactionProcessingDetails } from '../transaction-processing-details'\nimport { TransactionScreen } from '../transaction-screen'\nimport { MdOutlineSwapHoriz } from 'react-icons/md'\nimport { TokenWithChainBadge } from '../token-with-chain-badge'\nimport { SectionCard } from '../layout'\nimport type { TransactionStep } from '../../types/transaction'\nimport type { TransactionProcessingDetailsLabels } from '../../types/transaction-processing-details-labels'\n\nexport interface SwapCrossChainProcessingViewProps {\n fromTokenSymbol: string;\n fromTokenIcon: string;\n toTokenSymbol: string;\n toTokenIcon: string;\n originChainId?: number;\n destinationChainId?: number;\n originChainLogoUrl: string;\n originChainName: string;\n destinationChainLogoUrl: string;\n destinationChainName: string;\n formattedInputAmount: string;\n formattedOutputAmount: string;\n formattedInputAmountUSD: string;\n formattedOutputAmountUSD: string;\n progress: number;\n title: string;\n description: string;\n transactionSteps: TransactionStep[];\n onClose: () => void;\n onGoToHistory: () => void;\n viewHistoryText: string;\n processingDetailsLabels: TransactionProcessingDetailsLabels;\n}\n\nexport const SwapCrossChainProcessingView: React.FC<SwapCrossChainProcessingViewProps> = ({\n fromTokenSymbol,\n fromTokenIcon,\n toTokenSymbol,\n toTokenIcon,\n originChainId,\n destinationChainId,\n originChainLogoUrl,\n originChainName,\n destinationChainLogoUrl,\n destinationChainName,\n formattedInputAmount,\n formattedOutputAmount,\n formattedInputAmountUSD,\n formattedOutputAmountUSD,\n progress,\n title,\n description,\n transactionSteps,\n onClose,\n onGoToHistory,\n viewHistoryText,\n processingDetailsLabels,\n}) => {\n return (\n <TransactionScreen\n onClose={onClose}\n progress={progress}\n iconType='processing'\n title={title}\n description={\n <>\n {description}{' '}\n <span\n className='font-semibold underline cursor-pointer underline-offset-2 text-brand-primary'\n onClick={onGoToHistory}\n >\n {viewHistoryText}\n </span>\n .\n </>\n }\n >\n <SectionCard className='!p-[22px]'>\n <div className='relative flex items-center justify-between w-full px-md'>\n <div className='flex flex-col items-center gap-sm'>\n <TokenWithChainBadge\n tokenLogoUrl={fromTokenIcon}\n tokenAlt={fromTokenSymbol}\n chainId={originChainId}\n chainLogoUrl={originChainLogoUrl}\n chainName={originChainName}\n />\n <div className='flex flex-col items-center gap-xs'>\n <div className='text-text-sm-mobile font-poppins text-text-secondary dark:text-text-secondary-dark'>\n {formattedInputAmount} {fromTokenSymbol}\n </div>\n <div className='text-h2-mobile font-extrabold font-poppins text-text-primary dark:text-text-primary-dark'>\n {formattedInputAmountUSD}\n </div>\n </div>\n </div>\n\n <div className='absolute z-10 p-2 -translate-x-1/2 -translate-y-1/2 rounded-full shadow-md left-1/2 top-1/2 bg-brand-secondary'>\n <MdOutlineSwapHoriz className='w-5 h-5' />\n </div>\n\n <div className='flex flex-col items-center gap-sm'>\n <TokenWithChainBadge\n tokenLogoUrl={toTokenIcon}\n tokenAlt={toTokenSymbol}\n chainId={destinationChainId}\n chainLogoUrl={destinationChainLogoUrl}\n chainName={destinationChainName}\n />\n <div className='flex flex-col items-center gap-xs'>\n <div className='text-text-sm-mobile font-poppins text-text-secondary dark:text-text-secondary-dark'>\n ~{formattedOutputAmount} {toTokenSymbol}\n </div>\n <div className='text-h2-mobile font-extrabold font-poppins text-text-primary dark:text-text-primary-dark'>\n {formattedOutputAmountUSD}\n </div>\n </div>\n </div>\n </div>\n </SectionCard>\n\n <TransactionProcessingDetails\n steps={transactionSteps}\n className='bg-bg-subtle dark:bg-bg-subtle-dark lg:!bg-bg-raised dark:lg:!bg-bg-raised-dark'\n labels={processingDetailsLabels}\n />\n </TransactionScreen>\n )\n}\n","import React from 'react'\nimport { PrimaryButton, SecondaryButton } from '../buttons'\nimport { SectionCard } from '../layout'\nimport { TransactionScreen } from '../transaction-screen'\nimport { MdOutlineSwapHoriz } from 'react-icons/md'\nimport { TransactionProcessingDetails } from '../transaction-processing-details'\nimport type { TransactionStep } from '../../types/transaction'\nimport type { TransactionProcessingDetailsLabels } from '../../types/transaction-processing-details-labels'\n\nexport interface SwapSignatureWarningViewProps {\n fromTokenSymbol: string;\n fromTokenIcon: string;\n toTokenSymbol: string;\n toTokenIcon: string;\n formattedInputAmount: string;\n formattedOutputAmount: string;\n formattedInputAmountUSD: string;\n formattedOutputAmountUSD: string;\n progress: number;\n errorTitle: string;\n errorDescription: string;\n transactionSteps: TransactionStep[];\n onCancel: () => void;\n onTryAgain: () => void;\n cancelButtonText: string;\n retryButtonText: string;\n processingDetailsLabels: TransactionProcessingDetailsLabels;\n}\n\nexport const SwapSignatureWarningView: React.FC<SwapSignatureWarningViewProps> = ({\n fromTokenSymbol,\n fromTokenIcon,\n toTokenSymbol,\n toTokenIcon,\n formattedInputAmount,\n formattedOutputAmount,\n formattedInputAmountUSD,\n formattedOutputAmountUSD,\n progress,\n errorTitle,\n errorDescription,\n transactionSteps,\n onCancel,\n onTryAgain,\n cancelButtonText,\n retryButtonText,\n processingDetailsLabels,\n}) => {\n return (\n <TransactionScreen\n testId='swap-signature-warning-screen'\n onClose={onCancel}\n progress={progress}\n iconType='warning'\n title={<span data-testid='swap-signature-warning-title'>{errorTitle}</span>}\n description={errorDescription}\n actions={\n <div data-testid='swap-signature-warning-actions' className='flex gap-sm w-full'>\n <SecondaryButton data-testid='swap-signature-warning-cancel' className='flex-1' onClick={onCancel}>\n {cancelButtonText}\n </SecondaryButton>\n <PrimaryButton data-testid='swap-signature-warning-retry' className='flex-1' onClick={onTryAgain}>\n {retryButtonText}\n </PrimaryButton>\n </div>\n }\n >\n <SectionCard className='!p-[22px]'>\n <div className='flex items-center justify-between w-full relative px-md'>\n <div className='flex flex-col items-center gap-sm'>\n <img src={fromTokenIcon} alt={fromTokenSymbol} className='w-8 h-8 rounded-full' />\n <div className='flex flex-col items-center gap-xs'>\n <div className='text-text-sm-mobile font-poppins text-text-secondary dark:text-text-secondary-dark'>\n {formattedInputAmount} {fromTokenSymbol}\n </div>\n <div className='text-h2-mobile font-extrabold font-poppins text-text-primary dark:text-text-primary-dark'>\n {formattedInputAmountUSD}\n </div>\n </div>\n </div>\n\n <div className='absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 bg-brand-secondary rounded-full p-2 shadow-md z-10'>\n <MdOutlineSwapHoriz className='w-5 h-5' />\n </div>\n\n <div className='flex flex-col items-center gap-sm'>\n <img src={toTokenIcon} alt={toTokenSymbol} className='w-8 h-8 rounded-full' />\n <div className='flex flex-col items-center gap-xs'>\n <div className='text-text-sm-mobile font-poppins text-text-secondary dark:text-text-secondary-dark'>\n ~{formattedOutputAmount} {toTokenSymbol}\n </div>\n <div className='text-h2-mobile font-extrabold font-poppins text-text-primary dark:text-text-primary-dark'>\n {formattedOutputAmountUSD}\n </div>\n </div>\n </div>\n </div>\n </SectionCard>\n\n <TransactionProcessingDetails\n steps={transactionSteps}\n defaultOpen\n className='bg-bg-subtle dark:bg-bg-subtle-dark lg:!bg-bg-raised dark:lg:!bg-bg-raised-dark'\n labels={processingDetailsLabels}\n />\n </TransactionScreen>\n )\n}\n","import React from 'react'\nimport { PrimaryButton } from '../buttons'\nimport { SectionCard } from '../layout'\nimport { TransactionScreen } from '../transaction-screen'\nimport { MdOutlineSwapHoriz } from 'react-icons/md'\nimport type { TransactionStep } from '../../types/transaction'\nimport type { SwapSuccessLabels } from '../../types/swap-success-labels'\nimport type { TransactionProcessingDetailsLabels } from '../../types/transaction-processing-details-labels'\nimport { TransactionProcessingDetails } from '../transaction-processing-details'\n\nexport interface SwapSuccessViewProps {\n fromTokenSymbol: string;\n fromTokenIcon: string;\n toTokenSymbol: string;\n toTokenIcon: string;\n formattedInputAmount: string;\n formattedOutputAmount: string;\n formattedInputAmountUSD: string;\n formattedOutputAmountUSD: string;\n transactionSteps: TransactionStep[];\n onClose: () => void;\n onStartNewSwap: () => void;\n onGoToWallet: () => void;\n labels: SwapSuccessLabels;\n processingDetailsLabels: TransactionProcessingDetailsLabels;\n}\n\nexport const SwapSuccessView: React.FC<SwapSuccessViewProps> = ({\n fromTokenSymbol,\n fromTokenIcon,\n toTokenSymbol,\n toTokenIcon,\n formattedInputAmount,\n formattedOutputAmount,\n formattedInputAmountUSD,\n formattedOutputAmountUSD,\n transactionSteps,\n onClose,\n onStartNewSwap,\n onGoToWallet,\n labels,\n processingDetailsLabels,\n}) => {\n return (\n <TransactionScreen\n testId='swap-success-screen'\n onClose={onClose}\n progress={100}\n iconType='success'\n title={<span data-testid='swap-success-title'>{labels.title}</span>}\n description={\n <>\n {labels.descriptionPrefix} <strong className='font-semibold'>{formattedInputAmount} {fromTokenSymbol}</strong> {labels.descriptionMiddle}{' '}\n <strong className='font-semibold'>{formattedOutputAmount} {toTokenSymbol}</strong>\n <br />\n {labels.descriptionSuffix}{' '}\n <strong className='font-semibold text-brand-primary cursor-pointer' onClick={onGoToWallet}>\n {labels.walletLinkText}\n </strong>\n </>\n }\n actions={\n <div data-testid='swap-start-new-wrapper' className='w-full'>\n <PrimaryButton data-testid='swap-start-new-button' className='w-full' onClick={onStartNewSwap}>\n {labels.startNewSwapButton}\n </PrimaryButton>\n </div>\n }\n >\n <SectionCard className='!p-[22px]'>\n <div className='flex items-center justify-between w-full relative px-md'>\n <div className='flex flex-col items-center gap-sm'>\n <img src={fromTokenIcon} alt={fromTokenSymbol} className='w-8 h-8 rounded-full' />\n <div className='flex flex-col items-center gap-xs'>\n <div className='text-text-sm-mobile font-poppins text-text-secondary dark:text-text-secondary-dark'>\n {formattedInputAmount} {fromTokenSymbol}\n </div>\n <div className='text-h2-mobile font-extrabold font-poppins text-text-primary dark:text-text-primary-dark'>\n {formattedInputAmountUSD}\n </div>\n </div>\n </div>\n\n <div className='absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 bg-brand-secondary rounded-full p-2 shadow-md z-10'>\n <MdOutlineSwapHoriz className='w-5 h-5' />\n </div>\n\n <div className='flex flex-col items-center gap-sm'>\n <img src={toTokenIcon} alt={toTokenSymbol} className='w-8 h-8 rounded-full' />\n <div className='flex flex-col items-center gap-xs'>\n <div className='text-text-sm-mobile font-poppins text-text-secondary dark:text-text-secondary-dark'>\n ~{formattedOutputAmount} {toTokenSymbol}\n </div>\n <div className='text-h2-mobile font-extrabold font-poppins text-text-primary dark:text-text-primary-dark'>\n {formattedOutputAmountUSD}\n </div>\n </div>\n </div>\n </div>\n </SectionCard>\n\n <TransactionProcessingDetails\n steps={transactionSteps}\n defaultOpen\n className='bg-bg-subtle dark:bg-bg-subtle-dark lg:!bg-bg-raised dark:lg:!bg-bg-raised-dark'\n labels={processingDetailsLabels}\n />\n </TransactionScreen>\n )\n}\n","import React from 'react'\nimport { PrimaryButton, SecondaryButton } from '../buttons'\nimport { SectionCard } from '../layout'\nimport { TransactionScreen } from '../transaction-screen'\nimport { MdOutlineSwapHoriz } from 'react-icons/md'\nimport type { TransactionStep } from '../../types/transaction'\nimport type { TransactionProcessingDetailsLabels } from '../../types/transaction-processing-details-labels'\nimport { TransactionProcessingDetails } from '../transaction-processing-details'\n\nexport interface SwapTransactionFailedViewProps {\n fromTokenSymbol: string;\n fromTokenIcon: string;\n toTokenSymbol: string;\n toTokenIcon: string;\n formattedInputAmount: string;\n formattedOutputAmount: string;\n formattedInputAmountUSD: string;\n formattedOutputAmountUSD: string;\n progress: number;\n errorTitle: string;\n errorDescription: string;\n transactionSteps: TransactionStep[];\n hasExplorerLink: boolean;\n onBack: () => void;\n onViewExplorer: () => void;\n onTryAgain: () => void;\n viewOnExplorerText: string;\n retryButtonText: string;\n processingDetailsLabels: TransactionProcessingDetailsLabels;\n}\n\nexport const SwapTransactionFailedView: React.FC<SwapTransactionFailedViewProps> = ({\n fromTokenSymbol,\n fromTokenIcon,\n toTokenSymbol,\n toTokenIcon,\n formattedInputAmount,\n formattedOutputAmount,\n formattedInputAmountUSD,\n formattedOutputAmountUSD,\n progress,\n errorTitle,\n errorDescription,\n transactionSteps,\n hasExplorerLink,\n onBack,\n onViewExplorer,\n onTryAgain,\n viewOnExplorerText,\n retryButtonText,\n processingDetailsLabels,\n}) => {\n return (\n <TransactionScreen\n testId='swap-failed-screen'\n onClose={onBack}\n progress={progress}\n iconType='warning'\n iconGradient='linear-gradient(135deg, #EF4444 0%, #DC2626 100%)'\n title={<span data-testid='swap-failed-title'>{errorTitle}</span>}\n description={errorDescription}\n actions={\n <div data-testid='swap-failed-actions' className='flex gap-sm w-full'>\n <SecondaryButton data-testid='swap-failed-view-explorer' className='flex-1' onClick={onViewExplorer} disabled={!hasExplorerLink}>\n {viewOnExplorerText}\n </SecondaryButton>\n <PrimaryButton data-testid='swap-failed-retry' className='flex-1' onClick={onTryAgain}>\n {retryButtonText}\n </PrimaryButton>\n </div>\n }\n >\n <SectionCard className='!p-[22px]'>\n <div className='flex items-center justify-between w-full relative px-md'>\n <div className='flex flex-col items-center gap-sm'>\n <img src={fromTokenIcon} alt={fromTokenSymbol} className='w-8 h-8 rounded-full' />\n <div className='flex flex-col items-center gap-xs'>\n <div className='text-text-sm-mobile font-poppins text-text-secondary dark:text-text-secondary-dark'>\n ~{formattedInputAmount} {fromTokenSymbol}\n </div>\n <div className='text-h2-mobile font-extrabold font-poppins text-text-primary dark:text-text-primary-dark'>\n {formattedInputAmountUSD}\n </div>\n </div>\n </div>\n\n <div className='absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 bg-brand-secondary rounded-full p-2 shadow-md z-10'>\n <MdOutlineSwapHoriz className='w-5 h-5' />\n </div>\n\n <div className='flex flex-col items-center gap-sm'>\n <img src={toTokenIcon} alt={toTokenSymbol} className='w-8 h-8 rounded-full' />\n <div className='flex flex-col items-center gap-xs'>\n <div className='text-text-sm-mobile font-poppins text-text-secondary dark:text-text-secondary-dark'>\n ~{formattedOutputAmount} {toTokenSymbol}\n </div>\n <div className='text-h2-mobile font-extrabold font-poppins text-text-primary dark:text-text-primary-dark'>\n {formattedOutputAmountUSD}\n </div>\n </div>\n </div>\n </div>\n </SectionCard>\n\n <TransactionProcessingDetails\n steps={transactionSteps}\n defaultOpen\n className='bg-bg-subtle dark:bg-bg-subtle-dark lg:!bg-bg-raised dark:lg:!bg-bg-raised-dark'\n labels={processingDetailsLabels}\n />\n </TransactionScreen>\n )\n}\n","import React from 'react'\nimport { ActionSheet } from '../action-sheet'\nimport { BackgroundContainer, Navbar } from '../layout'\nimport { CloseButton } from '../close-button'\nimport { ListItem, ListItemContent, ListItemLeftSide, ListItemRightSide } from '../lists'\nimport { TextBody, TextHeading } from '../texts'\nimport { TertiaryButton } from '../buttons'\nimport { SearchInput } from '../search-input'\nimport { SearchEmptyState } from '../search-empty-state'\nimport { LoadingDots } from '../loading-dots'\nimport type { ChooseAnAssetSwapLabels } from '../../types/choose-an-asset-swap-labels'\nimport type { TokenData } from '../../types/token-data'\nimport type { BalanceDomain } from '../../types/balance-domain'\n\nexport type { TokenData, BalanceDomain }\n\nexport interface ChooseAnAssetSwapViewProps {\n actionSheetId: string;\n isOpen: boolean;\n currentActionSheetId: string | null;\n onClose: () => void;\n onSearch: (value: string) => void;\n autoFocus: boolean;\n displayedTokens: TokenData[];\n hasMore: boolean;\n onLoadMore: () => void;\n findBalance: (token: TokenData) => BalanceDomain | undefined;\n isFetching: boolean;\n onAssetClick: (token: TokenData) => void;\n labels: ChooseAnAssetSwapLabels;\n formatTokenAmount: (amountUI: string, priceUSD: number, decimals: number) => string;\n formatCurrencyValue: (value: number) => string;\n}\n\nexport const ChooseAnAssetSwapView: React.FC<ChooseAnAssetSwapViewProps> = ({\n actionSheetId,\n isOpen,\n currentActionSheetId,\n onClose,\n onSearch,\n autoFocus,\n displayedTokens,\n hasMore,\n onLoadMore,\n findBalance,\n isFetching,\n onAssetClick,\n labels,\n formatTokenAmount,\n formatCurrencyValue,\n}) => {\n const [searchValue, setSearchValue] = React.useState('')\n\n const handleSearch = (value: string) => {\n setSearchValue(value)\n onSearch(value)\n }\n\n return (\n <div className='flex justify-center' data-testid={`swap-token-actionsheet-wrapper-${actionSheetId}`}>\n <ActionSheet\n id={actionSheetId}\n currentActionSheetId={currentActionSheetId}\n isOpen={isOpen}\n onClose={onClose}\n position='bottom'\n height='full'\n contentClassName='w-full max-w-[620px] mx-auto'\n >\n <BackgroundContainer className='flex flex-col h-full'>\n <Navbar>\n <CloseButton testId={`swap-token-actionsheet-close-${actionSheetId}`} onClick={onClose} />\n </Navbar>\n <div className='flex flex-col flex-1 w-full p-6 overflow-hidden'>\n <div className='flex-shrink-0'>\n <TextHeading>{labels.title}</TextHeading>\n <br />\n <SearchInput\n onSearch={handleSearch}\n placeholder={labels.searchPlaceholder}\n autoFocus={autoFocus}\n inputClassName='bg-bg-subtle dark:bg-bg-subtle-dark lg:!bg-bg-raised lg:dark:!bg-bg-raised-dark'\n containerTestId={`swap-token-search-container-${actionSheetId}`}\n inputTestId={`swap-token-search-input-${actionSheetId}`}\n />\n </div>\n {(searchValue && displayedTokens.length === 0 && !isFetching)\n ? (\n <SearchEmptyState title={labels.searchEmptyTitle} description={labels.searchEmptyDescription} />\n )\n : (\n <div className='flex flex-col gap-2 w-full mt-4 overflow-y-auto flex-1 min-h-0'>\n {isFetching && (\n <div className='flex justify-center items-center w-full py-4'>\n <div className='flex items-center gap-1'>\n <TextBody variant='text-small' className='text-text-secondary dark:text-text-secondary-dark'>\n {labels.searchingText}\n </TextBody>\n <LoadingDots />\n </div>\n </div>\n )}\n {displayedTokens.map((token, index) => {\n const balance = findBalance(token)\n const tokenPriceUSD = Number(balance?.priceUSD) || 0\n const formattedBalance = balance?.amountUI\n ? formatTokenAmount(balance.amountUI, tokenPriceUSD, 2)\n : '0'\n\n return (\n <ListItem\n className='w-full flex-shrink-0'\n onClick={() => onAssetClick(token)}\n key={`token-${token.address}-${index}`}\n data-testid={`swap-token-item-${token.symbol.toLowerCase()}-${token.chainId}`}\n data-address={token.address}\n data-chain-id={token.chainId}\n data-symbol={token.symbol}\n >\n <ListItemLeftSide>\n <img src={token.logoURI || ''} alt={token.name} className='w-10 h-10 rounded-full' />\n </ListItemLeftSide>\n <ListItemContent>\n <TextBody>{token.name}</TextBody>\n <TextBody variant='text-small'>{token.symbol}</TextBody>\n </ListItemContent>\n <ListItemRightSide>\n <TextBody>{formattedBalance}</TextBody>\n <TextBody variant='text-small'>{formatCurrencyValue(Number(balance?.amountInUSD) || 0)}</TextBody>\n </ListItemRightSide>\n </ListItem>\n )\n })}\n {hasMore && (\n <div className='flex justify-center items-center w-full py-4 flex-shrink-0'>\n <TertiaryButton onClick={onLoadMore}>{labels.loadMoreButton}</TertiaryButton>\n </div>\n )}\n </div>\n )}\n </div>\n </BackgroundContainer>\n </ActionSheet>\n </div>\n )\n}\n"]}