From b66393e5879d5ae9fbdd726d30c741c9054b10df Mon Sep 17 00:00:00 2001 From: Matej Poklemba Date: Tue, 17 Sep 2024 14:03:37 +0200 Subject: [PATCH 1/5] Add UI into the repo --- .gitignore | 1 - api3-aave-ui/.eslintrc.json | 3 + api3-aave-ui/.gitignore | 40 + api3-aave-ui/.npmrc | 1 + api3-aave-ui/README.md | 33 + api3-aave-ui/components/ConnectWallet.tsx | 89 + api3-aave-ui/components/CurvesDecoration.tsx | 1354 ++++ api3-aave-ui/components/ExternalLinkIcon.tsx | 16 + api3-aave-ui/components/Footer.tsx | 19 + api3-aave-ui/components/Header.tsx | 43 + api3-aave-ui/components/Layout.tsx | 14 + api3-aave-ui/components/StakeCard.jsx | 86 + api3-aave-ui/components/nav_mobile.tsx | 98 + api3-aave-ui/components/pane.tsx | 24 + api3-aave-ui/components/row.tsx | 32 + api3-aave-ui/components/stake/StakeCard.tsx | 198 + api3-aave-ui/components/stake/StakeHeader.tsx | 51 + api3-aave-ui/configuration.ts | 152 + api3-aave-ui/deployment-configs.json | 50 + api3-aave-ui/favicon.ico | Bin 0 -> 270398 bytes api3-aave-ui/marketConfig.json | 168 + api3-aave-ui/next-env.d.ts | 5 + api3-aave-ui/next.config.js | 13 + api3-aave-ui/package.json | 54 + api3-aave-ui/pages/_app.tsx | 87 + api3-aave-ui/pages/asset-detail/index.tsx | 501 ++ api3-aave-ui/pages/dashboard/index.tsx | 212 + api3-aave-ui/pages/index.tsx | 22 + .../pages/markets/CompoundDashboard.tsx | 173 + .../markets/MarketAssetListContainer.tsx | 52 + .../pages/markets/MarketAssetsList.tsx | 139 + .../compound/MarketAssetListContainerComp.tsx | 16 + .../markets/compound/MarketAssetsListComp.tsx | 195 + api3-aave-ui/pages/markets/index.tsx | 97 + api3-aave-ui/pages/stake/index.tsx | 77 + api3-aave-ui/postcss.config.js | 6 + api3-aave-ui/prettier.config.js | 3 + api3-aave-ui/public/images/favicon.png | Bin 0 -> 92196 bytes .../public/images/footer-pattern-mobile.svg | 14 + api3-aave-ui/public/images/footer-pattern.svg | 264 + api3-aave-ui/public/images/logo-icon.svg | 118 + api3-aave-ui/public/logos/DOV.png | Bin 0 -> 129538 bytes api3-aave-ui/public/logos/ETH.png | Bin 0 -> 24070 bytes api3-aave-ui/public/logos/OEVT.png | Bin 0 -> 2708 bytes api3-aave-ui/public/logos/POL.png | Bin 0 -> 12427 bytes api3-aave-ui/public/logos/PZM.png | Bin 0 -> 7405 bytes api3-aave-ui/public/logos/PZM.svg | 22 + api3-aave-ui/public/logos/USDC.png | Bin 0 -> 892 bytes api3-aave-ui/public/logos/WBTC.png | Bin 0 -> 3768 bytes api3-aave-ui/public/logos/WETH10.png | Bin 0 -> 3886 bytes api3-aave-ui/src/abis/comet.json | 528 ++ .../src/components/ContentContainer.tsx | 21 + .../src/components/ContentWithTooltip.tsx | 134 + .../src/components/GasStation/GasButton.tsx | 26 + .../src/components/GasStation/GasStation.tsx | 113 + .../GasStation/GasStationProvider.tsx | 51 + .../src/components/GhoBorrowApyRange.tsx | 100 + .../src/components/HealthFactorNumber.tsx | 76 + .../src/components/StyledToggleButton.tsx | 55 + .../components/StyledToggleButtonGroup.tsx | 27 + api3-aave-ui/src/components/SymbolIcon.tsx | 39 + .../src/components/TextWithTooltip.tsx | 85 + .../components/caps/CapsCircularStatus.tsx | 95 + api3-aave-ui/src/components/caps/CapsHint.tsx | 65 + .../src/components/caps/CapsTooltip.tsx | 57 + .../src/components/caps/DebtCeilingStatus.tsx | 105 + api3-aave-ui/src/components/caps/helper.ts | 4 + .../BorrowAssetsList/BorrowAssetsList.tsx | 130 + .../BorrowAssetsList/BorrowAssetsListItem.tsx | 101 + .../dashboard/BorrowAssetsList/types.ts | 36 + .../BorrowedPositionsList.tsx | 185 + .../BorrowedPositionsListItem.tsx | 126 + .../BorrowedPositionsListMobileItem.tsx | 155 + .../GhoBorrowedPositionsListItem.tsx | 283 + .../dashboard/BorrowedPositionsList/types.ts | 18 + .../SuppliedPositionsList.tsx | 133 + .../SuppliedPositionsListItem.tsx | 130 + .../SuppliedPositionsListMobileItem.tsx | 134 + .../SupplyAssetsList/SupplyAssetsList.tsx | 235 + .../SupplyAssetsList/SupplyAssetsListItem.tsx | 117 + .../SupplyAssetsListMobileItem.tsx | 52 + .../dashboard/SupplyAssetsList/types.ts | 21 + .../src/components/dashboard/emptyfile | 1 + .../src/components/icons/LensIcon.tsx | 26 + .../src/components/icons/LensterIcon.tsx | 27 + .../src/components/icons/WalletIcon.tsx | 33 + .../incentives/GhoIncentivesCard.tsx | 139 + .../incentives/IncentivesButton.tsx | 183 + .../components/incentives/IncentivesCard.tsx | 60 + .../incentives/IncentivesTooltipContent.tsx | 111 + .../infoTooltips/APYTypeTooltip.tsx | 16 + .../infoTooltips/ApprovalTooltip.tsx | 20 + .../infoTooltips/AvailableTooltip.tsx | 27 + .../infoTooltips/BorrowCapMaxedTooltip.tsx | 43 + .../infoTooltips/CollateralSwitchTooltip.tsx | 13 + .../infoTooltips/DebtCeilingMaxedTooltip.tsx | 43 + .../infoTooltips/FixedAPYTooltip.tsx | 35 + .../components/infoTooltips/GasTooltip.tsx | 22 + .../infoTooltips/PriceImpactTooltip.tsx | 73 + .../infoTooltips/SlippageTooltip.tsx | 21 + .../infoTooltips/SupplyCapMaxedTooltip.tsx | 43 + .../isolationMode/IsolatedBadge.tsx | 126 + .../src/components/primitives/BasicModal.tsx | 87 + .../components/primitives/FormattedNumber.tsx | 186 + .../src/components/primitives/Link.tsx | 128 + .../src/components/primitives/NoData.tsx | 8 + .../src/components/primitives/Row.tsx | 33 + .../src/components/primitives/TokenIcon.tsx | 251 + .../primitives/TypographyGradient.tsx | 17 + .../src/components/primitives/Warning.tsx | 11 + .../components/transactions/AssetInput.tsx | 344 + .../transactions/Borrow/BorrowActions.tsx | 308 + .../Borrow/BorrowAmountWarning.tsx | 46 + .../transactions/Borrow/BorrowModal.tsx | 80 + .../Borrow/BorrowModalContent.tsx | 419 ++ .../Borrow/GhoBorrowModalContent.tsx | 493 ++ .../Borrow/GhoBorrowSuccessView.tsx | 340 + .../Borrow/ParameterChangewarning.tsx | 17 + .../ClaimRewards/ClaimRewardsActions.tsx | 54 + .../ClaimRewards/ClaimRewardsModal.tsx | 14 + .../ClaimRewards/ClaimRewardsModalContent.tsx | 256 + .../ClaimRewards/RewardsSelect.tsx | 112 + .../CollateralChangeActions.tsx | 65 + .../CollateralChangeModal.tsx | 32 + .../CollateralChangeModalContent.tsx | 204 + .../transactions/Emode/EmodeActions.tsx | 70 + .../transactions/Emode/EmodeModal.tsx | 20 + .../transactions/Emode/EmodeModalContent.tsx | 415 ++ .../transactions/Emode/EmodeNaming.ts | 6 + .../transactions/Emode/EmodeSelect.tsx | 100 + .../transactions/Emode/TxModalTitle.tsx | 15 + .../ApprovalMethodToggleButton.tsx | 106 + .../transactions/FlowCommons/Error.tsx | 77 + .../FlowCommons/GasEstimationError.tsx | 44 + .../transactions/FlowCommons/ModalWrapper.tsx | 277 + .../FlowCommons/RightHelperText.tsx | 72 + .../transactions/FlowCommons/SlippageList.tsx | 148 + .../transactions/FlowCommons/Success.tsx | 224 + .../FlowCommons/TxModalDetails.tsx | 454 ++ .../transactions/FlowCommons/TxModalTitle.tsx | 15 + .../transactions/GasStation/GasButton.tsx | 40 + .../transactions/GasStation/GasStation.tsx | 113 + .../GasStation/GasStationProvider.tsx | 52 + .../Repay/CollateralRepayActions.tsx | 153 + .../Repay/CollateralRepayModalContent.tsx | 352 + .../transactions/Repay/RepayActions.tsx | 102 + .../transactions/Repay/RepayModal.tsx | 91 + .../transactions/Repay/RepayModalContent.tsx | 309 + .../transactions/Repay/RepayTypeSelector.tsx | 52 + .../transactions/RightHelperText.tsx | 73 + .../transactions/Stake/StakeActions.tsx | 90 + .../transactions/Stake/StakeModal.tsx | 19 + .../transactions/Stake/StakeModalContent.tsx | 165 + .../StakeCooldown/StakeCooldownActions.tsx | 55 + .../StakeCooldown/StakeCooldownModal.tsx | 14 + .../StakeCooldownModalContent.tsx | 311 + .../StakeRewardClaimActions.tsx | 54 + .../StakeRewardClaimModal.tsx | 16 + .../StakeRewardClaimModalContent.tsx | 148 + .../StakeRewardClaimRestakeActions.tsx | 62 + .../StakeRewardClaimRestakeModal.tsx | 19 + .../StakeRewardClaimRestakeModalContent.tsx | 160 + .../transactions/Supply/SupplyActions.tsx | 354 + .../transactions/Supply/SupplyModal.tsx | 62 + .../Supply/SupplyModalContent.tsx | 377 ++ .../transactions/TxActionsWrapper.tsx | 179 + .../transactions/UnStake/UnStakeActions.tsx | 59 + .../transactions/UnStake/UnStakeModal.tsx | 16 + .../UnStake/UnStakeModalContent.tsx | 146 + .../Warnings/BorrowCapWarning.tsx | 48 + .../Warnings/ChangeNetworkWarning.tsx | 51 + .../transactions/Warnings/CooldownWarning.tsx | 28 + .../Warnings/DebtCeilingWarning.tsx | 48 + .../Warnings/IsolationModeWarning.tsx | 31 + .../Warnings/ParaswapErrorDisplay.tsx | 32 + .../Warnings/SupplyCapWarning.tsx | 48 + .../transactions/Withdraw/WithdrawActions.tsx | 73 + .../transactions/Withdraw/WithdrawModal.tsx | 40 + .../Withdraw/WithdrawModalContent.tsx | 330 + .../src/components/transactions/utils.ts | 120 + api3-aave-ui/src/helpers/compoundHelpers.ts | 385 ++ .../src/helpers/text-center-ellipsis.ts | 3 + api3-aave-ui/src/helpers/timeHelper.tsx | 13 + .../src/helpers/toggle-local-storage-click.ts | 13 + api3-aave-ui/src/helpers/types.ts | 39 + .../helpers/useParaSwapTransactionHandler.tsx | 378 ++ .../src/helpers/useTransactionHandler.tsx | 511 ++ .../BackgroundDataProvider.tsx | 50 + .../app-data-provider/useAppDataProvider.tsx | 327 + .../app-data-provider/useWalletBalances.tsx | 67 + api3-aave-ui/src/hooks/lib/WagmiProvider.tsx | 80 + api3-aave-ui/src/hooks/lib/WalletOptions.ts | 123 + api3-aave-ui/src/hooks/lib/Web3Provider.tsx | 478 ++ api3-aave-ui/src/hooks/lib/chains.ts | 261 + api3-aave-ui/src/hooks/lib/ethers.ts | 51 + .../src/hooks/lib/hooks/use-get-ens.tsx | 63 + .../src/hooks/lib/hooks/useWeb3Context.tsx | 23 + api3-aave-ui/src/hooks/lib/useWeb3.ts | 70 + api3-aave-ui/src/hooks/paraswap/common.ts | 444 ++ .../hooks/paraswap/useCollateralRepaySwap.tsx | 208 + .../src/hooks/paraswap/useCollateralSwap.tsx | 165 + .../src/hooks/paraswap/useDebtSwitch.tsx | 166 + .../src/hooks/pool/usePoolTokensBalance.ts | 29 + .../src/hooks/stake/useGeneralStakeUiData.ts | 12 + .../src/hooks/stake/useUserStakeUiData.ts | 16 + api3-aave-ui/src/hooks/useAssetCaps.tsx | 183 + .../src/hooks/useCurrentTimestamp.tsx | 28 + api3-aave-ui/src/hooks/useGasStation.tsx | 11 + api3-aave-ui/src/hooks/useGetGasPrices.tsx | 85 + api3-aave-ui/src/hooks/useIsWrongNetwork.tsx | 18 + api3-aave-ui/src/hooks/useModal.tsx | 279 + api3-aave-ui/src/hooks/usePolling.tsx | 46 + .../src/hooks/useProtocolDataContext.tsx | 22 + api3-aave-ui/src/layouts/AppGlobalStyles.tsx | 60 + .../src/services/UiStakeDataService.ts | 36 + .../src/services/WalletBalanceService.ts | 84 + api3-aave-ui/src/store/compoundSlice.ts | 234 + api3-aave-ui/src/store/ghoSlice.ts | 155 + api3-aave-ui/src/store/governanceSlice.ts | 124 + api3-aave-ui/src/store/incentiveSlice.ts | 65 + api3-aave-ui/src/store/layoutSlice.ts | 22 + api3-aave-ui/src/store/poolSelectors.ts | 248 + api3-aave-ui/src/store/poolSlice.ts | 887 +++ api3-aave-ui/src/store/protocolDataSlice.ts | 81 + api3-aave-ui/src/store/root.ts | 187 + api3-aave-ui/src/store/stakeSlice.ts | 117 + .../src/store/transactionsSelectors.ts | 24 + api3-aave-ui/src/store/transactionsSlice.ts | 61 + .../store/utils/createSingletonSubscriber.ts | 40 + .../src/store/utils/domain-fetchers/ens.ts | 34 + .../src/store/utils/domain-fetchers/index.ts | 3 + api3-aave-ui/src/store/utils/queryParams.ts | 25 + .../src/store/v3MigrationSelectors.ts | 1055 +++ api3-aave-ui/src/store/v3MigrationSlice.ts | 453 ++ api3-aave-ui/src/store/walletDomains.ts | 48 + api3-aave-ui/src/store/walletSlice.ts | 95 + .../ui-config/SharedDependenciesProvider.tsx | 92 + api3-aave-ui/src/ui-config/errorMapping.tsx | 188 + api3-aave-ui/src/ui-config/generatedConfig.ts | 3 + .../src/ui-config/governanceConfig.ts | 51 + .../src/ui-config/localMarketConfigs.ts | 53 + api3-aave-ui/src/ui-config/marketsConfig.tsx | 159 + api3-aave-ui/src/ui-config/networksConfig.ts | 405 ++ api3-aave-ui/src/ui-config/permitConfig.ts | 47 + api3-aave-ui/src/ui-config/queries.ts | 12 + api3-aave-ui/src/ui-config/queries.tsx | 12 + api3-aave-ui/src/ui-config/reservePatches.ts | 162 + api3-aave-ui/src/ui-config/stakeConfig.ts | 30 + .../utils/__tests__/RotationProvider.test.ts | 145 + .../src/utils/__tests__/ghoUtilities.spec.ts | 50 + .../__tests__/marketsAndNetworkConfig.spec.ts | 9 + api3-aave-ui/src/utils/dashboardSortUtils.ts | 151 + api3-aave-ui/src/utils/eMode.ts | 5 + .../utils/getMaxAmountAvailableToBorrow.ts | 168 + .../utils/getMaxAmountAvailableToSupply.ts | 59 + api3-aave-ui/src/utils/ghoUtilities.tsx | 95 + api3-aave-ui/src/utils/hfUtils.ts | 163 + .../src/utils/marketsAndNetworksConfig.ts | 321 + api3-aave-ui/src/utils/mixPanelEvents.ts | 106 + api3-aave-ui/src/utils/rotationProvider.ts | 144 + api3-aave-ui/src/utils/tFetch.ts | 11 + api3-aave-ui/src/utils/theme.tsx | 682 ++ api3-aave-ui/src/utils/types.ts | 3 + api3-aave-ui/src/utils/utils.ts | 83 + api3-aave-ui/styles/colors.css | 88 + api3-aave-ui/styles/components.css | 211 + api3-aave-ui/styles/developer-styles.css | 16 + api3-aave-ui/styles/forms.css | 162 + api3-aave-ui/styles/preset.css | 4 + api3-aave-ui/styles/reset.css | 146 + api3-aave-ui/styles/settings.css | 228 + api3-aave-ui/styles/setup.css | 58 + api3-aave-ui/styles/site.css | 106 + api3-aave-ui/styles/structure.css | 40 + api3-aave-ui/styles/typography.css | 155 + api3-aave-ui/styles/utilities.css | 353 + api3-aave-ui/tailwind.config.js | 866 +++ api3-aave-ui/tsconfig.json | 48 + api3-aave-ui/yarn.lock | 5714 +++++++++++++++++ 279 files changed, 39469 insertions(+), 1 deletion(-) create mode 100644 api3-aave-ui/.eslintrc.json create mode 100644 api3-aave-ui/.gitignore create mode 100644 api3-aave-ui/.npmrc create mode 100644 api3-aave-ui/README.md create mode 100644 api3-aave-ui/components/ConnectWallet.tsx create mode 100644 api3-aave-ui/components/CurvesDecoration.tsx create mode 100644 api3-aave-ui/components/ExternalLinkIcon.tsx create mode 100644 api3-aave-ui/components/Footer.tsx create mode 100644 api3-aave-ui/components/Header.tsx create mode 100644 api3-aave-ui/components/Layout.tsx create mode 100644 api3-aave-ui/components/StakeCard.jsx create mode 100644 api3-aave-ui/components/nav_mobile.tsx create mode 100644 api3-aave-ui/components/pane.tsx create mode 100644 api3-aave-ui/components/row.tsx create mode 100644 api3-aave-ui/components/stake/StakeCard.tsx create mode 100644 api3-aave-ui/components/stake/StakeHeader.tsx create mode 100644 api3-aave-ui/configuration.ts create mode 100644 api3-aave-ui/deployment-configs.json create mode 100644 api3-aave-ui/favicon.ico create mode 100644 api3-aave-ui/marketConfig.json create mode 100644 api3-aave-ui/next-env.d.ts create mode 100644 api3-aave-ui/next.config.js create mode 100644 api3-aave-ui/package.json create mode 100644 api3-aave-ui/pages/_app.tsx create mode 100644 api3-aave-ui/pages/asset-detail/index.tsx create mode 100644 api3-aave-ui/pages/dashboard/index.tsx create mode 100644 api3-aave-ui/pages/index.tsx create mode 100644 api3-aave-ui/pages/markets/CompoundDashboard.tsx create mode 100644 api3-aave-ui/pages/markets/MarketAssetListContainer.tsx create mode 100644 api3-aave-ui/pages/markets/MarketAssetsList.tsx create mode 100644 api3-aave-ui/pages/markets/compound/MarketAssetListContainerComp.tsx create mode 100644 api3-aave-ui/pages/markets/compound/MarketAssetsListComp.tsx create mode 100644 api3-aave-ui/pages/markets/index.tsx create mode 100644 api3-aave-ui/pages/stake/index.tsx create mode 100644 api3-aave-ui/postcss.config.js create mode 100644 api3-aave-ui/prettier.config.js create mode 100644 api3-aave-ui/public/images/favicon.png create mode 100644 api3-aave-ui/public/images/footer-pattern-mobile.svg create mode 100644 api3-aave-ui/public/images/footer-pattern.svg create mode 100644 api3-aave-ui/public/images/logo-icon.svg create mode 100644 api3-aave-ui/public/logos/DOV.png create mode 100644 api3-aave-ui/public/logos/ETH.png create mode 100644 api3-aave-ui/public/logos/OEVT.png create mode 100644 api3-aave-ui/public/logos/POL.png create mode 100644 api3-aave-ui/public/logos/PZM.png create mode 100644 api3-aave-ui/public/logos/PZM.svg create mode 100644 api3-aave-ui/public/logos/USDC.png create mode 100644 api3-aave-ui/public/logos/WBTC.png create mode 100644 api3-aave-ui/public/logos/WETH10.png create mode 100644 api3-aave-ui/src/abis/comet.json create mode 100644 api3-aave-ui/src/components/ContentContainer.tsx create mode 100644 api3-aave-ui/src/components/ContentWithTooltip.tsx create mode 100644 api3-aave-ui/src/components/GasStation/GasButton.tsx create mode 100644 api3-aave-ui/src/components/GasStation/GasStation.tsx create mode 100644 api3-aave-ui/src/components/GasStation/GasStationProvider.tsx create mode 100644 api3-aave-ui/src/components/GhoBorrowApyRange.tsx create mode 100644 api3-aave-ui/src/components/HealthFactorNumber.tsx create mode 100644 api3-aave-ui/src/components/StyledToggleButton.tsx create mode 100644 api3-aave-ui/src/components/StyledToggleButtonGroup.tsx create mode 100644 api3-aave-ui/src/components/SymbolIcon.tsx create mode 100644 api3-aave-ui/src/components/TextWithTooltip.tsx create mode 100644 api3-aave-ui/src/components/caps/CapsCircularStatus.tsx create mode 100644 api3-aave-ui/src/components/caps/CapsHint.tsx create mode 100644 api3-aave-ui/src/components/caps/CapsTooltip.tsx create mode 100644 api3-aave-ui/src/components/caps/DebtCeilingStatus.tsx create mode 100644 api3-aave-ui/src/components/caps/helper.ts create mode 100644 api3-aave-ui/src/components/dashboard/BorrowAssetsList/BorrowAssetsList.tsx create mode 100644 api3-aave-ui/src/components/dashboard/BorrowAssetsList/BorrowAssetsListItem.tsx create mode 100644 api3-aave-ui/src/components/dashboard/BorrowAssetsList/types.ts create mode 100644 api3-aave-ui/src/components/dashboard/BorrowedPositionsList/BorrowedPositionsList.tsx create mode 100644 api3-aave-ui/src/components/dashboard/BorrowedPositionsList/BorrowedPositionsListItem.tsx create mode 100644 api3-aave-ui/src/components/dashboard/BorrowedPositionsList/BorrowedPositionsListMobileItem.tsx create mode 100644 api3-aave-ui/src/components/dashboard/BorrowedPositionsList/GhoBorrowedPositionsListItem.tsx create mode 100644 api3-aave-ui/src/components/dashboard/BorrowedPositionsList/types.ts create mode 100644 api3-aave-ui/src/components/dashboard/SuppliedPositionsList /SuppliedPositionsList.tsx create mode 100644 api3-aave-ui/src/components/dashboard/SuppliedPositionsList /SuppliedPositionsListItem.tsx create mode 100644 api3-aave-ui/src/components/dashboard/SuppliedPositionsList /SuppliedPositionsListMobileItem.tsx create mode 100644 api3-aave-ui/src/components/dashboard/SupplyAssetsList/SupplyAssetsList.tsx create mode 100644 api3-aave-ui/src/components/dashboard/SupplyAssetsList/SupplyAssetsListItem.tsx create mode 100644 api3-aave-ui/src/components/dashboard/SupplyAssetsList/SupplyAssetsListMobileItem.tsx create mode 100644 api3-aave-ui/src/components/dashboard/SupplyAssetsList/types.ts create mode 100644 api3-aave-ui/src/components/dashboard/emptyfile create mode 100644 api3-aave-ui/src/components/icons/LensIcon.tsx create mode 100644 api3-aave-ui/src/components/icons/LensterIcon.tsx create mode 100644 api3-aave-ui/src/components/icons/WalletIcon.tsx create mode 100644 api3-aave-ui/src/components/incentives/GhoIncentivesCard.tsx create mode 100644 api3-aave-ui/src/components/incentives/IncentivesButton.tsx create mode 100644 api3-aave-ui/src/components/incentives/IncentivesCard.tsx create mode 100644 api3-aave-ui/src/components/incentives/IncentivesTooltipContent.tsx create mode 100644 api3-aave-ui/src/components/infoTooltips/APYTypeTooltip.tsx create mode 100644 api3-aave-ui/src/components/infoTooltips/ApprovalTooltip.tsx create mode 100644 api3-aave-ui/src/components/infoTooltips/AvailableTooltip.tsx create mode 100644 api3-aave-ui/src/components/infoTooltips/BorrowCapMaxedTooltip.tsx create mode 100644 api3-aave-ui/src/components/infoTooltips/CollateralSwitchTooltip.tsx create mode 100644 api3-aave-ui/src/components/infoTooltips/DebtCeilingMaxedTooltip.tsx create mode 100644 api3-aave-ui/src/components/infoTooltips/FixedAPYTooltip.tsx create mode 100644 api3-aave-ui/src/components/infoTooltips/GasTooltip.tsx create mode 100644 api3-aave-ui/src/components/infoTooltips/PriceImpactTooltip.tsx create mode 100644 api3-aave-ui/src/components/infoTooltips/SlippageTooltip.tsx create mode 100644 api3-aave-ui/src/components/infoTooltips/SupplyCapMaxedTooltip.tsx create mode 100644 api3-aave-ui/src/components/isolationMode/IsolatedBadge.tsx create mode 100644 api3-aave-ui/src/components/primitives/BasicModal.tsx create mode 100644 api3-aave-ui/src/components/primitives/FormattedNumber.tsx create mode 100644 api3-aave-ui/src/components/primitives/Link.tsx create mode 100644 api3-aave-ui/src/components/primitives/NoData.tsx create mode 100644 api3-aave-ui/src/components/primitives/Row.tsx create mode 100644 api3-aave-ui/src/components/primitives/TokenIcon.tsx create mode 100644 api3-aave-ui/src/components/primitives/TypographyGradient.tsx create mode 100644 api3-aave-ui/src/components/primitives/Warning.tsx create mode 100644 api3-aave-ui/src/components/transactions/AssetInput.tsx create mode 100644 api3-aave-ui/src/components/transactions/Borrow/BorrowActions.tsx create mode 100644 api3-aave-ui/src/components/transactions/Borrow/BorrowAmountWarning.tsx create mode 100644 api3-aave-ui/src/components/transactions/Borrow/BorrowModal.tsx create mode 100644 api3-aave-ui/src/components/transactions/Borrow/BorrowModalContent.tsx create mode 100644 api3-aave-ui/src/components/transactions/Borrow/GhoBorrowModalContent.tsx create mode 100644 api3-aave-ui/src/components/transactions/Borrow/GhoBorrowSuccessView.tsx create mode 100644 api3-aave-ui/src/components/transactions/Borrow/ParameterChangewarning.tsx create mode 100644 api3-aave-ui/src/components/transactions/ClaimRewards/ClaimRewardsActions.tsx create mode 100644 api3-aave-ui/src/components/transactions/ClaimRewards/ClaimRewardsModal.tsx create mode 100644 api3-aave-ui/src/components/transactions/ClaimRewards/ClaimRewardsModalContent.tsx create mode 100644 api3-aave-ui/src/components/transactions/ClaimRewards/RewardsSelect.tsx create mode 100644 api3-aave-ui/src/components/transactions/CollateralChange/CollateralChangeActions.tsx create mode 100644 api3-aave-ui/src/components/transactions/CollateralChange/CollateralChangeModal.tsx create mode 100644 api3-aave-ui/src/components/transactions/CollateralChange/CollateralChangeModalContent.tsx create mode 100644 api3-aave-ui/src/components/transactions/Emode/EmodeActions.tsx create mode 100644 api3-aave-ui/src/components/transactions/Emode/EmodeModal.tsx create mode 100644 api3-aave-ui/src/components/transactions/Emode/EmodeModalContent.tsx create mode 100644 api3-aave-ui/src/components/transactions/Emode/EmodeNaming.ts create mode 100644 api3-aave-ui/src/components/transactions/Emode/EmodeSelect.tsx create mode 100644 api3-aave-ui/src/components/transactions/Emode/TxModalTitle.tsx create mode 100644 api3-aave-ui/src/components/transactions/FlowCommons/ApprovalMethodToggleButton.tsx create mode 100644 api3-aave-ui/src/components/transactions/FlowCommons/Error.tsx create mode 100644 api3-aave-ui/src/components/transactions/FlowCommons/GasEstimationError.tsx create mode 100644 api3-aave-ui/src/components/transactions/FlowCommons/ModalWrapper.tsx create mode 100644 api3-aave-ui/src/components/transactions/FlowCommons/RightHelperText.tsx create mode 100644 api3-aave-ui/src/components/transactions/FlowCommons/SlippageList.tsx create mode 100644 api3-aave-ui/src/components/transactions/FlowCommons/Success.tsx create mode 100644 api3-aave-ui/src/components/transactions/FlowCommons/TxModalDetails.tsx create mode 100644 api3-aave-ui/src/components/transactions/FlowCommons/TxModalTitle.tsx create mode 100644 api3-aave-ui/src/components/transactions/GasStation/GasButton.tsx create mode 100644 api3-aave-ui/src/components/transactions/GasStation/GasStation.tsx create mode 100644 api3-aave-ui/src/components/transactions/GasStation/GasStationProvider.tsx create mode 100644 api3-aave-ui/src/components/transactions/Repay/CollateralRepayActions.tsx create mode 100644 api3-aave-ui/src/components/transactions/Repay/CollateralRepayModalContent.tsx create mode 100644 api3-aave-ui/src/components/transactions/Repay/RepayActions.tsx create mode 100644 api3-aave-ui/src/components/transactions/Repay/RepayModal.tsx create mode 100644 api3-aave-ui/src/components/transactions/Repay/RepayModalContent.tsx create mode 100644 api3-aave-ui/src/components/transactions/Repay/RepayTypeSelector.tsx create mode 100644 api3-aave-ui/src/components/transactions/RightHelperText.tsx create mode 100644 api3-aave-ui/src/components/transactions/Stake/StakeActions.tsx create mode 100644 api3-aave-ui/src/components/transactions/Stake/StakeModal.tsx create mode 100644 api3-aave-ui/src/components/transactions/Stake/StakeModalContent.tsx create mode 100644 api3-aave-ui/src/components/transactions/StakeCooldown/StakeCooldownActions.tsx create mode 100644 api3-aave-ui/src/components/transactions/StakeCooldown/StakeCooldownModal.tsx create mode 100644 api3-aave-ui/src/components/transactions/StakeCooldown/StakeCooldownModalContent.tsx create mode 100644 api3-aave-ui/src/components/transactions/StakeRewardClaim/StakeRewardClaimActions.tsx create mode 100644 api3-aave-ui/src/components/transactions/StakeRewardClaim/StakeRewardClaimModal.tsx create mode 100644 api3-aave-ui/src/components/transactions/StakeRewardClaim/StakeRewardClaimModalContent.tsx create mode 100644 api3-aave-ui/src/components/transactions/StakeRewardClaimRestake/StakeRewardClaimRestakeActions.tsx create mode 100644 api3-aave-ui/src/components/transactions/StakeRewardClaimRestake/StakeRewardClaimRestakeModal.tsx create mode 100644 api3-aave-ui/src/components/transactions/StakeRewardClaimRestake/StakeRewardClaimRestakeModalContent.tsx create mode 100644 api3-aave-ui/src/components/transactions/Supply/SupplyActions.tsx create mode 100644 api3-aave-ui/src/components/transactions/Supply/SupplyModal.tsx create mode 100644 api3-aave-ui/src/components/transactions/Supply/SupplyModalContent.tsx create mode 100644 api3-aave-ui/src/components/transactions/TxActionsWrapper.tsx create mode 100644 api3-aave-ui/src/components/transactions/UnStake/UnStakeActions.tsx create mode 100644 api3-aave-ui/src/components/transactions/UnStake/UnStakeModal.tsx create mode 100644 api3-aave-ui/src/components/transactions/UnStake/UnStakeModalContent.tsx create mode 100644 api3-aave-ui/src/components/transactions/Warnings/BorrowCapWarning.tsx create mode 100644 api3-aave-ui/src/components/transactions/Warnings/ChangeNetworkWarning.tsx create mode 100644 api3-aave-ui/src/components/transactions/Warnings/CooldownWarning.tsx create mode 100644 api3-aave-ui/src/components/transactions/Warnings/DebtCeilingWarning.tsx create mode 100644 api3-aave-ui/src/components/transactions/Warnings/IsolationModeWarning.tsx create mode 100644 api3-aave-ui/src/components/transactions/Warnings/ParaswapErrorDisplay.tsx create mode 100644 api3-aave-ui/src/components/transactions/Warnings/SupplyCapWarning.tsx create mode 100644 api3-aave-ui/src/components/transactions/Withdraw/WithdrawActions.tsx create mode 100644 api3-aave-ui/src/components/transactions/Withdraw/WithdrawModal.tsx create mode 100644 api3-aave-ui/src/components/transactions/Withdraw/WithdrawModalContent.tsx create mode 100644 api3-aave-ui/src/components/transactions/utils.ts create mode 100644 api3-aave-ui/src/helpers/compoundHelpers.ts create mode 100644 api3-aave-ui/src/helpers/text-center-ellipsis.ts create mode 100644 api3-aave-ui/src/helpers/timeHelper.tsx create mode 100644 api3-aave-ui/src/helpers/toggle-local-storage-click.ts create mode 100644 api3-aave-ui/src/helpers/types.ts create mode 100644 api3-aave-ui/src/helpers/useParaSwapTransactionHandler.tsx create mode 100644 api3-aave-ui/src/helpers/useTransactionHandler.tsx create mode 100644 api3-aave-ui/src/hooks/app-data-provider/BackgroundDataProvider.tsx create mode 100644 api3-aave-ui/src/hooks/app-data-provider/useAppDataProvider.tsx create mode 100644 api3-aave-ui/src/hooks/app-data-provider/useWalletBalances.tsx create mode 100644 api3-aave-ui/src/hooks/lib/WagmiProvider.tsx create mode 100644 api3-aave-ui/src/hooks/lib/WalletOptions.ts create mode 100644 api3-aave-ui/src/hooks/lib/Web3Provider.tsx create mode 100644 api3-aave-ui/src/hooks/lib/chains.ts create mode 100644 api3-aave-ui/src/hooks/lib/ethers.ts create mode 100644 api3-aave-ui/src/hooks/lib/hooks/use-get-ens.tsx create mode 100644 api3-aave-ui/src/hooks/lib/hooks/useWeb3Context.tsx create mode 100644 api3-aave-ui/src/hooks/lib/useWeb3.ts create mode 100644 api3-aave-ui/src/hooks/paraswap/common.ts create mode 100644 api3-aave-ui/src/hooks/paraswap/useCollateralRepaySwap.tsx create mode 100644 api3-aave-ui/src/hooks/paraswap/useCollateralSwap.tsx create mode 100644 api3-aave-ui/src/hooks/paraswap/useDebtSwitch.tsx create mode 100644 api3-aave-ui/src/hooks/pool/usePoolTokensBalance.ts create mode 100644 api3-aave-ui/src/hooks/stake/useGeneralStakeUiData.ts create mode 100644 api3-aave-ui/src/hooks/stake/useUserStakeUiData.ts create mode 100644 api3-aave-ui/src/hooks/useAssetCaps.tsx create mode 100644 api3-aave-ui/src/hooks/useCurrentTimestamp.tsx create mode 100644 api3-aave-ui/src/hooks/useGasStation.tsx create mode 100644 api3-aave-ui/src/hooks/useGetGasPrices.tsx create mode 100644 api3-aave-ui/src/hooks/useIsWrongNetwork.tsx create mode 100644 api3-aave-ui/src/hooks/useModal.tsx create mode 100644 api3-aave-ui/src/hooks/usePolling.tsx create mode 100644 api3-aave-ui/src/hooks/useProtocolDataContext.tsx create mode 100644 api3-aave-ui/src/layouts/AppGlobalStyles.tsx create mode 100644 api3-aave-ui/src/services/UiStakeDataService.ts create mode 100644 api3-aave-ui/src/services/WalletBalanceService.ts create mode 100644 api3-aave-ui/src/store/compoundSlice.ts create mode 100644 api3-aave-ui/src/store/ghoSlice.ts create mode 100644 api3-aave-ui/src/store/governanceSlice.ts create mode 100644 api3-aave-ui/src/store/incentiveSlice.ts create mode 100644 api3-aave-ui/src/store/layoutSlice.ts create mode 100644 api3-aave-ui/src/store/poolSelectors.ts create mode 100644 api3-aave-ui/src/store/poolSlice.ts create mode 100644 api3-aave-ui/src/store/protocolDataSlice.ts create mode 100644 api3-aave-ui/src/store/root.ts create mode 100644 api3-aave-ui/src/store/stakeSlice.ts create mode 100644 api3-aave-ui/src/store/transactionsSelectors.ts create mode 100644 api3-aave-ui/src/store/transactionsSlice.ts create mode 100644 api3-aave-ui/src/store/utils/createSingletonSubscriber.ts create mode 100644 api3-aave-ui/src/store/utils/domain-fetchers/ens.ts create mode 100644 api3-aave-ui/src/store/utils/domain-fetchers/index.ts create mode 100644 api3-aave-ui/src/store/utils/queryParams.ts create mode 100644 api3-aave-ui/src/store/v3MigrationSelectors.ts create mode 100644 api3-aave-ui/src/store/v3MigrationSlice.ts create mode 100644 api3-aave-ui/src/store/walletDomains.ts create mode 100644 api3-aave-ui/src/store/walletSlice.ts create mode 100644 api3-aave-ui/src/ui-config/SharedDependenciesProvider.tsx create mode 100644 api3-aave-ui/src/ui-config/errorMapping.tsx create mode 100644 api3-aave-ui/src/ui-config/generatedConfig.ts create mode 100644 api3-aave-ui/src/ui-config/governanceConfig.ts create mode 100644 api3-aave-ui/src/ui-config/localMarketConfigs.ts create mode 100644 api3-aave-ui/src/ui-config/marketsConfig.tsx create mode 100644 api3-aave-ui/src/ui-config/networksConfig.ts create mode 100644 api3-aave-ui/src/ui-config/permitConfig.ts create mode 100644 api3-aave-ui/src/ui-config/queries.ts create mode 100644 api3-aave-ui/src/ui-config/queries.tsx create mode 100644 api3-aave-ui/src/ui-config/reservePatches.ts create mode 100644 api3-aave-ui/src/ui-config/stakeConfig.ts create mode 100644 api3-aave-ui/src/utils/__tests__/RotationProvider.test.ts create mode 100644 api3-aave-ui/src/utils/__tests__/ghoUtilities.spec.ts create mode 100644 api3-aave-ui/src/utils/__tests__/marketsAndNetworkConfig.spec.ts create mode 100644 api3-aave-ui/src/utils/dashboardSortUtils.ts create mode 100644 api3-aave-ui/src/utils/eMode.ts create mode 100644 api3-aave-ui/src/utils/getMaxAmountAvailableToBorrow.ts create mode 100644 api3-aave-ui/src/utils/getMaxAmountAvailableToSupply.ts create mode 100644 api3-aave-ui/src/utils/ghoUtilities.tsx create mode 100644 api3-aave-ui/src/utils/hfUtils.ts create mode 100644 api3-aave-ui/src/utils/marketsAndNetworksConfig.ts create mode 100644 api3-aave-ui/src/utils/mixPanelEvents.ts create mode 100644 api3-aave-ui/src/utils/rotationProvider.ts create mode 100644 api3-aave-ui/src/utils/tFetch.ts create mode 100644 api3-aave-ui/src/utils/theme.tsx create mode 100644 api3-aave-ui/src/utils/types.ts create mode 100644 api3-aave-ui/src/utils/utils.ts create mode 100644 api3-aave-ui/styles/colors.css create mode 100644 api3-aave-ui/styles/components.css create mode 100644 api3-aave-ui/styles/developer-styles.css create mode 100644 api3-aave-ui/styles/forms.css create mode 100644 api3-aave-ui/styles/preset.css create mode 100644 api3-aave-ui/styles/reset.css create mode 100644 api3-aave-ui/styles/settings.css create mode 100644 api3-aave-ui/styles/setup.css create mode 100644 api3-aave-ui/styles/site.css create mode 100644 api3-aave-ui/styles/structure.css create mode 100644 api3-aave-ui/styles/typography.css create mode 100644 api3-aave-ui/styles/utilities.css create mode 100644 api3-aave-ui/tailwind.config.js create mode 100644 api3-aave-ui/tsconfig.json create mode 100644 api3-aave-ui/yarn.lock diff --git a/.gitignore b/.gitignore index aff2fd7f4..2c551ddec 100644 --- a/.gitignore +++ b/.gitignore @@ -23,6 +23,5 @@ typechain/ test-results.json scenario-results.json -api3-aave-ui/ api3-adaptors/deployments/ \ No newline at end of file diff --git a/api3-aave-ui/.eslintrc.json b/api3-aave-ui/.eslintrc.json new file mode 100644 index 000000000..bffb357a7 --- /dev/null +++ b/api3-aave-ui/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "next/core-web-vitals" +} diff --git a/api3-aave-ui/.gitignore b/api3-aave-ui/.gitignore new file mode 100644 index 000000000..f2bac5699 --- /dev/null +++ b/api3-aave-ui/.gitignore @@ -0,0 +1,40 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# local env files +.env.local +.env.development.local +.env.test.local +.env.production.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo + +/generated-configs diff --git a/api3-aave-ui/.npmrc b/api3-aave-ui/.npmrc new file mode 100644 index 000000000..aff8a3283 --- /dev/null +++ b/api3-aave-ui/.npmrc @@ -0,0 +1 @@ +strict-peer-dependencies = false diff --git a/api3-aave-ui/README.md b/api3-aave-ui/README.md new file mode 100644 index 000000000..31bea9e6a --- /dev/null +++ b/api3-aave-ui/README.md @@ -0,0 +1,33 @@ +[![License: AGPL v3](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0) + +# API3 Aave UI + +This repository is being used in [Aave Protocol V2 Fork](https://github.com/api3-ecosystem/aave-protocol-v2-fork) to spin up market frontend. follow the docs the in [Aave Protocol V2 Fork](https://github.com/api3-ecosystem/aave-protocol-v2-fork) to run frontend on custom networks + +## What is Aave? + +Aave is a decentralized non-custodial liquidity markets protocol where users can participate as depositors or borrowers. Depositors provide liquidity to the market to earn a passive income, while borrowers are able to borrow in an overcollateralized (perpetually) or undercollateralized (one-block liquidity) fashion. + +## What is API3 + +API3 is a collaborative project to deliver traditional API services to smart contract platforms in a decentralized and trust-minimized way. + +API3 is building secure first-party oracles and OEV-enabled data feeds for DeFi protocols and users. The data feeds are continuously updated by first-party oracles using signed data. + +## Setup + +The repository uses `deployment-configs.json` to load market configs. By default it uses default configs, and it uses defined configs if started from [Aave Protocol V2 Fork](https://github.com/api3-ecosystem/aave-protocol-v2-fork). + +### Spinning up the frontend locally with defaults + +- Install dependencies` + + ```bash + yarn + ``` + +- Start next client + + ```bash + yarn dev + ``` diff --git a/api3-aave-ui/components/ConnectWallet.tsx b/api3-aave-ui/components/ConnectWallet.tsx new file mode 100644 index 000000000..8b42dec6a --- /dev/null +++ b/api3-aave-ui/components/ConnectWallet.tsx @@ -0,0 +1,89 @@ +import { Wallet } from "@mui/icons-material"; +import { ConnectButton } from "@rainbow-me/rainbowkit"; + +export default function ConnectWallet() { + return ( + + {({ + account, + chain, + openAccountModal, + openChainModal, + openConnectModal, + authenticationStatus, + mounted, + }) => { + // Note: If your app doesn't use authentication, you + // can remove all 'authenticationStatus' checks + const ready = mounted && authenticationStatus !== "loading"; + const connected = + ready && + account && + chain && + (!authenticationStatus || authenticationStatus === "authenticated"); + + console.log("chain", chain); + return ( +
+ {(() => { + if (!connected) { + return ( + + ); + } + if (chain.unsupported) { + return ( + + ); + } + return ( + + ); + })()} +
+ ); + }} +
+ ); +} diff --git a/api3-aave-ui/components/CurvesDecoration.tsx b/api3-aave-ui/components/CurvesDecoration.tsx new file mode 100644 index 000000000..a7b668ae5 --- /dev/null +++ b/api3-aave-ui/components/CurvesDecoration.tsx @@ -0,0 +1,1354 @@ +export default function CurvesDecoration() { + return ( +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ ); +} diff --git a/api3-aave-ui/components/ExternalLinkIcon.tsx b/api3-aave-ui/components/ExternalLinkIcon.tsx new file mode 100644 index 000000000..5c5d90e4f --- /dev/null +++ b/api3-aave-ui/components/ExternalLinkIcon.tsx @@ -0,0 +1,16 @@ +export default function ExternalLinkIcon() { + return ( + + + + ); +} diff --git a/api3-aave-ui/components/Footer.tsx b/api3-aave-ui/components/Footer.tsx new file mode 100644 index 000000000..39fee6104 --- /dev/null +++ b/api3-aave-ui/components/Footer.tsx @@ -0,0 +1,19 @@ +export default function Footer() { + return ( + + ); +} diff --git a/api3-aave-ui/components/Header.tsx b/api3-aave-ui/components/Header.tsx new file mode 100644 index 000000000..a58b59b7b --- /dev/null +++ b/api3-aave-ui/components/Header.tsx @@ -0,0 +1,43 @@ +import React from "react"; +import Link from "next/link"; +import ConnectWallet from "./ConnectWallet"; +import { populateChainConfigs } from "configuration"; + +export default function Header() { + const currenChainConfig = populateChainConfigs(); + return ( +
+
+
+ + + + +
    + {currenChainConfig.currentMarket !== "compound" && ( +
  • + + Dashboard + +
  • + )} + +
  • + + Markets + +
  • + {/*
  • + + Stake + +
  • */} +
  • + +
  • +
+
+
+
+ ); +} diff --git a/api3-aave-ui/components/Layout.tsx b/api3-aave-ui/components/Layout.tsx new file mode 100644 index 000000000..d490732ad --- /dev/null +++ b/api3-aave-ui/components/Layout.tsx @@ -0,0 +1,14 @@ +import Header from "./Header"; +import Footer from "./Footer"; +import CurvesDecoration from "./CurvesDecoration"; + +export default function Layout({ children }: any) { + return ( + <> + +
+
{children}
+