diff --git a/apps/cowswap-frontend/src/locales/en-US.po b/apps/cowswap-frontend/src/locales/en-US.po
index 1b8114080ba..d7b30a8f98d 100644
--- a/apps/cowswap-frontend/src/locales/en-US.po
+++ b/apps/cowswap-frontend/src/locales/en-US.po
@@ -5626,6 +5626,10 @@ msgstr "Order cannot be filled due to insufficient balance on the current accoun
msgid "required"
msgstr "required"
+#: apps/cowswap-frontend/src/modules/tradeFormValidation/pure/TradeFormButtons/tradeButtonsMap.tsx
+msgid "Fetching balances"
+msgstr "Fetching balances"
+
#: apps/cowswap-frontend/src/modules/wallet/pure/Web3StatusInner/index.tsx
msgid "Wallet"
msgstr "Wallet"
diff --git a/apps/cowswap-frontend/src/modules/application/containers/App/Updaters.tsx b/apps/cowswap-frontend/src/modules/application/containers/App/Updaters.tsx
index 88dd697c77a..5ecf350f139 100644
--- a/apps/cowswap-frontend/src/modules/application/containers/App/Updaters.tsx
+++ b/apps/cowswap-frontend/src/modules/application/containers/App/Updaters.tsx
@@ -20,6 +20,7 @@ import { TradingSdkUpdater } from 'tradingSdk/TradingSdkUpdater'
import { UploadToIpfsUpdater } from 'modules/appData/updater/UploadToIpfsUpdater'
import { CommonPriorityBalancesAndAllowancesUpdater } from 'modules/balancesAndAllowances'
+import { BalancesDevtools } from 'modules/balancesAndAllowances/updaters/BalancesDevtools'
import { PendingBridgeOrdersUpdater, BridgingEnabledUpdater } from 'modules/bridge'
import { BalancesCombinedUpdater } from 'modules/combinedBalances/updater/BalancesCombinedUpdater'
import { InFlightOrderFinalizeUpdater } from 'modules/ethFlow'
@@ -126,6 +127,7 @@ export function Updaters(): ReactNode {
+
diff --git a/apps/cowswap-frontend/src/modules/balancesAndAllowances/updaters/BalancesDevtools.tsx b/apps/cowswap-frontend/src/modules/balancesAndAllowances/updaters/BalancesDevtools.tsx
new file mode 100644
index 00000000000..b5afc21965b
--- /dev/null
+++ b/apps/cowswap-frontend/src/modules/balancesAndAllowances/updaters/BalancesDevtools.tsx
@@ -0,0 +1,9 @@
+import { JSX } from 'react'
+
+import { DevTools } from 'jotai-devtools'
+
+export function BalancesDevtools(): JSX.Element | null {
+ if (process.env.NODE_ENV !== 'development') return null
+
+ return
+}
diff --git a/apps/cowswap-frontend/src/modules/combinedBalances/updater/BalancesCombinedUpdater.tsx b/apps/cowswap-frontend/src/modules/combinedBalances/updater/BalancesCombinedUpdater.tsx
index cea8190f6f2..85e2c5c35c7 100644
--- a/apps/cowswap-frontend/src/modules/combinedBalances/updater/BalancesCombinedUpdater.tsx
+++ b/apps/cowswap-frontend/src/modules/combinedBalances/updater/BalancesCombinedUpdater.tsx
@@ -61,5 +61,7 @@ function applyBalanceDiffs(
values: normalizedValues,
chainId,
fromCache: false,
+ hasFirstLoad: currentBalances.hasFirstLoad,
+ error: currentBalances.error,
}
}
diff --git a/apps/cowswap-frontend/src/modules/tokensList/pure/SelectTokenModal/index.cosmos.tsx b/apps/cowswap-frontend/src/modules/tokensList/pure/SelectTokenModal/index.cosmos.tsx
index 4a432e5c98a..aa8c6364b26 100644
--- a/apps/cowswap-frontend/src/modules/tokensList/pure/SelectTokenModal/index.cosmos.tsx
+++ b/apps/cowswap-frontend/src/modules/tokensList/pure/SelectTokenModal/index.cosmos.tsx
@@ -45,6 +45,8 @@ const defaultProps: SelectTokenModalProps = {
isLoading: false,
chainId: SupportedChainId.SEPOLIA,
fromCache: false,
+ hasFirstLoad: true,
+ error: null,
},
selectedToken,
isRouteAvailable: true,
diff --git a/apps/cowswap-frontend/src/modules/tradeFormValidation/hooks/useTradeFormButtonContext.ts b/apps/cowswap-frontend/src/modules/tradeFormValidation/hooks/useTradeFormButtonContext.ts
index f2025a0f869..53086dbdde8 100644
--- a/apps/cowswap-frontend/src/modules/tradeFormValidation/hooks/useTradeFormButtonContext.ts
+++ b/apps/cowswap-frontend/src/modules/tradeFormValidation/hooks/useTradeFormButtonContext.ts
@@ -4,6 +4,7 @@ import { useWalletDetails } from '@cowprotocol/wallet'
import { useToggleWalletModal } from 'legacy/state/application/hooks'
+import { useTokensBalancesCombined } from 'modules/combinedBalances'
import { useGetAmountToSignApprove } from 'modules/erc20Approve'
import { useInjectedWidgetParams } from 'modules/injectedWidget'
import { useAmountsToSignFromQuote, useDerivedTradeState, useWrapNativeFlow } from 'modules/trade'
@@ -31,6 +32,7 @@ export function useTradeFormButtonContext(
derivedState?.outputCurrency,
quote.error,
)
+ const { error: balancesError } = useTokensBalancesCombined()
return useMemo(() => {
if (!derivedState) return null
@@ -48,6 +50,7 @@ export function useTradeFormButtonContext(
enablePartialApprove,
customTokenError,
minAmountToSignForSwap,
+ balancesError,
}
}, [
defaultText,
@@ -62,5 +65,6 @@ export function useTradeFormButtonContext(
enablePartialApprove,
customTokenError,
minAmountToSignForSwap,
+ balancesError,
])
}
diff --git a/apps/cowswap-frontend/src/modules/tradeFormValidation/hooks/useTradeFormValidationContext.ts b/apps/cowswap-frontend/src/modules/tradeFormValidation/hooks/useTradeFormValidationContext.ts
index c3b9b09a626..6f79e47bad8 100644
--- a/apps/cowswap-frontend/src/modules/tradeFormValidation/hooks/useTradeFormValidationContext.ts
+++ b/apps/cowswap-frontend/src/modules/tradeFormValidation/hooks/useTradeFormValidationContext.ts
@@ -8,6 +8,7 @@ import { useGnosisSafeInfo, useIsTxBundlingSupported, useWalletDetails, useWalle
import { useHasHookBridgeProvidersEnabled } from 'entities/bridgeProvider'
import { useCurrentAccountProxy } from 'modules/accountProxy/hooks/useCurrentAccountProxy'
+import { useTokensBalancesCombined } from 'modules/combinedBalances'
import { useApproveState, useGetAmountToSignApprove, useIsApprovalOrPermitRequired } from 'modules/erc20Approve'
import { RwaTokenStatus, useRwaTokenStatus } from 'modules/rwa'
import { TradeType, useDerivedTradeState, useIsWrapOrUnwrap } from 'modules/trade'
@@ -21,12 +22,14 @@ import { useTokenCustomTradeError } from './useTokenCustomTradeError'
import { TradeFormValidationCommonContext } from '../types'
+// eslint-disable-next-line max-lines-per-function
export function useTradeFormValidationContext(): TradeFormValidationCommonContext | null {
const { account } = useWalletInfo()
const derivedTradeState = useDerivedTradeState()
const tradeQuote = useTradeQuote()
const isProviderNetworkUnsupported = useIsProviderNetworkUnsupported()
const isOnline = useIsOnline()
+ const { isLoading: isBalancesLoading, hasFirstLoad, error: balancesError } = useTokensBalancesCombined()
const { inputCurrency, outputCurrency, recipient, tradeType } = derivedTradeState || {}
const customTokenError = useTokenCustomTradeError(inputCurrency, outputCurrency, tradeQuote.error)
@@ -86,8 +89,11 @@ export function useTradeFormValidationContext(): TradeFormValidationCommonContex
isProxySetupValid,
customTokenError,
isRestrictedForCountry,
+ isBalancesLoading: !hasFirstLoad || isBalancesLoading,
+ balancesError,
}
}, [
+ hasFirstLoad,
account,
approvalState,
customTokenError,
@@ -102,12 +108,14 @@ export function useTradeFormValidationContext(): TradeFormValidationCommonContex
isRestrictedForCountry,
isSafeReadonlyUser,
isSupportedWallet,
+ isBalancesLoading,
isSwapUnsupported,
isWrapUnwrap,
isProxySetupValid,
recipientEnsAddress,
toBeImported,
tradeQuote,
+ balancesError,
])
}
diff --git a/apps/cowswap-frontend/src/modules/tradeFormValidation/pure/TradeFormButtons/tradeButtonsMap.tsx b/apps/cowswap-frontend/src/modules/tradeFormValidation/pure/TradeFormButtons/tradeButtonsMap.tsx
index b962402f2d9..9213242a381 100644
--- a/apps/cowswap-frontend/src/modules/tradeFormValidation/pure/TradeFormButtons/tradeButtonsMap.tsx
+++ b/apps/cowswap-frontend/src/modules/tradeFormValidation/pure/TradeFormButtons/tradeButtonsMap.tsx
@@ -2,7 +2,7 @@ import { ReactElement, ReactNode } from 'react'
import { getIsNativeToken, getWrappedToken } from '@cowprotocol/common-utils'
import { BridgeProviderQuoteError, BridgeQuoteErrors } from '@cowprotocol/sdk-bridging'
-import { HelpTooltip, InfoTooltip, TokenSymbol } from '@cowprotocol/ui'
+import { CenteredDots, HelpTooltip, InfoTooltip, TokenSymbol } from '@cowprotocol/ui'
import { t } from '@lingui/core/macro'
import { Trans } from '@lingui/react/macro'
@@ -254,8 +254,23 @@ export const tradeButtonsMap: Record,
},
- [TradeFormValidation.BalancesNotLoaded]: {
- text: Couldn't load balances,
+ [TradeFormValidation.BalancesLoading]: {
+ text: (
+ <>
+ Fetching balances
+
+ >
+ ),
+ },
+ [TradeFormValidation.BalancesNotLoaded]: (context) => {
+ return (
+
+ <>
+ Couldn't load balances
+ {context.balancesError ? {context.balancesError}} /> : null}
+ >
+
+ )
},
[TradeFormValidation.BalanceInsufficient]: (context) => {
const inputCurrency = context.derivedState.inputCurrency
diff --git a/apps/cowswap-frontend/src/modules/tradeFormValidation/services/validateTradeForm.ts b/apps/cowswap-frontend/src/modules/tradeFormValidation/services/validateTradeForm.ts
index bad16c02d2e..99690cdda35 100644
--- a/apps/cowswap-frontend/src/modules/tradeFormValidation/services/validateTradeForm.ts
+++ b/apps/cowswap-frontend/src/modules/tradeFormValidation/services/validateTradeForm.ts
@@ -27,6 +27,8 @@ export function validateTradeForm(context: TradeFormValidationContext): TradeFor
isProxySetupValid,
customTokenError,
isRestrictedForCountry,
+ isBalancesLoading,
+ balancesError,
} = context
const {
@@ -118,6 +120,20 @@ export function validateTradeForm(context: TradeFormValidationContext): TradeFor
validations.push(TradeFormValidation.CurrencyNotSupported)
}
+ if (!canPlaceOrderWithoutBalance && !!account) {
+ if (isBalancesLoading) {
+ validations.push(TradeFormValidation.BalancesLoading)
+ } else {
+ if (!inputCurrencyBalance && balancesError) {
+ validations.push(TradeFormValidation.BalancesNotLoaded)
+ }
+
+ if (inputCurrencyBalance && inputCurrencyAmount && inputCurrencyBalance.lessThan(inputCurrencyAmount)) {
+ validations.push(TradeFormValidation.BalanceInsufficient)
+ }
+ }
+ }
+
if (isFastQuote || !tradeQuote.quote || (isBridging && tradeQuote.isLoading)) {
validations.push(TradeFormValidation.QuoteLoading)
}
@@ -142,16 +158,6 @@ export function validateTradeForm(context: TradeFormValidationContext): TradeFor
}
}
- if (!canPlaceOrderWithoutBalance) {
- if (!inputCurrencyBalance) {
- validations.push(TradeFormValidation.BalancesNotLoaded)
- }
-
- if (inputCurrencyBalance && inputCurrencyAmount && inputCurrencyBalance.lessThan(inputCurrencyAmount)) {
- validations.push(TradeFormValidation.BalanceInsufficient)
- }
- }
-
if (isWrapUnwrap) {
validations.push(TradeFormValidation.WrapUnwrapFlow)
}
diff --git a/apps/cowswap-frontend/src/modules/tradeFormValidation/types.ts b/apps/cowswap-frontend/src/modules/tradeFormValidation/types.ts
index 2754c11c2e5..064c0d56869 100644
--- a/apps/cowswap-frontend/src/modules/tradeFormValidation/types.ts
+++ b/apps/cowswap-frontend/src/modules/tradeFormValidation/types.ts
@@ -30,6 +30,7 @@ export enum TradeFormValidation {
QuoteExpired,
// Balances
+ BalancesLoading,
BalancesNotLoaded,
BalanceInsufficient,
@@ -72,6 +73,8 @@ export interface TradeFormValidationCommonContext {
isProxySetupValid: boolean | null | undefined
customTokenError?: string
isRestrictedForCountry: boolean
+ isBalancesLoading: boolean
+ balancesError: string | null
}
export interface TradeFormValidationContext extends TradeFormValidationCommonContext {}
@@ -86,6 +89,7 @@ export interface TradeFormButtonContext {
enablePartialApprove?: boolean
customTokenError?: string
minAmountToSignForSwap?: CurrencyAmount
+ balancesError: string | null
confirmTrade(): void
diff --git a/libs/balances-and-allowances/src/hooks/usePersistBalancesFromBff.test.tsx b/libs/balances-and-allowances/src/hooks/usePersistBalancesFromBff.test.tsx
index 49ed1ebe902..04bd2dec4bb 100644
--- a/libs/balances-and-allowances/src/hooks/usePersistBalancesFromBff.test.tsx
+++ b/libs/balances-and-allowances/src/hooks/usePersistBalancesFromBff.test.tsx
@@ -64,6 +64,8 @@ describe('usePersistBalancesFromBff - invalidateCacheTrigger', () => {
chainId: SupportedChainId.MAINNET,
values: {},
fromCache: false,
+ hasFirstLoad: false,
+ error: null,
} as BalancesState,
],
[balancesUpdateAtom, mockBalancesUpdate],
@@ -188,5 +190,4 @@ describe('usePersistBalancesFromBff - invalidateCacheTrigger', () => {
)
})
})
-
})
diff --git a/libs/balances-and-allowances/src/hooks/usePersistBalancesFromBff.ts b/libs/balances-and-allowances/src/hooks/usePersistBalancesFromBff.ts
index af37a304932..5138596cdb8 100644
--- a/libs/balances-and-allowances/src/hooks/usePersistBalancesFromBff.ts
+++ b/libs/balances-and-allowances/src/hooks/usePersistBalancesFromBff.ts
@@ -58,6 +58,14 @@ export function usePersistBalancesFromBff(params: PersistBalancesFromBffParams):
setBalances((state) => ({ ...state, isLoading: isBalancesLoading, chainId: targetChainId }))
}, [setBalances, isBalancesLoading, targetChainId, targetAccount])
+ useEffect(() => {
+ if (!error) return
+
+ const message = error instanceof Error ? error.message : String(error)
+
+ setBalances((state) => ({ ...state, error: message, isLoading: false }))
+ }, [error, setBalances])
+
useEffect(() => {
setIsBffFailed(!!error)
}, [error, setIsBffFailed])
@@ -77,6 +85,8 @@ export function usePersistBalancesFromBff(params: PersistBalancesFromBffParams):
...state,
chainId: targetChainId,
fromCache: false,
+ hasFirstLoad: true,
+ error: null,
values: balancesState,
isLoading: false,
}
diff --git a/libs/balances-and-allowances/src/hooks/usePersistBalancesViaWebCalls.ts b/libs/balances-and-allowances/src/hooks/usePersistBalancesViaWebCalls.ts
index 0a7386633c6..da5e0a3179e 100644
--- a/libs/balances-and-allowances/src/hooks/usePersistBalancesViaWebCalls.ts
+++ b/libs/balances-and-allowances/src/hooks/usePersistBalancesViaWebCalls.ts
@@ -42,7 +42,11 @@ export function usePersistBalancesViaWebCalls(params: PersistBalancesAndAllowanc
const balanceOfParams = useMemo(() => (account ? [account] : undefined), [account])
- const { isLoading: isBalancesLoading, data } = useMultipleContractSingleData<{ balance: BigNumber }>(
+ const {
+ isLoading: isBalancesLoading,
+ data,
+ error,
+ } = useMultipleContractSingleData<{ balance: BigNumber }>(
chainId,
tokenAddresses,
ERC_20_INTERFACE,
@@ -65,6 +69,17 @@ export function usePersistBalancesViaWebCalls(params: PersistBalancesAndAllowanc
setBalances((state) => ({ ...state, isLoading: isBalancesLoading, chainId }))
}, [setBalances, isBalancesLoading, setLoadingState, chainId])
+ // Set balances error state for full balances fetches only
+ useEffect(() => {
+ if (!setLoadingState) return
+
+ if (!error) return
+
+ const message = error instanceof Error ? error.message : String(error)
+
+ setBalances((state) => ({ ...state, error: message, isLoading: false }))
+ }, [setBalances, error, setLoadingState])
+
// Set balances to the store
useEffect(() => {
if (!account || !balances?.length || !isNewBlockNumber) return
@@ -83,6 +98,8 @@ export function usePersistBalancesViaWebCalls(params: PersistBalancesAndAllowanc
...state,
chainId,
fromCache: false,
+ hasFirstLoad: true,
+ error: null,
values: { ...state.values, ...balancesState },
...(setLoadingState ? { isLoading: false } : {}),
}
diff --git a/libs/balances-and-allowances/src/state/balancesAtom.ts b/libs/balances-and-allowances/src/state/balancesAtom.ts
index 54a491c28a6..1b7e75ca359 100644
--- a/libs/balances-and-allowances/src/state/balancesAtom.ts
+++ b/libs/balances-and-allowances/src/state/balancesAtom.ts
@@ -15,6 +15,8 @@ type BalancesCache = PersistentStateByChain(
diff --git a/libs/balances-and-allowances/src/updaters/BalancesCacheUpdater.tsx b/libs/balances-and-allowances/src/updaters/BalancesCacheUpdater.tsx
index 10e8df83422..859613ec092 100644
--- a/libs/balances-and-allowances/src/updaters/BalancesCacheUpdater.tsx
+++ b/libs/balances-and-allowances/src/updaters/BalancesCacheUpdater.tsx
@@ -83,6 +83,8 @@ export function BalancesCacheUpdater({ chainId, account, excludedTokens }: Balan
fromCache: true,
chainId,
isLoading: state.isLoading,
+ hasFirstLoad: state.hasFirstLoad,
+ error: state.error,
values: {
...state.values,
...cacheKeys.reduce(
diff --git a/package.json b/package.json
index 95efeb90596..f809e008ac5 100644
--- a/package.json
+++ b/package.json
@@ -327,6 +327,7 @@
"jest-environment-jsdom": "^30.2.0",
"jest-fetch-mock": "^3.0.3",
"jest-styled-components": "^7.1.1",
+ "jotai-devtools": "0.8.0",
"jsdom": "~27.0.0",
"lint-staged": "^16.2.7",
"node-stdlib-browser": "^1.2.0",
diff --git a/yarn.lock b/yarn.lock
index c08580b99bd..d5960f607db 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1472,6 +1472,11 @@
dependencies:
regenerator-runtime "^0.14.0"
+"@babel/runtime@^7.10.2", "@babel/runtime@^7.13.10", "@babel/runtime@^7.16.7", "@babel/runtime@^7.20.6", "@babel/runtime@^7.23.2":
+ version "7.28.4"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.28.4.tgz#a70226016fabe25c5783b2f22d3e1c9bc5ca3326"
+ integrity sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==
+
"@babel/template@^7.22.15", "@babel/template@^7.22.5", "@babel/template@^7.24.0", "@babel/template@^7.25.9", "@babel/template@^7.27.2", "@babel/template@^7.3.3":
version "7.27.2"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d"
@@ -3397,6 +3402,42 @@
"@ethersproject/properties" "^5.8.0"
"@ethersproject/strings" "^5.8.0"
+"@floating-ui/core@^1.7.3":
+ version "1.7.3"
+ resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.7.3.tgz#462d722f001e23e46d86fd2bd0d21b7693ccb8b7"
+ integrity sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==
+ dependencies:
+ "@floating-ui/utils" "^0.2.10"
+
+"@floating-ui/dom@^1.2.1":
+ version "1.7.4"
+ resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.7.4.tgz#ee667549998745c9c3e3e84683b909c31d6c9a77"
+ integrity sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==
+ dependencies:
+ "@floating-ui/core" "^1.7.3"
+ "@floating-ui/utils" "^0.2.10"
+
+"@floating-ui/react-dom@^1.3.0":
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-1.3.0.tgz#4d35d416eb19811c2b0e9271100a6aa18c1579b3"
+ integrity sha512-htwHm67Ji5E/pROEAr7f8IKFShuiCKHwUC/UY4vC3I5jiSvGFAYnSYiZO5MlGmads+QqvUkR9ANHEguGrDv72g==
+ dependencies:
+ "@floating-ui/dom" "^1.2.1"
+
+"@floating-ui/react@^0.19.1":
+ version "0.19.2"
+ resolved "https://registry.yarnpkg.com/@floating-ui/react/-/react-0.19.2.tgz#c6e4d2097ed0dca665a7c042ddf9cdecc95e9412"
+ integrity sha512-JyNk4A0Ezirq8FlXECvRtQOX/iBe5Ize0W/pLkrZjfHW9GUV7Xnq6zm6fyZuQzaHHqEnVizmvlA96e1/CkZv+w==
+ dependencies:
+ "@floating-ui/react-dom" "^1.3.0"
+ aria-hidden "^1.1.3"
+ tabbable "^6.0.1"
+
+"@floating-ui/utils@^0.2.10":
+ version "0.2.10"
+ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.10.tgz#a2a1e3812d14525f725d011a73eceb41fef5bc1c"
+ integrity sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==
+
"@fortawesome/fontawesome-common-types@6.7.1":
version "6.7.1"
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.7.1.tgz#6201640f39fdcf8e41cd9d1a92b2da3a96817fa4"
@@ -4401,6 +4442,44 @@
dependencies:
"@lit-labs/ssr-dom-shim" "^1.1.2-pre.0"
+"@mantine/core@^6.0.21":
+ version "6.0.22"
+ resolved "https://registry.yarnpkg.com/@mantine/core/-/core-6.0.22.tgz#654ed7252f711ca420d3c2c26da9a2d9d0b64550"
+ integrity sha512-6kv0eY7n565fyjgS20qUYeCSxg3f1TJ5vurzbP1HHtFXXKSY0bYoqqDoHipFCt6NxsPQGeiC6cC0c/IWIlxoKQ==
+ dependencies:
+ "@floating-ui/react" "^0.19.1"
+ "@mantine/styles" "6.0.22"
+ "@mantine/utils" "6.0.22"
+ "@radix-ui/react-scroll-area" "1.0.2"
+ react-remove-scroll "^2.5.5"
+ react-textarea-autosize "8.3.4"
+
+"@mantine/hooks@^6.0.21":
+ version "6.0.22"
+ resolved "https://registry.yarnpkg.com/@mantine/hooks/-/hooks-6.0.22.tgz#2c7938a0a11b3e4019974ea41aa15c8a4c80d87a"
+ integrity sha512-e10//QTN2sAmC4Ryeu5X5L/TsxnrjXMOaGq3dxFPIPsCSwLzyxqySfjzVViWmoPWAj0Ak9MvE2MHFjzmOpA80w==
+
+"@mantine/prism@^6.0.21":
+ version "6.0.22"
+ resolved "https://registry.yarnpkg.com/@mantine/prism/-/prism-6.0.22.tgz#06499a3f00c6b5a0440de3beb1fb59310a244f88"
+ integrity sha512-EW3SCmRzg2MlfJPAxkHXFLYMoPdmRp2EhCxqTcgCEeKwSk4TLlLF39aAjFtk2B+rtiqWlA/7Kh7YrhOZ78TdpA==
+ dependencies:
+ "@mantine/utils" "6.0.22"
+ prism-react-renderer "^1.2.1"
+
+"@mantine/styles@6.0.22":
+ version "6.0.22"
+ resolved "https://registry.yarnpkg.com/@mantine/styles/-/styles-6.0.22.tgz#d883823f910e9ab8a56fd80ef667b6f56f2e2bd5"
+ integrity sha512-Rud/IQp2EFYDiP4csRy2XBrho/Ct+W2/b+XbvCRTeQTmpFy/NfAKm/TWJa5zPvuv/iLTjGkVos9SHw/DteESpQ==
+ dependencies:
+ clsx "1.1.1"
+ csstype "3.0.9"
+
+"@mantine/utils@6.0.22":
+ version "6.0.22"
+ resolved "https://registry.yarnpkg.com/@mantine/utils/-/utils-6.0.22.tgz#7eace697084e2bc5a831eb0fd7cbbc04cc1b0354"
+ integrity sha512-RSKlNZvxhMCkOFZ6slbYvZYbWjHUM+PxDQnupIOxIdsTZQQjx/BFfrfJ7kQFOP+g7MtpOds8weAetEs5obwMOQ==
+
"@material-ui/core@^4.11.0":
version "4.12.4"
resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-4.12.4.tgz#4ac17488e8fcaf55eb6a7f5efb2a131e10138a73"
@@ -6338,6 +6417,96 @@
resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570"
integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==
+"@radix-ui/number@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@radix-ui/number/-/number-1.0.0.tgz#4c536161d0de750b3f5d55860fc3de46264f897b"
+ integrity sha512-Ofwh/1HX69ZfJRiRBMTy7rgjAzHmwe4kW9C9Y99HTRUcYLUuVT0KESFj15rPjRgKJs20GPq8Bm5aEDJ8DuA3vA==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+
+"@radix-ui/primitive@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-1.0.0.tgz#e1d8ef30b10ea10e69c76e896f608d9276352253"
+ integrity sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+
+"@radix-ui/react-compose-refs@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz#37595b1f16ec7f228d698590e78eeed18ff218ae"
+ integrity sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+
+"@radix-ui/react-context@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.0.0.tgz#f38e30c5859a9fb5e9aa9a9da452ee3ed9e0aee0"
+ integrity sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+
+"@radix-ui/react-direction@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-direction/-/react-direction-1.0.0.tgz#a2e0b552352459ecf96342c79949dd833c1e6e45"
+ integrity sha512-2HV05lGUgYcA6xgLQ4BKPDmtL+QbIZYH5fCOTAOOcJ5O0QbWS3i9lKaurLzliYUDhORI2Qr3pyjhJh44lKA3rQ==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+
+"@radix-ui/react-presence@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.0.0.tgz#814fe46df11f9a468808a6010e3f3ca7e0b2e84a"
+ integrity sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/react-compose-refs" "1.0.0"
+ "@radix-ui/react-use-layout-effect" "1.0.0"
+
+"@radix-ui/react-primitive@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-1.0.1.tgz#c1ebcce283dd2f02e4fbefdaa49d1cb13dbc990a"
+ integrity sha512-fHbmislWVkZaIdeF6GZxF0A/NH/3BjrGIYj+Ae6eTmTCr7EB0RQAAVEiqsXK6p3/JcRqVSBQoceZroj30Jj3XA==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/react-slot" "1.0.1"
+
+"@radix-ui/react-scroll-area@1.0.2":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-scroll-area/-/react-scroll-area-1.0.2.tgz#26c906d351b56835c0301126b24574c9e9c7b93b"
+ integrity sha512-k8VseTxI26kcKJaX0HPwkvlNBPTs56JRdYzcZ/vzrNUkDlvXBy8sMc7WvCpYzZkHgb+hd72VW9MqkqecGtuNgg==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/number" "1.0.0"
+ "@radix-ui/primitive" "1.0.0"
+ "@radix-ui/react-compose-refs" "1.0.0"
+ "@radix-ui/react-context" "1.0.0"
+ "@radix-ui/react-direction" "1.0.0"
+ "@radix-ui/react-presence" "1.0.0"
+ "@radix-ui/react-primitive" "1.0.1"
+ "@radix-ui/react-use-callback-ref" "1.0.0"
+ "@radix-ui/react-use-layout-effect" "1.0.0"
+
+"@radix-ui/react-slot@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.0.1.tgz#e7868c669c974d649070e9ecbec0b367ee0b4d81"
+ integrity sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/react-compose-refs" "1.0.0"
+
+"@radix-ui/react-use-callback-ref@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz#9e7b8b6b4946fe3cbe8f748c82a2cce54e7b6a90"
+ integrity sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+
+"@radix-ui/react-use-layout-effect@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz#2fc19e97223a81de64cd3ba1dc42ceffd82374dc"
+ integrity sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+
"@rainbow-me/rainbowkit@^1.1.3":
version "1.3.7"
resolved "https://registry.yarnpkg.com/@rainbow-me/rainbowkit/-/rainbowkit-1.3.7.tgz#30c7f85e80241a3b9a244e7b5d450e1137f54778"
@@ -6502,6 +6671,14 @@
"@react-spring/shared" "~9.7.3"
"@react-spring/types" "~9.7.3"
+"@redux-devtools/extension@^3.3.0":
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/@redux-devtools/extension/-/extension-3.3.0.tgz#bc775d289f15604c472112920beac2cf4dbb7907"
+ integrity sha512-X34S/rC8S/M1BIrkYD1mJ5f8vlH0BDqxXrs96cvxSBo4FhMdbhU+GUGsmNYov1xjSyLMHgo8NYrUG8bNX7525g==
+ dependencies:
+ "@babel/runtime" "^7.23.2"
+ immutable "^4.3.4"
+
"@reduxjs/toolkit@^1.8.0":
version "1.9.5"
resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.9.5.tgz#d3987849c24189ca483baa7aa59386c8e52077c4"
@@ -8312,6 +8489,11 @@
dependencies:
"@babel/types" "^7.20.7"
+"@types/base16@^1.0.2":
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/@types/base16/-/base16-1.0.5.tgz#9a7df8eed525c6968d254dada2a2f653a28e73f6"
+ integrity sha512-OzOWrTluG9cwqidEzC/Q6FAmIPcnZfm8BFRlIx0+UIUqnuAmi5OS88O0RpT3Yz6qdmqObvUhasrbNsCofE4W9A==
+
"@types/bn.js@^4.11.3":
version "4.11.6"
resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c"
@@ -8917,6 +9099,11 @@
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.0.tgz#d774355e41f372d5350a4d0714abb48194a489c3"
integrity sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA==
+"@types/lodash@^4.14.178", "@types/lodash@^4.14.191":
+ version "4.17.21"
+ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.21.tgz#b806831543d696b14f8112db600ea9d3a1df6ea4"
+ integrity sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ==
+
"@types/long@^4.0.1":
version "4.0.2"
resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a"
@@ -11652,6 +11839,13 @@ argparse@^2.0.1:
resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
+aria-hidden@^1.1.3:
+ version "1.2.6"
+ resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.6.tgz#73051c9b088114c795b1ea414e9c0fff874ffc1a"
+ integrity sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==
+ dependencies:
+ tslib "^2.0.0"
+
aria-query@5.3.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e"
@@ -12340,6 +12534,11 @@ base-x@^4.0.0:
resolved "https://registry.yarnpkg.com/base-x/-/base-x-4.0.0.tgz#d0e3b7753450c73f8ad2389b5c018a4af7b2224a"
integrity sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==
+base16@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/base16/-/base16-1.0.0.tgz#e297f60d7ec1014a7a971a39ebc8a98c0b681e70"
+ integrity sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==
+
base64-js@^1.3.0, base64-js@^1.3.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
@@ -13562,6 +13761,11 @@ clone@^1.0.2:
resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==
+clsx@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188"
+ integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==
+
clsx@2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.0.tgz#e851283bcb5c80ee7608db18487433f7b23f77cb"
@@ -13601,7 +13805,7 @@ collect-v8-coverage@^1.0.0, collect-v8-coverage@^1.0.2:
resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9"
integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==
-color-convert@^1.3.0, color-convert@^1.9.0:
+color-convert@^1.3.0, color-convert@^1.9.0, color-convert@^1.9.3:
version "1.9.3"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
@@ -13632,7 +13836,7 @@ color-string@^0.3.0:
dependencies:
color-name "^1.0.0"
-color-string@^1.9.0:
+color-string@^1.6.0, color-string@^1.9.0:
version "1.9.1"
resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4"
integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==
@@ -13654,6 +13858,14 @@ color@^0.11.3:
color-convert "^1.3.0"
color-string "^0.3.0"
+color@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164"
+ integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==
+ dependencies:
+ color-convert "^1.9.3"
+ color-string "^1.6.0"
+
color@^4.2.3:
version "4.2.3"
resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a"
@@ -14635,11 +14847,21 @@ cssstyle@^5.3.0:
"@csstools/css-syntax-patches-for-csstree" "^1.0.14"
css-tree "^3.1.0"
+csstype@3.0.9:
+ version "3.0.9"
+ resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.9.tgz#6410af31b26bd0520933d02cbc64fce9ce3fbf0b"
+ integrity sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==
+
csstype@^2.5.2, csstype@^2.5.7:
version "2.6.21"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.21.tgz#2efb85b7cc55c80017c66a5ad7cbd931fda3a90e"
integrity sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==
+csstype@^3.0.10:
+ version "3.2.3"
+ resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.2.3.tgz#ec48c0f3e993e50648c86da559e2610995cf989a"
+ integrity sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==
+
csstype@^3.0.2, csstype@^3.0.7, csstype@^3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81"
@@ -15465,6 +15687,11 @@ didyoumean@^1.2.2:
resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037"
integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==
+diff-match-patch@^1.0.0:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.5.tgz#abb584d5f10cd1196dfc55aa03701592ae3f7b37"
+ integrity sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==
+
diff-sequences@^27.5.1:
version "27.5.1"
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327"
@@ -19507,6 +19734,11 @@ immer@^9.0.21, immer@^9.0.7:
resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176"
integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==
+immutable@^4.3.4:
+ version "4.3.7"
+ resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.7.tgz#c70145fc90d89fb02021e65c84eb0226e4e5a381"
+ integrity sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==
+
immutable@^5.0.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.1.2.tgz#e8169476414505e5a4fa650107b65e1227d16d4b"
@@ -20913,6 +21145,11 @@ jake@^10.8.5:
filelist "^1.0.4"
minimatch "^3.1.2"
+javascript-stringify@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-2.1.0.tgz#27c76539be14d8bd128219a2d731b09337904e79"
+ integrity sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==
+
jest-changed-files@30.2.0:
version "30.2.0"
resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-30.2.0.tgz#602266e478ed554e1e1469944faa7efd37cee61c"
@@ -21836,6 +22073,21 @@ jju@~1.4.0:
resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a"
integrity sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==
+jotai-devtools@0.8.0:
+ version "0.8.0"
+ resolved "https://registry.yarnpkg.com/jotai-devtools/-/jotai-devtools-0.8.0.tgz#82a7cf7d660b6526525406894be09e226f3a5053"
+ integrity sha512-dSxiDuEz/fvgxC5hCWJfRHTSaDz8RBaQ2DUO3SJqvskIP44BUxx5EJSQHN9WdbPqp9VQ2Db8yIR9jLGbpnuLtA==
+ dependencies:
+ "@mantine/core" "^6.0.21"
+ "@mantine/hooks" "^6.0.21"
+ "@mantine/prism" "^6.0.21"
+ "@redux-devtools/extension" "^3.3.0"
+ javascript-stringify "^2.1.0"
+ jsondiffpatch "^0.5.0"
+ react-error-boundary "^4.0.12"
+ react-json-tree "^0.18.0"
+ react-resizable-panels "^0.0.54"
+
jotai@2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/jotai/-/jotai-2.2.0.tgz#80c176efeb59d32d7eef7f14510ba8e01ef7b0db"
@@ -22127,6 +22379,14 @@ jsonc-parser@3.2.0, jsonc-parser@^3.2.0:
resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76"
integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==
+jsondiffpatch@^0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/jsondiffpatch/-/jsondiffpatch-0.5.0.tgz#f9795416022685a3ba7eced11a338c5cb0cf66f4"
+ integrity sha512-Quz3MvAwHxVYNXsOByL7xI5EB2WYOeFswqaHIA3qOK3isRWTxiplBEocmmru6XmxDB2L7jDNYtYA4FyimoAFEw==
+ dependencies:
+ chalk "^3.0.0"
+ diff-match-patch "^1.0.0"
+
jsonfile@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
@@ -22762,6 +23022,11 @@ lodash.clonedeepwith@4.5.0:
resolved "https://registry.yarnpkg.com/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz#6ee30573a03a1a60d670a62ef33c10cf1afdbdd4"
integrity sha512-QRBRSxhbtsX1nc0baxSkkK5WlVTTm/s48DSukcGcWZwIyI8Zz+lB+kFiELJXtzfH4Aj6kMWQ1VWW4U5uUDgZMA==
+lodash.curry@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/lodash.curry/-/lodash.curry-4.1.1.tgz#248e36072ede906501d75966200a86dab8b23170"
+ integrity sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==
+
lodash.debounce@^4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
@@ -26654,6 +26919,11 @@ pretty-format@^29.6.2:
ansi-styles "^5.0.0"
react-is "^18.0.0"
+prism-react-renderer@^1.2.1:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-1.3.5.tgz#786bb69aa6f73c32ba1ee813fbe17a0115435085"
+ integrity sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==
+
prismjs@^1.27.0:
version "1.29.0"
resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12"
@@ -27114,6 +27384,19 @@ react-appzi@^1.0.4:
resolved "https://registry.yarnpkg.com/react-appzi/-/react-appzi-1.0.4.tgz#57958e5899ead870d80f6743196e33b5ca9f3124"
integrity sha512-l5lLFWdi1phuv84IWQu/YkBa0tWiyZTMhNc4fDt8RVMxVEv96FReXRlxWtrIO8ReMkT/CEFJ7pZCO9tAClnkIQ==
+react-base16-styling@^0.9.1:
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/react-base16-styling/-/react-base16-styling-0.9.1.tgz#4906b4c0a51636f2dca2cea8b682175aa8bd0c92"
+ integrity sha512-1s0CY1zRBOQ5M3T61wetEpvQmsYSNtWEcdYzyZNxKa8t7oDvaOn9d21xrGezGAHFWLM7SHcktPuPTrvoqxSfKw==
+ dependencies:
+ "@babel/runtime" "^7.16.7"
+ "@types/base16" "^1.0.2"
+ "@types/lodash" "^4.14.178"
+ base16 "^1.0.0"
+ color "^3.2.1"
+ csstype "^3.0.10"
+ lodash.curry "^4.1.1"
+
react-clientside-effect@^1.2.5:
version "1.2.6"
resolved "https://registry.yarnpkg.com/react-clientside-effect/-/react-clientside-effect-1.2.6.tgz#29f9b14e944a376b03fb650eed2a754dd128ea3a"
@@ -27264,6 +27547,13 @@ react-dom@^16.8.6:
prop-types "^15.6.2"
scheduler "^0.19.1"
+react-error-boundary@^4.0.12:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/react-error-boundary/-/react-error-boundary-4.1.2.tgz#bc750ad962edb8b135d6ae922c046051eb58f289"
+ integrity sha512-GQDxZ5Jd+Aq/qUxbCm1UtzmL/s++V7zKgE8yMktJiCQXCCFZnMZh9ng+6/Ne6PjNSXH0L9CjeOEREfRnq6Duag==
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+
react-error-overlay@^6.0.11:
version "6.0.11"
resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb"
@@ -27378,6 +27668,15 @@ react-is@^19.0.0:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-19.1.0.tgz#805bce321546b7e14c084989c77022351bbdd11b"
integrity sha512-Oe56aUPnkHyyDxxkvqtd7KkdQP5uIUfHxd5XTb3wE9d/kRnZLmKbDB0GWk919tdQ+mxxPtG6EAs6RMT6i1qtHg==
+react-json-tree@^0.18.0:
+ version "0.18.0"
+ resolved "https://registry.yarnpkg.com/react-json-tree/-/react-json-tree-0.18.0.tgz#3c4bec7b091f50dcc9c09652d89c8f4373ebf3ea"
+ integrity sha512-Qe6HKSXrr++n9Y31nkRJ3XvQMATISpqigH1vEKhLwB56+nk5thTP0ITThpjxY6ZG/ubpVq/aEHIcyLP/OPHxeA==
+ dependencies:
+ "@babel/runtime" "^7.20.6"
+ "@types/lodash" "^4.14.191"
+ react-base16-styling "^0.9.1"
+
react-markdown@^10.1.0:
version "10.1.0"
resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-10.1.0.tgz#e22bc20faddbc07605c15284255653c0f3bad5ca"
@@ -27446,6 +27745,14 @@ react-remove-scroll-bar@^2.3.4:
react-style-singleton "^2.2.1"
tslib "^2.0.0"
+react-remove-scroll-bar@^2.3.7:
+ version "2.3.8"
+ resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz#99c20f908ee467b385b68a3469b4a3e750012223"
+ integrity sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==
+ dependencies:
+ react-style-singleton "^2.2.2"
+ tslib "^2.0.0"
+
react-remove-scroll@2.4.3:
version "2.4.3"
resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.4.3.tgz#83d19b02503b04bd8141ed6e0b9e6691a2e935a6"
@@ -27468,6 +27775,22 @@ react-remove-scroll@2.5.7:
use-callback-ref "^1.3.0"
use-sidecar "^1.1.2"
+react-remove-scroll@^2.5.5:
+ version "2.7.2"
+ resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.7.2.tgz#6442da56791117661978ae99cd29be9026fecca0"
+ integrity sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==
+ dependencies:
+ react-remove-scroll-bar "^2.3.7"
+ react-style-singleton "^2.2.3"
+ tslib "^2.1.0"
+ use-callback-ref "^1.3.3"
+ use-sidecar "^1.1.3"
+
+react-resizable-panels@^0.0.54:
+ version "0.0.54"
+ resolved "https://registry.yarnpkg.com/react-resizable-panels/-/react-resizable-panels-0.0.54.tgz#04e6a31b5da5d158b687838388cbcc1eb6f61a04"
+ integrity sha512-f8hHdQrqvXoiZGdRNuoOi/C2cdYT2nEpaOb1KIWVWorSTPZmnE+ZQiamGeu+AMx3iZ/tqBtlAkBOpKXzTnDCoA==
+
react-router@7.5.2:
version "7.5.2"
resolved "https://registry.yarnpkg.com/react-router/-/react-router-7.5.2.tgz#889137b9ce91dadc06eb40997f57f08199845973"
@@ -27553,6 +27876,14 @@ react-style-singleton@^2.1.0, react-style-singleton@^2.2.1:
invariant "^2.2.4"
tslib "^2.0.0"
+react-style-singleton@^2.2.2, react-style-singleton@^2.2.3:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.2.3.tgz#4265608be69a4d70cfe3047f2c6c88b2c3ace388"
+ integrity sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==
+ dependencies:
+ get-nonce "^1.0.0"
+ tslib "^2.0.0"
+
react-syntax-highlighter@^15.5.0:
version "15.5.0"
resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-15.5.0.tgz#4b3eccc2325fa2ec8eff1e2d6c18fa4a9e07ab20"
@@ -27564,6 +27895,15 @@ react-syntax-highlighter@^15.5.0:
prismjs "^1.27.0"
refractor "^3.6.0"
+react-textarea-autosize@8.3.4:
+ version "8.3.4"
+ resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.3.4.tgz#270a343de7ad350534141b02c9cb78903e553524"
+ integrity sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ==
+ dependencies:
+ "@babel/runtime" "^7.10.2"
+ use-composed-ref "^1.3.0"
+ use-latest "^1.2.1"
+
react-transition-group@^4.4.0, react-transition-group@^4.4.5:
version "4.4.5"
resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1"
@@ -30256,6 +30596,11 @@ tabbable@^5.3.3:
resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-5.3.3.tgz#aac0ff88c73b22d6c3c5a50b1586310006b47fbf"
integrity sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==
+tabbable@^6.0.1:
+ version "6.4.0"
+ resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.4.0.tgz#36eb7a06d80b3924a22095daf45740dea3bf5581"
+ integrity sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==
+
table-layout@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04"
@@ -31696,6 +32041,18 @@ use-callback-ref@^1.3.0:
dependencies:
tslib "^2.0.0"
+use-callback-ref@^1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.3.tgz#98d9fab067075841c5b2c6852090d5d0feabe2bf"
+ integrity sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==
+ dependencies:
+ tslib "^2.0.0"
+
+use-composed-ref@^1.3.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.4.0.tgz#09e023bf798d005286ad85cd20674bdf5770653b"
+ integrity sha512-djviaxuOOh7wkj0paeO1Q/4wMZ8Zrnag5H6yBvzN7AKKe8beOaED9SF5/ByLqsku8NP4zQqsvM2u3ew/tJK8/w==
+
use-count-up@^2.2.5:
version "2.3.1"
resolved "https://registry.yarnpkg.com/use-count-up/-/use-count-up-2.3.1.tgz#e6045f07b47d99ebcc626dd0aa50d475f2e7f48e"
@@ -31708,6 +32065,18 @@ use-elapsed-time@^2.1.6:
resolved "https://registry.yarnpkg.com/use-elapsed-time/-/use-elapsed-time-2.1.8.tgz#3c830ae730e2bc204f2294b66be15580f0016ea5"
integrity sha512-lNLTDffKHdHWweQNvnch9tFI2eRP3tXccSLrwE7U6xrfyWFNEgNQZWWsGhQvtwKa0kJ6L+7E5wKbi3jg86opjg==
+use-isomorphic-layout-effect@^1.1.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.2.1.tgz#2f11a525628f56424521c748feabc2ffcc962fce"
+ integrity sha512-tpZZ+EX0gaghDAiFR37hj5MgY6ZN55kLiPkJsKxBMZ6GZdOSPJXiOzPM984oPYZ5AnehYx5WQp1+ME8I/P/pRA==
+
+use-latest@^1.2.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.3.0.tgz#549b9b0d4c1761862072f0899c6f096eb379137a"
+ integrity sha512-mhg3xdm9NaM8q+gLT8KryJPnRFOz1/5XPBhmDEVZK1webPzDjrPk7f/mbpeLqTgB9msytYWANxgALOCJKnLvcQ==
+ dependencies:
+ use-isomorphic-layout-effect "^1.1.1"
+
use-resize-observer@^8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/use-resize-observer/-/use-resize-observer-8.0.0.tgz#69bd80c1ddd94f3758563fe107efb25fed85067a"
@@ -31723,6 +32092,14 @@ use-sidecar@^1.0.1, use-sidecar@^1.0.5, use-sidecar@^1.1.2:
detect-node-es "^1.1.0"
tslib "^2.0.0"
+use-sidecar@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.1.3.tgz#10e7fd897d130b896e2c546c63a5e8233d00efdb"
+ integrity sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==
+ dependencies:
+ detect-node-es "^1.1.0"
+ tslib "^2.0.0"
+
use-sync-external-store@1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a"