@aori/mega-swap-widget 0.1.0

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.
Files changed (71) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +404 -0
  3. package/dist/AssetSelectionMenu-Y3EB32BT.cjs +13 -0
  4. package/dist/AssetSelectionMenu-Y3EB32BT.cjs.map +1 -0
  5. package/dist/AssetSelectionMenu-ZRG42UCZ.js +13 -0
  6. package/dist/AssetSelectionMenu-ZRG42UCZ.js.map +1 -0
  7. package/dist/ChainSelectionMenu-FBAPPFKI.cjs +11 -0
  8. package/dist/ChainSelectionMenu-FBAPPFKI.cjs.map +1 -0
  9. package/dist/ChainSelectionMenu-QO3H4TNR.js +11 -0
  10. package/dist/ChainSelectionMenu-QO3H4TNR.js.map +1 -0
  11. package/dist/SwapFormHorizontal-JDJUDFNX.js +573 -0
  12. package/dist/SwapFormHorizontal-JDJUDFNX.js.map +1 -0
  13. package/dist/SwapFormHorizontal-WG3Z3CFT.cjs +573 -0
  14. package/dist/SwapFormHorizontal-WG3Z3CFT.cjs.map +1 -0
  15. package/dist/SwapFormSplit-7CHTPLEQ.js +441 -0
  16. package/dist/SwapFormSplit-7CHTPLEQ.js.map +1 -0
  17. package/dist/SwapFormSplit-VDDIRQUQ.cjs +441 -0
  18. package/dist/SwapFormSplit-VDDIRQUQ.cjs.map +1 -0
  19. package/dist/WalletPlaceholderPanel-7YDQ4FT6.js +57 -0
  20. package/dist/WalletPlaceholderPanel-7YDQ4FT6.js.map +1 -0
  21. package/dist/WalletPlaceholderPanel-FZ6XIAMF.cjs +57 -0
  22. package/dist/WalletPlaceholderPanel-FZ6XIAMF.cjs.map +1 -0
  23. package/dist/WidgetWalletPanel-D7I5TAU3.js +789 -0
  24. package/dist/WidgetWalletPanel-D7I5TAU3.js.map +1 -0
  25. package/dist/WidgetWalletPanel-T7H6FGVN.cjs +789 -0
  26. package/dist/WidgetWalletPanel-T7H6FGVN.cjs.map +1 -0
  27. package/dist/chunk-3E6RNP2D.cjs +389 -0
  28. package/dist/chunk-3E6RNP2D.cjs.map +1 -0
  29. package/dist/chunk-5TH6MFQD.cjs +122 -0
  30. package/dist/chunk-5TH6MFQD.cjs.map +1 -0
  31. package/dist/chunk-5XSCUUOW.js +101 -0
  32. package/dist/chunk-5XSCUUOW.js.map +1 -0
  33. package/dist/chunk-6Q7MSCKS.js +2199 -0
  34. package/dist/chunk-6Q7MSCKS.js.map +1 -0
  35. package/dist/chunk-6XB5R4GF.cjs +368 -0
  36. package/dist/chunk-6XB5R4GF.cjs.map +1 -0
  37. package/dist/chunk-6YLNOZ7P.js +389 -0
  38. package/dist/chunk-6YLNOZ7P.js.map +1 -0
  39. package/dist/chunk-7AWG6OWF.js +27 -0
  40. package/dist/chunk-7AWG6OWF.js.map +1 -0
  41. package/dist/chunk-ARMW5POL.js +3082 -0
  42. package/dist/chunk-ARMW5POL.js.map +1 -0
  43. package/dist/chunk-B3ILUJ7G.cjs +101 -0
  44. package/dist/chunk-B3ILUJ7G.cjs.map +1 -0
  45. package/dist/chunk-GGM3MDFM.js +32 -0
  46. package/dist/chunk-GGM3MDFM.js.map +1 -0
  47. package/dist/chunk-GZUTUD5O.cjs +2199 -0
  48. package/dist/chunk-GZUTUD5O.cjs.map +1 -0
  49. package/dist/chunk-HXOGJSAI.cjs +3082 -0
  50. package/dist/chunk-HXOGJSAI.cjs.map +1 -0
  51. package/dist/chunk-LTA7IG3J.js +122 -0
  52. package/dist/chunk-LTA7IG3J.js.map +1 -0
  53. package/dist/chunk-NBJPKJBC.cjs +32 -0
  54. package/dist/chunk-NBJPKJBC.cjs.map +1 -0
  55. package/dist/chunk-PGYOJ5RB.cjs +27 -0
  56. package/dist/chunk-PGYOJ5RB.cjs.map +1 -0
  57. package/dist/chunk-QHW27RMH.js +199 -0
  58. package/dist/chunk-QHW27RMH.js.map +1 -0
  59. package/dist/chunk-TMC4SUEV.js +368 -0
  60. package/dist/chunk-TMC4SUEV.js.map +1 -0
  61. package/dist/chunk-XQINW7QP.cjs +199 -0
  62. package/dist/chunk-XQINW7QP.cjs.map +1 -0
  63. package/dist/index.cjs +1780 -0
  64. package/dist/index.cjs.map +1 -0
  65. package/dist/index.css +1424 -0
  66. package/dist/index.css.map +1 -0
  67. package/dist/index.d.cts +555 -0
  68. package/dist/index.d.ts +555 -0
  69. package/dist/index.js +1780 -0
  70. package/dist/index.js.map +1 -0
  71. package/package.json +82 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/WidgetWalletPanel.tsx","../src/hooks/useWidgetWalletData.ts","../src/components/wallet/WidgetWalletCard.tsx","../src/components/wallet/WidgetWalletPortfolio.tsx","../src/components/wallet/WidgetWalletAssetItem.tsx","../src/components/wallet/WidgetWalletTradeHistory.tsx","../src/hooks/useWidgetOrderHistory.ts","../src/components/wallet/WidgetWalletTradeItem.tsx"],"sourcesContent":["'use client';\n\nimport type { Asset } from '../internal';\nimport React, { useCallback, useState } from 'react';\nimport { useDisconnect } from 'wagmi';\nimport { useSwapFormContext } from '../providers/SwapFormProvider';\nimport { useWidgetSwapUIStore } from '../stores/swapUIStore';\nimport { useWidgetWalletData } from '../hooks/useWidgetWalletData';\nimport { WidgetWalletCard } from './wallet/WidgetWalletCard';\nimport { WidgetWalletPortfolio } from './wallet/WidgetWalletPortfolio';\nimport { WidgetWalletTradeHistory } from './wallet/WidgetWalletTradeHistory';\n\nconst WidgetWalletSkeleton: React.FC = () => (\n <div className=\"flex flex-col w-full h-full overflow-hidden\">\n {/* Card placeholder */}\n <div className=\"p-2 w-full flex justify-center\">\n <div\n className=\"relative w-full h-[140px] animate-pulse\"\n style={{\n borderRadius: 'var(--widget-radius)',\n border: '1px var(--widget-border-style) var(--widget-border)',\n backgroundColor: 'var(--widget-secondary)',\n }}\n />\n </div>\n {/* Portfolio rows */}\n <div className=\"px-2 flex flex-col gap-1.5 mt-1\">\n {[80, 60, 72, 55, 65].map((w, i) => (\n <div key={i} className=\"flex items-center justify-between py-1.5\">\n <div className=\"flex items-center gap-2\">\n <div\n className=\"h-6 w-6 rounded-full animate-pulse shrink-0\"\n style={{ backgroundColor: 'var(--widget-secondary)' }}\n />\n <div\n className=\"h-3.5 animate-pulse\"\n style={{ width: `${w}px`, backgroundColor: 'var(--widget-secondary)', borderRadius: '0.25rem' }}\n />\n </div>\n <div\n className=\"h-3.5 w-14 animate-pulse\"\n style={{ backgroundColor: 'var(--widget-secondary)', opacity: 0.5, borderRadius: '0.25rem' }}\n />\n </div>\n ))}\n </div>\n {/* Sign out button placeholder */}\n <div className=\"mt-auto shrink-0 p-2\" style={{ borderTop: '1px var(--widget-border-style) var(--widget-border)' }}>\n <div\n className=\"w-full animate-pulse\"\n style={{\n height: '34px',\n backgroundColor: 'var(--widget-secondary)',\n opacity: 0.35,\n borderRadius: 'var(--widget-radius)',\n }}\n />\n </div>\n </div>\n);\n\nexport const WidgetWalletPanel: React.FC = () => {\n const walletTab = useWidgetSwapUIStore((state) => state.walletTab);\n const [signOutHovered, setSignOutHovered] = useState(false);\n const { disconnect } = useDisconnect();\n const { setQuoteToken } = useSwapFormContext();\n\n const handleAssetSelect = useCallback(\n async (asset: Asset) => {\n await setQuoteToken(asset);\n useWidgetSwapUIStore.getState().setView('swap');\n },\n [setQuoteToken],\n );\n const {\n address,\n groupedAssets,\n totalBalance,\n balancesLoading,\n chains,\n getToken,\n useTokenWithLazyLoad,\n tokenRegistry,\n } = useWidgetWalletData(true);\n\n if (!address) {\n return (\n <div className=\"flex flex-col items-center justify-center h-full p-4\">\n <p className=\"text-sm\" style={{ color: 'var(--widget-muted-foreground)' }}>\n Connect your wallet to view your portfolio\n </p>\n </div>\n );\n }\n\n if (balancesLoading && walletTab === 'wallet') {\n return <WidgetWalletSkeleton />;\n }\n\n return (\n <div className=\"flex flex-col w-full h-full overflow-hidden\">\n <div className=\"flex-1 overflow-y-auto\" style={{ minHeight: 0 }}>\n {walletTab === 'wallet' && (\n <>\n <WidgetWalletCard\n address={address}\n totalBalance={totalBalance}\n isLoading={balancesLoading}\n />\n <WidgetWalletPortfolio\n groupedAssets={groupedAssets}\n chains={chains}\n tokenRegistry={tokenRegistry}\n getToken={getToken}\n useTokenWithLazyLoad={useTokenWithLazyLoad}\n onAssetSelect={handleAssetSelect}\n />\n </>\n )}\n\n {walletTab === 'activity' && (\n <WidgetWalletTradeHistory isActive={walletTab === 'activity'} />\n )}\n </div>\n\n {/* Footer — sign out */}\n <div\n className=\"shrink-0 p-2\"\n style={{ borderTop: '1px var(--widget-border-style) var(--widget-border)' }}\n >\n <button\n type=\"button\"\n onClick={() => {\n disconnect();\n useWidgetSwapUIStore.getState().setView('swap');\n }}\n onMouseEnter={() => setSignOutHovered(true)}\n onMouseLeave={() => setSignOutHovered(false)}\n className=\"w-full py-2 text-xs mono uppercase cursor-pointer transition-colors\"\n style={{\n backgroundColor: signOutHovered ? 'var(--widget-destructive)' : 'transparent',\n color: signOutHovered ? 'var(--widget-destructive-foreground)' : 'var(--widget-destructive)',\n border: '1px var(--widget-border-style) var(--widget-destructive)',\n borderRadius: 'var(--widget-radius)',\n }}\n >\n Sign Out\n </button>\n </div>\n </div>\n );\n};\n","'use client';\n\nimport {\n getChainConfig,\n isGasToken,\n useChainData,\n useBulkBalances,\n useTokenData,\n useTokenWithLazyLoad,\n type Asset,\n type SupportedChainId,\n} from '../internal';\nimport { useWalletState } from '../wallet/useWalletState';\nimport { useWidgetConfig } from '../context/WidgetConfigContext';\nimport { useEnabledChainIds } from './useEnabledChainIds';\nimport { useCallback, useEffect, useMemo, useRef } from 'react';\n\n/**\n * Self-contained data hook for WidgetWalletPanel.\n * Only fetches balances when the wallet view is active (isActive === true).\n */\nexport function useWidgetWalletData(isActive: boolean) {\n const { address, isConnected } = useWalletState();\n const { chainDataMap } = useChainData();\n const availableChainIds = useEnabledChainIds();\n const { getToken, tokenRegistry } = useTokenData();\n const { supportedInputTokens, supportedOutputTokens } = useWidgetConfig();\n\n const allSupportedTokens = useMemo(() => {\n if (!supportedInputTokens.length && !supportedOutputTokens.length) return [];\n const seen = new Set<string>();\n const result: Array<{ chainId: number; address: string }> = [];\n for (const t of [...supportedInputTokens, ...supportedOutputTokens]) {\n const key = `${t.chainId}-${t.address.toLowerCase()}`;\n if (!seen.has(key)) {\n seen.add(key);\n result.push(t);\n }\n }\n return result;\n }, [supportedInputTokens, supportedOutputTokens]);\n\n const { balances, isLoading: balancesLoading, isError: balancesError, refetch } = useBulkBalances(\n address,\n availableChainIds as SupportedChainId[],\n {\n enabled: isConnected && isActive && !!address,\n refetchOnWindowFocus: false,\n },\n allSupportedTokens.length > 0 ? allSupportedTokens : undefined,\n );\n\n const supportedSet = useMemo(() => {\n if (!allSupportedTokens.length) return null;\n return new Set(allSupportedTokens.map((t) => `${t.chainId}-${t.address.toLowerCase()}`));\n }, [allSupportedTokens]);\n\n const groupedAssets = useMemo(() => {\n if (!balances || balances.length === 0) return {};\n\n const filtered = balances.filter((b) => {\n if (!b.assetInfo) return false;\n if (!b.balance || b.balance === '0') return false;\n if (supportedSet) {\n return supportedSet.has(`${b.chainId}-${b.address.toLowerCase()}`);\n }\n if (isGasToken(b.assetInfo as Asset)) return true;\n if (tokenRegistry.length === 0) return true;\n return tokenRegistry.some(\n (t) => t.address.toLowerCase() === b.address.toLowerCase() && t.chainId === b.chainId,\n );\n });\n\n return filtered.reduce((acc, b) => {\n const key = String(b.chainId);\n if (!acc[key]) acc[key] = [];\n acc[key].push({\n token: b.address,\n amount: b.balance,\n decimals: b.decimals,\n assetInfo: b.assetInfo,\n });\n return acc;\n }, {} as Record<string, any[]>);\n }, [balances, tokenRegistry, supportedSet]);\n\n const totalBalance = useMemo(() => {\n if (!balances || balances.length === 0) return 0;\n return balances.reduce((total, b) => {\n if (!b.assetInfo || b.decimals === undefined) return total;\n return total + (parseFloat(b.balance) / 10 ** b.decimals) * (b.assetInfo.price || 0);\n }, 0);\n }, [balances]);\n\n const chains = useMemo(() => {\n if (availableChainIds.length === 0) return {};\n return availableChainIds.reduce(\n (acc, chainId) => {\n const apiData = chainDataMap[chainId as number];\n const staticConfig = getChainConfig(chainId as number);\n acc[chainId.toString()] = {\n chainId: chainId as number,\n name: staticConfig?.displayName || apiData?.chainKey || `Chain ${chainId}`,\n };\n return acc;\n },\n {} as Record<string, { chainId: number; name: string }>,\n );\n }, [availableChainIds, chainDataMap]);\n\n const tokenRegistryForPanel = useMemo(\n () => tokenRegistry.map((t) => ({ address: t.address, chainId: t.chainId })),\n [tokenRegistry],\n );\n\n const refetchTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n return () => {\n if (refetchTimerRef.current) clearTimeout(refetchTimerRef.current);\n };\n }, []);\n\n const refetchBalances = useCallback(() => {\n if (refetchTimerRef.current) clearTimeout(refetchTimerRef.current);\n refetchTimerRef.current = setTimeout(() => refetch(), 2000);\n }, [refetch]);\n\n return {\n address,\n isConnected,\n groupedAssets,\n totalBalance,\n balancesLoading,\n balancesError,\n chains,\n getToken,\n useTokenWithLazyLoad,\n tokenRegistry: tokenRegistryForPanel,\n refetchBalances,\n };\n}\n","'use client';\n\nimport { CopyText, Skeleton } from '../../internal';\nimport { makeGradient } from 'ethereum-gradient-base64';\nimport React from 'react';\n\ninterface WidgetWalletCardProps {\n address: string;\n totalBalance: number;\n isLoading?: boolean;\n}\n\nexport const WidgetWalletCard: React.FC<WidgetWalletCardProps> = ({\n address,\n totalBalance,\n isLoading = false,\n}) => {\n const formatBalance = (balance: number) =>\n new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }).format(balance);\n\n return (\n <div className=\"p-2 w-full flex justify-center\">\n <div\n className=\"relative w-full h-[140px] overflow-hidden\"\n style={{\n borderRadius: 'var(--widget-radius)',\n border: '1px var(--widget-border-style) var(--widget-border)',\n }}\n >\n {/* Gradient background */}\n <div className=\"absolute inset-0 z-0\">\n <img\n className=\"w-full h-full object-cover opacity-60\"\n src={makeGradient(address)}\n alt=\"address gradient\"\n />\n <div className=\"absolute inset-0 bg-gradient-to-t from-black/80 via-black/40 to-transparent\" />\n </div>\n\n {/* Content */}\n <div className=\"relative z-10 flex h-full flex-col justify-between p-3\">\n <div>\n <p className=\"text-2xs uppercase mono\" style={{ color: 'var(--widget-muted-foreground)', opacity: 0.7 }}>\n Token Balance:\n </p>\n {isLoading ? (\n <Skeleton className=\"h-8 w-28 bg-white/10 rounded mt-1\" />\n ) : (\n <p className=\"text-2xl font-bold mt-0.5\" style={{ color: 'var(--widget-foreground)' }}>\n {formatBalance(totalBalance)}\n </p>\n )}\n </div>\n <div className=\"flex items-center\">\n <CopyText text={address} type=\"address\">\n <p className=\"mono text-2xs\" style={{ color: 'var(--widget-foreground)', opacity: 0.7 }}>\n {address}\n </p>\n </CopyText>\n </div>\n </div>\n </div>\n </div>\n );\n};\n","'use client';\n\nimport type { Asset } from '../../internal/types';\nimport { getChainNames, isGasToken } from '../../internal/chainsConfig';\nimport ChainIcon from '../../internal/components/ChainIcon';\n\nconst usdFormat = new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: 2,\n});\nimport React, { useCallback, useMemo, useState } from 'react';\nimport { WidgetWalletAssetItem } from './WidgetWalletAssetItem';\n\nconst CHAIN_NAMES = getChainNames();\n\ninterface WidgetWalletPortfolioProps {\n groupedAssets: Record<string, any[]>;\n chains?: Record<string, { chainId: number; name: string }>;\n tokenRegistry?: Array<{ address: string; chainId: number }>;\n getToken?: (chainId: number, address: string) => Asset | undefined;\n useTokenWithLazyLoad?: any;\n onAssetSelect?: (asset: Asset) => void;\n}\n\nexport const WidgetWalletPortfolio: React.FC<WidgetWalletPortfolioProps> = ({\n groupedAssets,\n chains,\n tokenRegistry = [],\n getToken,\n useTokenWithLazyLoad,\n onAssetSelect,\n}) => {\n const [expandedChains, setExpandedChains] = useState<Set<string>>(new Set());\n\n const getChainName = useCallback(\n (chainId: number): string => chains?.[chainId]?.name || CHAIN_NAMES[chainId] || `Chain ${chainId}`,\n [chains],\n );\n\n const registrySet = useMemo(() => {\n const s = new Set<string>();\n for (const t of tokenRegistry) {\n s.add(`${t.chainId}-${t.address.toLowerCase()}`);\n }\n return s;\n }, [tokenRegistry]);\n\n const calculateDollarizedBalance = useCallback((asset: any): number => {\n if (asset.decimals === undefined || !asset.assetInfo?.price) return 0;\n return (parseFloat(asset.amount) / 10 ** asset.decimals) * asset.assetInfo.price;\n }, []);\n\n const { filteredGroupedAssets, chainTotals } = useMemo(() => {\n const entries = Object.entries(groupedAssets)\n .map(([chainId, assets]) => {\n const filtered = assets.filter((asset) => {\n if (!asset.assetInfo) return false;\n if (isGasToken(asset.assetInfo)) return true;\n if (registrySet.size > 0) {\n return registrySet.has(\n `${asset.assetInfo.chainId}-${asset.assetInfo.address?.toLowerCase() ?? ''}`,\n );\n }\n return true;\n });\n return [chainId, filtered] as [string, any[]];\n })\n .filter(([, assets]) => assets.length > 0);\n\n const totals: Record<string, number> = {};\n for (const [chainId, assets] of entries) {\n totals[chainId] = assets.reduce((sum, asset) => sum + calculateDollarizedBalance(asset), 0);\n }\n\n const sorted = [...entries].sort((a, b) => (totals[b[0]] ?? 0) - (totals[a[0]] ?? 0));\n return { filteredGroupedAssets: sorted, chainTotals: totals };\n }, [groupedAssets, registrySet, calculateDollarizedBalance]);\n\n const toggleChain = useCallback((chainId: string) => {\n setExpandedChains((prev) => {\n const next = new Set(prev);\n if (next.has(chainId)) next.delete(chainId);\n else next.add(chainId);\n return next;\n });\n }, []);\n\n const formatUSD = (v: number) => usdFormat.format(v);\n\n if (filteredGroupedAssets.length === 0) {\n return (\n <div className=\"flex items-center justify-center p-6\">\n <p className=\"text-sm\" style={{ color: 'var(--widget-muted-foreground)' }}>\n No token balances found\n </p>\n </div>\n );\n }\n\n return (\n <div className=\"pb-2 pt-1\">\n {filteredGroupedAssets.map(([chainId, assets]) => {\n const chainIdNum = parseInt(chainId);\n const chainName = getChainName(chainIdNum);\n const totalChainValue = chainTotals[chainId] || 0;\n const isExpanded = expandedChains.has(chainId);\n\n return (\n <div\n key={chainId}\n className=\"mx-2 mb-2\"\n style={{\n border: '1px var(--widget-border-style) var(--widget-border)',\n borderRadius: 'var(--widget-radius)',\n overflow: 'hidden',\n }}\n >\n <button\n type=\"button\"\n onClick={() => toggleChain(chainId)}\n className=\"flex w-full flex-row items-center justify-between p-2 cursor-pointer transition-colors hover:bg-(--widget-secondary)\"\n style={{ backgroundColor: 'transparent' }}\n >\n <div className=\"inline-flex flex-row items-center gap-2\">\n <ChainIcon chain={chainIdNum} size=\"sm\" />\n <p className=\"text-sm font-medium capitalize\" style={{ color: 'var(--widget-foreground)' }}>\n {chainName}\n </p>\n </div>\n <div className=\"flex items-center gap-2\">\n <p className=\"text-sm font-semibold\" style={{ color: 'var(--widget-foreground)' }}>\n {formatUSD(totalChainValue)}\n </p>\n <span\n className={`transition-transform duration-200 ${isExpanded ? 'rotate-180' : ''}`}\n style={{ color: 'var(--widget-muted-foreground)' }}\n >\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n <path\n d=\"M2.5 4.5L6 8L9.5 4.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </span>\n </div>\n </button>\n\n <div\n className={`overflow-hidden transition-all duration-200 ease-out ${\n isExpanded ? 'max-h-[2000px] opacity-100' : 'max-h-0 opacity-0'\n }`}\n >\n <div style={{ borderTop: '1px var(--widget-border-style) var(--widget-border)' }}>\n {assets.map((asset) => {\n if (!asset.assetInfo) return null;\n return (\n <WidgetWalletAssetItem\n key={`${asset.assetInfo.chainId}-${asset.token}`}\n asset={asset.assetInfo}\n balanceAmount={asset.amount}\n balanceDecimals={asset.decimals}\n price={asset.assetInfo?.price ?? null}\n onSelect={onAssetSelect}\n getToken={getToken}\n useTokenWithLazyLoad={useTokenWithLazyLoad}\n />\n );\n })}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n );\n};\n","'use client';\n\nimport { TokenImage, isGasToken, type Asset } from '../../internal';\nimport React, { useState } from 'react';\n\ninterface WidgetWalletAssetItemProps {\n asset: Asset;\n balanceAmount: string;\n balanceDecimals: number;\n price: number | null | undefined;\n onSelect?: (asset: Asset) => void;\n getToken?: (chainId: number, address: string) => Asset | undefined;\n useTokenWithLazyLoad?: (\n chainId: number | undefined,\n address: string | undefined,\n ) => { token: Asset | undefined; isLoading: boolean; isError: boolean };\n}\n\nexport const WidgetWalletAssetItem: React.FC<WidgetWalletAssetItemProps> = ({\n asset,\n balanceAmount,\n balanceDecimals,\n price,\n onSelect,\n getToken,\n useTokenWithLazyLoad,\n}) => {\n const [hovered, setHovered] = useState(false);\n\n const balance =\n balanceDecimals !== undefined ? parseFloat(balanceAmount) / 10 ** balanceDecimals : 0;\n\n const lazyLoadResult = useTokenWithLazyLoad?.(asset.chainId, asset.address);\n const lazyToken = lazyLoadResult?.token;\n\n let finalPrice: number | null = price ?? null;\n if (isGasToken(asset) && finalPrice == null) {\n if (lazyToken?.price != null) {\n finalPrice = lazyToken.price;\n } else if (getToken) {\n finalPrice = getToken(asset.chainId, asset.address)?.price ?? null;\n }\n }\n\n return (\n <div\n role=\"button\"\n tabIndex={0}\n className=\"flex h-[52px] w-full flex-row items-center p-3 cursor-pointer transition-colors\"\n style={{\n borderBottom: '1px var(--widget-border-style) var(--widget-border)',\n backgroundColor: hovered ? 'var(--widget-secondary)' : 'transparent',\n }}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n onClick={() => onSelect?.(asset)}\n onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); onSelect?.(asset); } }}\n >\n <div className=\"flex h-full w-full flex-row items-center justify-between\">\n <div className=\"flex h-full flex-row items-center gap-2\">\n <TokenImage asset={asset} size=\"sm\" />\n <div className=\"flex flex-col items-start\">\n <p className=\"text-sm font-medium uppercase\" style={{ color: 'var(--widget-foreground)' }}>\n {asset.symbol}\n </p>\n {balance > 0 && (\n <p className=\"mono text-xs\" style={{ color: 'var(--widget-muted-foreground)' }}>\n {balance.toFixed(4)}\n </p>\n )}\n </div>\n </div>\n <p className=\"text-sm font-medium\" style={{ color: 'var(--widget-foreground)' }}>\n {finalPrice != null ? `$${(finalPrice * balance).toFixed(2)}` : '—'}\n </p>\n </div>\n </div>\n );\n};\n","'use client';\n\nimport React, { useCallback, useRef, useState } from 'react';\nimport { useWalletState } from '../../wallet/useWalletState';\nimport { useWidgetOrderHistory } from '../../hooks/useWidgetOrderHistory';\nimport { WidgetWalletTradeItem } from './WidgetWalletTradeItem';\n\nconst TradeSkeleton: React.FC = () => (\n <div\n className=\"mt-2 flex flex-col\"\n style={{\n height: '4rem',\n border: '1px var(--widget-border-style) var(--widget-border)',\n backgroundColor: 'var(--widget-secondary)',\n }}\n >\n <div className=\"flex items-center space-x-2 p-2\">\n <div className=\"h-4 w-4 rounded\" style={{ backgroundColor: 'var(--widget-muted)' }} />\n <div className=\"h-3 w-24 rounded\" style={{ backgroundColor: 'var(--widget-muted)' }} />\n </div>\n <div className=\"flex h-8 w-full items-center justify-between px-4\">\n <div className=\"flex items-center space-x-1\">\n {[4, 16, 10, 4, 16, 10].map((w, i) => (\n <div key={i} className=\"h-3 rounded\" style={{ width: `${w * 4}px`, backgroundColor: 'var(--widget-muted)' }} />\n ))}\n </div>\n <div className=\"h-3 w-10 rounded\" style={{ backgroundColor: 'var(--widget-muted)' }} />\n </div>\n </div>\n);\n\ninterface WidgetWalletTradeHistoryProps {\n isActive: boolean;\n}\n\nexport const WidgetWalletTradeHistory: React.FC<WidgetWalletTradeHistoryProps> = ({ isActive }) => {\n const { address: userAddress } = useWalletState();\n const { orders, isLoading, error, hasMore, loadMore } = useWidgetOrderHistory(userAddress, isActive);\n\n const [isFetching, setIsFetching] = useState(false);\n const scrollRef = useRef<HTMLDivElement>(null);\n\n const handleScroll = useCallback(\n async (e: React.UIEvent<HTMLDivElement>) => {\n const target = e.currentTarget;\n const isNearBottom = target.scrollTop + target.clientHeight >= target.scrollHeight - 100;\n if (isNearBottom && !isLoading && !isFetching && hasMore) {\n setIsFetching(true);\n try {\n await loadMore();\n } finally {\n setIsFetching(false);\n }\n }\n },\n [isLoading, isFetching, hasMore, loadMore],\n );\n\n if (!userAddress) {\n return (\n <div className=\"flex items-center justify-center p-4\">\n <p className=\"text-sm\" style={{ color: 'var(--widget-muted-foreground)' }}>\n Connect your wallet to view activity\n </p>\n </div>\n );\n }\n\n if (error) {\n return (\n <div className=\"flex items-center justify-center p-4\">\n <p className=\"text-sm\" style={{ color: 'var(--widget-destructive)' }}>\n Error loading activity\n </p>\n </div>\n );\n }\n\n return (\n <div\n ref={scrollRef}\n className=\"flex flex-col flex-1 min-h-0 overflow-y-auto p-2\"\n onScroll={handleScroll}\n style={{ backgroundColor: 'transparent' }}\n >\n {isLoading ? (\n Array.from({ length: 5 }).map((_, i) => <TradeSkeleton key={i} />)\n ) : orders.length === 0 ? (\n <div className=\"flex flex-col items-center justify-center h-full p-6\">\n <p className=\"text-sm\" style={{ color: 'var(--widget-muted-foreground)' }}>\n No Activity\n </p>\n </div>\n ) : (\n <>\n {orders.map((order) => (\n <WidgetWalletTradeItem\n key={order.orderHash}\n order={order}\n baseToken={order.enrichedTokens?.base ?? null}\n quoteToken={order.enrichedTokens?.quote ?? null}\n />\n ))}\n {isFetching && <TradeSkeleton />}\n </>\n )}\n </div>\n );\n};\n","'use client';\n\nimport type { Asset } from '../internal';\n\nexport interface EnrichedOrderResult {\n orderHash?: string;\n quoteId?: string;\n enrichedTokens?: {\n base: Asset | null;\n quote: Asset | null;\n };\n [key: string]: unknown;\n}\n\ninterface UseWidgetOrderHistoryReturn {\n orders: EnrichedOrderResult[];\n isLoading: boolean;\n error: string | null;\n hasMore: boolean;\n loadMore: () => Promise<void>;\n totalOrders: number;\n}\n\nexport function useWidgetOrderHistory(\n _userAddress: string | null | undefined,\n _enabled: boolean,\n): UseWidgetOrderHistoryReturn {\n return {\n orders: [],\n isLoading: false,\n error: null,\n hasMore: false,\n loadMore: async () => {},\n totalOrders: 0,\n };\n}\n","'use client';\n\nimport { TokenImage, TruncateString, formatNumber, type Asset } from '../../internal';\nimport React, { useState } from 'react';\n\ninterface WidgetWalletTradeItemProps {\n order: any;\n baseToken?: Asset | null;\n quoteToken?: Asset | null;\n}\n\n// Simple static inline SVGs — all use currentColor so they respond to the host app's theme vars\nconst IconCheck = () => (\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\">\n <circle cx=\"5\" cy=\"5\" r=\"4\" stroke=\"currentColor\" strokeWidth=\"1.2\" />\n <path d=\"M3 5.2L4.3 6.5L7 3.5\" stroke=\"currentColor\" strokeWidth=\"1.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\nconst IconX = () => (\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\">\n <circle cx=\"5\" cy=\"5\" r=\"4\" stroke=\"currentColor\" strokeWidth=\"1.2\" />\n <path d=\"M3.5 3.5L6.5 6.5M6.5 3.5L3.5 6.5\" stroke=\"currentColor\" strokeWidth=\"1.2\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst IconClock = () => (\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\">\n <circle cx=\"5\" cy=\"5\" r=\"4\" stroke=\"currentColor\" strokeWidth=\"1.2\" />\n <path d=\"M5 3V5.5L6.5 6.5\" stroke=\"currentColor\" strokeWidth=\"1\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst IconDot = () => (\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\">\n <circle cx=\"5\" cy=\"5\" r=\"4\" stroke=\"currentColor\" strokeWidth=\"1.2\" />\n <circle cx=\"5\" cy=\"5\" r=\"1.5\" fill=\"currentColor\" />\n </svg>\n);\n\nconst getEventTypeIcon = (eventType: string) => {\n switch ((eventType || '').toLowerCase()) {\n case 'completed':\n case 'settled':\n case 'success':\n case 'swapped':\n case 'swap':\n return { icon: <IconCheck />, color: 'var(--widget-primary)' };\n case 'received':\n return { icon: <IconDot />, color: 'var(--widget-accent)' };\n case 'failed':\n case 'error':\n case 'expired':\n return { icon: <IconX />, color: 'var(--widget-destructive)' };\n case 'pending':\n case 'created':\n case 'placed':\n return { icon: <IconClock />, color: 'var(--widget-muted-foreground)' };\n default:\n return { icon: <IconDot />, color: 'var(--widget-muted-foreground)' };\n }\n};\n\nconst getEventTypeHoverBg = (eventType: string): string => {\n switch ((eventType || '').toLowerCase()) {\n case 'completed':\n case 'settled':\n case 'success':\n case 'swapped':\n case 'swap':\n return 'color-mix(in srgb, var(--widget-primary) 5%, transparent)';\n case 'failed':\n case 'error':\n case 'expired':\n return 'color-mix(in srgb, var(--widget-destructive) 5%, transparent)';\n case 'pending':\n case 'created':\n case 'placed':\n return 'color-mix(in srgb, var(--widget-accent) 5%, transparent)';\n default:\n return 'var(--widget-secondary)';\n }\n};\n\nconst formatAmountSafe = (rawAmount: string, tokenData: Asset | null): string => {\n try {\n const numAmount = parseFloat(rawAmount || '0');\n if (isNaN(numAmount) || numAmount === 0) return '0';\n const decimals = tokenData?.decimals ?? 18;\n return formatNumber(numAmount / 10 ** decimals);\n } catch {\n return '0';\n }\n};\n\nexport const WidgetWalletTradeItem: React.FC<WidgetWalletTradeItemProps> = ({\n order,\n baseToken,\n quoteToken,\n}) => {\n const [hovered, setHovered] = useState(false);\n\n const eventType = order?.status || order?.eventType || 'unknown';\n const { icon: eventIcon, color: eventColor } = getEventTypeIcon(eventType);\n\n const formatDateTime = (timestamp: string) => {\n if (!timestamp) return { date: '', time: '' };\n const d = new Date(typeof timestamp === 'number' ? timestamp : Number(timestamp) || timestamp);\n return {\n date: d.toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' }),\n time: d.toLocaleTimeString('en-US', { hour: '2-digit', minute: '2-digit', timeZone: 'UTC', hour12: false }) + ' UTC',\n };\n };\n\n const dateTime = formatDateTime(order?.timestamp || order?.createdAt || '');\n\n const inputDisplay = baseToken\n ? { asset: baseToken, symbol: baseToken.symbol, amount: formatAmountSafe(order?.inputAmount, baseToken) }\n : { asset: null, symbol: (order?.inputToken || '').slice(0, 6) + '...', amount: formatAmountSafe(order?.inputAmount, null) };\n\n const outputDisplay = quoteToken\n ? { asset: quoteToken, symbol: quoteToken.symbol, amount: formatAmountSafe(order?.outputAmount, quoteToken) }\n : { asset: null, symbol: (order?.outputToken || '').slice(0, 6) + '...', amount: formatAmountSafe(order?.outputAmount, null) };\n\n return (\n <a\n href={order?.explorerUrl || '#'}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"group flex flex-col cursor-pointer transition-all duration-200 ease-in-out no-underline\"\n style={{\n border: '1px var(--widget-border-style) var(--widget-border)',\n backgroundColor: hovered ? getEventTypeHoverBg(eventType) : 'transparent',\n marginBottom: '0.5rem',\n padding: '0.25rem',\n }}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n >\n {/* Top row: status + hash */}\n <div className=\"flex flex-row items-center justify-between space-x-1\">\n <div className=\"flex flex-row items-center space-x-1\">\n <div className=\"-translate-y-px\" style={{ color: eventColor }}>{eventIcon}</div>\n <p className=\"text-2xs mono uppercase\" style={{ color: eventColor }}>\n {eventType}\n </p>\n </div>\n <div className=\"flex flex-row items-center space-x-2\">\n <span className=\"text-2xs mono\" style={{ color: hovered ? 'var(--widget-foreground)' : 'var(--widget-muted-foreground)' }}>\n {'¬ '}{TruncateString(order?.quoteId || order?.orderHash || '')}\n </span>\n <svg\n className=\"w-2.5 -translate-y-px opacity-70 group-hover:rotate-[-45deg] group-hover:opacity-100 duration-200\"\n style={{ color: 'var(--widget-foreground)' }}\n viewBox=\"0 0 684 684\"\n fill=\"none\"\n >\n <path\n d=\"M0.666687 384.667L519.92 384.667L281.627 622.96L342 683.333L683.333 342L342 0.666687L281.627 61.04L519.92 299.333L0.666687 299.333V384.667Z\"\n fill=\"currentColor\"\n />\n </svg>\n </div>\n </div>\n\n {/* Bottom row: token swap details */}\n <div\n className=\"flex flex-row items-center justify-between pr-2\"\n style={{ backgroundColor: hovered ? 'transparent' : 'var(--widget-secondary)' }}\n >\n <div className=\"flex flex-col w-full h-full p-2\">\n <div className=\"flex h-8 w-full items-center justify-between px-2\">\n <div className=\"flex items-center space-x-1\">\n <TokenImage asset={inputDisplay.asset} size=\"xs\" className=\"h-3 w-3\" />\n <div className=\"flex flex-col\">\n <span className=\"text-sm h-4\" style={{ color: 'var(--widget-muted-foreground)' }}>\n {inputDisplay.amount}\n </span>\n <span className=\"text-xs\" style={{ color: 'var(--widget-foreground)' }}>\n {inputDisplay.symbol}\n </span>\n </div>\n <span className=\"px-1\" style={{ color: 'var(--widget-muted-foreground)' }}>→</span>\n <TokenImage asset={outputDisplay.asset} size=\"xs\" className=\"h-3 w-3\" />\n <div className=\"flex flex-col\">\n <span className=\"text-sm h-4\" style={{ color: 'var(--widget-muted-foreground)' }}>\n {outputDisplay.amount}\n </span>\n <span className=\"text-xs\" style={{ color: 'var(--widget-foreground)' }}>\n {outputDisplay.symbol}\n </span>\n </div>\n </div>\n </div>\n </div>\n <div className=\"flex flex-col items-end text-right shrink-0\">\n <span className=\"text-2xs mono whitespace-nowrap\" style={{ color: 'var(--widget-muted-foreground)' }}>\n {dateTime.date}\n </span>\n {dateTime.time && (\n <span className=\"text-2xs mono whitespace-nowrap\" style={{ color: 'var(--widget-muted-foreground)', opacity: 0.6 }}>\n {dateTime.time}\n </span>\n )}\n </div>\n </div>\n </a>\n );\n};\n"],"mappings":"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","names":["useCallback","useState","useCallback","useMemo","useState","jsx","jsxs","useTokenWithLazyLoad","jsx","jsxs","useTokenWithLazyLoad","useState","useCallback","useMemo","useCallback","useRef","useState","useState","jsx","jsxs","jsx","jsxs","useState","useRef","useCallback","Fragment","jsx","jsxs","useState","useCallback","useTokenWithLazyLoad"]}