diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f4c2483ae..080895f03 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -61,7 +61,7 @@ jobs: env: FORCE_COLOR: 0 with: - node-version: 16.16.0 + node-version: 18.17.1 cache: 'yarn' - run: yarn install --frozen-lockfile @@ -115,7 +115,7 @@ jobs: env: FORCE_COLOR: 0 with: - node-version: 16.16.0 + node-version: 18.17.1 cache: 'yarn' - run: yarn install --frozen-lockfile diff --git a/.github/workflows/test-contracts.yml b/.github/workflows/test-contracts.yml index c65daf5e6..66bd9c103 100644 --- a/.github/workflows/test-contracts.yml +++ b/.github/workflows/test-contracts.yml @@ -30,7 +30,7 @@ jobs: env: FORCE_COLOR: 0 with: - node-version: 16.16.0 + node-version: 18.17.1 cache: 'yarn' - run: yarn install --frozen-lockfile @@ -52,7 +52,7 @@ jobs: env: FORCE_COLOR: 0 with: - node-version: 16.16.0 + node-version: 18.17.1 cache: 'yarn' - run: yarn install --frozen-lockfile diff --git a/.nvmrc b/.nvmrc index 0ff38047b..7ec56198d 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -16.16.0 \ No newline at end of file +18.17.1 \ No newline at end of file diff --git a/.prettierignore b/.prettierignore index fc3584add..1cbff2e3e 100644 --- a/.prettierignore +++ b/.prettierignore @@ -50,4 +50,5 @@ Makefile *.archive *.sh .vscode/settings.json -.yarn/ \ No newline at end of file +.yarn/ +.nvmrc \ No newline at end of file diff --git a/package.json b/package.json index 16737ae95..9a1295546 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,13 @@ "private": true, "workspaces": { "packages": [ - "packages/*" + "packages/contracts", + "packages/dev-frontend", + "packages/lib-base", + "packages/lib-ethers", + "packages/lib-react", + "packages/lib-react", + "packages/providers" ], "nohoist": [ "**/web3-eth-abi/@ethersproject/abi", @@ -42,21 +48,17 @@ "scripts": { "build": "run-s build:*", "build:dev-frontend": "yarn workspace @kumodao/dev-frontend build", - "build:subgraph": "yarn workspace @kumodao/subgraph build", "deploy": "yarn workspace @kumodao/lib-ethers hardhat deploy", "docs": "run-s docs:*", "docs:collect-sdk-apis": "node scripts/collect-sdk-apis.js", "docs:api-documenter": "api-documenter generate -i temp/sdk-apis -o docs/sdk", - "fuzzer": "yarn workspace @kumodao/fuzzer fuzzer", "postinstall": "husky install", "prepare": "run-s prepare:*", "prepare:contracts": "yarn workspace @kumodao/contracts prepare", "prepare:lib-base": "yarn workspace @kumodao/lib-base prepare", "prepare:lib-ethers": "yarn workspace @kumodao/lib-ethers prepare", "prepare:lib-react": "yarn workspace @kumodao/lib-react prepare", - "prepare:lib-subgraph": "yarn workspace @kumodao/lib-subgraph prepare", "prepare:providers": "yarn workspace @kumodao/providers prepare", - "prepare:subgraph": "yarn workspace @kumodao/subgraph prepare", "prepare:docs": "run-s docs", "prettier:check": "prettier --check .", "prettier:write": "prettier --write .", @@ -100,23 +102,18 @@ }, "devDependencies": { "@commitlint/cli": "^17.7.1", - "@commitlint/config-conventional": "^16.2.1", - "@microsoft/api-documenter": "^7.17.14", - "fs-extra": "^9.1.0", + "@commitlint/config-conventional": "^17.7.0", + "@microsoft/api-documenter": "^7.23.0", + "fs-extra": "^11.1.1", "husky": "^8.0.3", "lint-staged": "^14.0.0", "npm-run-all": "^4.1.5", - "prettier": "^3.0.1", - "semantic-release": "^19.0.3", - "semantic-release-monorepo": "^7.0.4" + "prettier": "^3.0.3", + "semantic-release": "^21.1.2", + "semantic-release-monorepo": "^7.0.5" }, "engineStrict": true, "engines": { - "node": "16.16.0" - }, - "resolutions": { - "react-error-overlay": "6.0.9", - "@types/react": "^17.0.3", - "@types/react-dom": "^18.0.2" + "node": "^18.17.1" } } diff --git a/packages/contracts/package.json b/packages/contracts/package.json index a1b3b2ff2..e397422ec 100644 --- a/packages/contracts/package.json +++ b/packages/contracts/package.json @@ -20,28 +20,29 @@ "author": "", "license": "ISC", "dependencies": { - "decimal.js": "^10.3.1", + "@ethersproject/experimental": "^5.7.0", + "decimal.js": "^10.4.3", "eth-mutants": "^0.1.1", "ethereumjs-util": "^7.1.5", - "ethers": "~5.6.9", - "solc": "^0.8.13", - "xmlhttprequest": "^1.8.0", - "@ethersproject/experimental": "^5.7.0" + "ethers": "~5.7.2", + "solc": "^0.8.21", + "xmlhttprequest": "^1.8.0" }, "devDependencies": { - "@nomiclabs/hardhat-ethers": "^2.2.2", - "@nomiclabs/hardhat-etherscan": "^3.0.1", - "@nomiclabs/hardhat-truffle5": "^2.0.4", + "@nomiclabs/hardhat-ethers": "^2.2.3", + "@nomiclabs/hardhat-etherscan": "^3.1.7", + "@nomiclabs/hardhat-truffle5": "^2.0.7", "@nomiclabs/hardhat-web3": "^2.0.0", - "@openzeppelin/contracts": "^4.6.0", - "@openzeppelin/test-helpers": "^0.5.13", - "eth-gas-reporter": "^0.2.22", - "hardhat": "^2.9.9", - "hardhat-contract-sizer": "^2.6.1", + "@openzeppelin/contracts": "^4.9.3", + "@openzeppelin/contracts-upgradeable": "^4.9.3", + "@openzeppelin/test-helpers": "^0.5.16", + "eth-gas-reporter": "^0.2.25", + "hardhat": "^2.17.3", + "hardhat-contract-sizer": "^2.10.0", "hardhat-diamond-abi": "^3.0.1", - "hardhat-gas-reporter": "^1.0.8", + "hardhat-gas-reporter": "^1.0.9", "npm-run-all": "^4.1.5", - "solidity-coverage": "^0.7.20", + "solidity-coverage": "^0.8.4", "web3": "^1.3.4" } } diff --git a/packages/contracts/test/BorrowerOperationsTest.js b/packages/contracts/test/BorrowerOperationsTest.js index 9e9bd3fbe..b4e9b81b0 100644 --- a/packages/contracts/test/BorrowerOperationsTest.js +++ b/packages/contracts/test/BorrowerOperationsTest.js @@ -6779,7 +6779,7 @@ contract("BorrowerOperations", async accounts => { assert.equal(status_Before, 0); const KUSDRequest = MIN_NET_DEBT; - borrowerOperations.openTrove( + await borrowerOperations.openTrove( assetAddress1, dec(100, "ether"), th._100pct, diff --git a/packages/dev-frontend/.env.local b/packages/dev-frontend/.env.local index cfb59ed7e..3d211050c 100644 --- a/packages/dev-frontend/.env.local +++ b/packages/dev-frontend/.env.local @@ -1,11 +1,10 @@ -REACT_APP_CHAIN_NAME='localhost' -REACT_APP_CHAIN_ID=17 -REACT_APP_CURRENCY_NAME=ETHER -REACT_APP_CURRENCY_SYMBOL=ETH -REACT_APP_NETWORK_URL=localhost -REACT_APP_RPC_URL= http://${REACT_APP_NETWORK_URL}:8545 -REACT_APP_RPC_URL_WALLET= ${REACT_APP_RPC_URL} -REACT_APP_WSS_URL= ws://${REACT_APP_NETWORK_URL}:8546 +VITE_CHAIN_NAME=localhost +VITE_CHAIN_ID=17 +VITE_CURRENCY_NAME=ETHER +VITE_CURRENCY_SYMBOL=ETH +VITE_RPC_URL= http://localhost:8545 +VITE_RPC_URL_WALLET= http://localhost:8545 +VITE_WSS_URL= ws://localhost:8546 SECRET_WORDS= 'test test test test test test test test test test test junk' NETWORK_NAME= 'Localhost' diff --git a/packages/dev-frontend/public/index.html b/packages/dev-frontend/index.html similarity index 89% rename from packages/dev-frontend/public/index.html rename to packages/dev-frontend/index.html index db94050e7..6d3a0b373 100644 --- a/packages/dev-frontend/public/index.html +++ b/packages/dev-frontend/index.html @@ -2,21 +2,21 @@ - + - + - + + diff --git a/packages/dev-frontend/package.json b/packages/dev-frontend/package.json index ff74a1e13..428a9a0c7 100644 --- a/packages/dev-frontend/package.json +++ b/packages/dev-frontend/package.json @@ -4,60 +4,82 @@ "private": true, "homepage": "https://dev.kumo.earth/", "dependencies": { - "@ethersproject/abi": "5.7.0", - "@fortawesome/fontawesome-svg-core": "1.2.34", - "@fortawesome/free-regular-svg-icons": "5.15.2", - "@fortawesome/free-solid-svg-icons": "5.15.2", - "@fortawesome/react-fontawesome": "0.1.14", - "@metamask/providers": "^9.0.0", - "@popperjs/core": "2.9.1", - "@testing-library/dom": "8.14.0", - "@testing-library/jest-dom": "5.11.9", - "@testing-library/react": "12.1.5", - "@testing-library/user-event": "14.3.0", - "@tippyjs/react": "4.2.6", - "@types/jest": "27.5.1", - "@types/lodash": "^4.14.186", - "@types/react": "17.0.3", - "@types/react-copy-to-clipboard": "5.0.0", - "@types/react-dom": "17.0.14", - "@types/react-router-dom": "5.3.3", - "@types/recharts": "^1.8.23", - "@types/testing-library__jest-dom": "5.14.3", - "@types/testing-library__react": "10.2.0", - "@types/testing-library__user-event": "4.2.0", + "@emotion/react": "^11.11.1", + "@ethersproject/abi": "^5.7.0", + "@ethersproject/experimental": "^5.7.0", + "@fortawesome/fontawesome-svg-core": "^6.4.2", + "@fortawesome/free-regular-svg-icons": "^6.4.2", + "@fortawesome/free-solid-svg-icons": "^6.4.2", + "@fortawesome/react-fontawesome": "^0.2.0", + "@metamask/providers": "^13.0.0", + "@popperjs/core": "^2.11.8", + "@tippyjs/react": "^4.2.6", + "@walletconnect/types": "^2.10.1", "@web3-react/core": "6.1.9", "@web3-react/injected-connector": "6.0.7", "@web3-react/network-connector": "^6.2.9", "@web3-react/types": "6.0.7", "@web3-react/walletconnect-connector": "^6.2.13", - "cross-env": "7.0.3", "env-cmd": "^10.1.0", - "ethers": "6.2.2", - "npm-run-all": "4.1.5", - "react": "17.0.1", - "react-circular-progressbar": "2.0.4", - "react-copy-to-clipboard": "5.1.0", - "react-dom": "17.0.1", - "react-is": "17.0.1", - "react-popper": "2.3.0", - "react-router-dom": "5.2.0", - "react-scripts": "4.0.3", + "ethers": "^6.7.1", + "lodash": "^4.17.21", + "react": "^18.2.0", + "react-circular-progressbar": "^2.1.0", + "react-copy-to-clipboard": "^5.1.0", + "react-dom": "^18.2.0", + "react-popper": "^2.3.0", + "react-router-dom": "^6.16.0", + "react-scripts": "^5.0.1", "reakit": "^1.3.11", - "recharts": "^2.1.16", - "source-map-explorer": "2.5.2", - "theme-ui": "0.6.0-canary.1544.5359f8a1e408a4dfeb74a9ae39688270286e534a.0", - "typescript": "4.1.5", - "web3-providers-http": "^1.7.3" + "recharts": "^2.8.0", + "theme-ui": "^0.16.1", + "typescript": "^5.2.2", + "web3-providers-http": "^4.0.6" + }, + "devDependencies": { + "@esbuild-plugins/node-modules-polyfill": "^0.2.2", + "@synthetixio/synpress": "^3.7.2-beta.7", + "@testing-library/dom": "^9.3.3", + "@testing-library/jest-dom": "^6.1.3", + "@testing-library/react": "^14.0.0", + "@testing-library/user-event": "^14.5.1", + "@types/lodash": "^4.14.199", + "@types/react": "^18.2.22", + "@types/react-copy-to-clipboard": "^5.0.4", + "@types/react-dom": "^18.2.7", + "@types/react-router-dom": "^5.3.3", + "@types/testing-library__react": "^10.2.0", + "@types/testing-library__user-event": "^4.2.0", + "@typescript-eslint/eslint-plugin": "^6.7.2", + "@typescript-eslint/parser": "^6.7.2", + "@vitejs/plugin-react": "^4.0.4", + "@vitejs/plugin-react-refresh": "^1.3.6", + "@vitejs/plugin-react-swc": "^3.3.2", + "cypress": "^13.2.0", + "eslint": "^8.49.0", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.3", + "jsdom": "22", + "node-fetch": "^3.3.2", + "npm-run-all": "^4.1.5", + "rollup-plugin-polyfill-node": "^0.12.0", + "source-map-explorer": "2.5.3", + "start-server-and-test": "^2.0.1", + "typescript": "^5.2.2", + "vite": "^4.4.9", + "vite-plugin-svgr": "^4.0.0", + "vitest": "^0.34.5", + "yalc": "1.0.0-pre.53" }, "scripts": { "analyze": "source-map-explorer 'build/static/js/*.js'", - "start": "env-cmd -f .env react-scripts start", - "start:local": "env-cmd -f .env.local react-scripts start", - "start-demo": "cross-env REACT_APP_DEMO_MODE=true run-s start", + "start": "env-cmd -f .env vite --force", + "start:local": "env-cmd -f .env.local vite --force", + "start-demo": "env-cmd VITE_APP_DEMO_MODE=true vite --force", "build": "run-s build:*", "build:set-version": "node scripts/set-version.js", - "build:react": "env-cmd -f .env react-scripts build", + "build:tsc": "tsc", + "build:vite": "env-cmd -f .env vite build", "test": "env-cmd -f .env.local synpress run --configFile synpress.config.js", "ci": "start-server-and-test 'yarn start:local' http://localhost:3000 'yarn test'", "eject": "react-scripts eject" @@ -76,10 +98,5 @@ "last 1 firefox version", "last 1 safari version" ] - }, - "devDependencies": { - "@synthetixio/synpress": "^3.7.2-beta.6", - "cypress": "^12.14.0", - "start-server-and-test": "^2.0.0" } } diff --git a/packages/dev-frontend/src/App.test.tsx b/packages/dev-frontend/src/App.test.tsx index df5284dcb..01894bb5f 100644 --- a/packages/dev-frontend/src/App.test.tsx +++ b/packages/dev-frontend/src/App.test.tsx @@ -1,10 +1,5 @@ -import React from "react"; -import { render, fireEvent } from "@testing-library/react"; - import { Decimal, KUSD_MINIMUM_NET_DEBT, Trove } from "@kumodao/lib-base"; -import App from "./App"; - const params = { depositCollateral: Decimal.from(20), borrowKUSD: KUSD_MINIMUM_NET_DEBT }; const trove = Trove.create(params); diff --git a/packages/dev-frontend/src/App.tsx b/packages/dev-frontend/src/App.tsx index 8d372954b..e8c15abd9 100644 --- a/packages/dev-frontend/src/App.tsx +++ b/packages/dev-frontend/src/App.tsx @@ -1,6 +1,6 @@ -import React from "react"; +import React, { ReactNode } from "react"; import { Web3ReactProvider } from "@web3-react/core"; -import { Flex, Spinner, Heading, ThemeProvider, Paragraph, Link } from "theme-ui"; +import { Flex, Spinner, Heading, ThemeUIProvider, Paragraph, Link } from "theme-ui"; import { BatchedWebSocketAugmentedWeb3Provider } from "@kumodao/providers"; import { KumoProvider } from "./hooks/KumoContext"; @@ -21,7 +21,7 @@ if (window.ethereum) { Object.assign(window.ethereum, { autoRefreshOnNetworkChange: false }); } -if (process.env.REACT_APP_DEMO_MODE === "true") { +if (import.meta.env.VITE_DEMO_MODE === "true") { const ethereum = new DisposableWalletProvider( `http://${window.location.hostname}:8545`, "0x4d5db4107d237df6a3d58ee5f70ae63d73d7658d4026f2eefd2f204c81682cb7" @@ -37,7 +37,7 @@ getConfig().then(config => { Object.assign(window, { config }); }); -const EthersWeb3ReactProvider: React.FC = ({ children }) => { +const EthersWeb3ReactProvider: React.FC<{ children: ReactNode }> = ({ children }) => { return ( new BatchedWebSocketAugmentedWeb3Provider(provider)}> {children} @@ -74,7 +74,7 @@ const UnsupportedMainnetFallback: React.FC = () => ( const App = () => { const loader = ( - + Loading... ); @@ -100,7 +100,7 @@ const App = () => { return ( - + @@ -111,16 +111,14 @@ const App = () => { unsupportedMainnetFallback={} > - - {/* */} - + ); diff --git a/packages/dev-frontend/src/KumoFrontend.tsx b/packages/dev-frontend/src/KumoFrontend.tsx index 984019bd3..471d26683 100644 --- a/packages/dev-frontend/src/KumoFrontend.tsx +++ b/packages/dev-frontend/src/KumoFrontend.tsx @@ -1,6 +1,6 @@ import React from "react"; import { Flex, Container, Box, Text } from "theme-ui"; -import { BrowserRouter as Router, Switch, Route, Redirect } from "react-router-dom"; +import { Routes, Route, Navigate } from "react-router-dom"; import { Wallet } from "@ethersproject/wallet"; import { Decimal, Difference, Trove } from "@kumodao/lib-base"; @@ -55,91 +55,63 @@ export const KumoFrontend: React.FC = ({ loader }) => { return ( - - - - - - - - This is the KUMO test version. Please connect and then request test tokens at the faucet. For feedback and questions, reach out to contact@kumo.earth. - - {/* { + + + + + + + This is the KUMO test version. Please connect and then request test tokens at the faucet. For feedback and questions, reach out to contact@kumo.earth. + + {/* { account && https://mumbaifaucet.com/ https://faucet.polygon.technology/ } */} - - - -
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+ + + +
+ + + +
+ + + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + + } /> + + +
-
-
-
-
-
-
+ + + + + +
); diff --git a/packages/dev-frontend/src/components/Abbreviation.tsx b/packages/dev-frontend/src/components/Abbreviation.tsx index 37a77cbe3..dd48fa3c8 100644 --- a/packages/dev-frontend/src/components/Abbreviation.tsx +++ b/packages/dev-frontend/src/components/Abbreviation.tsx @@ -1,7 +1,8 @@ -import React from "react"; +import React, { ReactNode } from "react"; import { Box, BoxProps } from "theme-ui"; type AbbreviationProps = BoxProps & { + children: ReactNode, short: React.ReactNode; }; diff --git a/packages/dev-frontend/src/components/ActionDescription.tsx b/packages/dev-frontend/src/components/ActionDescription.tsx index bf019df5d..07460d7a9 100644 --- a/packages/dev-frontend/src/components/ActionDescription.tsx +++ b/packages/dev-frontend/src/components/ActionDescription.tsx @@ -1,8 +1,9 @@ +import React, { ReactNode } from "react"; import { Box, Flex, Text } from "theme-ui"; import { Icon } from "./Icon"; -export const ActionDescription: React.FC = ({ children }) => ( +export const ActionDescription: React.FC<{ children: ReactNode }> = ({ children }) => ( ( ); -export const Amount: React.FC = ({ children }) => ( +export const Amount: React.FC<{ children: ReactNode }> = ({ children }) => ( {children} ); diff --git a/packages/dev-frontend/src/components/AddAssetToken/AddAssetAction.tsx b/packages/dev-frontend/src/components/AddAssetToken/AddAssetAction.tsx index 9fbf7cf3c..8493213e1 100644 --- a/packages/dev-frontend/src/components/AddAssetToken/AddAssetAction.tsx +++ b/packages/dev-frontend/src/components/AddAssetToken/AddAssetAction.tsx @@ -1,3 +1,4 @@ +import React, { ReactNode } from "react"; import { Button } from "theme-ui"; import { useKumo } from "../../hooks/KumoContext"; @@ -5,6 +6,7 @@ import { useTransactionFunction } from "../Transaction"; type AddAssetActionProps = { + children: ReactNode transactionId: string; isTransactionConfirmed : boolean; type: string; diff --git a/packages/dev-frontend/src/components/AddAssetToken/AddAssetModal.tsx b/packages/dev-frontend/src/components/AddAssetToken/AddAssetModal.tsx index b075e7aed..c455ee74c 100644 --- a/packages/dev-frontend/src/components/AddAssetToken/AddAssetModal.tsx +++ b/packages/dev-frontend/src/components/AddAssetToken/AddAssetModal.tsx @@ -2,7 +2,6 @@ import React from "react"; import { useKumoSelector } from "@kumodao/lib-react"; import { Card, Box, Heading } from "theme-ui"; import { ASSET_TOKENS } from "@kumodao/lib-base"; -import { toUpper } from "lodash"; import { Icon } from "../Icon"; import AddAssetButton from "../AddAssetButton"; import { useAddAssetModal } from "./context/AssetViewContext"; @@ -26,7 +25,7 @@ export const AddAssetModal: React.FC = () => { Please Add the Tokens to Wallet{" "} - dispatchEvent("CLOSE_ADD_ASSET_MODAL_PRESSED")}> + dispatchEvent("CLOSE_ADD_ASSET_MODAL_PRESSED")}> @@ -40,7 +39,7 @@ export const AddAssetModal: React.FC = () => { key={token} assetName={assetName} assetTokenAddress={assetAddress} - tokenSymbol={toUpper(token)} + tokenSymbol={token.toUpperCase()} /> ); diff --git a/packages/dev-frontend/src/components/AddAssetToken/assetManager.tsx b/packages/dev-frontend/src/components/AddAssetToken/assetManager.tsx index ac28f3cc3..02382e2a9 100644 --- a/packages/dev-frontend/src/components/AddAssetToken/assetManager.tsx +++ b/packages/dev-frontend/src/components/AddAssetToken/assetManager.tsx @@ -1,5 +1,5 @@ import React, { useState, useEffect } from "react"; -import { Box, Flex, Label, Input } from "theme-ui"; +import { Flex, Label, Input } from "theme-ui"; export const AssetManager: React.FC<{ toAddress: string }> = ({ toAddress diff --git a/packages/dev-frontend/src/components/AddAssetToken/context/AssetViewProvider.tsx b/packages/dev-frontend/src/components/AddAssetToken/context/AssetViewProvider.tsx index 62657943b..2f4f050aa 100644 --- a/packages/dev-frontend/src/components/AddAssetToken/context/AssetViewProvider.tsx +++ b/packages/dev-frontend/src/components/AddAssetToken/context/AssetViewProvider.tsx @@ -1,4 +1,4 @@ -import React, { useState, useCallback, useEffect, useRef } from "react"; +import React, { useState, useCallback, useEffect, useRef, ReactNode } from "react"; import { AddAssetViewContext } from "./AssetViewContext"; import type { AddAssetView, AddAssetEvent } from "./types"; @@ -18,7 +18,7 @@ const transition = (view: AddAssetView, event: AddAssetEvent): AddAssetView => { return nextView; }; -export const AddAssetViewProvider: React.FC = props => { +export const AddAssetViewProvider: React.FC<{ children: ReactNode }> = props => { const { children } = props; const [view, setView] = useState("NONE"); diff --git a/packages/dev-frontend/src/components/AssetStats.tsx b/packages/dev-frontend/src/components/AssetStats.tsx index 56941bc1a..383d41d68 100644 --- a/packages/dev-frontend/src/components/AssetStats.tsx +++ b/packages/dev-frontend/src/components/AssetStats.tsx @@ -2,7 +2,6 @@ import React from "react"; import { Card, Box, Text, Flex, Progress, Divider } from "theme-ui"; import { Decimal, Trove } from "@kumodao/lib-base"; -import { toUpper } from "lodash"; import { InfoIcon } from "./InfoIcon"; type SystemStatsProps = { @@ -32,9 +31,9 @@ export const AssetStats: React.FC = ({ tooltip={ {`The Total Collateral Ratio or TCR is the ratio of the Dollar value of the entire - system collateral at the current ${toUpper( - collateralType - )}:USD price, to the entire system debt.`} + system collateral at the current ${ + collateralType.toUpperCase + }:USD price, to the entire system debt.`} } /> diff --git a/packages/dev-frontend/src/components/Badge.tsx b/packages/dev-frontend/src/components/Badge.tsx index 2bcbce40e..b1ae6a95f 100644 --- a/packages/dev-frontend/src/components/Badge.tsx +++ b/packages/dev-frontend/src/components/Badge.tsx @@ -1,6 +1,6 @@ -import React from "react"; +import React, { ReactNode } from "react"; import { Flex } from "theme-ui"; -export const Badge: React.FC = ({ children }) => { +export const Badge: React.FC<{ children: ReactNode }> = ({ children }) => { return {children}; }; diff --git a/packages/dev-frontend/src/components/Banner.tsx b/packages/dev-frontend/src/components/Banner.tsx index df67c336c..5a8e8dc1e 100644 --- a/packages/dev-frontend/src/components/Banner.tsx +++ b/packages/dev-frontend/src/components/Banner.tsx @@ -1,9 +1,9 @@ -import React, { useState } from "react"; +import React, { useState, ReactNode } from "react"; import { Progress, Alert, Heading } from "theme-ui"; import { useViewBanner } from "../hooks/useViewBanner"; import { Icon } from "./Icon"; -export const Banner: React.FC<{ bannerHeading: string, visibility: number, viewId: string }> = ({ bannerHeading, visibility, viewId, children }) => { +export const Banner: React.FC<{ children: ReactNode, bannerHeading: string, visibility: number, viewId: string }> = ({ bannerHeading, visibility, viewId, children }) => { const { isViewBannerCheck, changeInProgress } = useViewBanner(visibility, viewId); const [isView, setIsView] = useState(true); diff --git a/packages/dev-frontend/src/components/CollateralSurplusAction.tsx b/packages/dev-frontend/src/components/CollateralSurplusAction.tsx index bc27c3992..eb17d355e 100644 --- a/packages/dev-frontend/src/components/CollateralSurplusAction.tsx +++ b/packages/dev-frontend/src/components/CollateralSurplusAction.tsx @@ -20,7 +20,7 @@ export const CollateralSurplusAction: React.FC<{ asset?: string }> = () => { return myTransactionState.type === "waitingForApproval" ? ( diff --git a/packages/dev-frontend/src/components/ColleteralCard/ColleteralCard.tsx b/packages/dev-frontend/src/components/ColleteralCard/ColleteralCard.tsx index 680b855d8..cffa1465c 100644 --- a/packages/dev-frontend/src/components/ColleteralCard/ColleteralCard.tsx +++ b/packages/dev-frontend/src/components/ColleteralCard/ColleteralCard.tsx @@ -1,6 +1,6 @@ import { Decimal, Trove } from "@kumodao/lib-base"; import React from "react"; -import { useHistory } from "react-router-dom"; +import { useNavigate } from "react-router-dom"; import { Flex, Progress, Box, Card, Text, Heading } from "theme-ui"; import { useTroveView } from "../Trove/context/TroveViewContext"; import { InfoIcon } from "../InfoIcon"; @@ -25,13 +25,13 @@ export const CollateralCard: React.FC = ({ kusdMintedCap }) => { const { dispatchEvent, view } = useTroveView(); - const history = useHistory(); + const navigate = useNavigate(); const handleClick = () => { if (view === "ADJUSTING") { dispatchEvent("CANCEL_ADJUST_TROVE_PRESSED"); } - history.push(`/dashboard/${collateralType}`); + navigate(`/dashboard/${collateralType}`); }; return ( handleClick()}> diff --git a/packages/dev-frontend/src/components/ConnectionConfirmationDialog.tsx b/packages/dev-frontend/src/components/ConnectionConfirmationDialog.tsx index 3b87f4ce1..47d363e77 100644 --- a/packages/dev-frontend/src/components/ConnectionConfirmationDialog.tsx +++ b/packages/dev-frontend/src/components/ConnectionConfirmationDialog.tsx @@ -1,9 +1,10 @@ -import React from "react"; +import React, { ReactNode } from "react"; import { Text, Box } from "theme-ui"; import { WaitingDialog } from "./WaitingDialog"; type ConnectionConfirmationDialogProps = { + children: ReactNode, title: string; icon?: React.ReactNode; onCancel: () => void; diff --git a/packages/dev-frontend/src/components/DashboardContent.tsx b/packages/dev-frontend/src/components/DashboardContent.tsx index 59ecc73cd..c9f5db934 100644 --- a/packages/dev-frontend/src/components/DashboardContent.tsx +++ b/packages/dev-frontend/src/components/DashboardContent.tsx @@ -1,7 +1,7 @@ -import React from "react"; +import React, { ReactNode } from "react"; import { Grid } from "theme-ui"; -export const DashboadContent: React.FC = ({ children }) => { +export const DashboadContent: React.FC<{ children: ReactNode }> = ({ children }) => { return ( { +export const DashboadHeader: React.FC<{ children: ReactNode }> = ({ children }) => { return {children}; }; diff --git a/packages/dev-frontend/src/components/DashboardHeaderItem.tsx b/packages/dev-frontend/src/components/DashboardHeaderItem.tsx index fd40a7f02..ff83f4a17 100644 --- a/packages/dev-frontend/src/components/DashboardHeaderItem.tsx +++ b/packages/dev-frontend/src/components/DashboardHeaderItem.tsx @@ -1,3 +1,4 @@ +import React from "react"; import { Box, Flex, Text } from "theme-ui"; type DashboadHeaderItemProps = React.ComponentProps & { diff --git a/packages/dev-frontend/src/components/Dialog.tsx b/packages/dev-frontend/src/components/Dialog.tsx index 6b9990cb4..0b37e53ec 100644 --- a/packages/dev-frontend/src/components/Dialog.tsx +++ b/packages/dev-frontend/src/components/Dialog.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import React, { ReactNode } from "react"; import { Heading, Flex, Card, Button, Box } from "theme-ui"; import { Icon } from "./Icon"; @@ -6,9 +6,10 @@ import { Icon } from "./Icon"; type DialogIntent = "success" | "warning" | "danger" | "info"; type DialogProps = { + children: ReactNode, intent?: DialogIntent; title: string; - icon?: React.ReactNode; + icon?: ReactNode; cancelLabel?: string; onCancel: () => void; }; diff --git a/packages/dev-frontend/src/components/ErrorDescription.tsx b/packages/dev-frontend/src/components/ErrorDescription.tsx index 6ac3d1959..33c278d95 100644 --- a/packages/dev-frontend/src/components/ErrorDescription.tsx +++ b/packages/dev-frontend/src/components/ErrorDescription.tsx @@ -1,8 +1,8 @@ +import React, { ReactNode } from "react"; import { Box, Flex, Text } from "theme-ui"; - import { Icon } from "./Icon"; -export const ErrorDescription: React.FC = ({ children }) => ( +export const ErrorDescription: React.FC<{ children: ReactNode }> = ({ children }) => ( { +export const FarmViewProvider: React.FC<{ children: ReactNode }> = props => { const { children } = props; const { liquidityMiningStake, diff --git a/packages/dev-frontend/src/components/Header.tsx b/packages/dev-frontend/src/components/Header.tsx index 8f6d001e0..68f03c225 100644 --- a/packages/dev-frontend/src/components/Header.tsx +++ b/packages/dev-frontend/src/components/Header.tsx @@ -1,9 +1,9 @@ -import React from "react"; +import React, {ReactNode} from "react"; import { Container } from "theme-ui"; import { SideNav } from "./SideNav"; -export const Header: React.FC = ({ children }) => { +export const Header: React.FC<{ children: ReactNode }> = ({ children }) => { return ( diff --git a/packages/dev-frontend/src/components/InfoIcon.tsx b/packages/dev-frontend/src/components/InfoIcon.tsx index 67cba20d3..c212b70d8 100644 --- a/packages/dev-frontend/src/components/InfoIcon.tsx +++ b/packages/dev-frontend/src/components/InfoIcon.tsx @@ -9,7 +9,7 @@ export type InfoIconProps = Pick & color?: string; }; -export const InfoIcon: React.FC = ({ placement = "right", tooltip, color = "#da357a", size = "1x" }) => { +export const InfoIcon: React.FC = ({ tooltip, color = "#da357a", size = "1x" }) => { return ( diff --git a/packages/dev-frontend/src/components/InfoMessage.tsx b/packages/dev-frontend/src/components/InfoMessage.tsx index 9016d1554..e2196a02f 100644 --- a/packages/dev-frontend/src/components/InfoMessage.tsx +++ b/packages/dev-frontend/src/components/InfoMessage.tsx @@ -1,13 +1,15 @@ +import React, { ReactNode } from "react"; import { Box, Flex, Text } from "theme-ui"; - import { Icon } from "./Icon"; + type InfoMessageProps = { + children: ReactNode, title: string; icon?: React.ReactNode; }; -export const InfoMessage: React.FC = ({ title, children, icon }) => ( +export const InfoMessage: React.FC = ({ children, title, icon }) => ( {icon || } diff --git a/packages/dev-frontend/src/components/KumoLogo.tsx b/packages/dev-frontend/src/components/KumoLogo.tsx index 5ff3ebd71..15ae6d3a3 100644 --- a/packages/dev-frontend/src/components/KumoLogo.tsx +++ b/packages/dev-frontend/src/components/KumoLogo.tsx @@ -1,5 +1,5 @@ import React from "react"; -import { useHistory } from "react-router-dom"; +import { useNavigate } from "react-router-dom"; import { Box, Image } from "theme-ui"; import kumoLogos from "../asset/images/kumoLogo.svg"; @@ -8,10 +8,10 @@ type KumoLogoProps = React.ComponentProps & { }; export const KumoLogo: React.FC = ({ height, ...boxProps }) => { - const history = useHistory(); + const navigate = useNavigate(); return ( - history.push("/dashboard")} /> + navigate("/dashboard")} /> ); }; diff --git a/packages/dev-frontend/src/components/Link.tsx b/packages/dev-frontend/src/components/Link.tsx index 6cdad8eb1..94c23aeec 100644 --- a/packages/dev-frontend/src/components/Link.tsx +++ b/packages/dev-frontend/src/components/Link.tsx @@ -1,7 +1,8 @@ +import React from "react"; import { NavLink as RouterLink, NavLinkProps as RouterLinkProps } from "react-router-dom"; import { NavLink as ThemeUINavLink, NavLinkProps as ThemeUILinkProps } from "theme-ui"; -type CombinedProps = ThemeUILinkProps & RouterLinkProps<{}>; +type CombinedProps = ThemeUILinkProps & RouterLinkProps; const ExactLink: React.FC = props => { return ; diff --git a/packages/dev-frontend/src/components/LoadingOverlay.tsx b/packages/dev-frontend/src/components/LoadingOverlay.tsx index c91a97f48..17a12d119 100644 --- a/packages/dev-frontend/src/components/LoadingOverlay.tsx +++ b/packages/dev-frontend/src/components/LoadingOverlay.tsx @@ -6,6 +6,6 @@ export const LoadingOverlay: React.FC = () => ( variant="disabledOverlay" sx={{ p: "14px", display: "flex", justifyContent: "flex-end" }} > - + ); diff --git a/packages/dev-frontend/src/components/MobWalletInstructions.tsx b/packages/dev-frontend/src/components/MobWalletInstructions.tsx index 75ad38f75..98c63594a 100644 --- a/packages/dev-frontend/src/components/MobWalletInstructions.tsx +++ b/packages/dev-frontend/src/components/MobWalletInstructions.tsx @@ -8,7 +8,7 @@ type SystemStatsProps = { showBalances?: boolean; }; -export const MobWalletInstructons: React.FC = ({ variant = "info", showBalances }) => { +export const MobWalletInstructons: React.FC = () => { const { systemTotalCollDebt } = useDashboard(); return ( diff --git a/packages/dev-frontend/src/components/Modal.tsx b/packages/dev-frontend/src/components/Modal.tsx index 0df7526fb..79bc41224 100644 --- a/packages/dev-frontend/src/components/Modal.tsx +++ b/packages/dev-frontend/src/components/Modal.tsx @@ -1,7 +1,7 @@ -import React from "react"; +import React, {ReactNode} from "react"; import { Container } from "theme-ui"; -export const Modal: React.FC = ({ children }) => ( +export const Modal: React.FC<{ children: ReactNode }> = ({ children }) => ( {children} diff --git a/packages/dev-frontend/src/components/Nav.tsx b/packages/dev-frontend/src/components/Nav.tsx index 42ab0ada5..52b34c14c 100644 --- a/packages/dev-frontend/src/components/Nav.tsx +++ b/packages/dev-frontend/src/components/Nav.tsx @@ -1,3 +1,4 @@ +import React from "react"; import { Flex, Box } from "theme-ui"; import { Link } from "./Link"; diff --git a/packages/dev-frontend/src/components/Redemption/DisabledRedemption.tsx b/packages/dev-frontend/src/components/Redemption/DisabledRedemption.tsx index 0d7543055..6b2944520 100644 --- a/packages/dev-frontend/src/components/Redemption/DisabledRedemption.tsx +++ b/packages/dev-frontend/src/components/Redemption/DisabledRedemption.tsx @@ -1,3 +1,4 @@ +import React from "react"; import { Box, Card, Heading, Paragraph, Text } from "theme-ui"; import { InfoMessage } from "../InfoMessage"; diff --git a/packages/dev-frontend/src/components/Redemption/Redemption.tsx b/packages/dev-frontend/src/components/Redemption/Redemption.tsx index 5325e4c56..4c7e43693 100644 --- a/packages/dev-frontend/src/components/Redemption/Redemption.tsx +++ b/packages/dev-frontend/src/components/Redemption/Redemption.tsx @@ -1,3 +1,4 @@ +import React from "react"; import { BlockPolledKumoStoreState } from "@kumodao/lib-ethers"; import { useKumoSelector } from "@kumodao/lib-react"; diff --git a/packages/dev-frontend/src/components/Redemption/RedemptionAction.tsx b/packages/dev-frontend/src/components/Redemption/RedemptionAction.tsx index 61e7e23b4..6b24a72cd 100644 --- a/packages/dev-frontend/src/components/Redemption/RedemptionAction.tsx +++ b/packages/dev-frontend/src/components/Redemption/RedemptionAction.tsx @@ -1,3 +1,4 @@ +import React from "react"; import { Button } from "theme-ui"; import { Decimal } from "@kumodao/lib-base"; diff --git a/packages/dev-frontend/src/components/Redemption/RedemptionManager.tsx b/packages/dev-frontend/src/components/Redemption/RedemptionManager.tsx index a22229bc3..03d8cb3dc 100644 --- a/packages/dev-frontend/src/components/Redemption/RedemptionManager.tsx +++ b/packages/dev-frontend/src/components/Redemption/RedemptionManager.tsx @@ -100,8 +100,7 @@ export const RedemptionManager: React.FC = () => { return ( - Redeem({assetName}) @@ -121,7 +120,7 @@ export const RedemptionManager: React.FC = () => { - + { Portfolio Staking Redemption - Stats + Stats Faucet diff --git a/packages/dev-frontend/src/components/Sidebar/Siderbar.tsx b/packages/dev-frontend/src/components/Sidebar/Siderbar.tsx index d2d04ea2e..e3574d383 100644 --- a/packages/dev-frontend/src/components/Sidebar/Siderbar.tsx +++ b/packages/dev-frontend/src/components/Sidebar/Siderbar.tsx @@ -13,7 +13,7 @@ export const Sidebar: React.FC = () => { Portfolio Staking Redemption - Stats + Stats Faucet diff --git a/packages/dev-frontend/src/components/Stability/NoDeposit.tsx b/packages/dev-frontend/src/components/Stability/NoDeposit.tsx index 981ee100c..0980f19bd 100644 --- a/packages/dev-frontend/src/components/Stability/NoDeposit.tsx +++ b/packages/dev-frontend/src/components/Stability/NoDeposit.tsx @@ -14,7 +14,7 @@ const select = ({ vaults }); -export const NoDeposit: React.FC = props => { +export const NoDeposit: React.FC = () => { const { vaults } = useKumoSelector(select); const { dispatchEvent } = useStabilityView(); const { collateralType } = useParams<{ collateralType: string }>(); diff --git a/packages/dev-frontend/src/components/Stability/StabilityDepositAction.tsx b/packages/dev-frontend/src/components/Stability/StabilityDepositAction.tsx index 9b3db9af6..b2c837343 100644 --- a/packages/dev-frontend/src/components/Stability/StabilityDepositAction.tsx +++ b/packages/dev-frontend/src/components/Stability/StabilityDepositAction.tsx @@ -1,10 +1,13 @@ +import React from "react"; import { Button } from "theme-ui"; import { Decimal, StabilityDepositChange } from "@kumodao/lib-base"; import { useKumo } from "../../hooks/KumoContext"; import { useTransactionFunction } from "../Transaction"; +import { ReactNode } from "react"; type StabilityDepositActionProps = { + children: ReactNode transactionId: string; change: StabilityDepositChange; asset: string, diff --git a/packages/dev-frontend/src/components/Stability/StabilityDepositEditor.tsx b/packages/dev-frontend/src/components/Stability/StabilityDepositEditor.tsx index f490930b6..37e1c3a56 100644 --- a/packages/dev-frontend/src/components/Stability/StabilityDepositEditor.tsx +++ b/packages/dev-frontend/src/components/Stability/StabilityDepositEditor.tsx @@ -1,4 +1,4 @@ -import React, { useState } from "react"; +import React, { ReactNode, useState } from "react"; import { useLocation, useParams } from "react-router-dom"; import { Heading, Box, Card, Button, Text } from "theme-ui"; @@ -28,6 +28,7 @@ const select = ({ vaults, kusdBalance }: KumoStoreState) => ({ }); type StabilityDepositEditorProps = { + children: ReactNode, originalDeposit: StabilityDeposit; editedKUSD: Decimal; changePending: boolean; diff --git a/packages/dev-frontend/src/components/Stability/StabilityDepositManager.tsx b/packages/dev-frontend/src/components/Stability/StabilityDepositManager.tsx index 906a1d11a..6129a3ec0 100644 --- a/packages/dev-frontend/src/components/Stability/StabilityDepositManager.tsx +++ b/packages/dev-frontend/src/components/Stability/StabilityDepositManager.tsx @@ -96,7 +96,7 @@ const select = ({ vaults, kusdBalance }: KumoStoreState) => ({ }); export const StabilityDepositManager: React.FC = () => { - const { collateralType } = useParams<{ collateralType: string }>(); + const { collateralType = "nbc" || "csc" } = useParams<{ collateralType: string }>(); const { vaults, kusdBalance } = useKumoSelector(select); const vault = vaults.find(vault => vault.asset === collateralType) ?? new Vault(); const { stabilityDeposit, trove, haveUndercollateralizedTroves } = vault; diff --git a/packages/dev-frontend/src/components/Stability/actions/ClaimAndMove.tsx b/packages/dev-frontend/src/components/Stability/actions/ClaimAndMove.tsx index 20e0393d9..9621bf93a 100644 --- a/packages/dev-frontend/src/components/Stability/actions/ClaimAndMove.tsx +++ b/packages/dev-frontend/src/components/Stability/actions/ClaimAndMove.tsx @@ -1,9 +1,10 @@ -import React from "react"; +import React, { ReactNode } from "react"; import { Button } from "theme-ui"; import { useKumo } from "../../../hooks/KumoContext"; import { useTransactionFunction } from "../../Transaction"; type ClaimAndMoveProps = { + children: ReactNode, disabled?: boolean; asset: string; assetName: string; diff --git a/packages/dev-frontend/src/components/Stability/actions/ClaimRewards.tsx b/packages/dev-frontend/src/components/Stability/actions/ClaimRewards.tsx index 7fc1a3c04..b79794463 100644 --- a/packages/dev-frontend/src/components/Stability/actions/ClaimRewards.tsx +++ b/packages/dev-frontend/src/components/Stability/actions/ClaimRewards.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import React, { ReactNode } from "react"; import { useParams } from "react-router-dom"; import { Button } from "theme-ui"; @@ -6,24 +6,27 @@ import { useKumo } from "../../../hooks/KumoContext"; import { useTransactionFunction } from "../../Transaction"; type ClaimRewardsProps = { + children: ReactNode, disabled?: boolean; }; export const ClaimRewards: React.FC = ({ disabled, children }) => { const { kumo } = useKumo(); - const { collateralType } = useParams<{ collateralType: string }>(); + const { collateralType = "nbc" || "csc"} = useParams<{ collateralType: string }>(); - const [sendTransaction] = useTransactionFunction( - "stability-deposit", - kumo.send.withdrawGainsFromStabilityPool.bind(kumo.send, collateralType) - ); + + const [sendTransaction] = useTransactionFunction( + "stability-deposit", + kumo.send.withdrawGainsFromStabilityPool.bind(kumo.send, collateralType) + ); + return ( diff --git a/packages/dev-frontend/src/components/Stability/context/StabilityViewProvider.tsx b/packages/dev-frontend/src/components/Stability/context/StabilityViewProvider.tsx index 80de4f9d5..b4e11e82d 100644 --- a/packages/dev-frontend/src/components/Stability/context/StabilityViewProvider.tsx +++ b/packages/dev-frontend/src/components/Stability/context/StabilityViewProvider.tsx @@ -1,4 +1,4 @@ -import React, { useState, useCallback, useEffect, useRef } from "react"; +import React, { useState, useCallback, useEffect, useRef, ReactNode } from "react"; import { useLocation } from "react-router-dom"; import { useKumoSelector } from "@kumodao/lib-react"; import { KumoStoreState, StabilityDeposit } from "@kumodao/lib-base"; @@ -47,8 +47,7 @@ const select = ({ vaults }: KumoStoreState) => ({ vaults }); -export const StabilityViewProvider: React.FC = props => { - const { children } = props; +export const StabilityViewProvider: React.FC<{children: ReactNode}> = ({ children }) => { const { vaults } = useKumoSelector(select); const location = useLocation(); diff --git a/packages/dev-frontend/src/components/Stability/validation/validateStabilityDepositChange.tsx b/packages/dev-frontend/src/components/Stability/validation/validateStabilityDepositChange.tsx index 8830e902d..dce20f97a 100644 --- a/packages/dev-frontend/src/components/Stability/validation/validateStabilityDepositChange.tsx +++ b/packages/dev-frontend/src/components/Stability/validation/validateStabilityDepositChange.tsx @@ -1,3 +1,4 @@ +import React from "react"; import { Decimal, StabilityDeposit, diff --git a/packages/dev-frontend/src/components/StabilityPoolStakingCard/StabilityPoolStakingCard.tsx b/packages/dev-frontend/src/components/StabilityPoolStakingCard/StabilityPoolStakingCard.tsx index 9b6e46287..ecb6a0f83 100644 --- a/packages/dev-frontend/src/components/StabilityPoolStakingCard/StabilityPoolStakingCard.tsx +++ b/packages/dev-frontend/src/components/StabilityPoolStakingCard/StabilityPoolStakingCard.tsx @@ -1,5 +1,5 @@ import React from "react"; -import { useHistory } from "react-router-dom"; +import { useNavigate } from "react-router-dom"; import { Box, Card, Heading, Text } from "theme-ui"; import stabilityPoolStaking from "../../asset/images/stability_pool_gradient.png"; import stabilityMiningGradient from "../../asset/images/liquidity_mining_gradient.png"; @@ -15,7 +15,7 @@ export const StabilityPoolStakingCard: React.FC = ({ description, stakingType }) => { - const history = useHistory(); + const navigate = useNavigate(); const getStakingImg = (sType: string) => { if (sType === "stability") { @@ -25,7 +25,7 @@ export const StabilityPoolStakingCard: React.FC = ({ } }; return ( - history.push(`/staking/${stakingType}`)}> + navigate(`/staking/${stakingType}`)}> ({ }); type StakingEditorProps = { + children: ReactNode, title: string; originalStake: KUMOStake; editedKUMO: Decimal; diff --git a/packages/dev-frontend/src/components/Staking/StakingGainsAction.tsx b/packages/dev-frontend/src/components/Staking/StakingGainsAction.tsx index 647b885c4..f20594bea 100644 --- a/packages/dev-frontend/src/components/Staking/StakingGainsAction.tsx +++ b/packages/dev-frontend/src/components/Staking/StakingGainsAction.tsx @@ -1,3 +1,4 @@ +import React from "react"; import { Button } from "theme-ui"; import { KumoStoreState } from "@kumodao/lib-base"; diff --git a/packages/dev-frontend/src/components/Staking/StakingManager.tsx b/packages/dev-frontend/src/components/Staking/StakingManager.tsx index b96a8d6a5..d2f2e3beb 100644 --- a/packages/dev-frontend/src/components/Staking/StakingManager.tsx +++ b/packages/dev-frontend/src/components/Staking/StakingManager.tsx @@ -12,10 +12,8 @@ import { StakingEditor } from "./StakingEditor"; import { StakingManagerAction } from "./StakingManagerAction"; import { ActionDescription, Amount } from "../ActionDescription"; import { ErrorDescription } from "../ErrorDescription"; -import { useLocation } from "react-router-dom"; const init = ({ kumoStake }: KumoStoreState) => { - const location = useLocation(); return { originalStake: kumoStake, editedKUMO: kumoStake.stakedKUMO diff --git a/packages/dev-frontend/src/components/Staking/StakingManagerAction.tsx b/packages/dev-frontend/src/components/Staking/StakingManagerAction.tsx index 81a283f76..fde17cd1e 100644 --- a/packages/dev-frontend/src/components/Staking/StakingManagerAction.tsx +++ b/packages/dev-frontend/src/components/Staking/StakingManagerAction.tsx @@ -1,3 +1,4 @@ +import React, { ReactNode } from "react"; import { Button } from "theme-ui"; import { Decimal, KUMOStakeChange } from "@kumodao/lib-base"; @@ -6,6 +7,7 @@ import { useKumo } from "../../hooks/KumoContext"; import { useTransactionFunction } from "../Transaction"; type StakingActionProps = { + children: ReactNode, change: KUMOStakeChange; }; diff --git a/packages/dev-frontend/src/components/Staking/context/StakingViewProvider.tsx b/packages/dev-frontend/src/components/Staking/context/StakingViewProvider.tsx index 2ded18b9a..41c0a6d2d 100644 --- a/packages/dev-frontend/src/components/Staking/context/StakingViewProvider.tsx +++ b/packages/dev-frontend/src/components/Staking/context/StakingViewProvider.tsx @@ -1,4 +1,4 @@ -import { useEffect } from "react"; +import React, { ReactNode, useEffect } from "react"; import { KumoStoreState, KUMOStake } from "@kumodao/lib-base"; import { KumoStoreUpdate, useKumoReducer } from "@kumodao/lib-react"; @@ -69,7 +69,7 @@ const reduce = ( return state; }; -export const StakingViewProvider: React.FC = ({ children }) => { +export const StakingViewProvider: React.FC<{children: ReactNode}> = ({ children }) => { const stakingTransactionState = useMyTransactionState("stake"); const [{ adjusting, changePending, kumoStake }, dispatch] = useKumoReducer(reduce, init); diff --git a/packages/dev-frontend/src/components/StakingDialog.tsx b/packages/dev-frontend/src/components/StakingDialog.tsx index 0a0faf3b2..0c2f8015d 100644 --- a/packages/dev-frontend/src/components/StakingDialog.tsx +++ b/packages/dev-frontend/src/components/StakingDialog.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import React, { ReactNode } from "react"; import { Heading, Flex, Card, Button, Box } from "theme-ui"; import { Stability } from "../components/Stability/Stability"; @@ -7,6 +7,7 @@ import { Icon } from "./Icon"; type DialogIntent = "success" | "warning" | "danger" | "info"; type DialogProps = { + children: ReactNode, intent?: DialogIntent; title: string; icon?: React.ReactNode; @@ -33,8 +34,7 @@ export const StakingDialog: React.FC = ({ title, icon, cancelLabel, - onClose, - children + onClose }) => ( {intent ? : null} diff --git a/packages/dev-frontend/src/components/Statistic.tsx b/packages/dev-frontend/src/components/Statistic.tsx index f58d52b80..c2214e017 100644 --- a/packages/dev-frontend/src/components/Statistic.tsx +++ b/packages/dev-frontend/src/components/Statistic.tsx @@ -1,8 +1,9 @@ -import React from "react"; +import React, { ReactNode } from "react"; import { Flex, Card } from "theme-ui"; import { InfoIcon } from "./InfoIcon"; type StatisticProps = { + children: ReactNode, name: React.ReactNode; tooltip?: React.ReactNode; }; diff --git a/packages/dev-frontend/src/components/SwitchNetwork/SwitchNetwork.tsx b/packages/dev-frontend/src/components/SwitchNetwork/SwitchNetwork.tsx index a2d02c275..de7dc0229 100644 --- a/packages/dev-frontend/src/components/SwitchNetwork/SwitchNetwork.tsx +++ b/packages/dev-frontend/src/components/SwitchNetwork/SwitchNetwork.tsx @@ -1,3 +1,4 @@ +import React from "react"; import { useSwitchNetwork } from "../../hooks/useSwitchNetwork"; import { useSwitchNetworkView } from "./context/SwitchNetworkViewContext"; diff --git a/packages/dev-frontend/src/components/SwitchNetwork/context/SwitchNetworkViewProvider.tsx b/packages/dev-frontend/src/components/SwitchNetwork/context/SwitchNetworkViewProvider.tsx index 9a30c0b06..bfd982f22 100644 --- a/packages/dev-frontend/src/components/SwitchNetwork/context/SwitchNetworkViewProvider.tsx +++ b/packages/dev-frontend/src/components/SwitchNetwork/context/SwitchNetworkViewProvider.tsx @@ -1,4 +1,4 @@ -import React, { useState, useCallback, useEffect, useRef } from "react"; +import React, { useState, useCallback, useEffect, useRef, ReactNode } from "react"; import { SwitchNetworkViewContext } from "./SwitchNetworkViewContext"; import type { SwitchNetworkView, SwitchNetworkEvent } from "./types"; @@ -19,9 +19,7 @@ const transition = (view: SwitchNetworkView, event: SwitchNetworkEvent): SwitchN }; -export const SwitchNetworkViewProvider: React.FC = props => { - const { children } = props; - +export const SwitchNetworkViewProvider: React.FC<{ children: ReactNode }> = ({ children }) => { const [view, setView] = useState("NONE"); const [showSwitchModal, setShowSwitchModal] = useState(false) const viewRef = useRef(view); diff --git a/packages/dev-frontend/src/components/SystemStats.tsx b/packages/dev-frontend/src/components/SystemStats.tsx index 7d4ccb64c..07245ab98 100644 --- a/packages/dev-frontend/src/components/SystemStats.tsx +++ b/packages/dev-frontend/src/components/SystemStats.tsx @@ -38,7 +38,7 @@ type SystemStatsProps = { onClose: (event: React.MouseEvent) => void; }; -export const SystemStats: React.FC = ({ variant = "info", showBalances, onClose }) => { +export const SystemStats: React.FC = ({ showBalances, onClose }) => { const { systemTotalCollDebt } = useDashboard(); return ( diff --git a/packages/dev-frontend/src/components/Transaction.tsx b/packages/dev-frontend/src/components/Transaction.tsx index b8cf99b76..1c587403d 100644 --- a/packages/dev-frontend/src/components/Transaction.tsx +++ b/packages/dev-frontend/src/components/Transaction.tsx @@ -1,4 +1,4 @@ -import React, { useState, useContext, useEffect, useCallback } from "react"; +import React, { useState, useContext, useEffect, useCallback, ReactNode } from "react"; import { Flex, Text, Box } from "theme-ui"; import { Provider, TransactionResponse, TransactionReceipt } from "@ethersproject/abstract-provider"; import { hexDataSlice, hexDataLength } from "@ethersproject/bytes"; @@ -88,7 +88,7 @@ const TransactionContext = React.createContext< [TransactionState, (state: TransactionState) => void] | undefined >(undefined); -export const TransactionProvider: React.FC = ({ children }) => { +export const TransactionProvider: React.FC<{ children: ReactNode }> = ({ children }) => { const transactionState = useState({ type: "idle" }); return ( {children} diff --git a/packages/dev-frontend/src/components/Trove/Adjusting.tsx b/packages/dev-frontend/src/components/Trove/Adjusting.tsx index 88c4b786d..acc89e2bc 100644 --- a/packages/dev-frontend/src/components/Trove/Adjusting.tsx +++ b/packages/dev-frontend/src/components/Trove/Adjusting.tsx @@ -73,7 +73,7 @@ const applyUnsavedNetDebtChanges = (unsavedChanges: Difference, trove: Trove) => export const Adjusting: React.FC = () => { const { dispatchEvent } = useTroveView(); - const { collateralType } = useParams<{ collateralType: string }>(); + const { collateralType = "nbc" || "csc" } = useParams<{ collateralType: string }>(); const { vault, price, trove, accountBalance, fees, validationContext } = useKumoSelector( (state: KumoStoreState) => { const { vaults, kusdBalance } = state; diff --git a/packages/dev-frontend/src/components/Trove/Editor.tsx b/packages/dev-frontend/src/components/Trove/Editor.tsx index ddccf2015..06af7dd2b 100644 --- a/packages/dev-frontend/src/components/Trove/Editor.tsx +++ b/packages/dev-frontend/src/components/Trove/Editor.tsx @@ -1,9 +1,10 @@ -import React, { useState } from "react"; +import React, { ReactNode, useState } from "react"; import { Text, Flex, Label, Input, SxProp, Box, Button, ThemeUICSSProperties } from "theme-ui"; import { Decimal } from "@kumodao/lib-base"; import { Icon } from "../Icon"; type RowProps = SxProp & { + children?: ReactNode, label: string; labelId?: string; labelFor?: string; @@ -96,6 +97,7 @@ const PendingAmount: React.FC = ({ sx, value }) => ); type StaticAmountsProps = { + children?: ReactNode, inputId: string; labelledBy?: string; amount: string; diff --git a/packages/dev-frontend/src/components/Trove/NoTrove.tsx b/packages/dev-frontend/src/components/Trove/NoTrove.tsx index b4b5230ca..0eef9b678 100644 --- a/packages/dev-frontend/src/components/Trove/NoTrove.tsx +++ b/packages/dev-frontend/src/components/Trove/NoTrove.tsx @@ -15,7 +15,7 @@ const select = ({ vaults }); -export const NoTrove: React.FC = props => { +export const NoTrove: React.FC = () => { const { vaults } = useKumoSelector(select); const { dispatchEvent } = useTroveView(); diff --git a/packages/dev-frontend/src/components/Trove/Opening.tsx b/packages/dev-frontend/src/components/Trove/Opening.tsx index b4a5721d9..4ec486f8a 100644 --- a/packages/dev-frontend/src/components/Trove/Opening.tsx +++ b/packages/dev-frontend/src/components/Trove/Opening.tsx @@ -34,7 +34,7 @@ const GAS_ROOM_ETH = Decimal.from(0.1); export const Opening: React.FC = () => { const { dispatchEvent } = useTroveView(); - const { collateralType } = useParams<{ collateralType: string }>(); + const { collateralType = "nbc" || "csc" } = useParams<{ collateralType: string }>(); const { accountBalance, fees, price, total, kusdMintedCap, assetName, validationContext } = useKumoSelector((state: KumoStoreState) => { const { vaults, kusdBalance } = state; @@ -235,7 +235,7 @@ export const Opening: React.FC = () => { {gasEstimationState.type === "inProgress" ? ( ) : (stableTroveChange && !isMintCapReached) ? ( = ({ vault = new Vault() }) => { - const history = useHistory() + const navigate = useNavigate() const { trove } = vault; const price = vault?.price @@ -16,7 +16,7 @@ export const PortfolioTrove: React.FC<{ vault: Vault }> = ({ vault = new Vault() // console.log("READONLY TROVE", trove.collateral.prettify(4)); return ( - history.push(`/dashboard/${vault?.asset}`)}> + navigate(`/dashboard/${vault?.asset}`)}> {vault?.asset.toUpperCase()} Vault ({vault.assetName}) diff --git a/packages/dev-frontend/src/components/Trove/TroveAction.tsx b/packages/dev-frontend/src/components/Trove/TroveAction.tsx index 5967784c5..d6ecb8367 100644 --- a/packages/dev-frontend/src/components/Trove/TroveAction.tsx +++ b/packages/dev-frontend/src/components/Trove/TroveAction.tsx @@ -1,3 +1,4 @@ +import React, { ReactNode } from "react"; import { Button } from "theme-ui"; import { Decimal, TroveChange } from "@kumodao/lib-base"; @@ -6,6 +7,7 @@ import { useKumo } from "../../hooks/KumoContext"; import { useTransactionFunction } from "../Transaction"; type TroveActionProps = { + children: ReactNode, transactionId: string; change: Exclude, { type: "invalidCreation" }>; asset: string; diff --git a/packages/dev-frontend/src/components/Trove/TroveEditor.tsx b/packages/dev-frontend/src/components/Trove/TroveEditor.tsx index 4a1449436..62d5f0061 100644 --- a/packages/dev-frontend/src/components/Trove/TroveEditor.tsx +++ b/packages/dev-frontend/src/components/Trove/TroveEditor.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import React, { ReactNode } from "react"; import { Heading, Box, Card, Text } from "theme-ui"; import { @@ -21,6 +21,7 @@ import { InfoIcon } from "../InfoIcon"; import { useParams } from "react-router-dom"; type TroveEditorProps = { + children: ReactNode, original: Trove; edited: Trove; fee: Decimal; diff --git a/packages/dev-frontend/src/components/Trove/TroveManager.tsx b/packages/dev-frontend/src/components/Trove/TroveManager.tsx index eb8d5f4f2..de8313dbc 100644 --- a/packages/dev-frontend/src/components/Trove/TroveManager.tsx +++ b/packages/dev-frontend/src/components/Trove/TroveManager.tsx @@ -1,4 +1,4 @@ -import { useCallback, useEffect } from "react"; +import React, { useCallback, useEffect } from "react"; import { useParams } from "react-router-dom"; import { Flex, Button } from "theme-ui"; @@ -165,7 +165,7 @@ type TroveManagerProps = { }; export const TroveManager: React.FC = ({ collateral, debt }) => { - const { collateralType } = useParams<{ collateralType: string }>(); + const { collateralType = "nbc" || "csc"} = useParams<{ collateralType: string }>(); const assetTokenAddress = ASSET_TOKENS[collateralType].assetAddress; const [{ original, edited, changePending }, dispatch] = useKumoReducer( reduce, diff --git a/packages/dev-frontend/src/components/Trove/context/TroveViewProvider.tsx b/packages/dev-frontend/src/components/Trove/context/TroveViewProvider.tsx index d77d5fdfa..7f29cedf0 100644 --- a/packages/dev-frontend/src/components/Trove/context/TroveViewProvider.tsx +++ b/packages/dev-frontend/src/components/Trove/context/TroveViewProvider.tsx @@ -1,4 +1,4 @@ -import React, { useState, useCallback, useEffect, useRef } from "react"; +import React, { useState, useCallback, useEffect, useRef, ReactNode } from "react"; import { useLocation } from "react-router-dom"; import { KumoStoreState, UserTroveStatus, Vault } from "@kumodao/lib-base"; @@ -85,8 +85,7 @@ const select = ({ vaults }: KumoStoreState) => ({ vaults }); -export const TroveViewProvider: React.FC = props => { - const { children } = props; +export const TroveViewProvider: React.FC<{ children: ReactNode }> = ({ children }) => { const { vaults } = useKumoSelector(select); const location = useLocation(); diff --git a/packages/dev-frontend/src/components/Trove/validation/validateTroveChange.tsx b/packages/dev-frontend/src/components/Trove/validation/validateTroveChange.tsx index 130a5aace..5618a78ea 100644 --- a/packages/dev-frontend/src/components/Trove/validation/validateTroveChange.tsx +++ b/packages/dev-frontend/src/components/Trove/validation/validateTroveChange.tsx @@ -1,3 +1,4 @@ +import React from "react"; import { Decimal, KUSD_MINIMUM_DEBT, diff --git a/packages/dev-frontend/src/components/UserAccount.tsx b/packages/dev-frontend/src/components/UserAccount.tsx index dc9c4e5eb..7d9cae24b 100644 --- a/packages/dev-frontend/src/components/UserAccount.tsx +++ b/packages/dev-frontend/src/components/UserAccount.tsx @@ -1,5 +1,5 @@ import React, { useEffect } from "react"; -import { useHistory } from "react-router-dom"; +import { useNavigate } from "react-router-dom"; import { Flex, Box, Button } from "theme-ui"; import { useWalletView } from "../components/WalletConnect/context/WalletViewContext"; import { useAddAssetModal } from "../components/AddAssetToken/context/AssetViewContext" @@ -31,7 +31,7 @@ export const UserAccount: React.FC = () => { const { showAddAssetModal } = useAddAssetModal() const { showSwitchModal } = useSwitchNetworkView(); const { account } = useWeb3React(); - const history = useHistory() + const navigate = useNavigate() useEffect(() => { if (!active) { @@ -73,7 +73,7 @@ export const UserAccount: React.FC = () => { <>