diff --git a/.lintstagedrc.js b/.lintstagedrc.js index a24c0ca4..18d979e7 100644 --- a/.lintstagedrc.js +++ b/.lintstagedrc.js @@ -1,9 +1,9 @@ const path = require("path"); const buildAppsEslintCommand = (filenames) => - `npm run lint -w apps -- --fix --file ${filenames.map((f) => path.relative("packages/apps", f)).join(" --file ")}`; + `npm run lint -- --fix --file ${filenames.map((f) => path.relative("./", f)).join(" --file ")}`; module.exports = { - "packages/apps/src/**/*.{js,jsx,ts,tsx}": [buildAppsEslintCommand], + "src/**/*.{js,jsx,ts,tsx}": [buildAppsEslintCommand], "**/*.{js,jsx,ts,tsx,json}": "prettier --write", }; diff --git a/src/app/relayer/page.tsx b/src/app/relayer/page.tsx index 9299eaab..eea458b9 100644 --- a/src/app/relayer/page.tsx +++ b/src/app/relayer/page.tsx @@ -9,7 +9,7 @@ import RelayerProviderV3 from "@/providers/relayer-provider-v3"; import PageWrap from "@/ui/page-wrap"; import SegmentedTabs from "@/ui/segmented-tabs"; import VersionSwitch from "@/components/version-switch"; -import { useState } from "react"; +import { useCallback, useState } from "react"; type TabKey = "manage" | "register" | "overview"; @@ -17,6 +17,8 @@ export default function RelayerPage() { const [activeTab, setActiveTab] = useState("manage"); const [version, setVersion] = useState<"v2" | "v3">("v3"); + const handleManage = useCallback(() => setActiveTab("manage"), []); + return (
@@ -46,11 +48,11 @@ export default function RelayerPage() { children: version === "v3" ? ( - + ) : ( - + ), }, diff --git a/src/components/balance-input.tsx b/src/components/balance-input.tsx index bc924255..9c43bf63 100644 --- a/src/components/balance-input.tsx +++ b/src/components/balance-input.tsx @@ -1,8 +1,7 @@ import { InputValue, Token } from "@/types"; import Input from "@/ui/input"; import InputAlert from "@/ui/input-alert"; -import { formatBalance, getTokenLogoSrc } from "@/utils"; -import Image from "next/image"; +import { formatBalance } from "@/utils"; import { ChangeEventHandler, useCallback, useEffect, useMemo, useRef, useState } from "react"; import { parseUnits } from "viem"; @@ -13,52 +12,34 @@ enum ErrorCode { } interface Props { - placeholder?: string; - balance?: bigint; max?: bigint; min?: bigint; - compact?: boolean; - autoFocus?: boolean; disabled?: boolean; - suffix?: "symbol"; - enabledDynamicStyle?: boolean; + balance?: bigint; + placeholder?: string; value: InputValue; token: Token | undefined; - tokenOptions?: Token[]; - balanceLoading?: boolean; - onBalanceRefresh?: () => void; onChange?: (value: InputValue) => void; - onTokenChange?: (token: Token) => void; } export function BalanceInput({ - placeholder, - balance, max, min, - compact, - autoFocus, + balance, disabled, - suffix, - enabledDynamicStyle, + placeholder, value, token, - balanceLoading, - tokenOptions = [], - onBalanceRefresh = () => undefined, onChange = () => undefined, - onTokenChange = () => undefined, }: Props) { - const spanRef = useRef(null); const inputRef = useRef(null); const balanceRef = useRef(balance); const tokenRef = useRef(token); - const [dynamicStyle, setDynamicStyle] = useState("text-sm font-medium"); const [errorCode, setErrorCode] = useState(); const _placeholder = useMemo(() => { - if (token && compact) { + if (token?.decimals) { if (max !== undefined) { return `Max ${formatBalance(max, token.decimals)}`; } else if (balance !== undefined) { @@ -66,7 +47,7 @@ export function BalanceInput({ } } return placeholder ?? "Enter an amount"; - }, [balance, max, placeholder, token, compact]); + }, [balance, max, placeholder, token?.decimals]); const handleChange = useCallback>( (e) => { @@ -121,93 +102,25 @@ export function BalanceInput({ } }, [token, onChange]); - useEffect(() => { - if (enabledDynamicStyle) { - const inputWidth = inputRef.current?.clientWidth || 1; - const spanWidth = spanRef.current?.clientWidth || 0; - const percent = (spanWidth / inputWidth) * 100; - if (percent < 10) { - setDynamicStyle("text-[3.75rem] font-extralight"); - } else if (percent < 20) { - setDynamicStyle("text-[3rem] font-light"); - } else if (percent < 30) { - setDynamicStyle("text-[2.25rem] font-light"); - } else if (percent < 40) { - setDynamicStyle("text-[1.875rem] font-normal"); - } else if (percent < 50) { - setDynamicStyle("text-[1.5rem] font-normal"); - } else if (percent < 60) { - setDynamicStyle("text-[1.25rem] font-medium"); - } else { - setDynamicStyle("text-[1.125rem] font-medium"); - } - } - }, [value.input, enabledDynamicStyle]); - return (
-
+
- {compact ? ( - suffix === "symbol" && token ? ( - {token.symbol} - ) : null - ) : ( -
- {token ? ( -
- Token - {token.symbol} -
- ) : null} - {tokenOptions - .filter((t) => t.symbol !== token?.symbol) - .map((t) => ( - Token onTokenChange(t)} - /> - ))} -
- )} + {token ? {token.symbol} : null}
- {!compact && token ? ( -
- - Balance: {formatBalance(balance ?? 0n, token.decimals)} - - -
- ) : null} - {errorCode === ErrorCode.INSUFFICIENT ? ( ) : errorCode === ErrorCode.REQUIRE_LESS ? ( @@ -215,10 +128,6 @@ export function BalanceInput({ ) : errorCode === ErrorCode.REQUIRE_MORE ? ( ) : null} - - - {value.input} -
); } diff --git a/src/components/chain-select.tsx b/src/components/chain-select.tsx index a89a209a..1d24ecd8 100644 --- a/src/components/chain-select.tsx +++ b/src/components/chain-select.tsx @@ -1,15 +1,12 @@ import { ChainConfig } from "@/types"; import Select from "@/ui/select"; import { getChainLogoSrc } from "@/utils"; -import { Placement } from "@floating-ui/react"; import Image from "next/image"; interface Props { options?: ChainConfig[]; value?: ChainConfig; placeholder?: string; - compact?: boolean; - placement?: Placement; className?: string; onChange?: (value: ChainConfig | undefined) => void; } @@ -17,84 +14,56 @@ interface Props { export default function ChainSelect({ value, placeholder, - compact, - placement, className, options = [], onChange = () => undefined, }: Props) { return ( diff --git a/src/components/fee-rate-input.tsx b/src/components/fee-rate-input.tsx index 5fe52e91..f6244e61 100644 --- a/src/components/fee-rate-input.tsx +++ b/src/components/fee-rate-input.tsx @@ -8,10 +8,11 @@ interface Props { isV3?: boolean; placeholder?: string; value: InputValue; + className?: string; onChange?: (value: InputValue) => void; } -export default function FeeRateInput({ isV3, placeholder, value, onChange = () => undefined }: Props) { +export default function FeeRateInput({ isV3, placeholder, value, className, onChange = () => undefined }: Props) { const handleChange = useCallback>( (e) => { const input = e.target.value; @@ -32,17 +33,17 @@ export default function FeeRateInput({ isV3, placeholder, value, onChange = () = return (
- % + % {value.valid ? null : }
diff --git a/src/components/lnrelayers-overview.tsx b/src/components/lnrelayers-overview.tsx index 3119f40e..e926099b 100644 --- a/src/components/lnrelayers-overview.tsx +++ b/src/components/lnrelayers-overview.tsx @@ -71,7 +71,7 @@ export default function LnRelayersOverview({ bridgeVersion }: Props) {
From { @@ -79,21 +79,19 @@ export default function LnRelayersOverview({ bridgeVersion }: Props) { setTargetChain(undefined); setCurrentPage(0); }} - compact value={sourceChain} />
To { setTargetChain(value); setCurrentPage(0); }} - compact value={targetChain} />
diff --git a/src/components/modals/relayer-manage-modal.tsx b/src/components/modals/relayer-manage-modal.tsx index 09a0bc31..ed5bba3d 100644 --- a/src/components/modals/relayer-manage-modal.tsx +++ b/src/components/modals/relayer-manage-modal.tsx @@ -314,7 +314,7 @@ export default function RelayerManageModal({ relayerInfo, isOpen, onClose, onSuc extra={ activeKey === "withdraw" ? (
- + {relayerInfo?.messageChannel === "layerzero" ? "Powered by LayerZero & Helix" : "Powered by Msgport & Helix"} @@ -334,17 +334,12 @@ export default function RelayerManageModal({ relayerInfo, isOpen, onClose, onSuc children: (
- + @@ -372,8 +367,6 @@ export default function RelayerManageModal({ relayerInfo, isOpen, onClose, onSuc ? sourceBalance?.token : undefined } - compact - suffix="symbol" value={depositAmount} onChange={setDepositAmount} /> @@ -387,7 +380,7 @@ export default function RelayerManageModal({ relayerInfo, isOpen, onClose, onSuc Withdraw Info @@ -400,15 +393,13 @@ export default function RelayerManageModal({ relayerInfo, isOpen, onClose, onSuc
@@ -416,10 +407,10 @@ export default function RelayerManageModal({ relayerInfo, isOpen, onClose, onSuc ) : withdrawFeeParams ? ( <> - + {formatBalance(withdrawFeeParams.value, withdrawFeeParams.token.decimals, { precision: 6 })} - {withdrawFeeParams.token.symbol} + {withdrawFeeParams.token.symbol} ) : ( @@ -439,8 +430,6 @@ export default function RelayerManageModal({ relayerInfo, isOpen, onClose, onSuc
- {label} + {label} {tips ? ( Info diff --git a/src/components/modals/relayer-manage-v3-modal.tsx b/src/components/modals/relayer-manage-v3-modal.tsx index 75274da1..9dbd6ce2 100644 --- a/src/components/modals/relayer-manage-v3-modal.tsx +++ b/src/components/modals/relayer-manage-v3-modal.tsx @@ -225,6 +225,7 @@ export default function RelayerManageV3Modal({ relayerInfo, isOpen, onClose, onS withdrawPenaltyReserve, withdrawLiquidity, refetchWithdrawableLiquidities, + sourceApprove, targetApprove, ]); @@ -280,30 +281,19 @@ export default function RelayerManageV3Modal({ relayerInfo, isOpen, onClose, onS children: (
), @@ -314,10 +304,8 @@ export default function RelayerManageV3Modal({ relayerInfo, isOpen, onClose, onS children: (